写点什么

Linux 发行版切换技术全解析

作者:qife122
  • 2025-10-06
    福建
  • 本文字数:2057 字

    阅读完需:约 7 分钟

Ask Hackaday: How Do You Distro Hop?

如果你在 Hackaday 上阅读过"Jenny's Daily Drivers"或"Linux Fu",就知道我们喜欢 Linux。特别是 Jenny 的系列文章,总是会指出我想在不同发行版上尝试的东西。然而,我有个真实的倾向是不改变我的发行版,尤其是在我的主计算机上。但我知道人们经常"发行版切换"。我的问题是:你是怎么做的?

简单但往往错误的答案

当然,有个简单的答案。将你的/home 目录保存在单独的磁盘上,然后只需使用新的启动镜像。听起来很简单。但事实是,这并不那么容易。我想如果你不怎么使用系统,那可能有效。但即使你没有在根级别自定义东西,如果你更改桌面环境甚至桌面环境的版本,仍然会遇到问题。配置文件会随时间变化。如果你想在哲学上不同的发行版之间切换,比如 systemd vs 老式 init;apparmor vs SELinux,那就祝你好运了。所以这并不总是像只是将新发行版指向你的 home 目录那么简单。


我尝试新事物的一种方法是使用虚拟机。这在现在很容易。但如果你的目标是真正切换到新发行版作为日常使用,这并不令人满意。

原因

这不是一个可爱的标志,但仍然是一个好的发行版。


出现这个问题的原因是我通常喜欢 KDE,并且使用 Kubuntu 很多年。它们在 KDE 桌面上往往有点滞后,所以当 KDE 推出 Neon 时,我被吸引了。然而,由于它们都基于 Ubuntu/Debian,有一个基本可用的升级路径可以将 Kubuntu 安装转换为 Neon。


快进到今天。Neon 最近一直不太好。我听说有一个志愿者在维持它运行。KDE 决定将重点转向一个新发行版,这个发行版做的一些事情我不太喜欢(不可变系统;Wayland)。所以是时候再次切换了。


我听说 OpenSUSE 在保持 KDE 更新方面很好,而且 Tumbleweed 的滚动发布吸引了我。所以我做了切换。

困难的方式

我绝不建议你这样做。这是个坏主意,虽然它成功了,但付出了很多努力。即便如此,它之所以成功只是因为我拥有的磁盘存储远远超过我的需求:我的根文件系统远低于 3 TB,而我大约有 9 TB 的 RAID 作为主硬盘。当然,你应该有备份。但如果你曾经不得不从备份恢复,你知道那并不有趣。最好有备份而不需要它,而不是需要时没有。


那么我做了什么?我使用 kvm 建立了一个虚拟机,然后在上面安装了 Tumbleweed。我关闭了 btrfs 功能,因为我不打算使用它们。然后我开始匹配我的 Neon 桌面。所有 KDE 设置。所有我设置的特殊 systemd 服务和计时器。我用来运行自己的动态 DNS 的系统。我能想到的所有东西。


我达到了在虚拟机中工作舒适的程度。我的浏览器和所有其他工具都已准备就绪并配置好了。


你知道我忘记了一些东西。我也知道,所以我想保存东西以供参考。首先,我从实时镜像启动,并在/NEON 下制作了整个根文件系统的副本。然后我重新启动,创建了一个新的虚拟机,并在上面启动了一个"实时"ISO 文件。

艰难的一夜

下一步是将/NEON 目录的快照复制到虚拟机中。当然,我本可以使用 LVM 快照,或者如果我还在使用 btrfs,可以使用它的快照。但我有足够的磁盘空间,特别是在从副本中修剪掉一些非常大的目录之后。


顺便说一下,关键是使用 nbd 程序挂载虚拟机的磁盘镜像。你确实需要加载 nbd 模块,如果你有它作为模块,然后使用 nbd 导出它。从那里,你得到一个可以像任何其他设备一样挂载的设备。我会解释它,但你真的不应该把这当作指导。不过,如果你需要这样做,[shamil]有一个很好、简洁的解释。


当然,新的虚拟机不会启动。你必须绑定挂载所有运行目录(如/run 和/proc)到正确的挂载点,然后 chroot 到挂载的文件系统中。一旦在那里,你可以重新构建你的 init 镜像并运行 grub。之后,你应该能够在新的虚拟机中启动到旧的 Neon 系统。

美妙之处...

我有一段时间没有从 CD 安装 Linux 了,但你仍然有一个 ISO 文件。


所以在这一点上,我没有对我的主操作系统做任何更改。我有一个副本用于备份目的,并且我能够使用虚拟机启动它的克隆。我也可以使用不同的虚拟机启动到目标系统。


下一步是再次启动到实时镜像,并清除根文件系统上的几乎所有内容,除了/NEON,当然还有在单独驱动器上的虚拟机。


我考虑过运行 Tumbleweed 安装程序,然后从虚拟机复制文件,但我决定手动完成。我再次使用 nbd 将文件从新虚拟机复制到真实的根驱动器。然后我不得不再次完成绑定/挂载/chroot/重新安装的步骤。

它启动了吗?

它确实启动了。有一些小问题,主要是由于自我造成的问题。当我恢复一些大目录和一些基于 SSD 的临时目录时,我创建了一些 SELinux 问题,追踪这些问题很有趣。当然,我也忘记了一些深度安装的东西。但那不是问题。我仍然可以从/NEON 获取东西,甚至可以在虚拟机中启动 Neon 安装来比较东西。


我即将删除东西的额外副本。我已经释放了 Tumbleweed 虚拟机。但我想到了:我不会再这样做了。这引出了我的问题给你。如果你发行版切换,你是怎么做的?在评论中告诉我们。再说一次,当前的想法是拥有一个最小系统,然后将所有东西放在自己的容器中。


再次,我恳求你,不要效仿我的例子。这太费功夫和风险了。但我也疯狂到重新定位/usr。更多精彩内容 请关注我的个人公众号 公众号(办公 AI 智能小助手)对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)


公众号二维码


办公AI智能小助手


公众号二维码


网络安全技术点滴分享


用户头像

qife122

关注

还未添加个人签名 2021-05-19 加入

还未添加个人简介

评论

发布
暂无评论
Linux发行版切换技术全解析_Linux_qife122_InfoQ写作社区