|
看了前面兄弟的GRUB使用帮助,文章太长,收藏先!用到的时候再试不迟!
补充救命三招:
1、把启动光盘上的故障恢复文件拷到windows盘和linux盘各一份备用,
(REDHAT/FC系统有两个文件 /boot/vmlinuz /boot/rescue ;SUSE10.0 是三个文件 linux , initrd , rescue )
如 :
c:\sos\linux(内核) c:\sos\initrd(初始文件系统) ( SUSE c:\sos\rescue(故障恢复根系统)
2、系统坏了的时候,通常是分区变化或其它原因GRUB找不到内核或initd文件时,可以
进到 GRUB> 提示符输一个
GRUB> find /sos/linux
(hd0,3) (说明文件备份在第3个分区上,注意,这里的3可能是hda4数字小一位)
不要担心识别不了windows或linux的分区,GRUB可以识别 VFAT,EXT2,EXT3,reiserfs等等
如果不记得文件名就按TAB键(原先不知道,吃了不少苦头)
比如
GRUB> kernel /sos/li <TAB> 这里会提示你 sos 目录下有哪些文件,跟bash里用法一样
3、现在可以开始自救了
GRUB>kernel (hd0,3)/sos/linux
GRUB>initrd (hd0,3)/sos/rescue root=/dev/ram
GRUB>boot
好了,系统又可以启动了,可以开始自救工作了。
============== 再啰嗦一下 ==============
系统不能启动一般有几种原因:
1、新增或删除了分区,使Linux所在盘的盘符变化了。比如原先Linux在/dev/hda5上面,删除一个分区以后这个分区就变成/dev/hda4了,GRUB当然找不到了.
2、更改了内核或模块。/boot/下面的内核通常要与/lib/module下的模块成双成对,如果不能匹配可以导致分区类型不能识别,当然不能启动.
3、initrd文件被破坏。有些发行版的内核是不带分区类型或IDE/SCSI支持的,它们将对IDE的支持做成ide_disk模块在外部加载,所以必需在mount分区之前有个initrd启动环境告诉和提供给内核需要加载哪些模块,initrd被破坏以后启动时就会提示你输入的 root=/dev/hda1 不是合法的文件系统格式。
另外,如果要自已编译内核或做bootsplash的话,建议先把 /boot 和 /lib/module 备个份,
su - root
cd /
tar cvzf /boot_bak.tgz boot
tar cvzf /module_bak.tgz /lib/module
内核升级失败不能启动的话,用上面的方法进去,把根系统 mount 上来解包
恢复一下就行了。
原创 [email protected] |
|