电脑开机突然卡在黑屏,只显示一行 “grub rescue>”?捣鼓半天不知道咋回事,最后只能重装系统?你肯定遇到过这种情况。其实这多半是 GRUB 引导出了问题,而 grub-install 命令就是修复它的关键。但这命令到底是啥?为啥会安装失败?不同 Linux 系统又该咋用?别着急,今天小编就用大白话给你讲透,看完你也能自己修复引导。
一、grub-install 命令到底是啥?为啥非它不可?
说白了,grub-install 是 Linux 系统里用来安装或修复 GRUB 引导程序的命令。GRUB 你可以理解成电脑开机的 “导航员”,负责告诉电脑该加载哪个系统、从哪个硬盘启动。要是这个 “导航员” 坏了,电脑就找不到启动路径,自然就卡在黑屏了。
那 grub-install 的作用就很明确了:重新安装这个 “导航员”,让它能正常工作。不管是新装系统后没引导,还是不小心删了引导文件,甚至是双系统切换出了问题,都可能用到它。
可能有人会问,系统自带的引导修复工具不行吗?确实有,但那些工具本质上也是调用 grub-install 这类命令来工作的。学会直接用它,就像学会手动挡开车,比自动挡更灵活,遇到复杂情况也能搞定。
二、grub-install 安装失败?这几个坑最容易踩
用 grub-install 的时候,最让人头疼的就是失败,屏幕上一堆英文报错,看得人眼花缭乱。小编总结了几个新手常踩的坑:
- 路径搞错了:命令里要指定安装的硬盘或分区,比如 “grub-install /dev/sda”,要是写成 “/dev/sda1”(分区)就容易错。我之前帮朋友修电脑,他就把硬盘路径写成了分区,结果提示 “cannot find EFI directory”。
- 权限不够:这命令得用管理员权限运行,前面必须加 sudo,比如 “sudo grub-install”。忘了加的话,就会提示 “permission denied”,新手很容易忽略这点。
- EFI 目录找不到:装在 UEFI 模式的系统,需要指定 EFI 目录位置,比如 “grub-install –boot-directory=/mnt/boot/dev/sda”。要是没指定对,就会报错。尤其双系统用户,挂载错了分区就容易出这问题。
- 文件系统不支持:有些特殊的文件系统,比如 exFAT,grub-install 不支持,强行安装肯定失败。这种时候就得先把分区格式化成 ext4 或 FAT32。
三、修复引导的具体步骤,跟着做就行
不管啥原因导致引导坏了,按这几步来,大概率能修好。以最常见的 “开机进 grub 救援模式” 为例:
- 先确定系统安装的硬盘和分区。在 grub 救援模式下输入 “ls”,会列出所有硬盘分区,比如 (hd0,msdos1)、(hd0,msdos5),试着用 “ls (hd0,msdos5)/boot” 看看哪个分区里有 boot 文件夹,那就是系统所在分区。
- 用启动盘启动电脑,进入 live 模式(就是不安装系统直接运行),打开终端。先挂载系统分区,比如 “sudo mount /dev/sda5 /mnt”(sda5 换成你找到的分区)。
- 要是 UEFI 系统,还得挂载 EFI 分区:“sudo mount /dev/sda1 /mnt/boot/efi”(sda1 通常是 EFI 分区)。
- 最后运行安装命令:“sudo grub-install –root-directory=/mnt/dev/sda”(/dev/sda 是硬盘,不是分区)。等提示 “Installation finished. No error reported” 就成了。
重启电脑试试,是不是能正常进入系统了?要是还不行,就检查一下步骤里的路径有没有错,多半是哪里挂载错了。
四、不同 Linux 发行版,用法稍微有点不一样
虽然 grub-install 核心功能一样,但 Ubuntu、CentOS、Debian 这些系统,细节上还是有区别,新手得注意:
- Ubuntu/Debian:用 “grub-install” 就行,系统会自动检测模式(UEFI/BIOS)。要是 UEFI 模式,可能需要加 “–target=x86_64-efi” 参数,比如 “sudo grub-install –target=x86_64-efi /dev/sda”。
- CentOS/RHEL:习惯用 “grub2-install”(注意多了个 2),命令是 “sudo grub2-install /dev/sda”,修复完最好再更新一下配置:“sudo grub2-mkconfig -o /boot/grub2/grub.cfg”。
- Arch Linux:比较灵活,需要先挂载必要的目录,比如 “sudo mount –bind /dev/mnt/dev”“sudo mount –bind /sys/mnt/sys”,再用 “sudo chroot /mnt” 切换根目录,最后运行 “grub-install /dev/sda”。
小编在 Arch Linux 上试过,不挂载那些目录直接装,十有八九会失败,新手别图省事。
五、个人用下来的心得,给新手的几句提醒
用 grub-install 这几年,我最大的感受是:别怕报错,那些英文提示其实是在告诉你问题出在哪,翻译一下基本就知道咋解决。比如看到 “EFI” 相关的错,就往 UEFI 配置上找原因;看到 “permission”,就检查权限。
另外,操作前一定要备份重要数据,虽然概率低,但万一弄错分区,可能会丢数据。可以先用 “lsblk” 命令看看硬盘分区情况,记下来再动手。
最后说一句,修复引导这事儿,多练两次就熟了。第一次可能要折腾俩小时,第二次说不定半小时就搞定。别被一堆命令吓住,其实比你想象的简单。希望你看完这篇,下次遇到引导问题,能自己动手解决,不用再求人啦。