项目最近都在windows下开发,整个team都被迫装了fedora和win7双系统。如果先装的是win7,后装的fedora会把grub引导装好。如果最后装的是windows,就必须修复一下grub,才能正确启动。GUN grub是一个多系统启动引导程序,具体介绍看这里。关于重装系统后怎么修复grub,网上有很多介绍,但是很多都是不求甚解,并不完全解决我的问题,特此将自己实践出的步骤记录在此,以备后用。
用LiveCD修复grub2
安装windows后修复grub2的方法很多,有各种系统修复工具还可以用grub4dos,但是我手边就有fedora16的liveCD,就不折腾其他的方法了。
使用live CD启动进入fedora16(这里因为我的window和linux装在不同的硬盘上,需要确保在bios里设置硬盘顺序是linux硬盘在前),
先找到linux安装在哪个硬盘分区
1 | su |
因为我以前安装了fedora 16和19,两个系统还挂载了共同的数据分区,fdisk的结果是相当的复杂。
到底哪个才是我想找的Linux分区呢,只好把分区mount上来,看一下里面都是神马东西。
1 | mount /dev/sda1 /mnt |
最后发现/dev/sda6里面的内容是这样的
其中包含启动时会加载的内核,这就是fedora16的/boot分区,那对应的/dev/sda7就是fedora16系统的其他部分了。
接下来把fedora16的硬盘挂载上来,重新安装grub,生成配置文件。
1 | mount /dev/sda7 /mnt |
修改grub2设置
关于修改grub2的设置,比如等待时间、启动顺序等,网上很多帖子给出的方法是修改/boot/grub2/grub.cfg,其实这是官方不推荐的方法,因为这个配置文件会在你重装系统或者升级内核之后被更新,你的个人设定都会丢失。更正确的方法是修改/etc/default/grub ,然后每次系统有修改时,执行grub2-mkconfig,都会根据这个文件生成新的/boot/grub2/grub.cfg。
我自己的grub(v1.99)配置如下:
1 | GRUB_TIMEOUT=15 |
如果需要指定默认启动项,使用下面的命令
1 | grep "submenu\|^\smenuentry" /boot/grub2/grub.cfg | cut -d "'" -f2 #list all possible menu entries |