grub2启动顺序怎么把win放在最下面把Ubuntu放到最上面?

如题所述

你好!

grub2 引导菜单的配置文件,默认为 /boot/grub/grub.cfg

你打开这个文件看一下,查找一下Windows对应条目出现的位置。

说明:

grub.cfg 这个配置文件,是在执行grub更新命令的时候产生的

ubuntu下:

sudo update-grub

实际执行的是

grub-mkconfig  -o  /boot/grub/grub.cfg

grub.cfg文件的内容,就决定了你所发图片中,grub启动菜单的显示内容和方式。

而执行 sudo update-grub 生成 grub.cfg 的过程中,实际调用了 很多个脚本,每个脚本产生 grub.cfg 中的一个代码块(以BEGIN, END为界)。

这些被调用的grub脚本在目录 /etc/grub.d 目录下,脚本名以数字开头,数字的大小,决定了它们被执行的顺序,也就决定了它们在输出文件 /boot/grub/grub.cfg 中的位置。



如下图,是/boot/grub/grub.cfg文件的基本格式,每一对 BEGIN, END,对应一个脚本产生的代码块:

grub2中,/etc/grub.d/30_os-prober 是,探测其它分区,如果发现该分区存在操作系统,则生成引导条目的脚本。 Windows系统的引导条目通常出现在这里。

所以,你可以根据你系统上的grub.cfg文件的内容,判断为什么Windows的引导条目那么靠前。

顺便说一下,/etc/grub.d/40_custom 这个脚本是存放你自定义引导条目的地方,因为40这个数字较大,所以输出的内容出现在grub.cfg文件中比较靠后的地方。我用它存放一些grub没有自动探测到的系统,很方便!

grub2 引导条目的写法,第一眼看上去很复杂,但是,你只要按照 grub.cfg 中现成条目的格式,依葫芦画瓢,都能比较轻松地写出自己想要的新引导菜单。

最后,根据你的提问补充一下,grub2默认没有配置为记住上次所选条目,但你可以启用这个功能,只需要修改一下 grub 的另一个配置文件: /etc/default/grub

修改或添加下面的两个条目即可。# 是把该行注释掉,让其不生效。

#GRUB_DEFAULT=0

GRUB_DEFAULT=saved

GRUB_SAVEDEFAULT=true

改后,如下图:


对grub的各个配置文件修改后,需要执行

sudo update-grub

才能产生新的 grub.cfg 引导菜单。

如果有什么不明白的,可以追问我。

追问

非常感激!!

已经搞好了

之前是这样

然后我修改了30 os prober

$sudo mv /etc/grub.d/30_os-prober /etc/grub.d/08_os-prober

这条命令

改成08 os

然后出现了win7在最上面,然后我又逆向修改,然后可以了,多谢指点,虽然已经搞好了,但是还是感谢你了,让我明白点东西,

想问下为什么下面有两个win选项人sda1 sda2,都能进去win系统??

追答

这个你要看grub.cfg里面对应的配置

可能:1.磁盘上有多个win系统。

2.系统的活动分区,和系统分区不在一起

3.有UEFI ESP分区

如果你需要我分析,可以贴出grub.cfg中那两条win引导条目的代码块。

追问

嗯我看看

我的排列是这样的

cfg 30文件在这里

有点看不懂

对了如果我要是自己编写grub引导界面,可以做成什么样子的

要怎么做,

通过grub.cfg文件吗

追答

你发的这张照片,Win条目,没显示全啊?

重新照一张吧,包含两个win条目。

你如果要美化grub,可以搜索一下这个单词,grub的反向拼写——brug

基于grub2的。

我对美化grub没什么研究,最多加张图片当开机菜单背景。

你如果对美化grub感兴趣,可以多搜索一下burg相关信息,还有开机引导动画——plymouth。

追问

嗯帮我看看

谢谢了

这是所有的grub.cfg文件了

不知道为什么会有两个win7启动条目

嗯能回答我这么多问题真是谢谢了

但是帮我看一下是怎么了

追答

你可以使用磁盘工具查看你磁盘的分区情况

你的30_os-prober说明你两个分区(sda1,sda2)上有win7的引导代码被grub探测到了。

要消除冗余,有两个方法:

1. 治标: 直接以 root权限修改 grub.cfg 文件,删除任意一个 win7条目。

2. 治本:从两个分区中二选一,清除分区引导扇区PBR.

第一个方法在每次grub被更新后,需要你手动修改,但比较简单;第二个方法,稍显复杂,但一劳永逸。

unity菜单搜索栏里输入 disk

可以找到磁盘工具,使用方便,直观。

最后补充:前面说的方法2无效。
数据宝贵,请不要随意处理分区表

经过分析os-prober脚本,得出结论——分区根目录下存在bootmgr,是Win7系统被探测到的原因。

解决冗余Win7条目的方法如下图:

温馨提示:答案为网友推荐,仅供参考
相似回答