方法 1

方法 1

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

答案1

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

方法 1

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

优点:

  • 为所有已安装的内核版本生成文本启动菜单项
  • 安装/清除内核时处理新的或多余的菜单项

缺点:

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

方法 2

使用指定脚本添加自定义 grub 菜单项/etc/grub.d

优点:

  • 最简单、最不复杂的
  • 没有被覆盖的机会,所以你只需做一次

缺点:

  • 仅当您希望每个安装的内核版本都有文本启动菜单项时:
    • 工作量大,维护难度大
    • 清除旧内核版本时留下多余的菜单项

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

  1. 您首先需要的是已为最新内核生成的菜单项。我们将复制并使用它作为我们自定义菜单项的基础,并进行少许修改。为此,您需要查看文件/boot/grub/grub.cfg。找到指向 Ubuntu 上最新内核的第一个菜单项节。如果您与其他 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 文件的路径。 在行末/boot/vmlinuz-3.8.0-31-generic用grub 启动参数替换。用/vmlinuzlinuxquiet splashtext
    • 行中的 initrd 映像路径initrd。替换/boot/initrd.img-3.8.0-31-generic/initrd.img
  4. vmlinuz我们在和行中都进行替换的原因initrd是为了利用 / 中的符号链接,该符号链接指向/bootdir 中的最新版本,以便我们的自定义菜单项始终可以指向最新的内核,并且在引入新内核时不需要进行更改。

  5. 就这样。执行sudo update-grub生成自定义菜单,就大功告成了。

答案2

看:

Grub 2 指南

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

相关内容