The Linux Bootdisk HOWTO 中译版(9)

2008-02-23 07:22:42来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折



当建造 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 不够大,那就让它更大吧。
请检查 root disk 实际上有包含你所认为应该被包含的目录。 Copy 到错误的 level 是容易犯的错误,以致於到最後在你的 root 磁碟片上,你会有像是 /rootdisk/bin 的目录,而非 /bin。
请检查是否有 /lib/libc.so ,而它是否有与你硬碟内 /lib 目录中所显示之相同 link 。
请检查你既存系统 /dev 目录内的 symbolic links 是否同时也存在於你的 root 磁碟片 filesystem 上,在此,那些 links 是连往你已包括在你 root 磁碟片上的 devices 。尤其是在很多情况下, /dev/console links是最基本的。
请检查你是否已包括了 /dev/tty1, /dev/null, /dev/zero, /dev/mem, /dev/ram 与 /dev/kmem 这些档案。
请检查你的 kernel 组态设定 - 对於直到登录点 (login point) 所需之所有资源的支援必须被内建,不能使用模组。所以 ramdisk 与 ext2 支援必须被内建 。
请检查你的 kernel root device 与 ramdisk 设定是否正确。
以上已经涵盖一般部分,以下是一些更特定的档案与检查项目:


请确定 init 是以 /sbin/init 或 /bin/init 的形式被包括进来。并且确认它是可执行的。
请执行 ldd init 以检查 init 的函式库。通常这个就是 libc.so ,但是请无论如何还是检查一下。请确定你已放入了必备的函式库与 loaders。
请确定你把正确的 loader 给你的函式库 -- ld.so 是给 a.out 而 ld-linux.so 是给 ELF 。
请针对 getty (或某种类似 getty 的程式,诸如 agetty, mgetty 或 getty_ps)的呼叫,检查你bootdisk filesystem上的 /etc/inittab。请针对你硬碟的 inittab 检查两次。再检查你所使用的程式的 man pages 以确定这些是有意义的。 inittab 可能是最诡异的部分,因为它的语法与内容,依据所使用的 init 程式与系统本质而有所不同。解决的唯一之道就是去阅读 init 与 inittab 的man pages,然後再正确地做出既存系统开机时所做的事。请检查以确定 /etc/inittab 有一个系统初始化的记录 (entry) 。它应该包括一个指令以执行必定存在的系统初始化 script 。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Linux 指令篇:日期时间排程--uptime

下一篇:Linux 指令篇:档案目录管理--chmod