安装Windows和Linux Fedora 16双系统,玩过的人应该都知道,装好后的双系统是默认从Fedora启动的,现在要把它改成是默认启动Windows,还不太容易,至少比F15麻烦多了!经网上多番查询群内请教,终于找到了解决方法,记录下来,共享之:
====================
方法一
这是一个默认启动Windows的例子:
1. 首先找到Windows的menuentry.
# cat /boot/grub2/grub.cfg | grep Windows
结果:
menuentry "Windows 7 (loader) (on /dev/sda1)" --class windows --class os {
2. 设置Windows 作为默认的启动项(这儿只能使用上面命令输出中双引号 “ ” 或者单引号 ‘ ‘ 中的内容)
# grub2-set-default "Windows 7 (loader) (on /dev/sda1)"
3. 验证默认启动项
# grub2-editenv list
输出:
saved_entry=Windows 7 (loader) (on /dev/sda1)
4. 生成,更新grub.cfg (可选)
下
面的命令会使用/etc/grub.d下的自动配置脚本和/etc/default/grub中定义的变量,自动生成GRUB2配置文件(包括在
/boot下的内核),-o
指定输出文件,/boot/grub2/grub.cfg是默认配置文件。如果是多系统,它会自动的把它们找出来,加入到启动菜单列表中去。
# grub2-mkconfig -o /boot/grub2/grub.cfg
/etc/default/grub 中可以配置timeout,背景图片等。
如:
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="Fedora"
GRUB_DEFAULT=saved
GRUB_CMDLINE_LINUX="rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8"
GRUB_BACKGROUND=/boot/grub2/background.png
GRUB_TERMINAL_OUTPUT=gfxterm
GRUB_THEME=/boot/grub2/mytheme/theme.txt
备注: 下面的命令设置Fedora作为默认启动项:
# cat /boot/grub2/grub.cfg |grep Fedora
结果:
menuentry 'Fedora Linux, with Linux 3.1.2-1.fc16.i686.PAE' --class fedora --class os {
menuentry 'Fedora Linux, with Linux 3.1.1-1.fc16.i686.PAE' --class fedora --class os {
menuentry 'Fedora Linux, with Linux 3.1.0-7.fc16.i686.PAE' --class fedora --class os {
# grub2-set-default "Fedora Linux, with Linux 3.1.2-1.fc16.i686.PAE"
# grub2-editenv list
# grub2-mkconfig -o /boot/grub2/grub.cfg
摘自A Curious Programmer
方法二
$cd /etc/grub.d
$ls -l
-rwxr-xr-x 1 root root 3296 2009-10-24 08:44 00_header
-rwxr-xr-x 1 root root 1154 2009-10-24 08:31 05_debian_theme
-rwxr-xr-x 1 root root 3778 2009-10-24 08:44 10_linux
-rwxr-xr-x 1 root root 772 2009-10-24 00:11 20_memtest86+
-rwxr-xr-x1 shawn shawn 5467 2010-04-17 23:52 30_os-prober
-rwxr-xr-x 1 root root 214 2009-10-24 08:44 40_custom
-rw-r–r– 1 root root 483 2009-10-24 08:44 README
30_os-prober是grub2自动生成的,因为我安装ubuntu linux之前就有vista在电脑上。目录下有各README文件,打开查看里面的内容:
All executable files in this directory are processed in shell expansion order.
00_*: Reserved for 00_header.
10_*: Native boot entries.
20_*: Third party apps (e.g. memtest86+).
The number namespace in-between is configurable by system installer and/or administrator. For example, you can add an entry to boot another OS as 01_otheros, 11_otheros, etc, depending on the position you want it to occupy in the menu; and then adjust the default setting via /etc/default/grub.
大意是:
该目录下的可以执行文件的顺序是按照shell扩展来排列的(就是按首字符排列的意思,用来配置grub的顺序)。
00_开头的文件是预留给00_header的
10_开头的用于系统本身
20_开头的用于第三方程序
可以新建和改变文件的顺序来配置gurb2的启动顺序。
知道以上这些就好办了。我们只要把30_os-prober的顺序设置到10_linux之前就可以让windows的选项在linux之前。
运行以下命令把30_os-prober复制一份并且重命名为09_os-prober:
$sudo cp 30_os-prober 09_os-prober
然后去掉30_os-prober的可执行权限:
$sudo chmod 644 30_os-prober
$ls -l
-rwxr-xr-x 1 root root 3296 2009-10-24 08:44 00_header
-rwxr-xr-x 1 root root 1154 2009-10-24 08:31 05_debian_theme
-rwxr-xr-x 1 root root 5467 2009-10-30 00:21 09_os-prober
-rwxr-xr-x 1 root root 3778 2009-10-24 08:44 10_linux
-rwxr-xr-x 1 root root 772 2009-10-24 00:11 20_memtest86+
-rw-r–r– 1 shawn shawn 5467 2010-04-17 23:52 30_os-prober
-rwxr-xr-x 1 root root 214 2009-10-24 08:44 40_custom
-rw-r–r– 1 root root 483 2009-10-24 08:44 README
然后打开/etc/default/grub把默认启动改成你要的那个:
$sudo gedit /etc/default/grub
找到GRUB_DEFAULT=,改后面的参数。(注意linux的顺序是从0开始的哦),我设置为第一项vista,于是把默认改成噢0(GRUB_DEFAULT=0)
最后更新grub:
$sudo update-grub
[sudo] password for shawn:Generating grub.cfg …
Found Windows Vista (loader) on /dev/sda1
Found Windows Vista (loader) on /dev/sda3
Found linux image: /boot/vmlinuz-2.6.31-21-generic
Found initrd image: /boot/initrd.img-2.6.31-21-generic
Found linux image: /boot/vmlinuz-2.6.31-20-generic
Found initrd image: /boot/initrd.img-2.6.31-20-generic
Found memtest86+ image: /boot/memtest86+.bin
done
自:http://www.luckid.com/20100418336.html