乐趣区

关于ubuntu:抢先体验-Ubuntu-2204-Jammy-Jellyfish

间隔 4 月 21 日 Ubuntu 22.04 正式公布越来越近,为了家里的各种 Ubuntu 设施可能安心降级,我决定提前体验靠近实现的测试版。

本文提到的降级形式实用于 Desktop 桌面版和 Server 版。

降级前的筹备

不论是 Desktop 桌面版,还是 Server 服务器版本的 Ubuntu,在降级前,咱们都须要做几件事:

  1. 零碎中的用户数据备份。
  2. 将零碎中的软件包降级到最新,并依据理论需要状况,重启零碎,让降级后的软件包失效。
  3. 解锁被 apt-mark 锁定的软件,容许软件在零碎发行版降级的过程中降级为和新零碎兼容的版本。
  4. 清理零碎内核,留出足够多的空间,装置新的内核。
  5. 当然,因为当初新版零碎还未正式公布,所以咱们还须要解锁系统升级限度。

接下来,咱们就来聊聊如何实现这些前置筹备。

数据备份:打包和疾速复制

数据备份的形式有很多种,不思考商业软件、装置非零碎自带软件的前提下,我举荐你应用 rsync 以及 tar 来实现疾速的备份。

相比拟应用各种压缩参数,间接应用 tar cf 能够将目录构造放弃,并转化为一个繁多文件,不便咱们进行后续的文件备份和转移,而不用纠结指标分区的文件格式、权限归属等问题。而且,当咱们的目录中有比拟多的小文件的时候,这样做,能够极大晋升备份数据的速度。

比方上面的命令,咱们就会把目录中的文件打包为一个后缀为 tar 的文件,通常咱们会叫这个过程为“打个 tar 包(tarball)”。

tar cf demo.soulteary.com.tar demo.soulteary.com

理论生产过程中,咱们会有十分多相似上面的构造的目录。

board.black.com
board.data.black.com
cache.black.com
carbon.black.com
certs.black.com

如果咱们心愿将下面的目录别离打包为 tarball,一条一条命令执行显然比拟麻烦,有没有偷懒的形式呢?显然是有的。

find . -maxdepth 1 -type d -name '*.*' | xargs -I {} tar cf {}.tar {}

相比拟应用 ls,咱们可能误打包一些内容,间接应用 find 能够限度咱们要打包内容的类型为目录,指标名称的命名形式要满足 *.*

如果你的数据量非常少,当然也能够思考放弃打包,间接进行数据拷贝操作。

相比拟间接应用 scp 等命令,我更举荐应用 rsync,将咱们的文件残缺的从“出发地”快递到“目的地”,rsync 除了反对不同分区目录之间的数据备份外,也反对跨设施的残缺内容复制:

# 本地跨分区 / 目录进行备份
rsync -rv --copy-links /data-need-backup /disk2/data-backup
# 将本地数据备份至其余设施
rsync -rv --copy-links /data-need-backup soulteary@10.11.12.13:/data-backup

如果你应用 Docker,你能够抉择参考《晋升 Docker Desktop For macOS 磁盘使用率》一文中提到的零碎中的 Docker 镜像批量保留计划:

docker images | sed '1d' | grep -v '<none>' | awk '{print"docker save "$1":"$2" -o "$3".tar"}' | bash

或者,你心愿保留的 Docker 镜像文件名可读性更高一些,能够抉择应用上面的脚本:

#!/bin/bash
IMAGES_LIST=($(docker  images   | sed  '1d' | awk  '{print $1}'))
IMAGES_NM_LIST=($(docker  images   | sed  '1d' | awk  '{print $1"-"$2}'| awk -F/ '{print $NF}'))
IMAGES_NUM=${#IMAGES_LIST[*]}

for((i=0;i<$IMAGES_NUM;i++))
do
  docker save "${IMAGES_LIST[$i]}"  -o "${IMAGES_NM_LIST[$i]}".tar.gz 
done

好啦,数据备份就聊到这里。

降级零碎中的软件

为了降级到更新的零碎版本,咱们须要应用上面的命令,将零碎中的软件包降级到以后零碎最新的版本:

apt update && apt upgrade -y

如果咱们曾经将软件降级到新版,将会看到相似上面的日志:

Hit:1 http://cache.black.com/cn.archive.ubuntu.com/ubuntu focal InRelease
Hit:2 http://cache.black.com/cn.archive.ubuntu.com/ubuntu focal-updates InRelease
Hit:3 http://cache.black.com/cn.archive.ubuntu.com/ubuntu focal-backports InRelease
Hit:4 http://cache.black.com/cn.archive.ubuntu.com/ubuntu focal-security InRelease
Hit:5 http://cache.black.com/mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu focal InRelease
Reading package lists... Done
Building dependency tree       
Reading state information... Done
All packages are up to date.
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Calculating upgrade... Done
The following packages were automatically installed and are no longer required:
  eatmydata libeatmydata1 libfwupdplugin1 python3-importlib-metadata python3-jinja2
  python3-json-pointer python3-jsonpatch python3-jsonschema python3-markupsafe
  python3-more-itertools python3-pyrsistent python3-zipp
Use 'apt autoremove' to remove them.

0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

如果你违心的话,你能够应用 apt autoremove 来卸载零碎中不再应用的软件。如果你当初懒得操作的话,问题也不大,因为在零碎实现降级后,咱们还须要清理一遍,所以能够稍后再做解决。

(系统升级过程中,也会询问咱们是否要清理,所以大可不必进行额定操作。)

解锁被锁定的软件

有的时候,为了软件长时间运行稳固,咱们不得已会锁定一些软件包,比方 docker 等。然而在系统升级的过程中,个别倡议将这些软件包都“解锁”,防止降级到新零碎之后,产生不兼容的问题。

apt-mark showhold

批量解锁咱们锁定的软件很简略,只须要一条命令:

apt-mark showhold | xargs -I {} apt-mark unhold {}

命令执行结束,你将可能看到相似上面的日志:

Canceled hold on docker-ce.
Canceled hold on software-name.
Canceled hold on software-name-2.
...

清理不再须要的内核

如果你有独自划分 /boot 分区的话,这里举荐你在降级之前针对启动分区进行清理,开释一些空间,让新内核可能顺利的进行装置。上面的内容在《AMD 4750u 及 5800u 笔记本装置 Ubuntu 20.04》一文中曾提到过。

想要清理内核,咱们首先要晓得咱们装置过哪些内核:

dpkg --get-selections | grep linux-image

在命令执行结束后,咱们将可能看到相似上面的后果:

linux-image-5.13.0-37-generic            install
linux-image-5.13.0-39-generic            install
linux-image-5.15.0-25-generic            install
linux-image-generic                install
linux-image-generic-hwe-22.04            install
linux-image-unsigned-5.11.10-051110-generic    install
linux-image-5.13.0-35-generic            deinstall

这里咱们能够将零碎标记为 deinstall 和咱们不再须要的老版本的内核一律删除,只保留两到三个咱们认为会应用到内核即可。

apt-get purge linux-image-5.13.0-37 linux-image-5.13.0-35

当实现内核清理之后,记得应用 update-grub 从新生成 Grub 系统启动内核列表:

update-grub
Sourcing file `/etc/default/grub'Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-xxx-generic
Found initrd image: /boot/initrd.img-xxx-generic
...
done

解锁系统升级限度

因为目前正式版的 Ubuntu 22.04 还未 Release,所以咱们只能通过变更 /etc/update-manager/release-upgrades 降级版本锁定,装置还处于开发通道的 Ubuntu 22.04。

你能够应用上面的命令,一键实现 LTS 零碎的“降级解锁”。

sed -i -e "s/Prompt=lts/Prompt=normal/" /etc/update-manager/release-upgrades

当以上操作都实现之后,咱们开始进行系统升级。

降级 Ubuntu 20.04

我这里应用的是分步降级,先将系统升级到靠近 Ubuntu 22.04 的 Ubuntu 21.10,再进行 Ubuntu 22.04 版本的降级。

将 Ubuntu 20.04 系统升级到 Ubuntu 21.10

相比拟下面的一系列,看起来比拟繁琐的操作,降级零碎的操作其实非常简略。只须要执行 do-release-upgrade,就能够开启通往新版本的降级之路啦。

过程中,如果呈现提醒,能够一律应用上面的形式来解决:

  • 在命令行中输出 yyes 或者敲击回车确认
  • 在弹出的命令行 GUI 对话框中间接敲击回车,放弃默认选项

当所有就绪之后,命令行中会提醒咱们降级结束,要不要重启:

System upgrade is complete.

Restart required 

To finish the upgrade, a restart is required. 
If you select 'y' the system will be restarted. 

Continue [yN] y

这个时候,持续输出 y,让零碎进行重启,第一阶段的系统升级就结束啦。

将 Ubuntu 21.10 降级为 Ubuntu 22.04

再次登陆零碎后,会看到零碎提醒曾经从 Ubuntu 20.04 变成了 Ubuntu 21.10:

Welcome to Ubuntu 21.10 (GNU/Linux 5.13.0-39-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

接下来咱们来持续聊聊,如何降级 Ubuntu 22.04。

这里有一个小技巧,对于未齐全开明 IPv6 的网络,强烈建议在降级之前,先禁用内核的 IPv6 性能,以防在降级过程中无奈获取 Ubuntu 22.04 版本的软件包,导致降级过程死循环:

Failed to fetch 
http://cn.archive.ubuntu.com/ubuntu/pool/universe/f/fuse/libfuse2_2.9.9-5ubuntu3_amd64.deb 
Connection failed [IP: 91.189.91.38 80] 

Restoring original system state

Aborting
Reading package lists... Done    
Building dependency tree... Done 
Reading state information... Done
=== Command detached from window (Sun Apr 10 05:41:24 2022) ===
=== Command terminated with exit status 1 (Sun Apr 10 05:41:34 2022) ===

如果你的网络不反对 IPv6,而你恰好进入了系统升级过程,也不用胆怯,在降级没有开始之前按下 x,退出降级即可。

禁用 IPv6 性能,其实非常简略,只须要批改 /etc/default/grub 文件,在 GRUB_CMDLINE_LINUX_DEFAULT 中增加 ipv6.disable=1 即可。

举个例子,零碎中原始的文件内容相似上面:

GRUB_DEFAULT=0
GRUB_TIMEOUT_STYLE=hidden
GRUB_TIMEOUT=0
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity"
GRUB_CMDLINE_LINUX=""

咱们只须要在原始配置中退出 ipv6.disable=1 即可:

GRUB_CMDLINE_LINUX_DEFAULT="maybe-ubiquity ipv6.disable=1"

在实现文件内容批改之后,执行 update-grub && reboot 从新生成配置,并重启零碎让配置失效。另外,因为海内服务器不是特地稳固,如果不是在云服务器执行降级,能够思考应用清华源替换默认的 cn.archive.ubuntu.com 等软件源。

因为以后工夫点 Ubuntu 22.04 还未正式公布,所以咱们须要在降级命令后增加 -d 来装置还处于开发通道的零碎。

do-release-upgrade -d

和下面降级零碎一样,一路抉择 yok,不一会系统升级就实现啦,再次登录零碎,能够看到咱们曾经处于 Ubuntu 22.04 环境下了:

Welcome to Ubuntu Jammy Jellyfish (development branch) (GNU/Linux 5.15.0-25-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

最初

在 Ubuntu 22.04 中,因为内核被默认降级到了 5.15,针对 AMD 处理器(包含 amdgpu)的反对好了不少,举荐应用 AMD Ryzen R5/R7 的小伙伴进行降级体验。

前一阵比较忙,2 月份开始到当初又沉积了不少文章和草稿,心愿在这个月,可能把沉积的内容挨着公布进去吧。

–EOF


本文应用「署名 4.0 国内 (CC BY 4.0)」许可协定,欢送转载、或从新批改应用,但须要注明起源。署名 4.0 国内 (CC BY 4.0)

本文作者: 苏洋

创立工夫: 2022 年 04 月 10 日
统计字数: 2587 字
浏览工夫: 6 分钟浏览
本文链接: https://soulteary.com/2022/04…

退出移动版