由于在 Windows 上使用 Agent 体验不佳(Powershell 对 Agent 不友好,没啥好用终端等)而且发现 WSL2 也存在一些问题,同时我也比较喜欢使用 CLI,于是我打算转到 Linux,在朋友推荐下也是选择了 CachyOS。
目前从 Windows 转到 CachyOS 已经一个多月了,体验下来挺不错的,我还没有遇到过崩溃的情况,现在我的 Windows 只用来打游戏了。最近也看到了不少 Linux 的帖子,于是我打算写下这篇教程,也算是对自己折腾的总结吧。
CachyOS 基于 ArchLinux,滚动更新,追求性能,面向游戏和生产力 其安装过程还挺简单的,主要是后面的各种美化和配置需要折腾不少,如果不想折腾还是不太推荐安装的;如果你想要美化桌面、紧跟最新软件版本还是比较推荐的
CachyOS 安装 首先要准备一个 U 盘和 CachyOS 的系统镜像,先去 CachyOS 官网 安装桌面版的 iso,然后将其写入 U 盘制作启动盘,这里推荐一个制作可启动 U 盘的工具 Ventoy ,具体介绍可以看官网的描述。
准备好后就可以开始安装了,下面我会在虚拟机中做演示,因为虚拟机的原因图片中分辨率可能有些问题
如果要安装双系统,要提前进入 BIOS 关闭安全启动
用 U 盘启动安装系统后调整语言然后启动安装程序
选使用的语言
选时区
键盘这里直接下一步,选启动引导程序,这里默认推荐的是 Limine,这个需要在后面分区的时候至少给 EFI 分区分 4 GB,而且挂载点是 /boot,因为我当时装的是双系统,给 CachyOS 分配的空间不大,所以我选的是 grub,可以实际搜索区别后根据需要选择
开始分区,如果你装的是双系统的话,推荐选择手动分区
然后选择你预留的空闲空间创建分区
先创建 EFI 分区,grub 推荐分配 1 GB,文件系统选 fat32,挂载点为 /boot/efi,标记勾选 boot
接下来用剩余的空间创建系统分区,只设置挂载点为 / 就可以了,其他用的是默认的,如果有需要可以自己修改大小,文件系统推荐默认的 btrfs,CachyOS 会自动分配子卷,如果想分配 swap 分区也可以自行搜索教程尝试,不过 CachyOS 默认是使用 zram 的,而且 swap 也可以不用单独的分区,用 swap 文件,所以不推荐给 swap 分区
下面选桌面,我了解的就只有 KDE(默认这个)、GNOME、Niri 和 Hyprland,因为我喜欢平铺式的(Niri、Hyprland)同时听说 Niri 比 Hyprland 还稳定点,于是我选择了 Niri,这里根据自己的喜好选择即可
软件包根据自己的需要选择(一般不需要调整),因为我想要用 Chrome 所以我把下面的 Firefox 取消勾选了
最后设置账户密码等,开始安装
配置调优 因为已经将近 1 个月了,所以有的配置都忘了,想起啥写啥吧,后面也会补充。
有什么配置问题可以去翻 ArchWiki ,或者装完 Agent 工具让 AI 来帮你配置,但是一定要注意不要让 AI 瞎搞,防止搞崩溃,你可以让 AI 给你配置步骤,自己手动走一遍。
CachyOS 默认 Shell 用的是 fish,想用其他的可以自己更换,我比较习惯 zsh 就换去 zsh 了。
第一个命令,更新包命令
快照 当文件系统选择 btrfs 时 CachyOS 默认会装 btrfs 助手和 snapper(用于系统快照),你可以打开 btrfs 助手自己调整快照设置,默认只会在安装、升级、删除包时创建快照
CachyOS 默认会自动选用适合本地的镜像源,但是默认是没有 archlinuxcn 源的,推荐加入该源
1 sudo vim /etc/pacman.conf
在最后加上
1 2 3 4 5 6 [archlinuxcn] Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch Server = https://mirrors.hit.edu.cn/archlinuxcn/$arch Server = https://repo.huaweicloud.com/archlinuxcn/$arch Server = https://repo.archlinuxcn.org/$arch
Server 一个就行,自选,然后安装 archlinuxcn-keyring,并同步更新软件源数据库
1 2 sudo pacman -S archlinuxcn-keyringsudo pacman -Syu
yay 推荐安装 yay(AUR 助手),具体介绍可以自行搜索
注意使用 yay 时不用在前面加 sudo,安装 yay 后基本没再手动用过 pacman 了
每日更新变为
这里说一下软件包后啥也不带、带 -bin 或带 -git 三者在一般情况下的区别,推荐安装带 -bin 的版本:
啥也不带会下载软件正式版的源码压缩包进行本地编译构建
带 -bin 的是下载软件正式版的预编译程序,不用本地编译构建
带 -git 的是下载软件 git 仓库最新源码进行本地编译构建
有的包不带 -bin 也是安装的软件正式版的预编译程序,比如未开源的软件(如 linuxqq)
网络问题 一个比较折磨的问题就是 AUR 下载慢甚至下载不下来,这是因为源码包/预编译程序要从 GitHub 下载。这里就不展开讲了,有需要可以自行研究。
CachyOS Hello 首次开机默认会自动启动该应用,其有些实用的功能,点击 应用/调整
调整部分我就不详细介绍了,可以用 AI 自己搜索下,然后根据需要启用
实用工具一般常用前三个
QQ 安装命令
因为用的 Electron,所以在 linux 上存在一些问题,默认是以 XWayland 启动的,我用时如果输入法输入太快就会导致输入法漏字符,修复方法就是用 Wayland 启动,配置 ~/.config/qq-flags.conf,添加以下内容
1 2 3 --ozone-platform=wayland --enable-wayland-ime --wayland-text-input-version=3
VS Code 安装命令
1 yay -S visual-studio-code-bin
在我 niri 的桌面环境下存在密钥环服务无法自动识别的问题(其他应用貌似也有),修改 ~/.vscode/argv.json 将 password-store 手动设置为 gnome-libsecret 就没问题了
剪贴板 安装 wl-clip-persist 解决复制完内容,把源程序一关,复制内容失效无法再粘贴的问题
安装 comalot-clipsync-git 解决在 X11 应用复制完内容无法同步到 Wayland 上的问题
1 yay -S wl-clip-persist comalot-clipsync-git
记得设置自动启动,wl-clip-persist 我用的是 niri 桌面的自动启动,配置 spawn-at-startup "wl-clip-persist" "--clipboard" "regular",comalot-clipsync-git 用命令 systemctl --user enable --now clipsync
输入法 我用的 fcitx5 + fcitx5‑rime + rime‑ice
1 yay -S fcitx5 fcitx5-rime fcitx5-configtool fcitx5-gtk fcitx5-qt rime-ice-git
我的 ~/.local/share/fcitx5/rime/default.custom.yaml 配置如下
1 2 3 4 5 6 7 8 9 10 11 12 patch: __include: rime_ice_suggestion:/ __patch: menu/page_size: 8 key_binder/select_first_character: "comma" key_binder/select_last_character: "period" key_binder/bindings/+: - { when: paging , accept: bracketleft , send: Page_Up } - { when: has_menu , accept: bracketright , send: Page_Down }
同时配置环境变量,编辑 ~/.config/environment.d/ime-env.conf 并保存
1 2 3 4 QT_IM_MODULES="wayland;fcitx;ibus" QT_IM_MODULE="fcitx" XMODIFIERS="@im=fcitx" SDL_IM_MODULE="fcitx"
配置 ~/.config/gtk-3.0/settings.ini 和 ~/.config/gtk-4.0/settings.ini 并保存
1 2 [Settings] gtk-im-module =fcitx
可以用命令 fcitx5-diagnose 自查输入法问题
配置打字时按 shift 提交原始字符串,打开 fcitx5-configtool,选择中州韵,点开配置,将切换输入法时的行为改成提交原始字符串
字体 我用的以下字体及配置,仅作参考,可以自己调整
1 yay -S inter-font noto-fonts-cjk noto-fonts-emoji ttf-sarasa-gothic ttf-lxgw-wenkai ttf-jetbrains-mono-nerd ttf-caladea
配置 ~/.config/fontconfig/fonts.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 <?xml version="1.0"?> <!DOCTYPE fontconfig SYSTEM "urn:fontconfig:fonts.dtd"> <fontconfig> <match target="font"> <edit name="antialias" mode="assign"><bool>true</bool></edit> </match> <alias binding="strong"> <family>sans-serif</family> <prefer> <family>Inter</family> <family>更纱黑体 UI SC</family> <family>更纱黑体 SC</family> <family>思源黑体 CN</family> <family>Noto Sans CJK SC</family> </prefer> </alias> <alias binding="strong"> <family>serif</family> <prefer> <family>霞鹜文楷</family> <family>Noto Serif CJK SC</family> </prefer> </alias> <alias binding="strong"> <family>monospace</family> <prefer> <family>JetBrainsMonoNL Nerd Font</family> <family>JetBrainsMonoNL Nerd Font Mono</family> <family>Sarasa Term SC</family> <family>等距更纱黑体 SC</family> <family>Sarasa Fixed SC</family> </prefer> </alias> <match target="pattern"> <test name="lang" compare="contains"><string>zh</string></test> <edit name="family" mode="append" binding="strong"><string>更纱黑体 SC</string></edit> </match> </fontconfig>
配置 /etc/fonts/conf.d,其中文件都是软链接,默认应该有链接到 /usr/share/fontconfig/conf.default 中的 41 个,我自己又添加了 /usr/share/fontconfig/conf.avail 中的 2 个,命令如下:
1 2 3 4 sudo ln -s \/usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf \ /usr/share/fontconfig/conf.avail/70-no-bitmaps-except-emoji.conf \ /etc/fonts/conf.d/
最后全部软链接文件如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 10-hinting-slight.conf -> /usr/share/fontconfig/conf.default/10-hinting-slight.conf 10-powerline-symbols.conf -> /usr/share/fontconfig/conf.default/10-powerline-symbols.conf 10-scale-bitmap-fonts.conf -> /usr/share/fontconfig/conf.default/10-scale-bitmap-fonts.conf 10-sub-pixel-rgb.conf -> /usr/share/fontconfig/conf.avail/10-sub-pixel-rgb.conf 10-symbols.conf -> /usr/share/fontconfig/conf.default/10-symbols.conf 10-yes-antialias.conf -> /usr/share/fontconfig/conf.default/10-yes-antialias.conf 11-lcdfilter-default.conf -> /usr/share/fontconfig/conf.default/11-lcdfilter-default.conf 20-unhint-small-dejavu-lgc-sans.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-lgc-sans.conf 20-unhint-small-dejavu-lgc-sans-mono.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-lgc-sans-mono.conf 20-unhint-small-dejavu-lgc-serif.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-lgc-serif.conf 20-unhint-small-dejavu-sans.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-sans.conf 20-unhint-small-dejavu-sans-mono.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-sans-mono.conf 20-unhint-small-dejavu-serif.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-dejavu-serif.conf 20-unhint-small-vera.conf -> /usr/share/fontconfig/conf.default/20-unhint-small-vera.conf 30-metric-aliases.conf -> /usr/share/fontconfig/conf.default/30-metric-aliases.conf 40-nonlatin.conf -> /usr/share/fontconfig/conf.default/40-nonlatin.conf 45-generic.conf -> /usr/share/fontconfig/conf.default/45-generic.conf 45-latin.conf -> /usr/share/fontconfig/conf.default/45-latin.conf 46-noto-sans.conf -> /usr/share/fontconfig/conf.default/46-noto-sans.conf 46-noto-serif.conf -> /usr/share/fontconfig/conf.default/46-noto-serif.conf 48-guessfamily.conf -> /usr/share/fontconfig/conf.default/48-guessfamily.conf 48-spacing.conf -> /usr/share/fontconfig/conf.default/48-spacing.conf 49-sansserif.conf -> /usr/share/fontconfig/conf.default/49-sansserif.conf 50-user.conf -> /usr/share/fontconfig/conf.default/50-user.conf 51-local.conf -> /usr/share/fontconfig/conf.default/51-local.conf 57-dejavu-sans.conf -> /usr/share/fontconfig/conf.default/57-dejavu-sans.conf 57-dejavu-sans-mono.conf -> /usr/share/fontconfig/conf.default/57-dejavu-sans-mono.conf 57-dejavu-serif.conf -> /usr/share/fontconfig/conf.default/57-dejavu-serif.conf 58-dejavu-lgc-sans.conf -> /usr/share/fontconfig/conf.default/58-dejavu-lgc-sans.conf 58-dejavu-lgc-sans-mono.conf -> /usr/share/fontconfig/conf.default/58-dejavu-lgc-sans-mono.conf 58-dejavu-lgc-serif.conf -> /usr/share/fontconfig/conf.default/58-dejavu-lgc-serif.conf 60-generic.conf -> /usr/share/fontconfig/conf.default/60-generic.conf 60-latin.conf -> /usr/share/fontconfig/conf.default/60-latin.conf 62-caladea.conf -> /usr/share/fontconfig/conf.default/62-caladea.conf 62-carlito.conf -> /usr/share/fontconfig/conf.default/62-carlito.conf 65-fonts-persian.conf -> /usr/share/fontconfig/conf.default/65-fonts-persian.conf 65-nonlatin.conf -> /usr/share/fontconfig/conf.default/65-nonlatin.conf 66-noto-sans.conf -> /usr/share/fontconfig/conf.default/66-noto-sans.conf 66-noto-serif.conf -> /usr/share/fontconfig/conf.default/66-noto-serif.conf 69-unifont.conf -> /usr/share/fontconfig/conf.default/69-unifont.conf 70-no-bitmaps-except-emoji.conf -> /usr/share/fontconfig/conf.avail/70-no-bitmaps-except-emoji.conf 80-delicious.conf -> /usr/share/fontconfig/conf.default/80-delicious.conf 90-synthetic.conf -> /usr/share/fontconfig/conf.default/90-synthetic.conf
配置完用 fc-cache -fv 刷新字体缓存
结语 大致只想到了这些,其他一些配置,比如 niri 桌面美化、noctalia v5、终端(我用的 ghostty)还有各种 cli 工具等我没有说,这些都是看自己的喜好了,可以参考官方文档结合 AI 进行配置。
最后展示张自己的桌面