2024年2月21日发(作者:)

Grub命令详解

blocklist

用法: blocklist FILE

描述:

输出文件的块清单标记。

boot

用法: boot

描述:

引导已加载的操作系统或扇区链式加载器。

bootp

用法: bootp [--with-configfile]

描述:

通过BOOTP初试化网络设备。如果使用了`--with-configfile'参数,此命令将会试图去加载一个特定的配置文件。

cat

用法: cat FILE

描述:

显示指定文件的内容。

chainloader

用法: chainloader [--force] FILE

描述:

加载扇区链式加载器。若使用了--force参数, 则忽略该扇区的启动标识的有效性。

cmp

用法: cmp FILE1 FILE2

描述:

比较两个文件, 并且报告两者之间的不同的信息。

color

用法: color NORMAL [HIGHLIGHT]

描述:

改变菜单的颜色。Normal 用于指定菜单项的未选中时的颜色,HIGHLIGHT 则用于指定菜单项的被选中时的颜色。如果你未指定 HIGHLIGHT 色,那么我们将使用 NORMAL 的反色值。颜色值的格式是 "FG/BG"。FG 和 BG 是颜色的名称,如下:black(黑), blue(蓝),

green(绿), cyan(青), red(红), magenta(粉红), brown(棕), light-gray(亮灰),dark-gray(暗灰),

light-blue(浅蓝), light-green(淡绿), light-cyan(淡青), light-red(明红), light-magenta(浅红),

yellow(黄) 和 white(白)。注意,BG 的值只能是前八个。另外,若想使用闪烁的前景色,你在 FG 前使用前缀 "blink-" 即可。

configfile

用法: configfile FILE

描述:

将指定文件作为配置文件予以加载。

debug

用法: debug

描述:

打开/关闭除错模式。

default

用法: default [NUM | `saved']

描述:

把 NUM 项菜单设为缺省值。

device

用法: device DRIVE DEVICE

描述:

声明BIOS驱动器对应的实际物理设备。这条命令只用于grub命令行。

portmap

用法: portmap prog_number vers_number

描述:

进行端口映射。

dhcp

用法: dhcp

描述:

通过DHCP初试化网络设备。

splashimage

用法: splashimage FILE

描述:

图形模式下载入背景图片文件。

foreground

用法: foreground RRGGBB

描述:

设置图形模式下的前景色。RR 代表红色, GG 代表绿色, BB 代表蓝色。注意他们都使用十六进制的值。

background

用法: background RRGGBB

描述:

设置图形模式下的背景色。RR 代表红色, GG 代表绿色, BB 代表蓝色。注意他们都使用十六进制的值。

clear

用法: clear

描述:

清屏幕。

displayapm

用法: displayapm

描述:

显示 APM BIOS 的相关信息。

displaymem

用法: displaymem

描述:

显示 GRUB 所判断到的当前系统的内存分布,包括所有物理内存区域。

dump

用法: dump FROM TO

描述:

显示诸多文件的内容。注意,FROM 所指定的必须是一个 GRUB 文件,TO 所指定的必须是一个 OS 文件。

embed

用法: embed STAGE1_5 DEVICE

描述:

如果设备是个驱动器, 则将Stage 1.5嵌入到主引导扇区之后。如果是个FFS分区, 则可嵌入到该设备饿`引导代码'区中。并输出 Stage 1.5所占的扇区数。

fallback

用法: fallback NUM

描述:

如果调用当前的菜单项时出现错误,则转移到 NUM 项后重试

find

用法: find [--set-root] FILENAME

描述:

在所有分区上查找文件名, 并显示包含该文件的设备。如果设置了参数 --set-root,则在找到第一个匹配后马上停止,并且把该设备设为根。

fstest

用法: fstest

描述:

切换文件系统的试验模式。

gfxmenu

用法: gfxmenu FILE

描述:

使用 FILE 中的图形菜单。

geometry

用法: geometry DRIVE [CYLINDER HEAD SECTOR [TOTAL_SECTOR]]

描述:

输出驱动器的相关信息。在grub壳程序中, 你可以用这条命令设置驱动器参数为任意值。如果你省略了总扇区数, 则该值缺省有其它参数决定。

halt

用法: halt [--no-apm]

描述:

关闭系统。如果APM(高级电源管理)功能存在,将使用 APM BIOS 关闭系统,除非指定了

`--no-apm' 选项。

help

用法: help [--all] [PATTERN ...]

描述:

显示内部命令的帮助信息。要查看所有命令的帮助,请使用 `--all' 参数。

hiddenmenu

用法: hiddenmenu

描述:

隐藏菜单。

hide

用法: hide PARTITION

描述:

通过在分区类型上置隐藏标志,隐藏指定分区。

ifconfig

用法: ifconfig [--address=IP] [--gateway=IP] [--mask=MASK] [--server=IP]

描述:

指定 IP 地址, 子网掩码, 网关和服务器地址。不带参数时,将显示当前的网络配置。

impsprobe

用法: impsprobe

描述:

通过一些循环操作,侦测出符合 Intel 多处理器规范 1.1/1.4 的 CPUs,以便于发挥其更好的效能。

initrd

用法: initrd FILE [ARG ...]

描述:

加载Linux格式的初始化虚拟盘, 并设置必要的参数。

install

用法: install [--stage2=STAGE2_FILE] [--force-lba] STAGE1 [d] DEVICE STAGE2 [ADDR]

[p] [CONFIG_FILE] [REAL_CONFIG_FILE]

描述:

安装STAGE1到指定设备上,安装加载STAGE2需要的块列表到STAGE2上。如果使用了选项'd', STAGE1总是试图使用安装STAGE2的驱动器, 而不是启动盘。STAGE2将加载在指定地址上, 如果未声明地址, 则自动检测。如果使用了选项 'p' 或给出了配置文件, 将修改STAGE2的第一个数据块, 修正实际Stage2启动时使用的配置文件位置。对于Stage

1.5, 该值为Stage 2的路径。如果安装的是Stage 1.5, 且指定了实际配置文件, 则将该配置文件路径写入Stage2中。

ioprobe

用法: ioprobe DRIVE

描述:

侦测指定设备的 I/O 端口号。

kernel

用法: kernel [--no-mem-option] [--type=TYPE] FILE [ARG ...]

描述:

尝试载入主引导影像文件。其它项将被作为内核的命令行参数而传递给内核。使用此命令以前,内核所用到的模块应该被重新载入。参数 --type 用于说明内核的类型,包括 "netbsd",

"freebsd", "openbsd", "linux", "biglinux" 和 "multiboot"。参数 --no-mem-option 用于说明不必自动传递 Linux 的内存参数。

lock

用法: lock

描述:

如果用户未被认证,则终止命令的执行。

makeactive

用法: makeactive

描述:

将 root 设备置为活动分区。当然,此命令只对 PC 的硬盘主分区有效。

map

用法: map [--status] [--hook] [--unhook] [--rehook] [[--read-only] [--fake-write]

[--unsafe-boot] [--disable-chs-mode] [--disable-lba-mode] [--heads-per-cylinder=H]

[--sectors-per-track=S] TO_DRIVE FROM_DRIVE]

描述:

对设备进行映射。这对于扇区链式引导是很有用的功能,比如 DOS。这里,目的驱动器(TO_DRIVE)可以是一个磁盘文件,即使用磁盘虚拟功能。注意,这要求磁盘文件是连续存放于分区中的。另外,若使用了 --read-only 参数,该功能将使`磁盘'处于只读;若使用了

--fake-write 参数,该功能将使`磁盘'处于假写,即可以"写入"数据,但是却并未记录到真实磁盘上; 若使用了 --unsafe-boot 参数,该功能将使`磁盘'处于真实可写; 若使用了

--disable-chs-mode 参数,CHS 访问功能将被禁用; 若使用了 --disable-lba-mode 参数,

LBA访问功能将被禁用; H 和 S 指定了虚拟磁盘的物理参数。若使用了 --status, --hook,

--unhook,--rehook 诸参数之一, 那么其它的命令行参数将被忽略。

md5crypt

用法: md5crypt

描述:

产生一个 MD5 格式的密码。

module

用法: module FILE [ARG ...]

描述:

对多重启动影像, 加载启动模块文件 (不处理该文件的内容, 用户必须自己确定核心的要求)。剩余参数作为`模快命令行`传递, 象`kernel'命令一样。

modulenounzip

用法: modulenounzip FILE [ARG ...]

描述:

与 'module' 类似, 但是自动禁用了解压缩。

pager

用法: pager [FLAG]

描述:

没有参数时,切换页模式。如果使用了 FLAG 参数,那么它为`on' 时为开启, 为 `off' 时为关闭。

partnew

用法: partnew PART TYPE START LEN

描述:

创建一个新的主分区。START 为起始扇区号,LEN 为其包含的扇区数,TYPE 为其分区类型。

parttype

用法: parttype PART TYPE

描述:

改变指定分区(PART)的分区类型(TYPE)。

password

用法: password [--md5] PASSWD [FILE]

描述:

设置密码。当其处于菜单文件的首项时,将禁用所有的交互式菜单编辑功能,包括编辑菜单项(`e`)/进入命令行(`c`)。当正确输入密码 (由PASSWD指定)后,载入新的菜单文件(由FILE指定)。如果你没有指定 FILE 项,那么上述被禁用的功能将被启用了。当然,你也可以将此命令用到某个菜单项里,用以提高系统安全性。参数 --md5 说明密码(PASSWD)是使用md5crypt 加密的。

pause

用法: pause [MESSAGE ...]

描述:

终止命令的运行,并给出一段信息。任意键按下后,将继续。

quit

用法: quit

描述:

从 GRUB 命令行中退出。

rarp

用法: rarp

描述:

用 RARP 初始化网络设备。

read

用法: read ADDR

描述:

从内存的指定位置读取一个 32-bit 的值,并以十六进制形式显示出来。

reboot

用法: reboot

描述:

重启系统。

fontfile

用法: fontfile FILE

描述:

指定中文字体文件,并切换到简体中文显示方式。

scdrom

用法: scdrom [--install], [--bootcd]

描述:

寻找系统的第一个 CD-ROM 驱动器,然后为其分配一个驱动器号以备后续使用(--install)。或者,用该驱动器中的可引导光盘启动系统。(--boot)。

run

用法: run FILE

描述:

运行一个为光盘启动而设计的引导文件(非模拟方式的)

root

用法: root [DEVICE [HDBIAS]]

描述:

设置根分区。设置根分区为指定设备(DEVICE), 然后尝试挂接该分区以得到分区大小(用于在ES:ESI中传递, 扇区链式启动方式要求这样)。BSD 驱动类型用于启动 BSD 的核心启动), 和确定 BSD 子分区所在的 PC 分区。可选的磁盘偏移参数, 用于 BSD 核心确定有多少个控制器在当前控制器前。比如: 假设同时有一个IDE和SCSI盘, 而BSD根分区在

SCSI盘上, 那么磁盘偏移就为1。

rootnoverify

用法: rootnoverify [DEVICE [HDBIAS]]

描述:

类似`root'指令, 但不测试安装该分区。这用于有些系统装在 GRUB 能访问的磁盘区之外,

但仍需要设置正确的根分区的情况。有些需要安装分区才能确定的参数可能会有问题。

savedefault

用法: savedefault

描述:

将当前项设置为默认的引导项。

serial

用法: serial [--unit=UNIT] [--port=PORT] [--speed=SPEED] [--word=WORD]

[--parity=PARITY] [--stop=STOP] [--device=DEV]

描述:

初始化一个串口设备。UNIT 用于指定要使用的串口设备 (如,0 == COM1); PORT 用于指定端口号; SPEED 用于指定通讯的数率; WORD 为字长; PARITY 为奇偶类型(取 `no',

`odd' 和 `even' 之一的值。); STOP 是停止位的长度值; 选项 --device 仅用于命令行模式,用以指定 tty 设备的文件名。默认值是这样的,COM1, 9600, 8N1。

setkey

用法: setkey [TO_KEY FROM_KEY]

描述:

改变键盘映射关系。把FROM_KEY映射为TO_KEY。这里的键必须是字母, 数字, 和以下特殊键: escape(转义), exclam(!), at(@), numbersign(#), dollar($), parenright ()) , caret(^),

ampersand(&), asterisk(*), plus(+), percent(%), minus(-), underscore(_), equal(=),

parenleft[(], backspace(退格), tab(制表), bracketleft([), braceleft({), bracketright(]),

braceright(}), enter(回车), control(控制), semicolon(;), colon(, quote('), doublequote("),

slash(/), backquote(`), tilde(~), shift(换档), backslash(), bar(|), comma(,), less(<), period(.),

greater(>), question(?), alt(交互), space(空格), capslock(大写), Fx(功能键) 和 delete(删除)。

setup

用法: setup [--prefix=DIR] [--stage2=STAGE2_FILE] [--force-lba] INSTALL_DEVICE

[IMAGE_DEVICE]

描述:

自动安装GRUB. 这条命令使用更灵活的install命令将GRUB安装到指定设备上。如果给出了映象设备,将在该设备寻找GRUB,否则使用缺省的根设备。根设备可用 root指令指定。如果你确认系统的 BIOS 应该支持 LBA 模式, 但是 GRUB 却没有工作于该模式, 则请指定 `--force-lba' 参数。如若你在命令行中已安装了一次 GRUB 可是,你却无法卸载

GRUB 程序所在的分区,请指定 `--stage2' 参数。

terminal

用法: terminal [--dumb] [--no-echo] [--no-edit] [--timeout=SECS] [--lines=LINES] [--silent]

[console] [serial] [hercules] [graphics]

描述:

选择一个终端。当指定了多个终端以后, 按任意键方可继续操作。如果控制台和串口都被指定了, 那么你首先在其中按下键盘的终端将被首先选中。如果没有指定任何参数, 那么此命令将显示出当前的终端设置; 参数 --dumb 用以指定一个哑终端, 否则即为 vt100 兼容型;

若使用了 --no-echo 参数, 屏幕上将不会回显输入的字符; 若使用了 --no-edit 参数, the

BASH-like 的编辑功能将被禁用; 若使用了 --timeout 参数, 该命令将等待数秒钟(由SECS指定); 可使用 --lines 指定最大的行数; 可使用 --silent 选项关闭消息显示。

terminfo

用法: terminfo [--name=NAME --cursor-address=SEQ [--clear-screen=SEQ]

[--enter-standout-mode=SEQ] [--exit-standout-mode=SEQ]]

描述:

指定终端的功能。如果此终端为 vt100 兼容型的,则可指定换码顺序 (即使用 e 代表

ESC, ^X 代表控制码); 在未给任何参数的情况下,将给出当前配置信息。

testload

用法: testload FILE

描述:

以多种不同的方式读取文件(由FILE指定)的整个内容,并予以比较,以测试文件系统的代码。输出看起来会有点儿混乱,但是,如果没有错误的话,`i=X, filepos=Y' 里的 X 和 Y 最后必得相等。如果测试即告成功,下一步即可试图载入内核了。

testvbe

用法: testvbe MODE

描述:

测试所指定(MODE)的 VBE 模式。

tftpserver

用法: tftpserver IPADDR

描述:

指定 TFTP 服务器的 IP 地址。

timeout

用法: timeout SEC

描述:

设置在自动启动缺省菜单前所等待的秒数。

title

用法: title [NAME ...]

描述:

命名菜单项。

unhide

用法: unhide PARTITION

描述:

通过清除隐藏标志,解除指定分区(PARTITION)的隐藏。

uppermem

用法: uppermem KBYTES

描述:

强制指定仅有(KBYTES) KB 的上位内存。任何系统的地址变换将被取消。

vbeprobe

用法: vbeprobe [MODE]

描述:

侦测 VBE 的信息。如果指定了一个模式(MODE 不为空),则仅显示其信息。

**********************************************************

ubuntu下我经常

find /grub/stage1 (查找grub安那个分区了)

root (hdX ,Y ) 引导第x硬盘 y分区

setup (hdx) 安grub到x硬盘

quit

安装redhat linux时会提示安装引导程序,如果选择grub为引导程序,建议把grub安装到硬盘的引导扇区 还可以引导其它操作系统,如 FreeBSD、NetBSD、OpenBSD、GNU HURD 和 DOS,以及 Windows 95、98、NT、2000、XP。

(二)grub的配置

一旦选择了grub为引导程序,下面我们来了解一下它的配置。/boot/grub/是grub产生一个引导选择菜单以及设置一些选项。下面是我的:

#==========例子开始========== # generated by anaconda # # Note that you do not have to

rerun grub after making changes to this file # NOTICE: You have a /boot partition. This means that # all kernel

and initrd paths are relative to /boot/, eg. # root (hd0,6) # kernel /vmlinuz-version ro root=/dev/hda10 # initrd

/ #boot=/dev/hda default=0 timeout=10 splashimage=(hd0,6)/grub/ # -->

Redhat Linux 8.0 <-- title Red Hat Linux (2.4.18-14) root (hd0,6) kernel /vmlinuz-2.4.18-14 ro root=LABEL=/

initrd / # --> Microsoft Windows XP <-- title Microsoft Windows XP rootnoverify (hd0,0)

chainloader +1 #===========例子结束==========

配置选项解释:

以"#"开头的是注释行。我这里有两个操作系统,分别是Red Hat Linux和Microsoft

Windows XP。其中,timeout标识默认等待时间,我这设置为10秒,超过10秒用户还没作出选择的话,将自动选择默认的操作系统(我这里默认的是Redhat linux 8.0)

默认的操作系统是由default一项来控制的,default后的数字表明第几个是默认的,

这里0表示第一个,1表示第二个。

所以如果你想修改默认的操作系统,就修改default后的数字。title一项是设置操作系统的名称,grub不支持中文(有点遗憾)。splashimage一项指定grub界面的背景图片,有兴趣的朋友可以修改grub的背景。

root (hd0,6)标识从第一个硬盘,第7个分区来启动搜索引导内核。注意这儿的root与linux的root分区不同,此root非彼root也!grub的硬盘标识方法与linux的有点不同。在linux中第一个主分区为hda1,第二个主分区为hda1,第一个逻辑分区为hda5,而在grub中是以(hdx,y)来标识的,如第一个主分区为(hd0,0)第一个逻辑分区为(hd0,1)依此类推。

所以这儿root后面的是你的/boot所在分区标识。知道了内核在哪儿,还要具体指出哪个文件是内核文件,这就是ke

rnel的工作。kernel /vmlinuz-2.2.18-14 ro

root=LABEL=/。说明/boot/vmlinuz-2.2.18-14就是要载入的内核。后面的都是传递给内核的参数。

ro是以readonly的意思。注意我这里内核前面的路径是"/",因为我的boot单独分了一个区,如果你没有为boot单独分区,那么内核前面的路径就是"/boot"。initrd用来初始的linux image,并设置相应的参数。

再来看一看windows的定义段吧。这里,我添加了一项来引导 WindowsXP。要完成此操作,GRUB使用了"链式装入器"(chainloader)。链式装入器从分区 (hd0,0) 的引导记录中装入 winXP 自己的引导装入器,然后引导它。这就是这种技术叫做链式装入的原因 -- 它创建了一个从引导装入器到另一个的链。

这种链式装入技术可以用于引导任何版本的 DOS 或 Windows。如果你在计算机中装有win98,winme,win2k,winxp的话,chainloader会把引导权交与win的NTLoader来引导。

(三)Grub启动盘的制作

要制作引导盘,需执行一些简单的步骤。首先,在新的软盘上创建 ext2 文件系统。然后,将其安装,并将一些 GRUB 文件复制到该文件系统,最后运行 "grub" 程序,它将负责设置软盘的引导扇区。

将一张空盘插入 1.44MB 软驱,输入:

# mke2fs /dev/fd0 创建了 ext2 文件系统后,需要安装该文件系统: # mount /dev/fd0 /mnt/floppy 现在,需要创建一些目录,并将一些关键文件 (原先安装 GRUB 时已安装了这些文件)复制到软盘: # mkdir

/mnt/floppy/boot # mkdir /mnt/floppy/boot/grub # cp /boot/grub/stage1 /mnt/floppy/boot/grub # cp

/boot/grub/stage2 /mnt/floppy/boot/grub

再有一个步骤,就能得到可用的引导盘。

在linux bash中,从root用户运行"grub",该程序非常有趣并值得注意,因为它实际上是GRUB引导装入器的半功能性版本。尽管 Linux 已经启动并正在运行,您仍可以运行

GRUB 并执行某些任务,而且其界面与使用 GRUB 引导盘或将 GRUB 安装到硬盘 MBR 时看到的界面(即GRUB控制台)完全相同。在 grub> 提示符处,输入:

grub> root (fd0) grub> setup (fd0) grub> quit

现在,引导盘完成了。

(四)恢复被windows破坏的grub

如果你用grub来引导linux和windows,当windows出毛病重新安装后,会破坏MBR中的grub,这时需要恢复grub。

1.把linux安装光盘的第一张放到光驱,然后重新启动机器,在BOIS中把系统用光驱来引导。

2.等安装界面出来后,按F4键,也就是linux rescue模式。

3.一系列键盘以及几项简单的配制,过后就“继续”了这个过程,这里不说了,比较简单。

4.然后会出现这样的提示符:

sh#

5.我们就可以操作GRUB了。输入grub:

sh#grub

会出现这样的提示符:

grub>

我们就可以在这样的字符后面,输入:

grub>root (hdX,Y) grub>setup (hd0)

如果成功会有一个

这里的X,如果是一个盘,就是0,如果你所安装的linux的根分区在第二个硬盘上,那X就是1了;Y,就是装有linux系统所在的根分区。 setup (hd0)就是把GRUB写到硬盘的MBR上。

(五)用NTLoader来引导linux

如果你在安装linux时没有选择安装grub,不必着急,现在我们来看看如何在安装linux后安装grub。并用windows的NTLoader来引导linux。

1. 安装grub

我用的grub是Redhat8.0带的grub安装包:

安装: rpm -ivh

其他安装方式也一样,只要你安装上grub就行了。RH8缺省用的grub, 1、2步骤可以省了。

2. 建立grub的环境

cp /usr/share/grub/i386-pc/* /boot/grub

3. 生成grub的配置文件/boot/grub/

按照上面所讲的来生成一个配置文件。

注意了, 这里我的linux在/dev/hda4,所以那些分区位置为(hd0,3),

你的可能不一样了,不能完全照着"画瓢"噢! 下面第3步install的中的分区位置也应该和你的系统一致。

安装grub至Linux分区boot

将grub的stage1安装到/dev/hda4的boot扇区(hd0,3)。 过程如下:

/sbin/grub (运行grub) grub> install (hd0,3)/boot/grub/stage1 d (hd0,3) (hd0,3)/boot/grub/stage2 p (hd0,3)/boot/grub/

(注意,上面"grub>"为grub的提示符,其后内容写在一行上。)

4. 取得grub的boot信息

过程如下:

dd if=/dev/hda4 of=/ bs=512 count=1

这样得到grub的引导信息,只要用NT Loader来加载它就行了。

5. 将上面得到的弄到Windows的C盘根目录下,可以先把弄得软盘上,然后启动windows,拷贝到C:; 情况允许也可以直接在Linux下拷贝到C:了。 我的C盘(即设备/dev/hda1)为FAT32, 可以直接从Linux下弄过去了。 如下:

mount -t vfat /dev/hda1 /mnt/c cp / /mnt/c umount /mnt/c

6. 修改NT Loader的

在其中加入一行: C:="Redhat Linux - GRUB"

加入后的内容如下:

[boot loader] timeout=15 default=C: [operating systems] multi(0)disk(0)rdisk(0)partition(1)

WINDOWS="Microsoft Windows XP Professional" /fastdetect [VGA mode]" /basevideo /sos

C:="Redhat Linux - GRUB"

可以用NT Loader加载Linux了, 其实上面过程基本上和用NT Loader加载LILO一样。其基本思想就是用NT Loader来加载LILO或grub的引导区(), 其中的关键就是LILO或grub的引导区的获取。

(六)活用grub的交互功能

grub具有强大的交互功能。学会了将会使你受益非浅!

没有显示菜单怎么办?

当开机后进入grub界面但没了菜单,只剩下一个grub>提示符,怎么启动呢?别急,看下面:

grub>cat (hd0,6)/boot/grub/ (为了看参数) grub>root (hd0,6) grub>kernel (hd0,6) /vmlinuz-2.4.18-14

ro root=LABEL=/ grub>initrd (hd0,6) / grub>boot

启动了吧!以上有些数字要根据你的实际情况更改。以上这个方法也可以用于测试新编译的内核。

2.进入单用户模式。

有时不小心把root用户密码忘了,只能进入单用户模式来重新设置root密码。方法如下:开机进入grub界面,按C进入命令行模式,然后按照上面的方法进行,只是在第三步要在后面加入single参数。

本人从硬盘用GRUB启动iso是成功的。也可从U盘启动iso(非量产)。

最新 grub4dos 支持 ISO 的仿真。无论是 no-emulation 可启动模式,还是 floppy or hard

disk emulation 可启动模式的 ISO 文件,都支持。这说明,grub启动iso还是有条件的。用法示例:

title 启动

map (hd0,0)/ (hd32)

map --hook

chainloader (hd32)

boot

说明,(hd32) 就等于 (128 + 32),也就是 (0xA0),当用 map 仿真时,如果用户指定的磁盘号码大于或者等于 0xA0,那么 map 命令就认定这是 ISO 仿真。也就是说,此时虚拟磁盘的扇区大小是 2048 字节(只有这样才能作为光盘使用,这是“可启动光盘规范”所规定的),而不是通常软盘和硬盘中的 512 字节扇区大小.