GRUB操作涉及系统核心引导流程,错误命令可能导致系统无法启动,建议普通用户在有经验人员指导下操作,修改关键配置前务必备份重要数据,本文仅提供技术参考,操作风险需自行承担。
GRUB基础概念
GRUB(GRand Unified Bootloader)是Linux系统的主流引导程序,负责加载内核,其操作分为两个主要环境:
- GRUB 菜单界面:开机时按
Shift
(BIOS)或Esc
(UEFI)进入。 - GRUB 命令行:在菜单界面按
c
键进入,提示符为grub>
。
常用GRUB命令详解(命令行模式)
在 grub>
提示符下输入命令(按 Tab
键可补全):
-
查看磁盘与分区 (
ls
)grub> ls (hd0) (hd0,msdos2) (hd0,msdos1) ...
(hdX)
:物理磁盘(X=0,1,2…)(hdX,msdosY)
或(hdX,gptY)
:分区(Y=1,2,3…)。msdos
指MBR分区表,gpt
指GPT分区表。
-
查看分区内容 (
ls /path
)
确定根分区()或/boot
分区位置:grub> ls (hd0,gpt2)/boot/grub # 若显示文件列表(如grub.cfg),说明该分区包含GRUB配置 grub> ls (hd0,gpt2)/vmlinuz* # 查找内核文件
-
设置根设备 (
set root
)
指定包含内核和initramfs的分区(通常是/boot
所在分区):grub> set root=(hd0,gpt2)
-
加载Linux内核 (
linux
)
指定内核文件路径和启动参数:grub> linux /boot/vmlinuz-5.15.0-86-generic root=/dev/nvme0n1p2 ro quiet splash
/boot/vmlinuz...
:内核文件路径(相对于set root
设置的设备)。root=/dev/XXX
:指定系统根分区()的设备文件(需根据ls
结果确定)。ro
:以只读方式挂载根文件系统(初始化后切换为rw)。quiet splash
:隐藏启动日志,显示图形启动画面(可选)。
-
加载初始内存盘 (
initrd
)
加载与内核匹配的initramfs镜像:grub> initrd /boot/initrd.img-5.15.0-86-generic
-
启动系统 (
boot
)
执行加载的内核和initramfs:grub> boot
GRUB菜单界面实用技巧
在菜单界面高亮选中条目时操作:
-
e
:编辑启动项- 临时修改当前选中的启动项配置(重启失效)。
- 找到以
linux
开头的行,可修改内核参数(如删除quiet splash
查看详细日志,或添加single
进入单用户模式)。 - 按
Ctrl+X
或F10
使用修改后的配置启动。
-
c
:进入命令行
如前所述,进行高级故障修复。 -
F2
/F3
:保存/加载配置片段
某些发行版支持保存临时编辑的配置。
修复GRUB的典型场景
场景1:GRUB Rescue模式(系统无法启动,提示 grub rescue>
)
- 定位
/boot
分区:grub rescue> ls grub rescue> ls (hd0,gpt1)/boot/grub # 尝试不同分区直到找到包含grub目录的分区
- 设置前缀和根:
grub rescue> set prefix=(hd0,gpt1)/boot/grub grub rescue> set root=(hd0,gpt1)
- 加载正常模块:
grub rescue> insmod normal grub rescue> normal # 进入常规GRUB菜单
- 进入系统后永久修复:
sudo update-grub sudo grub-install /dev/sdX # 替换为实际磁盘(如sda,非分区)
场景2:重装GRUB到磁盘(UEFI系统示例)
- 从Live USB启动系统。
- 挂载根分区和EFI分区:
sudo mount /dev/nvme0n1p2 /mnt # 挂载根分区 sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载EFI系统分区(ESP)
- Chroot到目标系统:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys sudo chroot /mnt
- 重新安装GRUB:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu update-grub
- 退出并重启:
exit sudo umount -R /mnt reboot
专业建议与风险规避
- 备份优先:操作前备份
/etc/default/grub
、/boot/grub/grub.cfg
及重要数据。 - 理解参数:勿随意修改
linux
行的root=
或删除关键参数。 - 确认分区:使用
ls
和ls (hdX,Y)/
反复验证分区信息。 - 慎用
grub-install
:错误安装可能导致其他系统无法启动。 - 单用户模式:启动时在
linux
行末尾添加single
可进入紧急维护环境。 - 日志查看:启动失败时删除
quiet
参数查看内核日志定位问题。
何时寻求专业帮助?
若出现以下情况,建议联系系统管理员或专业支持:
- 无法识别任何硬盘 (
ls
无输出)- 关键文件损坏(内核、initramfs、GRUB模块)
- 涉及RAID/LVM/加密分区的复杂配置
- 多次尝试后仍无法引导
引用说明: 参考了以下权威来源以确保技术准确性:
- GNU GRUB Manual 2.06 ([www.gnu.org/software/grub/manual/grub]())
- Ubuntu Community Wiki – GRUB2 ([help.ubuntu.com/community/Grub2]())
- Arch Linux Wiki – GRUB ([wiki.archlinux.org/title/GRUB]())
- Linux Kernel Documentation – Boot Parameters ([www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html]())
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6784.html