在 PC 上,主板的 BIOS 和大多数 SCSI 主机适配器提供的 SCSI BIOS 共同负责将引导加载程序的镜像从 SCSI 磁盘加载到内存并执行的问题。这可能需要在主板的 BIOS 中更改一些设置。当涉及多个 SCSI 适配器时,可能需要更改 SCSI BIOS 设置以指示哪个适配器包含引导镜像的磁盘。引导镜像也可以来自 ATA (IDE) 磁盘、可引导 CD-ROM 或软盘。
lilo 和 grub 都是 Linux 中常用的引导加载程序。它们的配置文件位于/etc/lilo.conf和/etc/grub.conf [1] 分别是。一个区别是,在更改 lilo 的配置后,必须执行 lilo 命令才能使更改生效(而 grub 没有等效的要求)。有关用法信息,请参阅它们的“man”页。一篇关于 lilo 和 Linux 启动顺序的优秀文章可以在 ftp://icaftp.epfl.ch/pub/people/almesber/booting/bootinglinux-0.ps.gz 找到。有关 grub 的更多信息,请参阅 www.gnu.org/software/grub。
一些与 SCSI 子系统相关的引导参数
single [enter single user mode] <n> [enter run level <n> {0..6}] root=/dev/sda6 [*] root=/dev/scsi/host0/bus0/target0/lun0/part6 [*] root=/dev/sd/c0b0t0u0p6 [*] devfs=mount [overrides CONFIG_DEVFS_MOUNT=n] devfs=nomount [overrides CONFIG_DEVFS_MOUNT=y] init=<command> [executes <command> rather than init] quiet [reduce output to console during boot] debug [increase output to console during boot] nmi_watchdog=0 [turn off NMI watchdog on a SMP machine] max_scsi_luns=1 [limits SCSI bus scans to lun==0] scsi_allow_ghost_devices=<n> |
"root=" 参数也可以是一个十六进制数。例如,如果根分区位于/dev/sda3那么 "root=803" 是合适的。最后两位数字是前面章节讨论过的次设备号。
"init" 参数的默认参数是/sbin/init(参见 man (8) init)。如果文件例如/etc/fstab有不正确的条目,直接进入带有 "init=/bin/bash" 的 shell 可能很有用。但是,如果共享库文件或其路径不合适,这也可能会失败。这样就剩下 "init=/sbin/sash",它是一个静态链接的 shell,内置了许多有用的命令(用于修复系统)(参见 man (8) sash)。
当 Linux 在报告类似如下消息后无法启动时
VFS: Cannot open root device 08:02 |
Lilo 的配置文件/etc/lilo.conf可以通过两种方式采用 "root=" 选项。正常的方式是像这样的行:'root=/dev/sda2'。在这种情况下/dev/sda2会在执行 lilo 命令时根据系统状态转换为主设备号和次设备号。这可能很麻烦,尤其是在要重新排列硬件的情况下。另一种方式是以下形式的行:'append="root=/dev/sda2"' 在这种情况下/dev/sda2会在下次启动时传递给内核。这与在内核启动时提示符下给出 "root=/dev/sda2" 字符串相同。它在启动时由内核解释(一旦 HBA 及其连接的设备被识别),因此更加灵活。
[1] | grub 的一个小问题是/etc/grub.conf是一个指向的符号链接/boot/grub/grub.conf。当/boot是一个单独的分区时,这可能很有用。 |