所以这算是一天中遇到的两个不幸的问题,好在是可以在一天之内把这些问题解决了。(转载保留 Phodal's Blog Phodal's zenthink)
openSUSE Grub Rescue
这个问题就相对比较好解决了
列出分区
ls
选择分区,设置分区
set root=(hd0,msdos8)
set prefix=(hd0,msdos8)/boot/grub2
正常启动
insmod normal
normal
opensuse trying manual resume
如果你有个live CD那还算是不错,没有的话,那就装一个,我这里是装回了一个mint。
这里要做的就是编辑分区表/etc/fstab以及启动选择/boot/grub2/grub.cfg
先以grub.cfg为例,这是一个简单的启动配置示例
### BEGIN /etc/grub.d/10_linux ### menuentry 'openSUSE 12.2' --class 'opensuse-12-2' --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-f8b70b14-23bf-4703-9cc8-ed593448ae61' { load_video set gfxpayload=keep insmod gzio insmod part_msdos insmod ext2 set root='hd0,msdos8' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos8 --hint-efi=hd0,msdos8 --hint-baremetal=ahci0,msdos8 --hint='hd0,msdos8' f8b70b14-23bf-4703-9cc8-ed593448ae61 else search --no-floppy --fs-uuid --set=root f8b70b14-23bf-4703-9cc8-ed593448ae61 fi echo '载入 Linux 3.4.47-2.38-desktop ...' linux /boot/vmlinuz-3.4.47-2.38-desktop root=UUID=f8b70b14-23bf-4703-9cc8-ed593448ae61 video=1366x768 resume=/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-part6 splash=silent quiet showopts echo '载入初始化内存盘...' initrd /boot/initrd-3.4.47-2.38-desktop }
也就是把这行简化为root=UUID=f8b70b14-23bf-4703-9cc8-ed593448ae61 video=1366x768 resume=/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-part6 splash=silent quiet showopts
再修改一下/etc/fstablinux /boot/vmlinuz-3.4.47-2.38-desktop
/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-part6 swap swap defaults 0 0
/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-part8 / ext4 acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
将part6和part 8改为
/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-sda6 swap swap defaults 0 0
/dev/disk/by-id/ata-ST95005620AS_5YX1CJ2L-sda8 / ext4 acl,user_xattr 1 1
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0
Chroot的方法
这算是我的解决方法,没想到在mint下对yast2支持得很强大,可以直接运行。
mount /dev/sda8 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /etc/resolv.conf /mnt/etc/resolv.conf
chroot /mnt
yast2
其中 /etc/resolv.conf用于网络
直接在yast2里面操作就ok了。