当建造 bootdisks 时,开始的几次尝试结果常常是无法开机。建造一张 root disk 的一般方法是组合来自你现有系统的元件 (compnents) ,接著尝试与得到这个以磁片为基础的系统 (diskette-based system) ,直到它在 console 上显示信息。一旦它开始与你交谈,这场战斗就结束一半了,因为你可以了解它在抱怨什么,而且你可以解决个别的问题直至系统能平顺地运作。如果系统停止运作而没有任何说明,要找到这原因会是一件困难的事。为了让系统能启动到能与你交谈的阶段,这需要使用到好几种元件,而且这些元件要经过正确地组态。以下是调查系统无法与你交谈之问题的建议程序:
kernel panic: VFS: Unable to mount root fs on XX:YY这是常见的问题,而它只有一些原因。首先,请根据 device code 清单检查 device XX:YY ;它是正确的 root device 吗 ?如果不是,那你可能没有做过
rdev -R
,或者是你是对错误的 image 执行rdev -R。如果 device code 是正确的,那么请仔细地检查被编译到你 kernel 内的 device 驱动程序。请确定它有内建软盘片、 ext2 filesystem 支持。
end_request: I/O error, dev 01:00 (ramdisk), sector NNN这是 ramdisk driver 所报告的 I/O 错误信息,可能是因为 kernel 正尝试写入超越了设备的结尾。你的 ramdisk 因为太小而不能持有你的 root filesystem 。请检查你的 bootdisk kernel 的初始化信息,找一行像是:
Ramdisk driver initialized : 16 ramdisks of 4096K size请针对 root filesystem 未经压缩的 size检查上述的 size 。如果 ramdisks 不够大,那就让它更大吧。
以上已经涵盖一般部分,以下是一些更特定的文档与检查项目:
init
是以 /sbin/init 或 /bin/init 的形式被包括进来。并且确认它是可执行的。
ldd init
以检查 init 的函式库。通常这个就是 libc.so ,但是请无论如何还是检查一下。请确定你已放入了必备的函式库与 loaders。
getty
(或某种类似 getty
的程序,诸如 agetty
, mgetty
或 getty_ps
)的呼叫,检查你bootdisk filesystem上的 /etc/inittab。请针对你硬盘的 inittab 检查两次。再检查你所使用的程序的 man pages 以确定这些是有意义的。 inittab 可能是最诡异的部分,因为它的语法与内容,依据所使用的 init 程序与系统本质而有所不同。解决的唯一之道就是去阅读 init
与 inittab
的man pages,然后再正确地做出既存系统开机时所做的事。请检查以确定 /etc/inittab 有一个系统初始化的记录 (entry) 。它应该包括一个指令以执行必定存在的系统初始化 script 。
init
,对你的 getty
执行 ldd
以了解它需要什么,同时确定必备的函式库文档与 loaders 是否被放入你的 root filesystem 。
bash
or ash
),它能够执行你所有的 rc scripts 。
如果 init
启动,但是你却得到一行信息像是:
Id xxx respawning too fast: disabled for 5 minutes它是来自于
init
,通常指出 getty
或 login
被终结只要 init 启动。请检查 getty
与 login
的可执行档与相依的函式库。请确定在 /etc/inittab 内的呼叫 (invocations) 是正确的。如果你得到来自 getty
的奇怪信息,它可能是指 /etc/inittab 内的呼叫格式是错误的。
如果你得到一个 login 提示 (prompt) ,然后你输入一个有效的 login name ,但是系统却立即提示你要输入另一个 login name ,那么这个问题可能是出在 PAM 或 NSS 。请看 PAM and NSS 这一节。问题也可能是你使用 shadow passwords 而你却没有 copy /etc/shadow 到你的 bootdisk 上。
如果你尝试去执行某个可执行档,诸如 df
,而这个执行档是在你的救援磁片上,执行时却出现像这样的信息: df: not found
,这时请检查两件事:(1)请确定包含二进位档的目录有设定在你的 PATH ,(2)请确定你有程序所需的函式库 (与 loaders)。