你家有这些安全隐患吗?

GRUB操作涉及系统核心引导流程,错误命令可能导致系统无法启动,建议普通用户在有经验人员指导下操作,修改关键配置前务必备份重要数据,本文仅提供技术参考,操作风险需自行承担。


GRUB基础概念

GRUB(GRand Unified Bootloader)是Linux系统的主流引导程序,负责加载内核,其操作分为两个主要环境:

  1. GRUB 菜单界面:开机时按 Shift(BIOS)或 Esc(UEFI)进入。
  2. GRUB 命令行:在菜单界面按 c 键进入,提示符为 grub>

常用GRUB命令详解(命令行模式)

grub> 提示符下输入命令(按 Tab 键可补全):

  1. 查看磁盘与分区 (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分区表。
  2. 查看分区内容 (ls /path)
    确定根分区()或 /boot 分区位置:

    grub> ls (hd0,gpt2)/boot/grub
    # 若显示文件列表(如grub.cfg),说明该分区包含GRUB配置
    grub> ls (hd0,gpt2)/vmlinuz* 
    # 查找内核文件
  3. 设置根设备 (set root)
    指定包含内核和initramfs的分区(通常是 /boot 所在分区):

    grub> set root=(hd0,gpt2)
  4. 加载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:隐藏启动日志,显示图形启动画面(可选)。
  5. 加载初始内存盘 (initrd)
    加载与内核匹配的initramfs镜像:

    grub> initrd /boot/initrd.img-5.15.0-86-generic
  6. 启动系统 (boot)
    执行加载的内核和initramfs:

    grub> boot

GRUB菜单界面实用技巧

在菜单界面高亮选中条目时操作:

  1. e:编辑启动项

    • 临时修改当前选中的启动项配置(重启失效)。
    • 找到以 linux 开头的行,可修改内核参数(如删除 quiet splash 查看详细日志,或添加 single 进入单用户模式)。
    • Ctrl+XF10 使用修改后的配置启动。
  2. c:进入命令行
    如前所述,进行高级故障修复。

  3. F2/F3:保存/加载配置片段
    某些发行版支持保存临时编辑的配置。


修复GRUB的典型场景

场景1:GRUB Rescue模式(系统无法启动,提示 grub rescue>

  1. 定位 /boot 分区:
    grub rescue> ls
    grub rescue> ls (hd0,gpt1)/boot/grub
    # 尝试不同分区直到找到包含grub目录的分区
  2. 设置前缀和根:
    grub rescue> set prefix=(hd0,gpt1)/boot/grub
    grub rescue> set root=(hd0,gpt1)
  3. 加载正常模块:
    grub rescue> insmod normal
    grub rescue> normal # 进入常规GRUB菜单
  4. 进入系统后永久修复
    sudo update-grub
    sudo grub-install /dev/sdX # 替换为实际磁盘(如sda,非分区)

场景2:重装GRUB到磁盘(UEFI系统示例)

  1. 从Live USB启动系统。
  2. 挂载根分区和EFI分区:
    sudo mount /dev/nvme0n1p2 /mnt          # 挂载根分区
    sudo mount /dev/nvme0n1p1 /mnt/boot/efi # 挂载EFI系统分区(ESP)
  3. Chroot到目标系统:
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    sudo chroot /mnt
  4. 重新安装GRUB:
    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=Ubuntu
    update-grub
  5. 退出并重启:
    exit
    sudo umount -R /mnt
    reboot

专业建议与风险规避

  1. 备份优先:操作前备份 /etc/default/grub/boot/grub/grub.cfg 及重要数据。
  2. 理解参数:勿随意修改 linux 行的 root= 或删除关键参数。
  3. 确认分区:使用 lsls (hdX,Y)/ 反复验证分区信息。
  4. 慎用 grub-install:错误安装可能导致其他系统无法启动。
  5. 单用户模式:启动时在 linux 行末尾添加 single 可进入紧急维护环境。
  6. 日志查看:启动失败时删除 quiet 参数查看内核日志定位问题。

何时寻求专业帮助?
若出现以下情况,建议联系系统管理员或专业支持:

  • 无法识别任何硬盘 (ls 无输出)
  • 关键文件损坏(内核、initramfs、GRUB模块)
  • 涉及RAID/LVM/加密分区的复杂配置
  • 多次尝试后仍无法引导

引用说明: 参考了以下权威来源以确保技术准确性:

  1. GNU GRUB Manual 2.06 ([www.gnu.org/software/grub/manual/grub]())
  2. Ubuntu Community Wiki – GRUB2 ([help.ubuntu.com/community/Grub2]())
  3. Arch Linux Wiki – GRUB ([wiki.archlinux.org/title/GRUB]())
  4. Linux Kernel Documentation – Boot Parameters ([www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html]())

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6784.html

(0)
酷番叔酷番叔
上一篇 2025年7月9日 04:55
下一篇 2025年7月9日 05:10

相关推荐

  • 命令窗口怎么退出循环

    命令窗口中,可通过按 Ctrl + C 组合键来退出正在执行的循环

    2025年8月16日
    1200
  • Windows CMD换行符处理必学技巧

    长命令换行输入(续行符)当命令过长需跨行书写时,使用 ^(脱字符) 作为续行符:echo 这是第一行 ^这是第二行 ^这是第三行执行效果:输出连续字符串:这是第一行 这是第二行 这是第三行注意事项:^ 后必须紧跟换行(直接按回车),不能有空格或其他字符,示例:多行安装Python包pip install req……

    2025年7月19日
    2500
  • 命令行复制文件怎样最快?

    使用cp命令高效复制文件:cp 源文件 目标路径,添加-i参数避免覆盖重要文件,-r参数递归复制整个目录,熟练运用通配符*可批量操作同名文件。

    2025年7月29日
    2500
  • 3D打印切片命令如何决定成品质量?

    3D打印的核心是将3D模型转化为打印机可执行的指令,这一过程称为切片,切片命令详解即深入解析切片软件中各项设置(如层高、填充密度、支撑、速度等)如何精确控制打印路径、材料堆积和最终打印质量。

    2025年7月20日
    2400
  • cmk命令怎么操作

    cmk 命令用于检查内核模块依赖关系,基本用法:lsmod | grep cmk查看是否存在,加载用 modprobe cmk`,

    2025年8月15日
    1200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信