你家有这些安全隐患吗?

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

相关推荐

  • Windows XP如何调用CMD命令提示符?

    方法1:通过开始菜单(最常用)点击屏幕左下角的 【开始】 按钮选择 【所有程序】 → 【附件】在展开的菜单中单击 【命令提示符】→ 此时会弹出黑色窗口,显示C:\Documents and Settings\用户名>,即可输入命令(如ipconfig查看网络信息),方法2:使用“运行”对话框(快速启动)按……

    2025年6月13日
    1300
  • 无法连接MongoDB本地27017端口?

    连接MongoDB数据库# 连接远程服务器(示例)mongo –host 192.168.1.100 –port 27017 -u admin -p password数据库操作> show dbs # 查看所有数据库> use mydb # 切换到mydb数据库(不存在则创建)> db.d……

    2025年6月22日
    900
  • aximp 命令的核心作用是什么?

    aximp命令的核心作用是为COM组件生成托管元数据包装程序集,使.NET应用程序能够无缝调用COM组件功能,实现互操作。

    4天前
    1000
  • 如何快速打开Win10命令菜单?

    Windows 10中,按Win+R键可快速打开“运行”对话框执行命令;按Win+X键或右键单击开始按钮可访问“高级用户菜单”,内含常用系统工具和管理选项。

    1天前
    400
  • UG NX回转命令怎么操作?

    UG NX的回转命令通过绕指定轴旋转截面轮廓来创建三维实体或曲面,用户需定义旋转截面、旋转轴,并可控制旋转角度、布尔运算等参数,是生成轴对称零件的核心工具。

    2025年6月26日
    1000

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信