修改UbuntuKylin和Windows共存的GRUB2启动顺序

引子:在QQ群中发现有人问设置默认启动的方法,想想原来我也经历过这些,所以在此我把自己搜集保留的几种方法分享出来
修改启动项顺序:注:本文所涉及的方法都是在引导加载grub2的基础上所做的讨论。1.这个方法我比较倾向的
在Ubuntu终端下输入:
$sudo mv /etc/grub.d/30_os-prober /etc/grub.d/08_os-prober
$sudo update-grub
在这里mv实现的是修改该文件名(我总是觉得看着像是移动命令)
#该命令是将etc文件夹下的grub.d文件夹下的30_os-prober文件改名为08_os-prober。(08可以改为06~09都可以)。Ubuntu的启动项相关文件名为“10_…”这样就可以将Windows的启动项放在Ubuntu前面,即启动项列表的第一个。由于引导程序默认启动第一个启动项,所以这样就可以先启动Windows了。注意修改完后更新一下grub才能生效(即命令sudo update-grub)。
2.这个方法我觉得有一点不方便,因为UbuntuKylin会更新内核,这样就会多一个preview指向旧内核了,这样grub的启动顺序就又可能变动了
在Ubuntu终端下输入:
$sudo gedit /etc/default/grub
#用文本编辑器打开etc文件夹下的default文件夹下的grub文件。
在打开的文本中修改“GRUB_DEFAULT=0”这一项。比如Win7在启动项列表中为第5项,则将0改为4。就是win7在启动项列表中的项数减1。
(这里还可以修改该在启动项列表等待的时间,即修改“GRUB_TIMEOUT=所要等待的秒数”,-1表示不倒计时。)
修改完后按[Ctrl]+X,会提示是否保存,输入Y,提示保存的文件名,还是原来的grub文件,所以直接回车确定。
$sudo update-grub,更新一下grub。
执行完成后,重启电脑,也能默认启动windows了。

很实用的东西 讲的也很详细

LZ的又一实用好帖!

方案一尤其适用于有意或者不小心将引导启动器Grub2安装到主引导记录MBR,但是情愿不情愿要将Windows默认为开机系统的情况

感谢支持!

非常感谢,我已经按照方法1操作成功

我安装的是windows7和ubuntukyin双系统,按照方法1成功把windows7修改为第一个启动项。可是我的windows7激活失效,我激活工具又重新激活了。

呃,这个还真没遇到过啊,它的原理很简单——就是ubuntu启动项是以10_os-prober开始的,所以把windows从默认的30_os-prober重命名到08_os-prober(10之前)以实现前置

方法2中,也可以把GRUB_DEFAULT改成某项启动菜单,比如/boot/grub/grub.cfg中有如下菜单:
menuentry ‘Example GNU/Linux distribution’ --class gnu-linux {

}
就可以改成:
GRUB_DEFAULT=‘Example GNU/Linux distribution’
(终端下执行info -f grub -n 'Simple configuration’查看更多内容,英文)

Class GNU-Linux? 没见过,ubuntukylin 13.04除了官方默认的unity桌面环境其他的还没有适配呢

对GRUB不熟(甚至GRUB老手但怕打错字)的人,可以考虑装一个叫 Grub Customizer的GUI套件:

sudo add-apt-repository ppa:danielrichter2007/grub-customizer

sudo apt-get update && sudo apt-get install grub-customizer

目前grub-customizer好像没有中文版,但一般人使用起来应该没有问题。

不过要记得,不管是用CLI 或 GUI,修改过grub以后一定要如版主所说的,做一个update-grub的动作才能生效。

这个只是那个info帮助中的一个例子,而且这个好像跟桌面环境没有关系吧

还有一个能让系统记住上次启动的方法。
将GRUB_DEFAULT改成:
GRUB_DEFAULT=saved
然后加入一行:
GRUB_SAVEDEFAULT=true
这样每次系统启动时菜单默认会停留在上次启动的菜单上。

这个见过没用过,因为认为它不具有确定性…

[

更新内核,不会在grub2主菜单是添加指向旧内核的链接 只会在第二个高级选项里面添加…所以更新内核应该不会改变启动顺序:4_96:

嗯是的,这个我也发现了。这是Ubuntu12.04后的一点小改动,但确实方便了不少——多了一个方法的选择!

谢谢楼主分享~大家多交流,才能共同进步~

请教楼主:
GPT磁盘,全UEFI启动ubuntu+win8.1,两个系统的efi文件共存于同一EFI分区,磁盘的0号分区

ubuntu的系统选择显示发现windows,但定位为在分区1
选择这一项自然无法启动
因为启动文件在分区0

曾经见过windows的蓝白启动选择界面可以出现linux的

如何解

因为对windows 8系统不感冒,一直没有折腾win 8,所以uefi等问题只能说抱歉;
另外,你确实尝试了ubuntu发现的windows启动选项吗?因为你的说法似乎也不妥,(hd0,0)为sda1,因为OEM等隐藏分区的存在,你的系统C盘很可能不是第一个分区,给你截张我的分区图——QQ截圖20140603213520.png

第一分区为16G的OEM备份分区——sda1;
第二分区为100m的windows 7系统引导分区——sda2,识别系统条目为此位置,有些方法安装没有次分区;
第三分区为C盘——sda3,windows系统程序所在分区;
sda4——拓展分区,图中D、E、F盘,即绿框中三个分区;
sda5——D盘,扩展分区是不能直接用的,他是以逻辑分区的方式来使用的,所以说扩展分区可分成若干逻辑分区。他们的关系是包含的关系,所有的逻辑分区都是扩展分区的一部分 ;
sda6——E盘,逻辑分区,同D;
sda7——F盘,逻辑分区;
sda8——ubuntu跟分区/;
sda9——home;
sda10——swap。

学习学习下。

感谢细致的解答
我show一下我的硬盘吧

自己安装学校买的win8,不是OEM的,没有OEM分区,win8没有那个100M,但有MSR分区(可忽视)

windows自带的磁盘管理程序显示

傲梅分区助手显示

DiskGenius显示

各软件对分区的标注还是比较规范的,即
“系统”分区是启动文件所在的分区
“启动”分区是系统主文件所在的分区(傲梅的叫“引导”分区)


上面显示的是UEFI固件,也就是系统的第一启动文件——UEFI BIOS和OS之间的桥梁

这个真心不会调

这是BIOS UEFI界面和linux启动菜单界面

“作业系统启动管理员”对应bootx64.efi,是windows的启动固件
ubuntu的对应grubx64.efi,ubuntu的启动固件
Ubuntu的无效,选择后会进win8
“从EFI档案启动……“是手的搜寻,只能看到windows的

都知道(因为安装时都告诉我“要选定EFI分区,否则安装失败”)自己是建立在GPT产品以UEFI固件引导启动,还把别的系统当做启动分区和系统分区不分离,还说Manager在/dev/sda1


.
└── EFI
├── Boot
│ └── bootx64.efi
├── Microsoft
│ └── Boot
│ ├── BCD
│ ├── BCD.LOG
│ ├── BCD.LOG1
│ ├── BCD.LOG2
│ ├── bg-BG
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── bootmgfw.efi
│ ├── bootmgr.efi
│ ├── BOOTSTAT.DAT
│ ├── boot.stl
│ ├── cs-CZ
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── da-DK
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── de-DE
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── el-GR
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── en-GB
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── en-US
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── es-ES
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── et-EE
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── fi-FI
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── Fonts
│ │ ├── chs_boot.ttf
│ │ ├── cht_boot.ttf
│ │ ├── jpn_boot.ttf
│ │ ├── kor_boot.ttf
│ │ ├── malgun_boot.ttf
│ │ ├── malgunn_boot.ttf
│ │ ├── meiryo_boot.ttf
│ │ ├── meiryon_boot.ttf
│ │ ├── msjh_boot.ttf
│ │ ├── msjhn_boot.ttf
│ │ ├── msyh_boot.ttf
│ │ ├── msyhn_boot.ttf
│ │ ├── segmono_boot.ttf
│ │ ├── segoen_slboot.ttf
│ │ ├── segoe_slboot.ttf
│ │ └── wgl4_boot.ttf
│ ├── fr-FR
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── hr-HR
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── hu-HU
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── it-IT
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── ja-JP
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── ko-KR
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── lt-LT
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── lv-LV
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── memtest.efi
│ ├── nb-NO
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── nl-NL
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── pl-PL
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── pt-BR
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── pt-PT
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── qps-ploc
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── Resources
│ │ ├── bootres.dll
│ │ ├── en-US
│ │ │ └── bootres.dll.mui
│ │ └── zh-CN
│ │ └── bootres.dll.mui
│ ├── ro-RO
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── ru-RU
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── sk-SK
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── sl-SI
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── sr-Latn-CS
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── sr-Latn-RS
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── sv-SE
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── tr-TR
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── uk-UA
│ │ ├── bootmgfw.efi.mui
│ │ └── bootmgr.efi.mui
│ ├── zh-CN
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ ├── zh-HK
│ │ ├── bootmgfw.efi.mui
│ │ ├── bootmgr.efi.mui
│ │ └── memtest.efi.mui
│ └── zh-TW
│ ├── bootmgfw.efi.mui
│ ├── bootmgr.efi.mui
│ └── memtest.efi.mui
└── ubuntu
├── grub.cfg
├── grubx64.efi
├── MokManager.efi
└── shimx64.efi

因为grub读不懂bootx64.efi?当然不可能
反正两个系统的启动管理器不一样,真心烦。选系统还得进UEFI BIOS
没时间折腾啊,以后再尝试吧