安装 EndeavourOS 桌面系统
本文记录我 EndeavourOS + KDE 的桌面系统配置过程
我用的是一台A卡的台式,一直以来都是 Win + wsl 命令行。去年突然想折腾折腾桌面 Linux ,研究之后选择了 Arch 作为我的第一款 Linux 桌面(上来就搞这么复杂的)。跟着B站上up的视频一行行手敲把这个 Arch 给装上了。然而,桌面环境使用的 Gnome ,一直只使用 Windows 的我感觉非常不顺手,而且也一直没有去折腾设置和美化。因此 Arch 实际上大部分时间处于吃灰的状态,只是偶尔上去更新一下,尝试些新软件或者浏览器看看网页。
至少一年了没挂过不是吗,说明稳定性其实还挺好的
但 Linux 还是吸引我的,比如软件包管理,以及游戏性能似乎是高于 win 的(而且我还是A卡呢)。于是最近决定重新拾起它试试。但 Gnome 实在用不惯,换 KDE 吧。那索性重装得了。
系统选择
虽然 wsl 和服务器我都用 Debian ,但是来到桌面系统,我依旧还是比较想选 Arch 系的。但是我现在确实是没什么兴致一行一行研究安装指令了。听说 SteamOS 挺好使的,可惜用不到于是最后决定使用 EndeavourOS ,能比较好地开箱即用,并且仍然提供未经修改的 Arch 体验。
安装流程
有 GUI 那就非常友好了,没有太多要说的
先更新一下镜像源,然后就开始安装
系统引导方式使用 grub ,会自动扫描把 Windows 启动项也加进去
桌面我选择 KDE
swap 我选择了 no swap ,之后再手动配置 zram
文件系统选择的是 brtfs ,原生支持快照,配合 Snapper ,万一系统出问题了直接回滚即可
配置系统
Shell
可以先根据 之前的文章 配置好 Shell 。切换默认 Shell 之后需要重启才会生效
但需要注意的是,在 Arch 上需要手动配置键盘模式的切换( smkx )
因此,对照那篇文章的模板,需要把上下箭头替换前缀搜索的那一段改成:
zmodload zsh/terminfo
if (( ${+terminfo[smkx]} && ${+terminfo[rmkx]} )); then autoload -Uz add-zle-hook-widget
_smkx() { echoti smkx } _rmkx() { echoti rmkx }
add-zle-hook-widget -Uz zle-line-init _smkx add-zle-hook-widget -Uz zle-line-finish _rmkxfi
autoload -Uz up-line-or-beginning-search down-line-or-beginning-searchzle -N up-line-or-beginning-searchzle -N down-line-or-beginning-search
bindkey -- "${terminfo[khome]}" beginning-of-linebindkey -- "${terminfo[kend]}" end-of-linebindkey -- "${terminfo[kdch1]}" delete-charbindkey -- "${terminfo[kcuu1]}" up-line-or-beginning-searchbindkey -- "${terminfo[kcud1]}" down-line-or-beginning-searchyay
yay 每次安装软件都会有几个交互式选项。然而大部分情况下我们的回答应该都是固定的。因此可以直接设置:
yay --answerclean=None --answerdiff=All --answeredit=None --saveanswerclean 设为 None 表示不清理而是复用之前的构建缓存(如果有)
answerdiff 设为 All 则代表审阅所有 PKGBUILD 的 diff ,为了安全我认为人工检查是有必要的
answeredit 设为 None 则是不修改 PKGBUILD ,一般来说确实不会需要修改
使用 yay -Pg 可以查看当前设置
还可以安装 aur-scanner
yay -S aur-scanner可以用来扫描 PKGBUILD (静态规则,可能误伤也可能遗漏,不能代替人工审查)
aur-scan check <包名> # 装之前检查aur-scan system # 扫描已装的 AUR 包zram
简单来说,zram 就是使用内存而不是硬盘来当 swap (相当于 win 上的虚拟内存)。它在内存里划出一块区域,把要换出的内存页先压缩,再存到这块内存区域里。这样内存的总容量就大些了,同时也不需要产生硬盘读写。
安装:
sudo pacman -S zram-generator创建并编辑配置文件:/etc/systemd/zram-generator.conf:
[zram0]zram-size = ram / 2compression-algorithm = zstd注意 zram-size 是未压缩数据的体积上限,而不是压缩后的
然后重启即可
Snapper
需要安装:
- snapper — 快照引擎
- snap-pac — pacman 钩子,装/卸/升级包时自动快照
- grub-btrfs — 把快照挂到 GRUB 启动菜单里
- inotify-tools 让 grub-btrfsd 监听到新快照后自动重建 GRUB 菜单。
- btrfs-assistant — 图形界面
sudo pacman -S snapper snap-pac grub-btrfs btrfs-assistant inotify-tools接下来创建 root 的 snapper 配置
sudo snapper -c root create-config /然后启用 grub-btrfs 的自动刷新守护进程:
sudo systemctl enable --now grub-btrfsd接下来就可以在 btrfs-assistant 中调节快照设置了
如果还想给 /home 添加快照,同样 create config 就行:
sudo snapper -c home create-config /home输入法
安装 Fcitx 5 、 GTK/Qt 支持、Rime 引擎和图形配置工具:
sudo pacman -S fcitx5 fcitx5-gtk fcitx5-qt fcitx5-rime fcitx5-configtool打开 KDE 系统设置 - 键盘 - 虚拟键盘,选择 Fcitx 5
然后到 系统设置 - 输入法 里确认 Rime (中州韵)是启用的
并在下面 配置附加组件 - 经典用户界面 设置 跟随系统浅色/深色设置
然后就可以使用了
默认使用 Ctrl + Space 切换中英文
Ctrl + ` 可以切换拼音方案和简繁体什么的
据我测试,这样配置完后 QQ 依旧使用不了输入法
自定义启动参数可以解决:
mkdir -p ~/.config
cat > ~/.config/qq-flags.conf <<'EOF'--enable-features=UseOzonePlatform--ozone-platform=wayland--enable-wayland-ime--disable-features=GlobalShortcutsPortalEOF注意上面把 GlobalShortcutsPortal 给 disable 了,因为我发现我这每次启动都会有快捷键弹窗。但是禁用后快捷键就无法使用了。这个就根据个人情况处理。
Grub
编辑 /etc/default/grub的设置
# 将 Grub 的默认启动项设置为上次使用的选项GRUB_DEFAULT='saved'GRUB_SAVEDEFAULT=true
# 不生成 EFI BootNext 条目(即 UEFI 固件中的启动项)GRUB_DISABLE_BOOTNEXT=trueGRUB_DEFAULT='saved' 会需要写入 grubenv 变量,而旧版本 GRUB 写入 grubenv 会出现与 btrfs 的 CoW 的冲突问题,以及 Arch 打包出来 DEFAULT_ENVBLK_PATH 是 //boot/grub/grubenv 双斜杠匹配导致单斜杠 /boot 命令不能正常运行。实测 2.16 版本可以正常使用
EFI BOOTNEXT 条目也是 2.16 版本新增的功能
接下来还要注意一个问题:
EOS 的默认情况下, Grub 的 默认启动上次选择的条目 没办法对 Windows 的条目生效。
因为 Grub 的 Windows 条目是由 EOS 特供的安装器生成,不走 os-prober ,而这个安装器安装的 Windows menuentry 体内没有 savedefault 指令,因此选择这个条目时不会刷新 saved_entry 变量
因此,如果你使用 Windows ,需要编辑 /etc/grub.d/45_eos_windows ,在 Windows menuentry 开头的 { 之后加一行 savedefault
最后:
sudo grub-mkconfig -o /boot/grub/grub.cfg生成 grub 的配置文件即可
验证:
sudo grep -A8 "menuentry 'Windows" /boot/grub/grub.cfg # 确认条目里出现 savedefault 行sudo grub-editenv /boot/grub/grubenv list # 应该出现 env_block=512+1 ,并且在重启后会有 saved_entry其它设置
关闭 系统设置 - 显示和监视器 - 显示器配置 - 允许在全屏窗口中发生画面撕裂
其它问题
发现 /etc/vconsole.conf 中错误地被设置了:
KEYMAP=cn使用
sudo localectl set-keymap us但是调完以后终端信息也变成英文了,很奇怪