首先,了解Ubuntu如何配置Grub2。
- /boot/grub/grub.cfg是Grub2菜单
- 该更新grub的命令自动生成一个文件
- ...通过从/ etc / defaults / grub读取默认设置
- ...并在/etc/grub.d中运行shellscript
因此,如果您不想在每次内核更新后都编辑grub.cfg,则希望调整/etc/grub.d中的脚本,以便在运行update-grub时可以应用更改。
其次,要直接回答您的第一个问题,我不熟悉使特定启动选项不可见,但仍可通过Grub菜单访问的任何方法。关于Grub1的许多小事情并没有在Grub2中重新实现,如果这是其中之一也不会令我感到惊讶。
而是可以通过将菜单字体颜色设置为与背景颜色相同的方式使所有菜单项不可见(直到突出显示)。在/etc/grub.d/05_debian_theme中,更改menu_color_normal,以使第一种颜色(字体)与第二种颜色(背景)匹配。保留menu_color_highlight的不同,以便显示光标下方的条目。
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
使分隔符进入Grub菜单。
在Grub1中,您将插入一个新的条目。我记得,您需要使用根声明来使它成为有效的菜单项,否则Grub1会忽略它。
# separator
title --------------------
root
我怀疑Grub2可能类似。一个非常基本的菜单条目在grub.cfg中看起来像这样:
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
由于双引号中的“任何内容”都显示为标题,因此您可以使用它来伪造一个分隔符。与Grub1一样,Grub2希望linux关键字将其视为真实的菜单项,因此请注意不要意外选择它。
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
不幸的是,“任何东西”都不意味着什么。在测试时,我尝试使用一长串破折号(“ ----------------”),但此方法从未奏效。但是它喜欢上面显示的短字符串,因此您可以使用它。
.....
现在,这就是制作一个分隔符的方法。要创建一堆并将其自动放置在所需位置,需要将它们添加到/etc/grub.d中的脚本中。
对于此示例,让我们在grub.cfg的各个部分之间放置一个简单的分隔符。如果查看/etc/grub.d,则会看到以下脚本:
- 00_header
- 05_debian_theme
- 10_linux-Ubuntu内核和恢复条目
- 20_memtest86 +-Memtest86 +的条目
- 30_os-prober-Windows和其他Linux发行版的条目
- 40_custom-默认情况下为空;特殊用户条目可以转到此处
我们将创建一个新脚本,分隔符,并将以下内容放入其中:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
现在,将该脚本移到第一个分隔符的适当位置,然后将其链接到其他分隔符的适当位置。这些脚本是按顺序执行的,因此,如果您希望第一个脚本出现在10_linux之前,请将其命名为09_separator或其他名称。
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
如果您在/ etc / default / grub中将特定条目设置为默认条目,则可能需要对其进行更新-Grub2从0开始计数菜单条目,并且这些“分隔符”中的每一个都是有效条目,因此它们也进行计数。如果您先前的默认条目为0,并且在其之前添加了一个分隔符,请记住将GRUB_DEFAULT更改为1
现在运行update-grub,并检查/boot/grub/grub.cfg-您应该在其中看到分隔符。如果您这样做,请重新启动并检出它们。
....
如果要将分隔符放在其他位置,例如,在不同的内核版本之间放置,则需要直接编辑10_linux(或其他脚本),并找到合适的位置添加分隔符。您可以使用上面脚本中的代码行;包括除第一条#!/ bin / sh外的所有内容。
如果您想要更漂亮的东西,请使用Grub启动图像或主题。我需要对这些主题进行一次检查,但是请查看下面的资源。
资源:
我已经知道并喜欢在UbuntuForums上有两个重要的Grub2指南:
GNU Grub 2是另一个很棒的资源。他有一组用于调整Karmic的Grub2 的脚本(完整披露:我还没有尝试过)。
Ghack Wiki的“主题格式”页面是破解Grub2主题所必需的。