admin管理员组

文章数量:1530518

2024年6月24日发(作者:)

解析Linux系统下GRUB故障修复

在使用Linux的过程中,大多初学者都遇到过系统启动到“grub>”提示符后就停止不前的问题,功夫不

深的爱好者可能会束手无策,转而选择重装系统,其实这只是系统出现了一点小问题,既系统的GRUB配置文

件出现了故障,此时可以采用以下两种方案来解决问题:

1)存在GRUB配置文件备份

如果存在GRUB配置文件备份,则可以比较简单的进行恢复,可以按如下方法进行:

使用光盘引导机器,进入到“linux rescue”模式,即系统维护模式;在提示符”sh#”下执行cp命令,

将备份文件拷贝到/boot/即可

Sh#cp /backup/ /mnt/sysimage/boot/grub/

假设备份文件为/backup/,因为大多数Linux光盘修复模式中会将硬盘系统的”/”分区

chroot到“/mnt/sysimage”处,所以拷贝的目标为“/mnt/sysimage/boot/grub/”,而非

“/boot/grub/”。

完成后重新启动即可。内核文件、镜像文件、/boot目录等文件损坏或丢失,也可以使用此种方法修复。

2)如果没有GRUB配置文件备份

如果没有备份文件时可以使用grub的交换功能,可以在”grub>”命令行下进行以下操作以手动启动系

统:

查找/boot/grub/分区所在的目录:

grub> find /boot/grub/

(hd0,0)

需要注意的是,上述命令将得到的是配置文件所在的系统的分区,(hd0,0)即表示它在分区hda1

查看文件错误使用如下的命令:

grub> cat (hd0,0)/boot/grub/

需要注意的是,可以查看配置文件到底什么地方出现了错误,以便进入后修改。

指定/boot分区使用命令:root (hd0,0)

从此步骤开始,即为本文前面提到的GRUB配置文件的主要引导步骤,只是一般都是系统读取GRUB配置

文件,出现问题时我们可以使用手动启动。

指定内核加载的命令:kernel /boot/vmlinuz ro root=LABEL=/

指定镜像文件所在的位置可用如下命令:initrd /boot/7

从/boot分区启动可以使用如下命令:boot (hd0,0)

此时系统即可正常启动,实际上以上步骤就是执行了GRUB引导期间加载文件的步骤,当系统

正常启动后将GRUB配置文件修改正确后即可。

重建 GRUB (linux boot loader)

GRUB (GRand Unified Bootloader 縮寫) 是 linux 系統中常用的系統啟動軟體,另一個同功能的是

LILO (LInux LOader 縮寫),它的作用是接管 BIOS 交付控制權給作業系統時的第一個工作–把作業系統正確地

從硬碟載入。通常一般使用者在用光碟裝完 linux 後,例如 ubuntu,系統就會自動裝好 GRUB,就像

Windows 系統一樣。然而如果有某種原因被毀損了,最常見的是在同個硬碟想有 dual system,先裝好 linux

再裝 Windows,Windows 會很不客氣毫不猶豫地直接蓋掉 GRUB,你的 linux 就此無法開機,這時就需要

重建 GRUB 了…

如何重建 GRUB 的步驟如下:

使用原來的 linux 安裝光碟開機。現代的系統都是 live-cd,即開機光碟 boot 完就是可操作的系統。

開一個終端機程式,可以輸入命令。

執行 sudo grub,回答密碼。

grub> find /boot/grub/stage1,它會找原來裝 GRUB 的硬碟分區,例如 (hd1,0),即第二個硬碟的第

一個分區。

grub> root (hd1,0),告訴它 linux root 在哪裡。

grub> setup (hd0),安裝 GRUB 在第一個硬碟的 MBR (Master Boot Record)。把 Windows 的

bootloader 蓋掉… 之後可以在 GRUB menu 中加入進 Windows 系統的選項,本文不討論這個。

grub> quit,結束,這樣就完成 GRUB rebuild,可以 reboot 了。

另一作法是把 GRUB 安裝在硬碟分區裡,例如 grub> setup (hd1,0),安裝 GRUB 在第二個硬碟的第一

個分區,而不是 MBR。這種方法可以使用 Windows 的 boot loader 來作 dual system 啟動,我就是這麼

作的,下回再來介紹。

本文标签: 使用系統配置文件命令系统