grub命令行下手动启动linux需依次执行ls探路、set root、linux指定内核、initrd指定镜像、boot启动;顺序错误或路径不匹配将导致失败。

GRUB 命令行模式下怎么手动启动 Linux
当 grub.cfg 损坏、菜单不显示或内核路径写错时,grub> 提示符就是最后的救命通道。它不依赖配置文件,纯靠手输命令加载内核和 initrd。
- 先用
ls探路:grub> ls (hd0,1)/boot/—— 确认分区里真有vmlinuz-*和initrd.img-*,别凭记忆硬写 -
set root=用的是 GRUB 命名(如(hd0,1)),但linux行里的root=/dev/sda1是给 Linux 内核看的,必须匹配系统实际设备名,否则卡在 “VFS: Unable to mount root fs” -
initrd必须紧跟linux之后,顺序颠倒会报kernel requires an initrd - 按
Tab补全路径——grub> linux /boot/vm<tab></tab>能列出所有匹配内核,比猜省心十倍
/etc/default/grub 修改后为什么没生效
直接改 /boot/grub/grub.cfg 是白忙活,它每次都是自动生成的。真正起作用的是 /etc/default/grub 和 /etc/grub.d/ 下的脚本。
-
GRUB_DEFAULT=0表示默认选第一个菜单项;想按名称设,得写成GRUB_DEFAULT="ubuntu"(引号不能少) -
GRUB_TIMEOUT_STYLE=menu才能确保超时前显示菜单;设成hidden或countdown会导致按住Shift才弹出菜单,新手常在这里懵圈 - 改完必须运行
update-grub(debian/Ubuntu)或grub2-mkconfig -o /boot/grub2/grub.cfg(RHEL/centos),漏掉这步等于没改 - 如果
update-grub报错 “cannot find a device for /”,大概率是GRUB_DEVICE没自动识别到根分区,可临时加GRUB_DEVICE=/dev/sda2再试
chainloader +1 引导 windows 为什么失败
链式加载不是万能钥匙,它只把控制权交给目标分区的第一个扇区(即 PBR),前提是那个扇区真有能干活的引导代码。
- Windows 10/11 UEFI 安装默认不用 BIOS+MBR 模式,
chainloader +1在 UEFI 系统上根本跑不通,得用efibootmgr或 GRUB 的efi模块 - BIOS 模式下,若 Windows 分区不是活动(active)分区,
chainloader +1会停在黑屏或 “Error: no such partition” —— 用fdisk -l确认Boot标志在对应分区 -
set root=(hd0,1)中的分区编号要对:NTFS 分区通常在(hd0,1)或(hd0,2),但逻辑分区从4开始计数(比如(hd0,4)),不是sda5对应(hd0,5) - 安全启动(Secure Boot)开启时,
chainloader会被 UEFI 拦截,需关闭 Secure Boot 或换用ntldr兼容方式(不推荐)
重装 GRUB 时最危险的一步是什么
grub-install /dev/sda 这条命令本身没错,错在装错了目标设备——它会直接覆写 MBR 或 EFI 系统分区,一旦指向错误磁盘,整机可能无法启动。
- 务必确认
/dev/sda是系统盘,不是数据盘或 USB 盘。用lsblk -f对照/boot和/所在设备 - UEFI 系统必须指定
--efi-Directory,例如:grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB,漏掉--efi-directory会静默失败 - Live 环境中 chroot 后再装:先
mount /dev/sda2 /mnt,再mount /dev/sda1 /mnt/boot/efi(如有),然后chroot /mnt,否则grub-install找不到模块路径 - 装完立刻验证:
grub-probe -t device /boot应返回/dev/sda2;grub-file --is-x86-bios-core-img /boot/grub/i386-pc/core.img确认核心镜像完整
GRUB 配置里最绕的从来不是语法,而是命名体系混用:GRUB 自己的 (hd0,1)、Linux 内核的 /dev/sda1、UUID 字符串、UEFI 的 HD(1,gpt,...) —— 同一个分区在不同上下文里有四五种写法,抄错一个就进不了系统。