搜索
您的当前位置:首页正文

各种情况GRUB损坏进不了系统的解决方案

来源:六九路网
各种情况GRUB损坏进不了系统的解决方案

1.在磁盘分区表变动之后,比如删除了grub.cfg所在分区的前一个分区,导致分区号前移一位时,开机显示 grub rescue> 。

处理方法:(假设原来grub.cfg在/dev/sda4,而现在变成了/dev/sda3) ls

(查看分区) ls (hd0,7)/boot/

(查看该分区是不是能被识别的linux分区,grub是否被装在该分区) set

(显示环境变量)

prefix=(hd0,3)/boot/grub root=hd0,3

insmod /boot/grub/linux.mod (进入grub命令行) normal

(即可使用原来的grub启动菜单)

2.在grub.cfg损坏的情况下

linux /boot/vmlinuz(按TAB补完)root=/dev/sda3 (不要忘了!) (grub1是kernel指令)

initrd /boot/initrd.img(按TAB补完) boot

(启动原有系统)

3.从优盘/光盘启动ubuntu修复原有系统(Ubuntu 8.04): ubuntu 8.10开始支持优盘启动,并且基本做到兼容所有硬件。 # grub-install /dev/sda --root-directory=/media/sda3 找个干净的环境,避免把优盘上的系统也写进启动项 a)for grub # update-grub b)for grub2

# grub-mkconfig -o /boot/grub/grub.cfg # update-grub2

(ubuntu 8.04的grub2没有grub-mkconfig,只能用这个,这个没有办法自动加入Windows启动项)

可能需要修改 /boot/grub/device.map

#----------------------------------------------------------------------

(hd0) /dev/sda (hd1) /dev/sdb (hd2) /dev/sdc

#----------------------------------------------------------------------

安装grub2:

# sudo apt-get install grub2

# grub-install --version #显示为1.97

4.从优盘/光盘启动ubuntu修复原有系统(Ubuntu 10.04):

ubuntu 10.04开始方法又改变了,优盘启动的环境下\"/\"上挂载的是squashfs,然后grub-mkconfig和update-grub2都会提示\"cannot find a device for /\"失败。

不过grub-install已经成功了,所以如果重启用rescue模式进入系统再grub-mkconfig也可以。

ubuntu 10.04安装盘开始默认不给选择语言、安装还是试用的界面了,如果要用这个界面,启动时按Enter。

更方便的方法是使用:(假设Ubuntu装在/dev/sda1)

#----------------------------------------------------------------------

# mount /dev/sda1 /mnt

# mount -t proc proc /mnt/proc #可省略 # mount -t sysfs sys /mnt/sys #可省略 # mount -o bind /dev /mnt/dev # chroot /mnt /bin/bash # grub-install /dev/sda

# grub-mkconfig -o /boot/grub/grub.cfg # # cd / # umount -a # exit # cd /

# umount -a # reboot

#----------------------------------------------------------------------

5.配置grub2的参数

grub2不建议修改/boot/grub/grub.cfg,而是由配置文件和配置脚本在每次改动内核时自动生成,配置文件如下:

#----------------------------------------------------------------------

/etc/default/grub #控制变量定义

/etc/grub.d/* #生成grub.cfg使用到的scripts

#----------------------------------------------------------------------

以上全部使用 bash 的語法。

在grub2启动界面上按e来临时修改启动项,编辑后Ctrl+x启动 按c来进入grub shell,指令vbeinfo能够看到所有支持的VESA模式

6.调整GRUB界面的分辨率

grub通过启动内核参数vga=792(1024x768x32),vga=795(1280x1024x32)等来启动framebuffer,修改控制字符界面的分辨率。 grub2废弃了vga选项,但是用vga还是可以用的。

在/etc/default/grub 中加入以下变量定义,就能设置所有linux启动项的字符界面分辨率为720x400x32(至少是宽屏的,能在宽屏笔记本上看上去少难看一点):

#----------------------------------------------------------------------

GRUB_CMDLINE_LINUX_DEFAULT=\"\"

GRUB_CMDLINE_LINUX=\"quiet splash gfxpayload=keep\" GRUB_GFXMODE=720x400x32

GRUB_GFXPAYLOAD_LINUX=\"$GRUB_GFXMODE\"

#----------------------------------------------------------------------

(grub2 1.98的grub.d才会根据GRUB_GFXMODE决定是否写入设置gfxpayload的项,grub2 1.96就不会理会)

(Ubuntu 10.04 apt-get默认得到grub2 1.98) (Ubuntu 8.04 apt-get默认得到grub2 1.96)

因篇幅问题不能全部显示,请点此查看更多更全内容

Top