Ubuntu 18.04到20.04系统升级

Published: by

预备工作

升级中断报错

在执行升级指令sudo do-release-upgrade -d时出现中断

unofficial software packages not provided by ubuntu

unofficial software packages not provided by ubuntu

方案一:换升级源,中止PPA源

网上的一种建议是选官方源升级,并且停止所有PPA源

我这样设置之后并没有解决问题,不过我还是把换源的方法留在这里

命令行操作着实繁琐,所以我选择图形界面……

打开“软件与更新”(Software&Updates)

在ubuntu software里面选择源,我选的是阿里云的源,官方源我也试过但是失败,所以就默认用阿里云了

把Other software里勾选的源都取消掉了

命令行操作也可参考

方案二:查报错log

实际上第二种方案算是碰运气碰对了,网上说的方法就是照着官方提示的信息,先查log,然后删掉坏了的软件重装

查log代码

grep Broken /var/log/dist-upgrade/apt.log

得到了二百多行报错代码,各种奇怪的依赖损坏之类的……

我想着总不能挨行删吧,继续查大家都在哪儿出问题,然后看到有个人也是同样的报错,见An unresolvable problem occurred while calculating the upgrade

评论区删了几个包,我正好看到我的报错日志里面也有mutter

mutter跟ubuntu18新加的GNOME有关,我想到我的GNOME桌面不能用的问题都没解决,可能是跟这个包有关就尝试了

sudo apt remove mutter

sudo apt install mutter

其实gsettings-desktop-schemas好像也有报错但是我没管,就打算再试试升级

重装之后,这个升级中断的报错得到解决

解决根目录容量不足的问题

结果升级之中上面的报错没有了,又跟我说根目录剩余空间不足

df -h查看根目录,根目录所在位置确实剩余不多

多余软件包清理

有一些常规清理指令

sudo apt-get clean

sudo apt-get autoclean

sudo apt-get autoremove

还有日志目录,多余内核等等

参考7 Simple Ways to Free Up Space on Ubuntu

How do I free up disk space?

Ubuntu清理硬盘空间的8个技巧

扩容

因为安装20.04的官方就建议硬盘至少有25G空间,我想了想干脆还是别删了,扩容才是大势所趋,于是就去查找了根目录扩容的方法

参考教程一个是16.04扩容,一个是18.04扩容

注意 1GB=1024MB

扩容主要用到两个东西,一个是gparted软件,一个是18.04的启动盘

1.安装gparted

sudo apt-get install gparted

注意,解决gparted不启动的问题参考

GParted - Cannot open display

据说该问题跟wayland有关,总之

xhost +local:

gparted-pkexec

2.制作18.04启动盘

从官网下载iso文件,用Universal-USB-Installer制作一个启动盘,注意格式为FAT32

本次使用的是Universal-USB-Installer-1.9.9.5

3.重启机器,从启动盘启动,选择试用ubuntu

4.进系统之后sudo gparted,就可以开始分区了

首先右上角选择硬盘位置

本机的情况是,/dev/sda是个固态硬盘,用来安装windows7的C盘,/dev/sdb是个机械硬盘,前面分区了100G是win7的D盘/dev/sdb1,用来装软件,然后700多G另分一个盘/dev/sdb2放各种资源,最后100G/dev/sdb3用来装的ubuntu。

选了/dev/sdb后看到详细分布,现在/dev/sdb3下有个linux-swap分区还有小钥匙标志,所以先右键这个分区选择swapoff停止它,这样就可以开始扩容了。

右键分区/dev/sdb2,选Resize/Move

因为需要扩容的部分在该分区下面,所以在Free space following这里填压缩出来的大小,我扩30G于是填写30720MB,点一下剩下的容量(New size部分)就会自动算出,然后点Resize按钮。此时分区/dev/sdb2下面就出现了一个unallocated部分。

同样操作/dev/sdb3,把未分区的全部容纳进去。这时未分区的部分就跑到了/dev/sdb5上端。如下图

ubuntu整体分区扩容

因为未分区部分职能按顺序挨个分区移动,所以所经过的分区修改的时候New size部分大小不变,而只是考虑修改Free space precedingFree space following即可。例如下面这个图,是把未分区部分从linux-swap分区上面挪到下面。

ubuntu未分区部分移动

我的根目录挂接在/dev/sdb7,所以最后只要把/dev/sdb7扩容即可。

然后可以重新启用linux-swap部分。(我不确定这步骤是否有必要,反正我操作了)

然而这些操作其实是预设,真正的应用需要在上面菜单里面选择Edit » Apply all Operations » Apply

应用之后才真的进行操作,如下图

ubuntu扩容应用

未解决

解决前述问题的时候查到一个软件叫synaptic用来可视化管理文件,不过因为无法使用管理员身份运行这个软件而作罢

可参考问题Launcher starts synaptic without administrative privileg

升级之后

新的循环登录问题

在显卡驱动完全没问题的情况下,升级到20.04的系统依旧出现了登录循环问题,在登录界面依旧是输入密码,屏幕一闪,再次要求输入密码

怎么跟18.04一样!!!

一开始试图用之前写的那篇博客的方法解决,但是发现显卡驱动好着呢!

哦,有一点不太一样,上一篇博客进入文字终端的方法失效了,直接在那个进不去的图形登录界面按Ctrl+Alt+F1就能进入tty1。

于是开始查找新的解决方法。

于是我快被reddit上面的讨论笑死了

Well, they made an improvement: an old solution does not work anymore.

(艹皿艹 )

网上的常规解决方法(对本机无效)

这个问题,网上针对20.04的解决方法大同小异,修显卡,查看/tmp文件夹权限啊,查看.Xauthority权限啊,重装lightdm或者gdm3,重装桌面系统,注释显示管理器自动登录啊等等

有篇文章总结很好,请戳Ubuntu 20.04 Login loop fix

但是恭喜我!以上方法均无效……

修复Ubuntu 20.04登录循环问题

说是修复,其实还是用了迂回的方式,即放弃优雅的gdm3和lightdm,另谋其他生路。

反正这个登录循环无非是因为显示管理器,X窗口,GNOME一类的玩意儿跟显卡不对付。但是startx能进去感觉也不算GNOME类桌面系统的问题,于是怎么分析都觉得是该死的显示管理器的问题。

我是先将lightdm卸了装

sudo apt-get purge lightdm

sudo apt-get install lightdm

sudo dpkg-reconfigure lightdm

reboot

没用!!!当然对gdm3也没用。

于是我想起来刚升级18.04后去查显示管理器的时候看到的一篇博客

Ubuntu 20.04中的切换显示管理器

决定尝试sddm

sudo apt-get install sddm

sudo dpkg-reconfigure sddm

reboot

重启系统后……虽然登录界面难看了很多

但是,能正常登录了!!!

另外,查看当前显示管理器的指令为

cat /etc/X11/default-display-manager

补充

另外有篇升级博客挺好的写给工程师的 Ubuntu 20.04 最佳配置指南

我就是参考这篇博客才确定问题是显示管理器的

博客提交

题外话,上一篇博客git push遇到了问题,可能是因为多传了几张照片。

git-bash报错

error: RPC failed; curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054

网上提供的两种解决方式,参考

一种是忽略SSL证书

git config  --globle   http.sslVerify "false"

另一种是加缓冲区

git config http.postBuffer 524288000

还有就是升级一下git,当时因为家里网不好,命令行没反应,windows系统就直接去官网下载重装

总之报错就解决了orz

另有一说是网不好的原因。总之就别在大晚上网络堵塞的时候搞……