grub命令行引导Linux
grub命令行引导Linux详细介绍
在 GRUB 命令行中手动引导 Linux 系统,通常用于系统引导配置损坏或需要临时指定引导参数的场景。以下是详细步骤:
一、进入 GRUB 命令行
- 启动时进入 GRUB 菜单
开机后,当出现 GRUB 引导菜单时(通常会显示 Linux 发行版名称),按下e键进入编辑模式 (若未显示菜单,可能需要在启动时快速按下Shift或Esc键)。- 如果 GRUB 菜单完全无法进入(如黑屏),可能需要通过启动盘进入救援模式,再手动引导。
- 进入命令行界面
在 GRUB 菜单编辑模式中,按下c键(部分版本可能直接进入命令行,或需在编辑模式下输入命令)。
二、GRUB 命令行基础操作
1.
查看磁盘和分区
使用 ls 命令列出可用设备,格式为 (hdX,Y) 或 (hdX,gptY)(X 为磁盘编号,Y 为分区编号):
grub
ls # 列出所有设备ls (hd0) # 查看第一块磁盘的分区
ls (hd0,1) # 查看第一块磁盘的第一个分区(MBR 分区)
ls (hd0,gpt1) # 查看第一块磁盘的第一个 GPT 分区
通过逐级查看,找到包含 /boot 目录的分区(通常是根分区或单独的 /boot 分区)。
2.
定位内核和 initramfs 文件
假设 /boot 位于 (hd0,gpt2) 分区,进入该分区并查看文件:
grub
ls (hd0,gpt2)/boot/# 通常会看到 vmlinuz-xxx(内核)和 initramfs-xxx.img(初始化镜像)
三、手动引导 Linux 系统
1.
加载内核(linux 命令)
语法:
grub
linux /boot/vmlinuz-版本号 内核参数
- 必填参数:
root=UUID=xxx或root=/dev/sdaX:指定根文件系统位置(通过blkid命令可查看 UUID,或在正常系统中提前记录)。ro:以只读模式挂载根文件系统(后续由 initramfs 重新挂载为读写)。
- 示例(假设根分区为
/dev/sda3):grublinux (hd0,gpt2)/boot/vmlinuz-6.2.0-35-generic root=/dev/sda3 ro - 可选参数(根据需求添加):
init=/bin/sh:进入单用户模式(维护模式)。quiet:关闭启动信息(仅显示关键日志)。nomodeset:禁用显卡驱动(解决启动黑屏问题)。
2.
加载初始化镜像(initrd 或 initramfs 命令)
语法:
grub
initrd /boot/initramfs-版本号.img
- 示例(与内核版本对应):grub
initrd (hd0,gpt2)/boot/initramfs-6.2.0-35-generic.img
3.
启动系统(boot 命令)
grub
boot
四、常见问题与进阶操作
1.
不知道根分区位置?
- 通过
ls命令逐级查找/boot目录所在的分区,例如:grubls (hd0,1)/boot/ # 若存在 vmlinuz 文件,说明该分区包含 /boot - 若根分区和 /boot 同分区,直接使用该分区;若 /boot 独立分区,根分区通常为另一个分区(需结合安装时的分区规划)。
2.
使用 UUID 代替设备名
- 更稳定的方式是使用分区 UUID(避免设备名变化,如
sda变为sdb):- 在正常系统中通过
blkid /dev/sda3查看 UUID。 - 替换内核参数为
root=UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx。
- 在正常系统中通过
3.
修复 GRUB 配置(避免每次手动引导)
若因 grub.cfg 损坏导致需要手动引导,修复步骤(需进入救援模式):
- 挂载根分区:bash
/dev/sda3 /mnt - 生成新的 GRUB 配置:bash
/mnt/boot/grub/grub.cfg
总结命令流程
- 找到引导分区:
ls (hdX,Y) - 加载内核:
linux /boot/vmlinuz-版本号 root=设备/UUID ro - 加载初始化镜像:
initrd /boot/initramfs-版本号.img - 启动:
boot
通过以上步骤,即可在 GRUB 命令行中手动引导 Linux 系统。如果需要频繁手动引导,建议修复 GRUB 配置或检查系统引导文件是否损坏。