修复ubuntu系统崩溃——硬盘空间剩余0字节和误删除当前(所有)内核

1  现象及背景

提示硬盘空间剩余0字节,没有当回事选择忽略,并希望通过重启解决“故障”。然而,“重启”却没能启动成功。有个背景是提示系统更新的时候,我选择全部更新,也就是将内核升级到3.19*61,原来是3.19*25;还有就是破解sony的双目摄像机ps4eye的驱动,可能与“bug”(剩余0字节)有关。


2  修复中产生新问题——删除当前内核

由于提示硬盘空间剩余0字节,同时注意到升级了内存导致此次故障,首先想到了删除多余的内核,“系统不允许删除当前内核”其实只是会提醒,因为获取了权限,所以很奇葩的我把所有的内核都删除了。此时,最好是不重启立马重新装内核,然而,我重启以为能恢复,结果自然悲剧。


3  boot-repair 修复启动项

在系统无法启动的情况下,首先想到的是修复启动项,其实犯了个错误,因为,此时启动项没问题,只是由于硬盘没有空间无法进入系统。但boot-repair这个工具还是很有用的,也让我更清楚的掌握出现的问题。

参考:http://jingyan.baidu.com/article/5553fa82cd48a765a23934ae.html

具体:

U盘启动盘打开电脑:

sudo -i

add-apt-repository ppa:yannubuntu/boot-repair && apt-get update

apt-get install -y boot-repair && boot-repair

点击第一个选项Recommended repair,剩下的软件会自己操作,不需要人为干预 视电脑配置,花费的时间不等。

对我而言,boot-repair成功修复了启动项,但是系统还是无法启动,因为可用空间还是为零,其实这也导致了卸载内核时空间不足无法展开的问题。修复成功后提示我空间不足,让删除一些文件,我获取权限删除了*.log(大于160G)的文件,但是还是报警剩余空间为零。


4  解决1——定位bug文件

查找占满整个硬盘空间的罪魁祸首:

linux下查找大文件的方法(http://www.2cto.com/os/201412/358960.html)

1.找磁盘使用率较高的目录,du命令

du -sh /*

列出根目录下,所有目录的大小

然后在去目录下,慢慢分析吧

2.找文件大小,find命令

例如:

查找磁盘上大于20MB的文件

find / -size +20000k -exec ls -lh {} ;

查找磁盘上大于400MB的文件,直接删除,一般都是日志文件

find / -size +400000k -exec rm -rf {} ;

其它有用的命令还有:

df -h

(发现了var/log下有个uv*.log(可能是sony camera ps4eye破解导致)160G以上,在U盘启动盘下,删除之,但还是报警硬盘空间不足。

解决思路:备份下载的数据集,删除后空出30G左右的空间,重装内核。


5  解决2——重装内核(误删除当前内核)

参考链接:

http://blog.sina.com.cn/s/blog_77bd35590102we6b.html

http://www.laifuying.com/archives/521

http://www.blogjava.net/stone2083/archive/2011/06/18/352551.html

http://blog.csdn.net/ad4546/article/details/7292554

http://www.cnblogs.com/xiangzi888/p/3675725.html

(1)将U盘中的文件 /media/cdrom/casper/vmlinuz.efi 和   /media/cdrom/casper/initrd.lz 文件复制到 /media/xxx/boot/ 目录(原系统的boot下)

(2)

sudo mount /dev/sda7 /mnt
chroot /mnt
dpkg --get-selections | grep linux

发现确实是删除了内核,只好重装linux kernel 了。

挂载必要的东东(root 分区上面已经挂载到/mnt):
exit #退出chroot
sudo mount --bind /proc /mnt/proc #绑定当前进程到/mnt下的proc
sudo mount --bind /dev /mnt/dev #绑定设备文件到/mnt下的dev
sudo chroot /mnt

安装 linux kernel

apt-get install linux-image-3.***-generic
这里,我查看了U盘启动盘里boot里的东西,挨个在原系统(chroot)boot下安装了一边,重启之后成功了。

重启系统,恢复正常。

安装完内核如果有问题,还可以使用root-repair解决。


6  解决3——真正删除占满硬盘的文件

定位大文件:sudo find / -size +20000k -exec ls -lh {} ;

cd 到相应的目录(/.Trash)
rm 对应的文件
则真正的删除了bug文件。



其它参考:
1,将文件从/etc/aaa.gz拷贝到/tmp/目录下:
cp /etc/aaa.gz /tmp/
将文件从/etc/aaa.gz拷贝到/tmp/目录下,并给它命名为bbb.gz
cp /etc/aaa.gz /tmp/bbb.gz
将目录/etc/fold/拷贝到/tmp/目录下
cp -rf /etc/fold /tmp/
注:-r 用来拷贝文件夹,-f 用来强制拷贝不提示确认

 

7  后记

写的比较啰嗦,主要是因为新手一个,找了很多方法,可能都对最后问题的解决有影响,就都写出来参考吧。

又出现新情况:

3个参考链接:

https://askubuntu.com/questions/94542/how-can-i-repair-my-installation

https://help.ubuntu.com/community/LiveCdRecovery

https://askubuntu.com/questions/595485/ubuntu-14-04-how-can-i-reinstall-ubuntu-desktop-with-a-live-cd

原文地址:https://www.cnblogs.com/huicanlin/p/5596716.html