修复ubuntu系统崩溃——硬盘空间剩余0字节和误删除当前(所有)内核
现象及背景
提示硬盘空间剩余0字节,没有当回事选择忽略,并希望通过重启解决“故障”。然而,“重启”却没能启动成功。有个背景是提示系统更新的时候,我选择全部更新,也就是将内核升级到3.19*61,原来是3.19*25;还有就是破解sony的双目摄像机ps4eye的驱动,可能与“bug”(剩余0字节)有关。
修复中产生新问题——删除当前内核
由于提示硬盘空间剩余0字节,同时注意到升级了内存导致此次故障,首先想到了删除多余的内核,“系统不允许删除当前内核”其实只是会提醒,因为获取了权限,所以很奇葩的我把所有的内核都删除了。此时,最好是不重启立马重新装内核,然而,我重启以为能恢复,结果自然悲剧。
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)的文件,但是还是报警剩余空间为零。
解决1:
查找占满整个硬盘空间的罪魁祸首:
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左右的空间,重装内核。
解决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解决。
解决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 用来强制拷贝不提示确认
后记
写的比较啰嗦,主要是因为新手一个,找了很多方法,可能都对最后问题的解决有影响,就都写出来参考吧。