如何进入grub2命令行
当电脑开机后出现grub rescue>或者正常的grub菜单界面,你可以按下c键直接进入grub2命令行模式。如果系统直接跳过了grub菜单,你需要在开机时反复按Esc或Shift键linux文件系统,直到出现grub界面。有些UEFI系统的电脑可能需要在开机时按F12或其他功能键选择启动设备后再按c键。进入命令行后,你会看到grub>这样的提示符,这意味着你已经成功进入了grub2的命令行环境。
进入grub2命令行是手动启动Linux的第一步,也是最关键的一步。如果你看到的是grub rescue>而不是grub>,说明grub模块加载不完整,这时需要先用set和ls命令找到正常的分区,然后执行insmod normal来加载完整的命令行。掌握这个进入技巧,你就能在系统无法正常引导时获得完全的控制权,为后续手动加载内核做好准备。

grub2命令行查看引导设备
在grub>提示符下,输入ls命令可以列出所有可识别的硬盘和分区。输出结果类似(hd0) (hd0,gpt1) (hd0,gpt2) (hd1,msdos1),其中hd0表示第一块硬盘,gpt或msdos表示分区表类型。接着使用ls (hd0,gpt2)/boot 这样的命令来查看分区内是否有vmlinuz和initrd文件,这是确认Linux系统所在分区的核心方法。你可以逐个分区尝试,直到找到包含boot目录的分区。
除了ls,还可以使用ls -l命令查看更详细的分区信息,包括文件系统类型和分区UUID。对于安装了多个Linux发行版的用户,通过UUID可以精确区分每个根分区。另外,如果你记得根分区的文件系统是ext4或xfs,可以结合ls (hd0,gpt2)/来浏览目录结构,比如查看是否存在etc、home等典型文件夹。这个排查过程需要耐心,但一旦找到正确的分区,后续的启动操作就会非常顺利。

grub2设置根分区方法
找到包含vmlinuz内核文件的分区后,使用set root=(hd0,gpt2)命令将其设置为grub的根分区。注意这里的根分区只是grub用来寻找内核和设备树的分区grub2命令行启动linux,并不是Linux系统最终挂载的根目录。为了确认设置是否正确,可以执行ls /boot查看刚才设置的分区下boot目录内的文件列表,如果能看到vmlinuz-xxx和initrd.img-xxx,说明根分区设置正确。
如果你需要启动的系统使用LVM逻辑卷或btrfs子卷,设置方法略有不同。对于LVM,需要先使用insmod lvm,然后set root=lvm/vgroot-lvroot这样的格式;对于btrfs,可能需要额外指定subvol。另外,建议同时记录下分区的UUID,因为后面可能需要传递给内核作为root=参数。执行probe -u (hd0,gpt2)可以获取UUID,复制或记下这串字符,它比设备名更可靠,不会因硬盘顺序变化而失效。

grub2加载内核与initrd
设置好根分区后,使用linux命令加载内核。完整格式为:linux /boot/vmlinuz-5.15.0-91-generic root=/dev/sda2 ro。这里的root参数指定Linux系统启动后要挂载的根分区,可以使用/dev/sda2这样的设备名,也可以用UUID=你的UUID字符串。ro表示以只读方式挂载根分区,这是为了启动过程中fsck检查文件系统。你需要根据实际内核版本号和分区路径调整命令。
接着加载初始内存盘initrd,命令为:initrd /boot/initrd.img-5.15.0-91-generic。initrd包含了启动阶段必需的驱动和模块,比如硬盘控制器驱动、文件系统驱动等。如果内核与initrd版本不匹配,系统启动时会报错或卡住。对于某些特殊硬件,可能还需要先加载额外模块,比如insmod ahci加载SATA驱动。确认内核和initrd都加载成功后,输入boot命令,系统就会开始启动流程。这是整个手动引导过程的核心环节。

grub2常用启动参数设置
在linux命令后面,除了root和ro,还可以添加许多实用参数。例如添加quiet splash可以隐藏启动日志并显示开机动画,添加single或1可以进入单用户维护模式,适合重置root密码。添加nomodeset可以禁用内核模式设置,解决某些显卡导致的黑屏问题。添加systemd.unit=rescue.target会直接进入救援模式。这些参数能在系统出现故障时提供极大的调试便利。
另外几个常用的参数包括:acpi=off用于解决电源管理相关死机问题,init=/bin/bash可以直接跳过init系统进入shell(适合极端修复),memtest=4可以快速测试内存。如果你安装了NVIDIA闭源驱动,有时需要添加nouveau.modeset=0来禁用开源驱动冲突。把这些参数空格分隔拼接到linux命令后面即可,但注意不要重复添加root参数。学会灵活使用这些参数,你就能应对绝大多数启动故障场景。

grub2启动失败如何排错
输入boot后如果系统卡住或报错,最常见的错误是“VFS: Unable to mount root fs”。这通常是因为linux命令中的root参数指定错误,比如分区号不对或忘记加UUID引导。此时按Ctrl+Alt+Del重启grub2命令行启动linux,重新进入grub命令行检查分区和UUID。第二个常见错误是“kernel panic”,可能是内核文件损坏或硬件不兼容,可以尝试使用备用内核版本(如果/boot下有多个vmlinuz文件)。
另一个排错技巧是使用set命令查看当前所有变量,确认root前缀是否正确。如果提示“file not found”,请检查linux和initrd路径中是否多写了或漏写了/boot前缀。对于UEFI系统,可能还需要执行insmod efi_gop和insmod efi_uga来初始化屏幕。当所有方法都无效时linux嵌入式开发,可以尝试用live USB启动系统,挂载根分区后重新安装或修复grub。你在手动启动时曾遇到过让人抓狂的诡异报错吗?欢迎在评论区分享你的经历和解决方案,也可以点赞收藏本文方便以后查阅。
