开发者社区> 吞吞吐吐的> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

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,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
boost在redhat安装及静态调用
boost资源下载:https://www.boost.org/,本文使用的boost是1_41版本,linux为redhat6.
1765 0
[Redis]Redis指南一 安装与启动
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/SunnyYoona/article/details/72828391 在安装...
1228 0
RedHat(CentOS 5)下安装FileZilla Client注意事项
RedHat(CentOS)安装FileZilla Client失败
4970 0
RedHat 6 桌面安装
一、配置yum库 Virtualbox下的虚拟光驱位于/dev/sr0,所以,向vmware加载RHEL6.5的镜像后,就可以配置yum库了 1.
1467 0
一步一步教你使用AgileEAS.NET基础类库进行应用开发-系列目录
基实这个系统是我AgileEAS.NET平台应用开发教程-案例计划的详细分解,原来想着按前面文章的思路应用写,但是发布之前的想法有点乱,我就把他分解成两个系列,使用step-by-step的方式来降解,或许这样可以会更好一些。
751 0
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载