如何从 grub 提示符正常启动系统?

如何从 grub 提示符正常启动系统?

我怎样才能从grub>提示符启动 Linux,就像从冷启动一样?

我有完整的磁盘加密。当我手忙脚乱地输入加密密码时,它会将我带到grub rescue(如果您能告诉我如何让它尝试输入密码两次,我会得到加分... :) )从这里,我可以解锁磁盘(cryptomount hdX,gpt1)。

完成这些操作后(演示键盘正常工作,我输入了正确的键,没有睡着,等等) - 我只想正常使用 Linux 参数行启动系统。显然,系统没有问题,所以这会起作用(我只是不小心输入了密码)。

为了消除歧义,我系统的功能可能有必要,下面是我的grub.cfg

menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-320f<GUID...>' {
        recordfail
        load_video
        gfxmode $linux_gfx_mode
        insmod gzio
        if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
        insmod part_gpt
        insmod cryptodisk
        insmod luks
        insmod gcry_rijndael
        insmod gcry_rijndael
        insmod gcry_sha256
        insmod ext2
        cryptomount -u b6b7<32_char_part_id>
        set root='cryptouuid/b6b7<32_char_part_id>'
        if [ x$feature_platform_search_hint = xy ]; then
          search --no-floppy --fs-uuid --set=root --hint='cryptouuid/b6b7<32_char_part_id>'  76f4<GUID...>
        else
          search --no-floppy --fs-uuid --set=root 76f4<GUID...>
        fi
        linux   /vmlinuz-5.15.0-84-generic root=/dev/mapper/ubuntu--vg-root ro rootflags=subvol=@  quiet splash $vt_handoff
        initrd  /initrd.img-5.15.0-84-generic
}

答案1

命令normal应返回菜单。您可能应该在手动解锁音量之前执行此操作,因为它可能不够智能,无法“恢复” - 它只会重新调用整个菜单项(全部或全部)。

没有直接的“仅启动”命令,因为此时操作系统内核尚未加载(它应该是菜单项中的后续命令),所以唯一的选择是使用与菜单项相同的命令手动加载内核和 initramfs。

我可能一般会避免加密 /boot 文件系统 - 而是让 initramfs 提示输入 / 密码。如果您可以确保 GRUB 本身未被篡改,则可以使用相同方法确保内核和 initramfs 未被篡改,而不必对它们进行加密。

答案2

grub 命令提示符和 grub 配置语言基本相同。

找出如何执行此操作的简单方法是menuenry {}从文件读取/boot/grub/grub.cfg。有一个隐藏命令名为boot,由暗示menuentry

在许多/大多数系统上您可以使用:

linux (hdX,gptY)/boot/vmlinuz_kernel_file root=root_fs_device
initrd (hdX,gptY)/boot/initramfs_file
boot

您可以使用我们调用的另一个技巧configfile再次执行 grub.cfg 文件作为其自己的脚本。这应该会显示您通常使用的菜单。

configfile (hdX,gptY)/boot/grub.cfg

请注意,有一些命令可以帮助您找到上面的占位符:

search让你通过标签或 UUID 查找分区

ls让您列出分区或分区上的文件。要列出设备 X 上分区 Y 上的文件,您可以使用ls (hdX,gptY)/ls (hdX,gptY)/bar/列出目录“bar”。

cat让您读取一个文件,因此如果您不记得它的内容,它可能对于读取您的 grub.cfg 很有用。

相关内容