添加 GRUB 菜单项以启动进入终端

添加 GRUB 菜单项以启动进入终端

好的,这就是我想要实现的目标:

在 GRUB 中有一个单独的菜单选项,以便我可以选择它并直接启动到命令行 - 也就是说:没有桌面管理器,但保留现有菜单项(像往常一样启动 Ubuntu)。

我查看过,/etc/default/grub但似乎没什么可做的。而且/boot/grub/grub.cfg它是自动生成的,所以我认为直接编辑它不是一个好主意。

我该怎么做?有什么想法吗?


更新:现有的答案(表明该问题是重复的)已过时。有关正确解决方案,请参阅下面接受的答案,效果很好。(至少对于 16.04+ 来说似乎如此)

答案1

打开文件/boot/grub/grub.cfg并找到启动“常规” Ubuntu 的部分。

对我来说这是:

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        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  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /boot/vmlinuz-4.13.0-39-generic.efi.signed root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 ro  
        initrd  /boot/initrd.img-4.13.0-39-generic
}

将该部分复制到一个新文件,例如textmode.txt

转到/etc/grub.d并创建(或编辑)文件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.

将菜单项添加到textmode.txt文件中但更改一些值(见下文):

menuentry 'Ubuntu (text mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-b8f25f1e-a169-4aaa-9f05-90e49359d865' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        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  b8f25f1e-a169-4aaa-9f05-90e49359d865
        else
          search --no-floppy --fs-uuid --set=root b8f25f1e-a169-4aaa-9f05-90e49359d865
        fi
        linux   /vmlinuz root=UUID=b8f25f1e-a169-4aaa-9f05-90e49359d865 systemd.unit=multi-user.target ro
        initrd  /initrd.img
}

必须更改的值包括:

  • 菜单项文本:将其从更改为'Ubuntu''Ubuntu (text mode)'或您希望在菜单中显示的任何内容)
  • linux:将其更改为linux /vmlinuz root=UUID=... systemd.unit=multi-user.target ro。确保 UUID 保持不变。
  • initrd行:将其更改为/initrd.img

确保/目录中/vmlinuz/initrd.img当前版本的符号链接。无论如何,这是默认设置。

跑步

sudo update-grub

这种方法与这个答案一个非常相似的问题是,在最新版本的 Ubuntu 中

linux   /boot/vmlinuz-3.8.0-31-generic root=UUID=... ro quiet splash $vt_handoff

需要替换为

linux   /vmlinuz root=UUID=... systemd.unit=multi-user.target ro

我不知道什么最近的实际上是但我猜是 16.04systemd被引入。

相关内容