ubuntu10.10 + vista双启动的grub2设置
新安装了ubuntu10.10版本在公司笔记本上,结果在系统启动方面遭遇很多问题。记录下来以备用。
背景:公司笔记本,安装有vista,必须保留。因此只能考虑vista + ubuntu的双系统。由于vista所在分区是有pointsec软件作硬盘加密,造成ubuntu的grub无法通过正常的方式发现C盘安装的操作系统,必须手工修改。
ubuntu10.10中默认使用的是grub2,和之前的grub类似,但是有几个非常重大的不同:
1. 不再用/boot/grub/menu.lst文件了,替代为/boot/grub/grub.conf
2. grub.conf文件不再适合如menu.lst文件那样直接修改,通常是需要修改/etc/grub.d/下面的几个文件,然后通过update-grub命令来通过这几个文件来自动生成grub.conf文件。
3. 上述的grub.conf文件的生成过程,可能被多个程序或者操作执行,典型如startupmanager, 更新linux核心。
4. 要命的一点,通常不会注意,grub菜单的显示,grub2会检查是否有ubuntu之外的其他操作系统,如果没有发现则默认是不显示这个菜单的!也可以在开机之后按住shift键,强制让grub显示菜单。
上面几个不同造成之前几次操作之后发现没有启动菜单了,只能直接进入ubuntu,不能选择vista。今天研究了一把grub,终于有所发现。
记录一下几个重要的操作,以备日后使用:
1. 增加vista的启动项
在/etc/grub.d/40_custom 中,增加以下内容
menuentry "Windows vista (loader) (on /dev/sda1)" {
insmod ntfs
set root=(hd0,1)
search --no-floppy --fs-uuid --set 8e0446680446537f
chainloader +1
}
2. 显示grub菜单
修改/etc/grub.d/30_os-prober 文件,找到make_timeout()函数,我的修改比较暴力,删除了所有逻辑,直接设置为-1。
make_timeout () {
set timeout=-1
}
3. 安装使用startupmanager
新的grub.conf文件已经不再建议直接修改了,比较安全的方式是通过startupmanager来操作,图形界面不容易出错,而且有对grub2的支持。
sudo apt-get install startupmanager
然后在System -> Administration -> Startup-manager启动。常用操作的是修改timeout时间和选择默认操作系统。
4. 删除旧的linux核心
安装新的linux核心后,grub的启动菜单中会出现新旧多个linux核心供选择,正常情况下我们一般不再需要旧核心。可以考虑删除旧核心,以节约硬盘空间,同时让grub菜单简介一下。
这个通过新德利就可以方便操作了,通过搜索(建议使用key 为2.6.35.*这样的核心版本号)找到旧核心,标志为准备删除,apply即可。
操作完成后,会自动调用update-grub命令来更新grub.conf文件。