我在虚拟机下运行 Ubuntu 12.04。我必须修改 grub 菜单并添加一些自定义条目。我尝试编辑/etc/grub.d/40_custom
然后运行update-grub
;但是,没有显示任何新的菜单条目。
40_custom
这是我的文件的内容:
#!/bin/sh
exec tail -n +3 $0
# This file provides an easy way to add custom menu entries. Simply type the
# menu entries you want to add after this comment. Be careful not to change
# the 'exec tail' line above.
menuentry "System restart" {
echo "System rebooting..."
reboot
}
menuentry "System shutdown" {
echo "System shutting down..."
halt
}
menuentry "Other Linux" {
set root=(hd0,1)
linux /boot/vmlinuz
initrd /boot/initrd.img
}
这就是我得到的结果: 没有新条目
我从这页面(关于 Arch,但我不认为在菜单中实际出现的条目方面应该有差异)。
我也不能使用任何第三方软件或诸如此类的东西,我必须40_custom
手动编辑文件或使用标准 Ubuntu 软件包提供的东西。
编辑:
输出如下ls -l /etc/grub.d | grep 40_custom
:
-rw-r--r-- 1 root root 626 May 1 09:44 40_custom
-rw-r--r-- 1 root root 466 May 1 09:39 40_custom~
答案1
您需要对该文件具有执行权限/etc/grub.d/40_custom
。
命令
sudo chmod +x /etc/grub.d/40_custom
将为文件添加执行权限。
完成后,运行
sudo update-grub
答案2
无法评论,所以我将发布答案。首先安装启动分区(对我来说是 sda1),然后阅读以下内容。/boot
sudo mount /dev/sda1 /boot
然后更新grub
sudo update-grub
否则它将在你的文件系统上创建 grub.cfg。你可以检查你已挂载了哪些分区
lsblk
Ad /boot:您可以先检查文件是否已创建。我的文件位于/boot/grub/grub.cfg
,我检查到默认情况下,相对于启动分区,该文件位于/grub/grub.cfg
,因此我将其挂载到/boot
。