grub命令行 grub命令详解

Grub 命令是在 Linux 系统中用来管理引导程序的关键性命令集之一 。由于它是整个 Linux 引导过程的关键 , 因此精通 Grub 命令是非常必要的 。本文将详细介绍 Grub 命令的使用 *** 及其功能 , 为您提供全方位的 Grub 命令指南 。无论您是 Linux 初学者还是有经验的专业人士 , 本文都将为您提供实用的技能和知识 。

grub命令行 grub命令详解

文章插图
原文转自不点 , 本人有改动和删减
首先 , grub4dos 是什么?
Grub4DOS 是服务于 PC BIOS 平台的一个开源的引导管理器 , 是基于 GNU GRUB legacy 开发出来的 , 以 GPL2 授权协议发布 。
这个引导管理器有什么特点?
它可以用来启动 DOS、Windows、Linux 等多种操作系统 , 也可以用来启动其他引导管理器 。它自己可以经由 MBR、PBR、CDROM、PXE 启动 , 也可以从 DOS、Win9x、linux 等操作系统之下启动 , 或者被其他引导管理器如 fbinst、NTLDR、BOOTMGR、SYSLINUX、GNU GRUB、LILO 启动 。它具有磁盘、光盘仿真功能(基于实模式 BIOS) , 可以用来启动软盘、硬盘、光盘映像 。
grub4dos 核心文件介绍
grub4dos 有两个核心文件 , GRLDR 和 grub.exe , 分别用于不同的场合 。
在 grub4dos 发展的早期 , 只有 GRUB.EXE 这一个核心文件 , 没有 grldr 文件 。GRUB.EXE 起初只是 DOS 可执行文件格式 , 它由两部分构成:
头部 + 主体
“头部”是为“主体”的运行做准备的 。“主体” 就是 GNU GRUB 的核心代码 pre_stage2 。后来 , grub.exe 也可以当作 DOS 设备驱动格式用 DEVICE=grub.exe 加载 , 甚至 grub.exe 也成为一个合法的 Linux 内核格式 , 可以被其他许多引导工具加载 。不过 , “头部+主体” 这个总体结构没有变化 。
GRLDR 也是类似的 , 由 “头部 + 主体” 构成 。与 “GRUB.EXE 是为DOS 而生”的情况类似 , GRLDR 就是为 NTLDR 而生的 。它甚至曾经被称为“grub for ntldr” 。grub4dos 的核心文件都碰巧具有这样一个简单的、单一的总体结构 , 这使得它们容易被分析和掌握 。
GRLDR 的头部占用 16 扇区 , 也就是 8K , 即 8192 个字节 , 或者(用十六进制表示)0x2000 字节 。GRLDR 的头部会被 NTLDR 加载 。遗憾的是 , NTLDR 不能够把 GRLDR 完整加载到内存 , 只能刚好加载 8K 大小的头部 。这就是“为什么 GRLDR 的头部正好是8K” 的原因 。这样 , 当头部获得控制后 , 它就有一个首要的任务 , 即寻找“主体” 部分在哪里 , 然后加载主体部分到内存 。实际的执行步骤是 , 头部在各个硬盘各个分区的根目录寻找整个GRLDR 文件(如果都失败 , 那么最后会尝试在第一软盘 fd0 的根目录寻找 GRLDR 文件) , 找到 GRLDR 之后就加载完整的 GRLDR 文件到内存 , 并递交控制权 。
这里顺便提及 grldr.mbr 文件 。它主要被用于安装到 MBR 上 。它的长度是 18 个扇区(即 9K) 。它的任务和功能是寻找并加载 GRLDR 文件 。这有点类似于 GRLDR 头部的作用 。但 GRLDR 头部是被 NTLDR 加载 , 而 grldr.mbr 是被 BIOS 加载 , 所以 , 这还是有差别的 。grldr.mbr 末尾的两个扇区是用来探测和适应 BIOS 的磁盘几何参数的 。所以 , grldr.mbr 的长度是 18 个扇区 , 比 grldr 的头部(16 扇区)多了两个扇区 。grldr.mbr 也能被 NTLDR 加载 , 但是 , NTLDR 也只能加载 grldr.mbr 的开头的 16 扇区(8K) , 不能加载末尾的两个扇区 。NTLDR 的升级版 —— BOOTMGR —— 却能够完整加载 grldr.mbr 到内存 , 这是因为 BOOTMGR 可以加载长达 64K 的文件 。而 grldr.mbr 只有 9K , 所以 , 它能够被 bootmgr 完整加载到内存 。