Ubuntu系统崩溃与修复

来源:互联网 发布:15单片机和51的区别 编辑:程序博客网 时间:2024/05/01 21:47

本文记录个人的一次修复Ubuntu系统崩溃的经历。

1. 系统崩溃前夕:
数月前,在用apt-get进行某些程序的安装时,由于系统默认的/etc/apt/sources.list使用ubuntu官方源进行软件应用的搜索与下载。但在国内访问该源时网速较慢,因此我改用了国内的网易163的源,此源的下载速度确实明显快很多。
但在某次用VMware新装Ubuntu14.04时,由于要使用samba服务,所以执行了如下命令:sudo apt-get install samba。安装成功后,未发现什么异常,但在虚拟机重启时,竟然系统崩溃!提示找不到启动程序/sbin/init。

2. 问题追踪:
幸亏是新装的系统,崩溃了也没有太大影响。但为了确认该问题,我再次安装了同样Ubuntu版本的虚拟机,并同样用163源进行samba安装。安装完成后查看/sbin/init文件,还真的没了!但如果用ubuntu官方源安装,则无问题。 网上搜索类似问题,无果。由于没有造成实际影响,当时也没有在该问题上过于纠结,不过内心对在Ubuntu上安装程序还是隐隐有所不安的。
前两天,需要在虚拟机Ubuntu系统安装Trac服务,再次因为默认的ubuntu官方源访问太慢,改用163源,竟然又出现了同样问题!但这次所用的虚拟机存有很多项目资料,因此必须尝试修复(当然,为了防止无法修复,我还是先对相关资料做了备份)。

3. 问题解决
此前已经知道了是缺少了/sbin/init文件,因此首先想的是在关闭虚拟机前从iso安装文件中copy一份init文件放到/sbin/下,随后怀着忐忑的心情进行了重启,结果是意料之中的失败。
由于系统已经无法启动,现在只能借助从CD/DVD启动进而尝试修复系统文件(具体如何设置CD/DVD启动,此处不作赘述,可自行搜索)。进入系统后,如果系统所在分区设备(通常为/dev/sda1)没有被挂载,则需要自行手动挂载,随后即可访问已被损坏的文件系统。进入其sbin/目录下,由于此前尝试加入init文件后仍然无法启动,这次要检查是否还缺少其他文件。经解压iso安装镜像下的filesystem.squashfs文件,可查看默认的/sbin/目录内容。对比后发现,除了init文件,还少了reboot、runlevel、telinit、shutdown等文件以及两个指向reboot的链接文件:halt和poweroff。对这些文件进行修复(从iso安装文件导入,可用tftp、wget等工具,注意文件属性与/sbin/目录下同类文件的属性保持相同)后,再次忐忑地重启(注意要将启动选项改回硬盘启动),这次启动成功了!Wonderful!

4. 总结
如此看来,还是要慎用163等非官方网站提供的源,尤其是在你“伤不起”的重要服务器上!出现以上问题尚可修复,万一折腾出个大毛病,可就歇菜了。如果一定要用,则可先在同样的系统中尝试安装一次,确保万无一失。
建议:最好是在用同一个iso镜像文件所安装的系统中进行验证,防止不同Ubuntu版本的差异造成某种假象。

如果有同仁知道真正导致上述问题的根源,请一定告知,感谢!

0 0