本系列之前的两篇文章 (用Knoppix救援光盘恢复Linux和 如何诊断Linux启动问题)里,你已经获得了一些用于修复Linux启动问题的背景知识。在这篇文章中,您将看到,当计算机因为启动加载程序(bootloader) GRUB中的错误而无法启动时,你能做些什么。 要启动Linux,你需要GRUB。但您可能会遇到妨碍计算机正常启动的GRUB问题。
可以根据下面的症状来判断这种问题是否发生: GRUB被完全擦除了,在服务器启动时,除了闪烁的光标外什么也看不到。GRUB产生一个通用的GRUB错误消息。GRUB指示不能找到所需的文件。 对于GRUB问题,有两种修复方法。
你可以重新安装GR……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
本系列之前的两篇文章 (用Knoppix救援光盘恢复Linux和 如何诊断Linux启动问题)里,你已经获得了一些用于修复Linux启动问题的背景知识。在这篇文章中,您将看到,当计算机因为启动加载程序(bootloader) GRUB中的错误而无法启动时,你能做些什么。
要启动Linux,你需要GRUB。但您可能会遇到妨碍计算机正常启动的GRUB问题。可以根据下面的症状来判断这种问题是否发生:
- GRUB被完全擦除了,在服务器启动时,除了闪烁的光标外什么也看不到。
- GRUB产生一个通用的GRUB错误消息。
- GRUB指示不能找到所需的文件。
对于GRUB问题,有两种修复方法。你可以重新安装GRUB,也可以试着通过在命令行里手动的输入GRUB来启动计算机。让我们从如何重新安装GRUB开始。之后你会看到,当遇到GRUB错误时,如何手动加载GRUB。
重新安装GRUB
如果计算机上的MBR出现了严重的问题,那么在计算机启动时,就有可能只看到一个闪烁的光标。如果MBR有严重的问题,就没有GRUB,因此,您看不到GRUB的错误消息。基本上,你是不可能在这种情况下启动计算机的,因此需要使用救援光盘去启动。您可以使用Knoppix来引导您的计算机。
就像之前提到的文章中所介绍的那样,请确保将您硬盘上的所有内容都进行挂载,进入一个chroot环境,接着使用grub-install命令再次安装GRUB。如果您想要在MBR里安装GRUB,而硬盘是由设备文件/dev/sda来寻址,您可以使用命令grub-install /dev/sda。这个命令用于读取GRUB配置文件(在大多数的发行版上是/boot/grub/menu.lst),然后在此基础上,将新的GRUB启动加载程序写进MBR。下面显示了当使用grub-install去重新安装GRUB时,看到的内容:
root@Knoppix:/# grub-install /dev/sda
You shouldn't call /sbin/grub-install. Please call /usr/sbin/grub-install instead!
Searching for GRUB installation directory ... found: /boot/grub
Installation finished. No error reported.
This is the contents of the device map /boot/grub/device.map.
Check if this is correct or not. If any of the lines is incorrect,
fix it and re-run the script `grub-install'.
(hd0) /dev/sda
手动地使用GRUB进行启动
并不一定必须重新安装GRUB。如果GRUB代码仍然存在,但由于GRUB配置文件的问题无法启动,可以尝试进行手动重启。这是在GRUB给出错误消息并停止时的最好方法。通过手动输入所有的GRUB命令,可以清楚看到问题发生在哪儿,并帮助你修复错误。在接下来的部分,你会看到如果去手动加载GRUB配置。
- 要进入GRUB引导菜单,请仔细观察计算机在启动时都做了什么。在大多数情况下,GRUB被处理时,会提示你必须按Escape键。这让您进入GRUB命令行。或者,可以通过一个救援光盘进行启动,并输入命令grub去开启GRUB命令行界面。这里是该界面的一个例子。
通过GRUB命令行界面,解决GRUB的故障会很容易。
- 幸运地是,GRUB shell会为您提供帮助,所以可能不必去记住所有正确的命令。要获得所有可用命令的概览,只需输入help命令。
输入“help”去获得所有命令的概览
- 要手动加载GRUB需要输入/boot/grub/menu.lst文件的所有命令。最好的办法是看一下menu.lst的当前内容。您可以在GRUB shell里,通过输入命令cat /boot/grub/menu.lst来查看内容。在这个文件(可能包含大量的注释)的某些地方,你会看到计算机需要启动的内容。
请确保输入正确的命令,显示menu.lst文件的内容以获得一个很好的参考示例。
- 参照显示器上显示的示例,可以手动输入所有GRUB命令行。也就是说,必须输入root、kernel以及initrd行。下面的三行给出了一个类似的例子。
root (hd0,0)
kernel /boot/vmlinuz-2.6.24-16-server root=/dev/sda2 ro splash
initrd /boot/initrd-2.6.24-16-server
- 在输入这些命令后,计算机会等待进一步的指令。基本上,这意味着现在你必须输入boot命令了。通过输入这个命令,启动过程就开始了。仔细监控其启动过程,确保没有错误发生。因为服务器不能正常启动,如果你手动输入menu.lst里的命令行,也同样可能会发生错误。如果发生了,请一定要找到错误。然后重新启动,直到工作正常。
在引导过程的第一阶段,加载了GRUB。这个过程可能会发生错误,尤其是在MBR、GRUB配置文件、或者GRUB加载文件中有错误的情况下。如果发生了错误,可以手动输入所有GRUB命令去找出错误。如果没效的话,也可以选择重新安装GRUB。