你好!
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条目的方法如下图: