我怎样才能从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 很有用。