grub 不会显示自定义菜单项

grub 不会显示自定义菜单项

我在虚拟机下运行 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

相关内容