debian6开始,启动程序grub升级到grub2,grub2功能强大, 但是需要熟悉新的恢复方法。
今天就被grub2摆了一道, 幸亏有android手机上网
搜索 google,总算把它搞定, 遂记下来成为此文,以供以后参考
大家在真正遇到 grub2崩溃,手忙脚乱之前, 最好先用kvm虚拟机演习一下,
在grub1的年代, 如果 /boot/grub这个目录不能访问, 基本上, 就需要用别的媒介的bootloader 来修复启动了,
在grub2下, 这种情况,是可以手动输入命令来启动linux的,
grub2在mbr下,向后占用了大约50个扇区, 实现了一个小的resume 命令行,
这个命令行, 可以列各分区的文件目录, 载入扩展命令模块,当grub2不能找到 /boot/grub/*的文件时, 就会进入这个
resume 命令行状态,
Booting from Hard Disk...
GRUB loading.
Welcome to GRUB!
error: no such device:47baf42a-ac4d-4e3b-ae9b-3cded30b729c
Entering rescue mode...
grub rescue>_
可以使用ls命令列出有哪些硬盘分区:
grub rescue>ls
(hd0) (hd0,msdos6) (hd0,msdos5) (hd0,msdos1)
grub rescue>ls (hd0,msdos1)/boot/
./ ../ grub/ vmlinuz-2.6.37 initrd.img-2.6.37
找到了我们需要的文件, 于是设置2个环境变量:
grub rescue>set root=(hd0,msdos1)
grub rescue>set prefix=/boot/grub
载入grub.cfg进入normal模式:
grub rescue>insmod normal
grub rescue >normal
如果载入grub.cfg 失败 可以试试直接载入vmlinz:
用insmod载入linux.mod,以便可以执行linux命令,(/boot/grub/很多的mod文件, 都可以载入, 载入后,就添加了相应的命令,有时间可以慢慢摸索一下)
grub rescue>insmod linux
grub rescue>linux /boot/vmlinuz-2.6.37 root=/dev/sda1
再载入initrd.img文件,
grub rescue>initrd /boot/initrd.img
一切就绪, 让我们boot 进入linux
grub rescue>boot
进入linux后, 修复一下grub2:root:#>grub-install /dev/sda
下面列出来所有的mod命令文件,欣赏一下:
915resolution.mod cmp.mod functional_test.mod gfxmenu.mod lsmmap.mod part_bsd.mod reiserfs.mod ufs2.mod
acpi.mod configfile.mod gcry_arcfour.mod gfxterm.mod ls.mod part_gpt.mod relocator.mod uhci.mod
affs.mod cpio.mod gcry_blowfish.mod gptsync.mod lspci.mod part_msdos.mod scsi.mod usb_keyboard.mod
afs_be.mod cpuid.mod gcry_camellia.mod gzio.mod lvm.mod part_sun.mod search_fs_file.mod usb.mod
afs.mod crc.mod gcry_cast5.mod halt.mod mdraid.mod part_sunpc.mod search_fs_uuid.mod usbms.mod
aout.mod crypto.mod gcry_crc.mod hashsum.mod memdisk.mod parttool.mod search_label.mod usbtest.mod
ata.mod cs5536.mod gcry_des.mod hdparm.mod memrw.mod password.mod search.mod vbeinfo.mod
ata_pthru.mod datehook.mod gcry_md4.mod hello.mod minicmd.mod password_pbkdf2.mod serial.mod vbe.mod
at_keyboard.mod date.mod gcry_md5.mod help.mod minix.mod pbkdf2.mod setjmp.mod vbetest.mod
befs_be.mod datetime.mod gcry_rfc2268.mod hexdump.mod mmap.mod pci.mod setpci.mod vga.mod
befs.mod dm_nv.mod gcry_rijndael.mod hfs.mod msdospart.mod play.mod sfs.mod vga_text.mod
biosdisk.mod drivemap.mod gcry_rmd160.mod hfsplus.mod multiboot2.mod png.mod sleep.mod video_bochs.mod
bitmap.mod echo.mod gcry_seed.mod iorw.mod multiboot.mod probe.mod tar.mod video_cirrus.mod
bitmap_scale.mod efiemu.mod gcry_serpent.mod iso9660.mod nilfs2.mod pxecmd.mod terminal.mod video_fb.mod
blocklist.mod elf.mod gcry_sha1.mod jfs.mod normal.mod pxe.mod terminfo.mod video.mod
boot.mod example_functional_test.mod gcry_sha256.mod jpeg.mod ntfscomp.mod raid5rec.mod test.mod videotest.mod
bsd.mod ext2.mod gcry_sha512.mod keystatus.mod ntfs.mod raid6rec.mod tga.mod xfs.mod
bufio.mod extcmd.mod gcry_tiger.mod linux16.mod ohci.mod raid.mod trig.mod xnu.mod
cat.mod fat.mod gcry_twofish.mod linux.mod part_acorn.mod read.mod true.mod xnu_uuid.mod
chain.mod font.mod gcry_whirlpool.mod loadenv.mod part_amiga.mod reboot.mod udf.mod zfsinfo.mod
cmostest.mod fshelp.mod gettext.mod loopback.mod part_apple.mod regexp.mod ufs1.mod zfs.mod