1 背景介绍
1 起因
我使用的Ubuntu16.04在安装的过程中/boot只分了200M空间,导致后续更新的过程中被新内核占满了空间,当时boot中所包含的内核有*linux-image-4.15.0-28-generic,linux-image-4.15.0-43-generic,linux-image-4.15.0-45-generic,linux-image-4.15.0-46-generic,linux-image-4.15.0-47-generic,linux-image-4.15.0-50-generic,linux-image-4.15.0-51-generic,linux-image-4.15.0-54-generic,*终端输入df
查询硬盘空间利用情况显示boot已用100%,而且系统一直提示boot空间已满。实在受不了系统的提示了,再加上后期安装package时提示boot空间已满,无法安装,于是上网搜索释放boot空间的方法。
2 释放boot空间
网上方法大都一致,首先在终端中输入uname -a
查看当前使用内核,我的显示为4.15.0-43,然后输入sudo dpkg --get-selections | grep linux-image
查看boot中所有的内核,我的查完显示为上述一堆内核。然后网上的教程就教你把非当前使用的所有内核使用sudo apt-get purge linux-image-X.XX.X-XX-generic
删除,然后再输入sudo update-grub
更新grub。我当时还有些犹豫,因为我的当前使用版本内核低于大部分boot中已有的内核,但考虑到要释放boot空间,安装急需的package,所以就把除4.15.0-43的内核全部删除了。删除完当时并没有出现什么问题,而且boot空间被释放了好多,心情一下子舒畅了。可是后来重启的时候,我的心情一下子跌到了谷底。开机界面一直黑屏,只有两行提示信息:
/dev/sda9:clean, 55902/1458176 files, 1276898/5827584 blocks
/dev/sda8:clean, 241703/2445984 files, 1649892/9764864 blocks
因为安装有重要软件,不能重装系统,只能在网上一步步寻找答案解决问题,最后花费了好几天时间才把问题解决。
2 解决问题的过程
2.1 显卡
首先上网搜删除内核后开机黑屏的问题,网上一堆解释,有的说是升级内核后显卡不兼容,启动的时候不要加载显卡,要修改开机启动时的grub选项,将ro改为rw,详情参见这篇文章 https://blog.csdn.net/gavinmiaoc/article/details/82968853 ,这种方法可能对一些人有用,但是对于我来说并不适用。也有人说要更新显卡驱动,给出了一堆代码更新显卡驱动,但是都是nVidia的显卡,我的是amd的显卡,对于我来说也不适用。
2.2 重装内核
尝试的第二种方法就是重新装回删除的内核。由于我删除的内核较多,全部装回来boot还是会满,所以我只尝试装了50,51,54这几个版本,具体方法入下:
-
使用ubuntu的U盘安装盘启动,并进入“Try ubuntu”模式
-
打开终端并输入
sudo parted -l
,从获得的信息中判断“/” 和“boot”所在的盘符,比如我的分别是/dev/sda9 和/dev/sda7。 -
输入
sudo mount /dev/sda9 /mnt
(这里的“9”是我“/”所在的盘符)和sudo mount --bind /dev /mnt/dev
将“/”挂载在/mnt 下,并挂载其/dev文件。 -
输入
sudo mount /dev/sda7 /mnt/boot
将“boot” (这里的“7”是我boot所在的盘符)挂载到/mnt/boot 下。 -
chroot到损坏的系统,挂载剩余的重要文件系统,并设置一些重要的环境变量。
sudo chroot /mnt mount -t proc none /proc mount -t sysfs none /sys mount -t devpts none /dev/pts export HOME=/root export LC_ALL=C
-
检查网络:输入
ping -c 5 www.google.com
应该到类似下面的一些反馈:
PING www.l.google.com (74.125.131.147) 56(84) bytes of data.
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=1 ttl=44 time=61.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=2 ttl=44 time=62.3 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=3 ttl=44 time=61.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=4 ttl=44 time=63.8 ms
64 bytes from vc-in-f147.1e100.net (74.125.131.147): icmp_req=5 ttl=44 time=66.6 ms
— www.l.google.com ping statistics —
5 packets transmitted, 5 received, 0% packet loss, time 4006ms
rtt min/avg/max/mdev = 61.367/63.212/66.608/1.897 ms
如果得到的是上述结果则跳到8,如果得到 ping: unknown host www.google.com 则执行 7 -
打开新的终端,输入
sudo cp /mnt/etc/hosts /mnt/etc/hosts.oldsudo cp /etc/hosts /mnt/etc/hostssudo cp /etc/resolv.conf /mnt/etc/resolv.confexit
再次输入
ping -c 5 www.google.com
检查能否联网 -
安装所需的内核
apt-get update
apt-get -y install linux-image-generic -
如果执行了7 则输入
cp /etc/hosts.old /etc/hosts
存储就版本的host, 如果没有执行7 则跳过此步执行10 -
解除挂载:
umount /proc || umount -lf /proc umount /sys /dev/pts exit sudo umount /mnt/dev /mnt
如果最后一步报错则先解除/mnt/boot 再解除/mnt
-
重启后拔掉u盘应该能开机了。
详情请参考这篇文章:https://askubuntu.com/questions/28099/how-to-restore-a-system-after-accidentally-removing-all-kernels/166010#166010
如果到这我的问题解决了的话就不会花费好几天的时间了,我发现我用这种方法装完内核后,内核是装在了u盘启动的boot中,没有装到我原来系统的boot中。于是我直接把原来boot中的所有文件全部删除,然后把u盘boot中的所有文件拷贝到了我的boot中。重启之后只有桌面背景,什么都不能动,然后我又进行了下一步尝试
2.3 安装桌面环境
我搜了很多资料,确定是没有图形界面的原因,所以要重新安装桌面环境。ubuntu有很多桌面环境,在这里我只尝试了以下几种。
2.3.1 安装unity
开机黑屏的情况下按Ctrl+Alt+F1或者F2,F3,F4,F5,F6到tty的文本编辑界面,输入用户名和密码登录后输入以下代码:
sudo apt-get update
sudo apt-get install ubuntu-desktop --reinstall
sudo apt-get install unity
如果在执行的过程中报错,说存在依赖问题,则先安装aptitude: sudo apt-get install aptitude
然后执行sudo aptitude install unity
,系统会在安装软件的过程中自动解决依赖的问题。
重启后不可以的话在登录tty后输入sudo apt-get install compizconfig-settings-manager
安装compizconfig-settings-manager,然后再输入DISPLAY=:0 ccsm
启动compizconfig-settings-manager,按Ctrl+Alt+F7回到图形界面,在compizconfig-settings-manager中的desktop栏中选择“Ubuntu unity Plugin”,重启后问题就修复了。详情参看 https://blog.csdn.net/lb838315586/article/details/82821842
1. 如果桌面异常卡顿且cpu占用率很高,则在开机的过程中的grub界面选择“Advanced options for Ubuntu”,然后选择低版本内核启动。这是内核兼容问题导致的桌面卡顿问题。详情参看 http://www.mintos.org/hardware/kernel-stuck.html
2. 如果正常显示菜单栏和任务栏,但屏幕是黑的,则在终端输入 gsettings set org.gnome.settings-daemon.plugins.background active true
详情参看 https://ubuntuqa.com/article/1156.html
3. 如果鼠标右键不能使用,则安装gnome-tweak-tool工具 sudo apt install gnome-tweak-tool
,然后在终端输入gnome-tweak-tool
,将“Icons on Desktop”打开。详情参看 https://blog.csdn.net/weixin_38103350/article/details/75931010
2.3.2 安装gnome桌面
安装gnome桌面较为简单,只需要输入sudo apt-get install gnome
,但在弹出的界面中尽量选择lightdm而不选择gdm3。
如果要卸载gnome则输入
$sudo apt-get remove gnome-shell
$sudo apt-get remove gnome
$sudo apt-get autoremove
$sudo apt-get purge gnome$sudo apt-get autoclean
$sudo apt-get clean
详情参看 https://blog.csdn.net/mjl960108/article/details/51965434
2.3.3 安装xubuntu
在尝试的过程中无意安装了xubuntu sudo apt-get install xubunu
,但是当时并不知道怎么调用xubuntu界面。后来发现,安装完xubuntu后按Ctrl+Alt+F1或者F2,F3,F4,F5,F6到tty的文本编辑界面,输入用户名和密码登录,再输入startx
就可以直接打开xubuntu界面,这样就没有必要安装untiy和gnome了,但是每次重启都要经历打开tty和输入startx的过程,比较麻烦。
3 总结
我也是个Ubuntu新手,需要用到特定的软件才开始接触Ubuntu,有很多方面认识还是不到位,只是在学习的过程中把自己的一些理解记录下来,如果有大佬能帮忙指明上述内容中一些不当的地方,将不胜感激。其实我现在还有些地方想不通,删除完内核后不用再修复内核,而是直接重装桌面环境是否同样能解决问题。还有就是越来越想不明白删除内核后为什么开不了机。希望大佬们不吝赐教!