将控制台/文本引导模式添加到grub菜单

我想在grub菜单屏幕上有文本启动模式选项。 如何创建此菜单条目?

在我的研究中,有两种方法可以做到这一点

方法1

/etc/grub.d/破解10_linux脚本并插入文本引导菜单项的生成代码

好处:

  • 为所有已安装的内核版本生成文本引导菜单项
  • 安装/清除内核时需要处理新的或冗余的菜单项

缺点:

  • 需要深入了解shell脚本
  • 脚本源文件可能因grub版本而异
  • 如果grub包更新覆盖修改后的脚本,则需要重做编辑

方法2

使用指定的脚本在/etc/grub.d中添加自定义grub menuentry

好处:

  • 最简单,最简单
  • 没有机会被覆盖所以你只做一次

缺点:

  • 仅当您希望每个已安装的内核版本都具有文本引导菜单项时:
    • 很多工作,更难维护
    • 清除旧内核版本时,请留下多余的菜单条

在这个简短的步骤中,我将使用method #2因为这是最容易解释的,我们将仅为您使用的最新内核映像创建文本引导菜单。

  1. 您需要的第一件事是已经为您的最新内核生成的菜单项。 我们将复制并使用它作为我们自定义菜单的基础,稍作修改。 为此,您需要查看/boot/grub/grub.cfg文件。 找到指向Ubuntu上最新内核的第一个menuentry节。 如果您使用其他Linux发行版进行双启动,请特别注意,这样您就不会将其与菜单区混淆
  2. 找到后,复制整个menuentry节并将其粘贴到/etc/grub.d/40_custom文件中。 它可能看起来像下面一个。 我们以此为例

     menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-a4e6d610-122e-42e2-8497-39eae02816e8' { recordfail load_video gfxmode $linux_gfx_mode insmod gzio insmod part_gpt insmod ext2 set root='hd0,gpt2' if [ x$feature_platform_search_hint = xy ]; then search --no-floppy --fs-uuid --set=root --hint-bios=hd0,gpt2 --hint-efi=hd0,gpt2 --hint-baremetal=ahci0,gpt2 a4e6d610-122e-42e2-8497-39eae02816e8 else search --no-floppy --fs-uuid --set=root a4e6d610-122e-42e2-8497-39eae02816e8 fi linux /boot/vmlinuz-3.8.0-31-generic root=UUID=a4e6d610-122e-42e2-8497-39eae02816e8 ro quiet splash $vt_handoff initrd /boot/initrd.img-3.8.0-31-generic 

    }

  3. 现在,您可以在保存文件之前在此节中编辑一些内容:

    • 菜单标题。 将menuentry行中的“Ubuntu”更改为“Ubuntu(文本模式)”
    • linux行中vmlinuz文件的路径。 在linux行的末尾替换/boot/vmlinuz-3.8.0-31-generic/vmlinuz grub引导参数。 用text代替quiet splash
    • initrd行中initrd映像的路径。 用/initrd.img替换/boot/initrd.img-3.8.0-31-generic
  4. 我们在vmlinuzinitrd行中进行替换的原因是为了利用放在/boot dir中的最新版本的符号链接,以便我们的自定义菜单项始终指向最新的内核并且不需要如果引入新内核将被更改。

  5. 而已。 执行sudo update-grub以生成自定义菜单,您就完成了

看到:

Grub 2指南

如果我有时间,我会尝试记录如何……