Redhat启动修复小记

简介:

晚上9:30,某学院研究生突然打电话说他的机房的Linux系统无法开机,问题貌似挺严重的,于是带上ubuntu启动盘过去看了看。

  机房大约有30多台电脑,只有一台能进入Linux。随便找了一台,选择进入Linux系统后就卡死了,键盘上的灯一直闪,按任何键都没反应,但是windows可以进入(双系统)。

  开始问答环节:

复制代码
问:所以主机是装完一台之后同传的吗?
答:是的
问:同传之后机器能启动吗?
答:能
问:后来为什么又进不去了?
答:修改了/boot/grub/grub.cfg文件
问:为什么要修改这个文件?
答:因为这是一个公共机房,装双系统,我先装的XP,后装的redhat,装完之后第一启动项是redhat,只有我们用redhat,其他人上机用XP,所以我想调整默认的启动顺序。修改了那个文件,将redhat相关的启动项移动到了XP的下面。
(PS:以前这种事我干过,由于我的电脑上系统比较多,Linux在第一位,win7在最后一位,每次进win7要按好几下方向键,麻烦,于是便将win7调整到第二位,就是修改那个文件,没出啥问题。)
问:修改之后能进入Linux吗?
答:能。现在就那一台机器能启动
问:其他机器也是这样修改的?
答:不是的,我是直接将修改好的那台机器上的/boot/grub/grub.cfg文件直接覆盖到其他机器上相应文件。
(PS:您可真有耐心!30多台机器啊,一台一台复制!)
问:修改之后能进入吗?
答:我们一口气把所有主机都修改了,修改完了开机才发现所有修改的主机都进不去了!网上找了半天,没鼓捣出来,所以把你请来了。
问:修改完一台应该测试一下的。
答:我们导师也一直说我们(囧)~
复制代码

  问题基本能锁定在那个文件上,于是插上我的U盘ubuntu启动盘,进入系统,打开磁盘管理工具看了一下,他装Linux系统的时候分了3个区,112G的/分区,1.2G的/boot分区,4G的swap分区。果断挂载boot分区,打开grub/grub.cfg文件。我地一个想法是复原这个文件,由于这个文件被覆盖了,因此只能根据他的回忆复原。复原之后,重启,进入Linux,仍然和刚才的情况一样。看来不是顺序的问题。

  虽然系统无法启动,但是还是有两行提示信息的(忘了拍下来了,后悔ing)。研究生说他们去网上搜了这个问题,网上说是系统跑飞了,然后尝试了各种方法,鼓捣了半天,没有弄好。

  “系统跑飞了”,这是一个重要参考信息,系统为什么会跑飞?记得以前硬件老师讲过,程序跑飞就是程序没按照你要求的顺序执行,指针指向了程序之外的地址,程序执行就不能控制了,嵌入式里面有种叫看门狗的电路专门解决这种问题。

  关于系统引导的问题以前看过一篇文章:计算机在启动的时候,首先由BIOS中的程序执行自检,自检通过后,就根据CMOS的配置找到第一个可启动磁盘的MBR中的Boot Loader程序(一般在启动盘的第一个物理扇区,占416字节),并把控制权交给Boot Loader,由Boot Loader进一步完成操作系统内核的加载。当Boot Loader找到内核之后,就把控制权交给操作系统内核,由内核继续完成系统的启动。(http://linux.chinaitlab.com/administer/726807.html

  现在系统的问题应该说是没有正常引导,原因是他修改了/boot/grub/grub.cfg文件,为什么修改了这个文件之后就没法启动了?带着这个问题,又一次通过启动盘打开了grub.cfg文件。然后开始分析。类似下面的文件(不是源文件,没记下来,下面这个是从网上搜的,比较像)

复制代码
menuentry 'Ubuntu, with Linux 2.6.32-21-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod ext2
    set root='(hd0,3)'
    search --no-floppy --fs-uuid --set 5cf7c0d3-8b4d-428f-a54a-ea43ce486654
    linux /boot/vmlinuz-2.6.32-21-generic root=UUID=5cf7c0d3-8b4d-428f-a54a-ea43ce486654 ro quiet splash
    initrd  /boot/initrd.img-2.6.32-21-generic
}
复制代码

  看到里面有“UUID”,瞬间眼前一亮,记得一前一个老师说过,UUID是一个分区的唯一标识符,grub.cfg文件中系统通过UUID来确定分区,如果文件中的UUID不是实际硬盘分区上的UUID,那么系统启动就不能正确找到相应的引导分区,系统当然没法启动了。果断打开/etc/fstab文件查看,果然不一样!!!看来问题就是出在这里了。由于系统的/个/boot都有UUID,我不知道该用哪一个,先事实/boot的,启动时候报错,说/boot已经挂载,然后再试试“/”的UUID,可以正常启动啦!欢呼~~但是启动到一半的时候,提示SELinux修复磁盘,大概修复了10分钟吧,然后就正常进入系统了!

  接下来就是教他们如何修改grub.cfg文件~

  已经差不多10点半了,宿舍11点关门~


博主ma6174对本博客文章(除转载的)享有版权,未经许可不得用于商业用途。转载请注明出处http://www.cnblogs.com/ma6174/

对文章有啥看法或建议,可以评论或发电子邮件到ma6174@163.com


本文转自ma6174博客园博客,原文链接:http://www.cnblogs.com/ma6174/archive/2013/03/25/2981200.html,如需转载请自行联系原作者

相关文章
|
9月前
|
Ubuntu 安全
Ubuntu 安全重启 / Ubuntu 系统死机解决方法
初装Ubuntu双系统时,经常会遇到各种各样的问题导致系统崩溃、卡死、黑屏等情况,新手或者小白可能直接选择长按电源键强制重启了
1797 0
|
安全 Ubuntu 关系型数据库
Ubuntu下MySQL无法启动和访问的问题解决与修复
Ubuntu下MySQL无法启动和访问的问题解决与修复
915 0
Ubuntu下MySQL无法启动和访问的问题解决与修复
Centos 内核更新后缺少initramfs 导致无法启动
Centos 内核更新后缺少initramfs 导致无法启动
|
安全 Ubuntu 关系型数据库
Ubuntu下MySQL无法启动和访问的问题解决与修复(一)
Ubuntu下MySQL无法启动和访问的问题解决与修复
473 0
Ubuntu下MySQL无法启动和访问的问题解决与修复(一)
|
安全 Ubuntu 关系型数据库
Ubuntu下MySQL无法启动和访问的问题解决与修复(二)
Ubuntu下MySQL无法启动和访问的问题解决与修复
200 1
Ubuntu下MySQL无法启动和访问的问题解决与修复(二)
CentOS 7 缺少os-release导致启动黑屏
CentOS 7 缺少os-release导致启动黑屏
|
存储 Linux 数据安全/隐私保护
CentOS 7进入紧急模式解决方法
CentOS 7进入紧急模式解决方法
1541 1
|
Ubuntu 数据安全/隐私保护 存储
|
Linux 数据处理