>> INTRO:initrd概述
initrd 是 boot loader initialized RAM disk的简称,即由 boot loader 初始化的内存盘。Linux初始 RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,initrd最初是设计用来通过一个临时根文件系统来作为内核到最终的根文件系统之间的桥梁。用于支持两阶段的引导过程(即加载驱动模块和执行真正的根文件系统中/sbin/init进程两个阶段)。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式Linux 系统中,initrd 就是最终的根文件系统。
initrd 中包含了实现两个阶段引导过程所需要的目录(如/bin、/dev、/etc等)和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod 工具。
一旦initrd损坏或由于grub.conf出错等原因造成系统无法识别initrd时,内核将无法加载,系统可能直接进入“grub>” 界面或者出现如下错误:
Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
注:在出现该错误时,系统宕机,键盘无法动弹,只能通过手工按电源键关机。此时,当务之急是先启动系统,然后再进行后续处理,过程如下:
>>STEP 1: 进入grub命令行
系统启动到grub菜单时,按“c”进入grub命令行。原本尝试通过按“e”然后进入单用户进行操作,但此时因内核无法加载而无法进入单用户。
若启动时系统自动进入“grub>”模式,则可忽略此步骤。
>>STEP 2: 找到/boot/grub/grub.conf 分区所在目录
grub> find /boot/grub/grub.conf
当然,如果你已经知道linux所在分区的具体位置,可以略过此步骤。如“sda1”所在位置即为“(hd0,0)”
--本例所在位置为“(hd0,0)”
查看linux内核信息
grub> cat (hd0,0)/boot/grub/grub.conf
>>STEP 3: 修正并指定/boot分区,并从所指定的/boot分区启动
grub> kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol01 rhgh quiet
--该部分内容即正常启动时启动项的内容,可以从安装同一版本Linux的设备的/boot/grub/grub.conf中模仿编辑。输入完毕后,按“Enter”。
grub> init /initrd-2.6.18-194.el5.img
--此部分内容仿自可以正常使用的同一版本的主机grub.conf文件。输入完毕后,按“Enter”。
grub> boot(hd0,0)
--从指定分区启动。启动时在屏幕下端看到“Kernel alive”等字样,表明此时内核真正Alive了。
>>STEP 4: 修改并确认grub.conf内容
顺利启动后,记得修改/boot/grub/grub.conf 的内容
--可参见其他可以正常使用的同一版本的主机grub.conf文件。
当然,对于此种情况,如果手头有系统安装光盘,也可通过光盘进入“linux rescue”模式进行处理,不再赘述。
参考材料:http://hi.baidu.com/ge_star/blog/item/67a8a72221deccfbd6cae2b0.html
initrd 是 boot loader initialized RAM disk的简称,即由 boot loader 初始化的内存盘。Linux初始 RAM磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,initrd最初是设计用来通过一个临时根文件系统来作为内核到最终的根文件系统之间的桥梁。用于支持两阶段的引导过程(即加载驱动模块和执行真正的根文件系统中/sbin/init进程两个阶段)。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式Linux 系统中,initrd 就是最终的根文件系统。
initrd 中包含了实现两个阶段引导过程所需要的目录(如/bin、/dev、/etc等)和可执行程序的最小集合,例如将内核模块加载到内核中所使用的 insmod 工具。
一旦initrd损坏或由于grub.conf出错等原因造成系统无法识别initrd时,内核将无法加载,系统可能直接进入“grub>” 界面或者出现如下错误:
Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
注:在出现该错误时,系统宕机,键盘无法动弹,只能通过手工按电源键关机。此时,当务之急是先启动系统,然后再进行后续处理,过程如下:
>>STEP 1: 进入grub命令行
系统启动到grub菜单时,按“c”进入grub命令行。原本尝试通过按“e”然后进入单用户进行操作,但此时因内核无法加载而无法进入单用户。
若启动时系统自动进入“grub>”模式,则可忽略此步骤。
>>STEP 2: 找到/boot/grub/grub.conf 分区所在目录
grub> find /boot/grub/grub.conf
当然,如果你已经知道linux所在分区的具体位置,可以略过此步骤。如“sda1”所在位置即为“(hd0,0)”
--本例所在位置为“(hd0,0)”
查看linux内核信息
grub> cat (hd0,0)/boot/grub/grub.conf
>>STEP 3: 修正并指定/boot分区,并从所指定的/boot分区启动
grub> kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol01 rhgh quiet
--该部分内容即正常启动时启动项的内容,可以从安装同一版本Linux的设备的/boot/grub/grub.conf中模仿编辑。输入完毕后,按“Enter”。
grub> init /initrd-2.6.18-194.el5.img
--此部分内容仿自可以正常使用的同一版本的主机grub.conf文件。输入完毕后,按“Enter”。
grub> boot(hd0,0)
--从指定分区启动。启动时在屏幕下端看到“Kernel alive”等字样,表明此时内核真正Alive了。
>>STEP 4: 修改并确认grub.conf内容
顺利启动后,记得修改/boot/grub/grub.conf 的内容
--可参见其他可以正常使用的同一版本的主机grub.conf文件。
当然,对于此种情况,如果手头有系统安装光盘,也可通过光盘进入“linux rescue”模式进行处理,不再赘述。
参考材料:http://hi.baidu.com/ge_star/blog/item/67a8a72221deccfbd6cae2b0.html