由于 mkinitrd 中的错误,许多错误最终导致 initrd 损坏。
让用户将其内核的 initrd 以及 /etc/modprobe.conf 附加到 bz,或者让他们自己检查内容(如果他们有能力的话)。
拆开工作内核和故障内核的 initrd 并对 init 脚本进行比较可以揭示线索。要拆开 initrd,请执行以下操作..
mkdir initrd
cd initrd/
gzip -dc /boot/initrd-2.6.23-0.104.rc3.fc8.img | cpio -id
我想了解这里到底做了什么。
有initrd
什么关系吗?
我们应该在哪里创建目录initrd
?
答案1
您提到的步骤描述了如何检查一个 initrd 映像,即如何将文件解压(通过gzip
和cpio
)initrd-2.6.23-0.104.rc3.fc8.img
到目录中(initrd/
此处,在任何地方创建,使用mkdir
)。这只是发现问题的一个步骤,本身并没有解决办法。
答案2
一个初始化程序(“初始 RAM 驱动器”的缩写)是 Linux 内核启动时在“真正的”根文件系统之前安装的文件系统。该文件系统由引导加载程序加载到内存中,并保留在内存中直到真正启动。内核执行/linuxrc
initrd上的程序;它的工作是挂载真正的根,并在/linuxrc
终止时运行内核/sbin/init
。
initrd 中的某个错误可以解释系统无法启动的原因。因此,如果您在启动时遇到问题,您链接到的文档建议您将您的 initrd 与官方的 initrd 进行比较。
在提供的说明中,initrd
只是一些临时目录,您可以根据需要调用anisha_initrd
它fred
。 initrd/boot/initrd-SOMETHING.img
以 gzip 压缩形式存储在文件中CPIO档案;按照说明将该存档解压到您创建的临时目录中。解压后,你可以将其与官方的initrd进行比较(解压官方的initrd并运行类似的命令diff -ru /path/to/official_initrd /path/to/anisha_initrd
)。