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)
阅读(1725) | 评论(0) | 转发(0) |