不重装系统,直接从 Manjaro 切换到 Arch Linux
直接切换存在一定的“滚挂”风险,操作前建议做好重装系统的准备。
虽然本教程的方法也可以直接从 Arch Linux 切换到 Manjaro,但我建议不要这样做! Arch Linux 的软件包普遍比 Manjaro 新,从 Arch 切换到 Manjaro 很可能会因为版本问题导致依赖冲突,增加“滚挂”风险!
众所周知,Manjaro 是基于 Arch Linux 的一个发行版,但是 Manjaro 的大部分软件包的版本要低于 Arch Linux,使得 Manjaro 在获得近似 Arch 的优秀体验的同时,也保持良好的稳定性。
不过有时候总想尝试一下 Arch,重装系统又很麻烦,考虑到 Manjaro 和 Arch 的东西很接近 (不像 Ubuntu 瞎改 Debian 还加屎山进去),直接迁移是一个比较方便快捷的选择。
演示环境为一个全新安装的 Manjaro + KDE 虚拟机。
操作结束前,不要重启系统!
更改 pacman
设置
编辑 /etc/pacman.conf
,去除所有与 manjaro
相关的内容。
要改动的地方大致有以下部分,其他地方最好也检查一下:
1 |
|
更换 Arch Linux 镜像源
编辑 /etc/pacman.d/mirrorlist
,将 Manjaro 镜像源删除,替换为 Arch Linux 对应的镜像源地址。我这里选择了科大和上交的源:
1 |
|
然后同步数据库,但需要注意,这个时候不要更新软件。
1 |
|
微调软件配置
虽然 Manjaro 基于 Arch,但在一些关键软件包上还是有区别的,针对这些软件包我们全部需要调整。
Bash
Manjaro 和 Arch Linux 的 Bash 封装不同,Manjaro 将 Bash 本身与 bash 的配置文件 bashrc
封装成了 bash
和 bashrc-manjaro
两个软件包,而 Arch 则封装为一个包 bash
。并且,Manjaro 的 bash
包依赖于 bashrc-manjaro
,所以需要对现有 Manjaro 文件系统进行微调。
移除旧的 bashrc
文件,然后重新安装 bash
。
1 |
|
安装成功后,卸载 bashrc-manjaro
包。
卸载 Manjaro 相关包时,避免使用 -Rs
、-Rsn
、-Rsc
、-Rsnc
等带有 s
和 c
的参数,防止破坏系统组件。
1 |
|
Linux 内核
Linux 内核,Arch 官方始终只提供最新版本 linux
和长期支持版本 linux-lts
,但是 Manjaro 提供了多个不同的版本 linux-版本号
。为了保险,我们先安装 Arch Linux 的 linux
内核,再卸载 Manjaro 的内核。
先查找 Manjaro 内核的版本:
1 |
|
然后找到 linux**
这样一个包,比如 linux66
、linux515
之类的。
这个包后面的数字,就是版本号。记下包名,卸载 Manjaro 的 Linux 内核的时候,要全部卸载。
1 |
|
如果有对应的 headers
也要全部卸载:
1 |
|
pacman-mirrors
pacman-mirrors
是 Manjaro 自己的镜像配置文件,Arch Linux 只使用 pacman-mirrorlist
。由于 pacman-mirrors
和 Manjaro 的 Pacman 绑定,所以这一步我们需要先安装 Arch Linux 的 Pacman,然后通过破坏依赖的方式移除 pacman-mirrors
。
1 |
|
Manjaro 专属软件
Manjaro 添加了自己专属的一些软件,我们也全部卸载,防止与 Arch Linux 冲突。
由于部分软件与系统组件深度绑定,为防止破坏系统组件,我们先安装部分 Arch Linux 的系统组件。
1 |
|
切记不要使用 -Qsq
代替 -Qmq
!
-Qsq
的结果包含 filesystem
,这个包是系统必备的,待会重新安装 Arch 软件包的时候会自动替换为 Arch 版本。这个包能被搜到是因为描述中包含 Manjaro
,而它不是 Manjaro 独有的!
mhwd
是 Manjaro 检测硬件并自动安装驱动的一个库,既然你都用 Arch 了,难道还不能自己装驱动吗?
系统中可能还有 Manjaro 软件的残留,但我不建议现在一个一个查找删除,而是等到 Arch 软件包安装好之后再按需删除。
安装 Arch Linux 软件包
我们先将系统中 Manjaro 的软件包替换为对应的 Arch Linux 软件包。
1 |
|
修改 GRUB 主题
Manjaro 默认的 GRUB 使用的是定制主题,我们已经删掉了,对应的配置也需要移除。
编辑 /etc/default/grub
,修改为其他主题,或者注释掉使用默认界面:
1 |
|
我没有使用主题,直接注释掉了。
Fcitx 中文输入法
Manjaro 通过依赖的方式,在安装 Fcitx5 的时候向 /etc/xdg
添加 fcitx5
文件夹以及配置文件,自动启用了 Fcitx5
在软件中的输入功能(软件包manjaro-asian-input-support-fcitx5
),因此,Manjaro 安装 Fcitx5
后开箱即用,不需要配置。
但是 Arch Linux 软件源没有这一软件包,应当手动对 Fcitx5 进行配置。
编辑 /etc/environment
,加入:
1 |
|
注意 GLFW_IM_MODULE=ibus
的 ibus
不能修改为其他的(兼容性问题)。然后保存。
Zsh
Manjaro 默认使用 Zsh 并添加了很多自己的配置,这些配置被打包成以 manjaro
开头的包,由于我们已经删掉了,因此需要重新配置。
当然不配置也能用,只不过没有原来 Manjaro 的那些“特色功能”了。
配置工作我们待切换完成后再讲。
重构 GRUB 启动菜单
由于我们重新安装了新内核,我们需要同步重构 GRUB 的配置文件 grub.cfg
,以确保顺利引导。
1 |
|
重启
重新启动电脑,你会发现原来 Manjaro 的主题和壁纸都变成默认的了。恭喜你,你已经成功切换到 Arch Linux 系统!
确认系统工作正常之后,就可以自行清理不需要的软件包或者 Manjaro 残留了。
如果不需要配置 Manjaro 原来的 Zsh,就可以结束了。如果需要恢复 Manjaro 原来的 Zsh 功能,请继续往下看。
Zsh 配置
为什么把 Zsh 配置放最后讲呢,一个是比较复杂,另一个是确保系统基本组件正常运转后,再去做这些锦上添花的工作比较保险。
Manjaro 的 Zsh 的一些快捷功能是由以下软件包实现的,它们不属于 Manjaro 本身。
软件包 | 功能 |
---|---|
oh-my-zsh |
Zsh 高效配置框架 |
oh-my-zsh-powerline-theme-git |
Powerline 主题 |
zsh-syntax-highlighting |
语法高亮 |
zsh-autosuggestions |
自动补全 |
把这些软件包安装之后重新配置,即可使用相似功能。(可我还是喜欢 Manjaro 绿油油的主题)
配置 Arch Linux CN 源
虽说这些安装包都可以从 AUR 上获取,但是 Arch Linux CN 源为我们提供了已经打包好的软件包,可以通过 Pacman 直接拉取,快捷高效。
编辑 /etc/pacman.conf
,在文件末尾添加 Arch Linux CN 源。我这里选择的是科大镜像:
1 |
|
然后安装软件源 Keyring:
1 |
|
如果遇到错误,可以参考此篇文章。
安装软件包
执行以下命令安装相关软件包。相比于 Powerline 主题,我更喜欢 Powerlevel 10K 这个主题,风格几乎一模一样但性能更好。所以我选择安装 Powerlevel 10K 主题。
1 |
|
配置 .zshrc
复制新的 .zshrc
配置文件:
1 |
|
然后编辑 ~/.zshrc
:
1 |
|
然后将插件链接到正确的目录下:
1 |
|
然后执行 source ~/.zshrc
并根据向导配置即可。
完成后可以将默认 Shell 切换到 Zsh。
1 |
|
Root 用户的 Shell 应当设定为 Bash 而不是 Zsh 等其他 Shell。我也不建议更改 Root 用户的 Shell。
就这样。