This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.
写在前面
更新完毕
2025-11-26:根据重新安装的过程更新了更多的细节。
2023-01-10:根据台式机的安装过程修改和更新更多细节以符合 2023-01-01 镜像安装的过程,增添更多配置过程。本篇博客介绍的安装过程没有使用 arch-install-scripts。
在考研的时候我就在思考,我到底为什么写博客。如果仅仅是展示自己的知识的话,那么我想懂得人并不会有多细看我的博客,而不懂的人也很有可能看不懂。
在又一次折腾完我的 Arch 之后,我明白了,我写博客的意义,就是在自己忘掉已经学过的东西之前,将他们梳理出来,做一个备忘。
这是一篇详详细细记录安装 Arch,KDE 并完整个性化的博客。我会一直更新直到描述完全为止。
准备工作
首先你需要做好启动盘,ISO 通过 官方 的磁力或者种子或者直链下载很快,推荐使用 Ventoy 制作,将 ISO 放入安装好的 U盘 即可
然后进入 BIOS 修改你的启动顺序,把 USB 启动放到第一位。可能还需要关闭 security boot。
我的机器是 UEFI 启动,非 UEFI 的请自行判断
安装过程
以下步骤绝大部分参考了 来自知乎的教程 ,并在安装过程中根据实际情况进行了修改
关闭烦人的 beep
每次我 tab 不好都会来一声。
1 | rmmod pcspkr |
连接网络
首先需要给网卡上电
1 | rfkill unblock all |
然后需要开启 DHCP 服务
1 | systemctl start dhcpcd |
有线网络
如果是通过网线或者手机 USB 共享的网络,此时已经连接上网络了,检验命令如下
1 | ping www.baidu.com -c 5 |
无线网络
使用 iwd 连接网络
1 | iwctl # 进入 iwd 的命令行 |
以下命令是在 iwctl 中使用的
1 | device list # 查看你的网卡有哪些,我的是 wlan0 |
更新系统时间
1 | timedatectl set-ntp true |
我这里显示的是世界时。显示时间不对没关系,不影响安装。
硬盘分区
这里我采用了将整块分区格式化为 btrfs,通过创建子卷来进一步分区的方式。
由于我本人除了常用的 Arch 系统和 KDE 桌面外,还经常折腾其他的桌面环境和发行版,所以需要一种方式实现多系统多桌面共存,共享硬盘空间。通过创建子卷将不同系统的根目录、桌面环境的 config 存储到不同的子卷中,可以方便的实现前面的需求,如果不想要相应的系统或桌面了,直接删除相应的子卷就可以了。同时,这种分区方法还能利用 btrfs 的快照进行备份。
当然,这种方法也有一些坏处。例如如果要使用 docker 的话,可能会出现诸如 Error: ipv4: fib table does not exist. 的错误,需要进行额外的设置才可以。
首先要搞清楚在哪一块硬盘上安装
1 | lsblk |
例如使用/dev/nvme0n1这块硬盘,使用 fdisk 在其上分配 200M 的分区当作 EFI 分区 (例如 /dev/nvme0n1p1),1G 的分区当作 boot 分区 (例如 /dev/nvme0n1p3),大小相当于内存大小一半 (你可以分配的更大一些) 的分区作为交换分区 (例如 /dev/nvme0n1p2),以及一块足够大的空间用于安装系统 (例如 /dev/nvme0n1p4)。
1 | fdisk /dev/nvme0n1 # nvme0n1 是我的磁盘名称,请替换为上面 lsblk 显示的结果 |
tips: fdisk 使用字节计算大小,将 G 换算为 字节时要乘 1024*2048
先分别格式化 EFI、boot 以及交换分区。
1 | # EFI 分区 |
然后格式化安装系统的分区,并创建一系列子卷。
1 | mkfs.btrfs -L ArchLinux /dev/nvme0n1p4 # 格式化 |
我单独为 $HOME/.config 目录分配了一个子卷,是防止不同桌面环境的设置相互覆盖产生冲突。
挂载分区
1 | mount /dev/nvme0n1p4 -o compress=zstd,subvol=@kde_root /mnt # 指定透明压缩参数和子卷名称 |
安装必需软件包
顺便把一会要用的都给装了
1 | pacstrap /mnt base linux linux-firmware vim iwd dhcpcd mandoc btrfs-progs dosfstools |
生成 fstab
1 | genfstab -U /mnt >> /mnt/etc/fstab |
博客 Azure Zeng Blog 中说
推荐删除
ssd,discard=async,space_cache=v2,subvolid=xxx等这些由系统自动决定的挂载选项,保留rw,relatime,compress=zstd:3,subvol=@xxx等以及其他你认为需要保留的挂载选项。
我不太清楚这样做有什么好处,但还是照着做了。
进入安装的系统
1 | arch-chroot /mnt |
设置时区
1 | ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime |
将硬件时钟调整为与目前的时钟一致
1 | hwclock --systohc |
本地化设置
注意不是个性化
- 编辑
/etc/locale.gen并将en_US.UTF-8和zh_CN.UTF-8取消注释 - 执行
locale-gen命令生成 locale - 创建
/etc/locale.conf并添加变量
1 | LANG=en_US.UTF-8 |
最好不要设置为中文的 locale,会导致终端乱码
网络设置
- 创建
/etc/hostname并为你的电脑命名 /etc/hosts中应该默认有内容如下,如果没有的话可以自己添加上
1 | 127.0.0.1 localhost |
设置 root 密码
1 | passwd |
安装 GRUB 引导
1 | pacman -S grub efibootmgr |
grub 可以安装主题将难看的黑白界面换掉,个性化会提到
将 grub 安装到系统
1 | grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=KDE |
生成配置文件
1 | grub-mkconfig -o /boot/grub/grub.cfg |
准备重启
无线网络
首先配置 iwd
1 | # 编辑文件 /etc/iwd/main.conf,并加入下面两行内容 |
然后启用与网络相关的服务
1 | # 启用 systemd-resolved 服务 |
登陆
用户名为 root,密码为刚刚设置的密码。
连接网络
步骤同开头的步骤,这里略过
图形界面的安装
安装 wayland 混成器
1 | pacman -S wayland |
安装显卡驱动
1 | pacman -Ss xf86-video # 查看都有哪些驱动 |
安装桌面环境,我选择 KDE 的 plasma。arch 仓库里 plasma 有两个元包:
plasma-meta,这个包会将所有 plasma 桌面用到的东西都给你装上,不过我不太喜欢,因为有一些包我用不到,就白白浪费空间。plasma-desktop,这个是最小化安装,也就是能跑起来图形界面,但是各种其他组件需要自己安装
我安装的是 plasma-desktop,以及下列其他一些组件
plasma-pa:KDE 的音频管理组件plasma-nm:KDE 的网络管理器,使用 wpa_supplicant 做后端,也就是说安装完成以后之前装的 iwd 可以删掉了powerdevil和acpid:电源管理,没有它我不能调节笔记本的屏幕亮度bluez:蓝牙管理kscreen:屏幕管理,调节分辨率和缩放的。konsole:KDE 的 terminal。dolphin:KDE 的文件管理器。okular:KDE 的 PDF 阅读器。openssh:SSH 工具。kwallet-manager:kwallet的GUI界面。gwenview:KDE 的图片查看器。
1 | pacman -S plasma-desktop plasma-pa plasma-nm powerdevil acpid bluez kscreen konsole dolphin okular openssh kwallet-manager |
安装显示管理器,sddm 比较好看,还可以换主题
1 | pacman -S sddm |
添加普通用户
以下请将 syize 换成你的用户名
由于我更喜欢使用 zsh 而不是 bash,需要先安装 zsh
1 | pacman -S zsh |
zsh 可以通过 oh-my-zsh 进行美化
创建用户组
1 | groupadd syize |
创建用户,由于前面我们在挂载分区时创建了家目录,这里就不需要 -m 参数了。
1 | useradd -g syize -s /usr/bin/zsh syize |
设置普通用户设置密码
1 | passwd syize |
赋予 sudo 权限
1 | pacman -S sudo # 安装 sudo 包 |
编辑 /etc/sudoers 并加入下面的内容
1 | # 需要在 root ALL=(ALL) ALL 下面一行插入 |
vim 的话需要用 :w! 强制保存。
这里需要额外做一步,就是更改 /home/syize/.config 的权限。
1 | chown -R syize:syize /home/syize/.config |
安装输入法 fcitx5
由于我后面会使用白霜拼音,所以这里安装了fcitx5-rime
1 | pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-table-extra fcitx5-rime |
配置环境变量
这些东西可以先跳过,在你启动到图形界面以后复制粘贴
1 | vim /etc/environment |
加入下面的内容
1 | XMODIFIERS=@im=fcitx |
安装字体
1 | pacman -S ttf-dejavu # 英文字体 |
重启
由于不再使用 iwd 以及 dhcpcd,可以将其删除以防止冲突导致连接不上无线网络。然后将 NetworkManager 设置开机启动
1 | sudo pacman -Rs iwd dhcpcd |
到目前为止就装的差不多了,重启即可进入桌面了。
个性化
Vim
我个人不是很习惯vim响应鼠标的点击,所以需要额外设置一下。
编辑文件/usr/share/vim/vim91/defaults.vim,定位到如下的设置(应该在74行左右)
1 | if has('mouse') |
在下方加入以下设置对其覆写
1 | set mouse= |
编辑 /etc/vimrc 加入一些额外的设置
1 | " show line number |
添加额外的仓库
我个人使用的仓库除了默认的官方仓库外,还有 archlinuxcn 以及 arch4edu。
以下仓库都使用清华大学的镜像。
archlinuxcn
添加 archlinuxcn 仓库的方法较为简单。
在 /etc/pacman.conf 的末尾添加
1 | [archlinuxcn] |
然后运行以下命令导入该仓库的 key。
1 | sudo pacman -Sy archlinuxcn-keyring |
arch4edu
arch4edu 仓库的 key 需要手动导入,请查看清华大学镜像网站以导入最新的 key。
后续的操作不再赘述,请依照镜像网站的指引添加仓库。
安装yay
如果你添加了 archlinuxcn 仓库,则可从该仓库中直接安装 yay
1 | sudo pacman -S yay |
否则需要手动从AUR中安装。
1 | git clone https://aur.archlinux.org/yay-bin.git |
Neovim
Neovim 用起来比 Vim 更舒服一些,GitHub 上也有很多人分享自己的配置文件。在笔记本上我就用自己的轻量的设置,减少计算量的占用。
安装 Neovim 以及剪切板的依赖。
1 | sudo pacman -S neovim wl-clipboard xclip |
然后只需要将相应的配置 clone 到 $HOME/.config/nvim 中即可。再次打开时可能会有一段时间不显示任何东西,这是 Neovim 在进行配置,请确保网络通畅。
浏览器
有了 yay 后,可以从 AUR 仓库中安装 Chrome 浏览器。
1 | yay -S google-chrome |
初次启动时如果需要使用代理,而浏览器插件又还没安装,可以打开终端添加 --proxy-server= 启动。
中文输入法
由于之前安装过了 fcitx5,直接在 系统设置->区域设置 里面就能找到输入法设置,键盘配置如图
如果你前面没有配置环境变量,需要配置一下
1 | sudo vim /etc/environment |
加入下面的内容
1 | XMODIFIERS=@im=fcitx |
白霜拼音需要从 AUR 仓库安装
1 | yay -S aur/rime-frost-git |
安装完成之后,编辑 .local/share/fcitx5/rime/default.custom.yaml,加入以下配置
1 | patch: |
emoji
为了能打出流汗黄豆,我们需要安装 emoji 字体
1 | sudo pacman -S noto-fonts-emoji # emoji |
还需要配置一下 emoji 让其正常显示。编辑 /etc/fonts/conf.d/75-noto-color-emoji.conf,加入下面的内容
1 |
|
zsh 个性化
默认的 zsh 很丑,可以只用 oh-my-zsh 来美化。
安装方式有两种,一种是需要自己运行 curl 脚本安装,一种是从 archlinuxcn 仓库安装。
这里我从 archlinuxcn 仓库安装 oh-my-zsh。
1 | sudo pacman -S oh-my-zsh-git |
使用 oh-my-zsh 的 zshrc。
1 | cp /usr/share/oh-my-zsh/zshrc ~/.zshrc |
如果你有重要的设置请注意保存
并设置ZSH_CUSTOM。设置ZSH_CUSTOM的原因是为了后续方便安装插件。定位到.zshrc中的ZSH_CUSTOM行,取消注释并修改为
1 | ZSH_CUSTOM=$HOME/.config/zsh |
oh-my-zsh 默认的主题其实比较好看了,但是我更喜欢 amuse
编辑 .zshrc,将 theme 改为 amuse
1 | ZSH_THEME="amuse" |
执行下面的命令看一看效果吧
1 | source ~/.zshrc |
zsh 插件
语法高亮
可以提示你敲的命令是否正确。根据官方安装方式
1 | git clone https://github.com/zdharma-continuum/fast-syntax-highlighting.git $ZSH_CUSTOM/plugins/fast-syntax-highlighting |
编辑 ~/.zshrc 在 plugin 里面添加进去
1 | plugins=( |
fast-syntax-highlighting 还可以更换渲染主题,我常用的主题是 Catppuccin。将相应的 ini 文件放入 $ZSH_CUSTOM$/plugins/fast-syntax-highlighting/themes 里面,运行 fast-theme -l 应该就可以看到主题已经被识别了。
补全建议
以淡色字体显示,根据最近敲击的命令对命令进行建议,减少重复敲键盘次数
1 | git clone https://github.com/zsh-users/zsh-autosuggestions $ZSH_CUSTOM/plugins/zsh-autosuggestions |
添加进 .zshrc
1 | plugins=( |
最后效果图
KDE 部件
按照上面的流程下来的话就已经有比较多的小部件了,但是没有我想要的便利贴。安装下面的包获得便利贴和更多的部件
1 | sudo pacman -S kwidgetsaddons kdeplasma-addons |
还有一些监控系统系统信息的比如网络速度,内存使用情况等。
便利贴没有半透明的效果,稍微有点格格不入
spectacle 是 kde 的截图工具
1 | sudo pacman -S spectacle |
Typora
我购买了Typora的许可证用来写Markdown,使用yay就能安装。但是需要配置Typora使用wayland,否则输入中文时总是漏字符。将以下参数添加到Typora的启动配置里即可。
1 | --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime |
需要注意的是,如果缺了参数--enable-wayland-ime,会导致Typora无法使用fcitx5输入法。
Variety
Variety 可以自动切换壁纸,选择一些你喜欢的照片,然后让它定时更换。作为老虚荣玩家 (泪目),当然是虚荣美美的英雄皮肤高清原图了
1 | sudo pacman -S variety |
更换鼠标
bibata-cursor-theme 包含多个可以更换的鼠标皮肤
1 | yay -S aur/bibata-cursor-theme-bin |
更换图标
图标我比较喜欢用 qogir-icon-theme,从 archlinuxcn 仓库中安装即可。
1 | sudo pacman -S qogir-icon-theme-git |
sddm 主题更换
默认的蓝色登录界面太丑了,KDE Store 的 Sugar Dark for SDDM 看起来非常的优雅,并且我将后面的壁纸换成了 梅兰妮 万圣节🎃皮肤,颜色非常搭。这个主题依赖于sddm >= 0.18.0,qt5 >= 5.11.0,qt5-quickcontrols2 >= 5.11.0,qt5-svg >= 5.11.0。如果忘记安装依赖的话,就会导致sddm界面黑屏。
这个主题可以从archlinuxcn仓库安装,使用KDE桌面的话,也可以直接在系统设置里面下载这个主题。
1 | sudo pacman -S sddm-sugar-dark |
想要从系统设置里直接更改 sddm 的登录界面,你需要安装 kcm 包
1 | sudo pacman -S sddm-kcm |
如果你不想用默认的壁纸,准备一个 jpg 图片替换掉 /usr/share/sddm/themes/suger-dark 下的Background.jpg (分辨率大概可以随意,不过我做成了大小与原图片一致的 2400*1600)。注销重新登录就可以看到效果了
grub设置
主题更换
我一直用的是 dracula 的主题 。他们的网站上还有很多用于其他应用的主题,强烈推荐。不过似乎 Libreoffice 的主题不能用,好像也没人修
- 下载文件压缩包并解压:地址
- 将文件夹放入
/usr/share/grub/themes - 修改 /etc/default/grub 中的主题,改为如下 (应该是在 47 行左右)
1 | GRUB_THEME="/usr/share/grub/themes/dracula/theme.txt" |
- 重新生成 grub 配置文件
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |
如果你觉得字体过小,则需要重新设置一下 grub 的分辨率。例如我的电脑 grub 推荐 2560x1600,但是我改小到 1280x960 字体才正常大小
- 查看支持的分辨率选项。在 grub 界面按 c 键进入命令模式,输入
videoinfo查看可用分辨率。 - 挑一个小的,编辑
/etc/default/grub,并更改如下
1 | # 分辨率改为你自己的,注意中间的 "x" 是小写字母 x |
- 重新生成配置文件
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |
- 重启查看效果
将其他系统添加到 grub
如果你想通过 grub 启动到其他系统,则需要安装 os-prober,并且配置 /etc/default/grub 文件让 grub 使用 os-prober
1 | GRUB_DISABLE_OS_PROBER=false |
然后需要将系统所在的分区挂载,再生成配置文件
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |
如果成功探测到了其他的系统,你可以看到相应的提示。
如果 grub 没有成功探测到其他的系统,你还可以手动撰写配置,将其保存到 /etc/grub.d/40_custom 中。我使用的另一个 Hyprland 分区无法被探测到,所以复制了 Hyprland 中生成的配置到该文件中。
1 | menuentry '(Hyprland) Arch Linux' --class _hyprland_ --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-57347da2-aeb1-48bc-bec3-a57f1bd3fb26' { |
dnsmasq 安装
1 | sudo pacman -S dnsmasq |
由于我们安装了 NetworkManager,配置 NetworkManager 使用 dnsmasq 即可,不需要启动 systemd 服务。
首先复制 /etc/dnsmasq.conf 到 /etc/NetworkManager/dnsmasq.d/dnsmasq.conf,然后编辑该文件,取消注释修改以下配置 (此处的配置是为了方便使用 DNS分流 以及防止与 libvirt 冲突,如果你没有分流的需求,则不需要写 server=127.0.0.1#5534):
1 | strict-order |
然后配置额外的规则以屏蔽广告、优化解析。Github 上有用于 dnsmasq 的 特殊配置文件,我选用了其中三个:
- accelerated-domains.china.conf
- bogus-nxdomain.china.conf
- google.china.conf
然后编辑 /etc/NetworkManager/conf.d/dns.conf,添加以下配置
1 | [main] |
然后运行以下命令重载 NetworkManager
1 | sudo nmcli general reload |
安装 bind 包,里面有 dig 命令
1 | sudo pacman -S bind |
然后运行下列命令检验 dnsmasq 是否工作正常
1 | dig www.baidu.com |
只要 SERVER 显示为 127.0.0.1 即表明 dnsmasq 工作正常。
安装更多的主题包
让 KDE 管理 GTK 应用的外观
安装 kde-gtk-config 后能够在系统设置中对 GTK 应用的外观进行设置。
breeze-gtk
安装 breeze-gtk 能让 GTK 应用使用 breeze 微风主题。
catppuccin
安装以下主题包来使用 catppuccin 主题外观
catppuccin-konsole-colorscheme-mocha-gitcatppuccin-plasma-colorscheme-mochacatppuccin-fcitx5-gitcatppuccin-gtk-theme-mochacatppuccin-cursors-mocha
aria2 安装-1
1 | sudo pacman -S aria2 |
aria2 只是一个命令行程序,github 上有许多好用的前端。我选择了 AriaNg,并决定安装 nginx 来将其部署在本地。
nginx 安装
1 | sudo pacman -S nginx |
然后编辑 /etc/nginx/nginx.conf,在第31行下添加如下配置
1 | types_hash_max_size 2048; |
include 配置使得 nginx 可以读取 /etc/nginx/conf.d 目录下的所有配置文件。编写 AriaNg 的配置文件。
1 | server { |
重启 nginx,将下载的 AriaNg 网页文件放置在上面 root 对应的路径下即可。为了能使对应的域名被解析到本地,需要在 dnsmasq 上添加记录。在 /etc/dnsmasq.d 下新建一个文件并添加如下配置使对应域名被解析到本地
1 | address=/aria2.syize.local/127.0.0.1 |
重启 dnsmasq 服务,打开浏览器输入 http://aria2.syize.local,即可看到 AriaNg 的界面。
aria2 安装-2
前面我们只安装了 aria2,现在我们需要编写其配置文件进行配置,我懒得啰嗦直接把我自己的配置贴上来了。在 ~/.config/aria2/ 下编写配置文件 aria2.conf
1 | ## 文件保存设置 ## |
然后编写 systemd 配置文件。创建目录 ~/.config/systemd/user,编写文件 ~/.config/systemd/user/aria2.service
1 | [Unit] |
创建 aria2 的文件
1 | touch ~/.config/aria2/aria2.session |
其启动服务,并打开 AriaNg 查看是否能够连接成功
请注意在 RPC 设置页面填入正确的密钥
1 | systemctl --user start aria2 |
照片和视频备份
PhotoPrism
PhotoPrism官方手册只有docker的安装方式,但是我不太喜欢docker,所以摸索了直接安装的方法。
AUR中有打包好的包,可以直接安装。
1 | yay -S aur/photoprism |
需要注意选择适合自己电脑的photoprism-tensorflow版本。
PhotoPrism的默认配置文件位于/etc/photoprism/defaults.yml,在里面可以设置额外配置文件的位置。修改里面的内容如下,将媒体地址改到/home/photoprism下。
你可能需要手动添加一下用户以及创建对应的目录。
1 | AssetsPath: /usr/share/photoprism |
并将在/var/lib/photoprism下的所有文件复制到新的目录下
1 | sudo cp /var/lib/photoprism/* /home/photoprism |
编辑配置文件/home/photoprism/config/options.yml,修改更多配置
1 | AdminUser: "管理员名称" |
DatabaseDriver是数据库类型,我使用的是mysqlDatabaseServer是数据库地址,mysql的对应地址设置为localhost:3306DatabasePassword是数据库账户的密码,数据库的名称默认为photoprismIncludeSchedule是定时索引任务,"0 */3 * * *"代表每三个小时更新一次索引,以更新新的图片。
你需要手动创建一下对应的数据库
设置好以后启动对应服务即可
1 | sudo systemctl enable --now photoprism |
Author: Syize
Permalink: https://blog.syize.cn/2021/12/28/install-arch-and-kde/
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog!
Comments