Arch Linux, KDE 桌面及各种服务安装过程

Arch

This article was last updated on <span id="expire-date"></span> days ago, the information described in the article may be outdated.

写在前面

更新完毕

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
2
systemctl start dhcpcd
systemctl start systemd-resolved

有线网络

如果是通过网线或者手机 USB 共享的网络,此时已经连接上网络了,检验命令如下

1
ping www.baidu.com -c 5

无线网络

使用 iwd 连接网络

1
iwctl	# 进入 iwd 的命令行

以下命令是在 iwctl 中使用的

1
2
3
4
5
6
device list		# 查看你的网卡有哪些,我的是 wlan0

# 以下命令请将 wlan0 替换为你的网卡名称
station wlan0 scan # 扫描无线网络
station wlan0 get-networks # 获取扫描结果
station wlan0 connect 网络名称 # 连接到网络

更新系统时间

1
2
timedatectl set-ntp true
timedatectl status

我这里显示的是世界时。显示时间不对没关系,不影响安装。

磁盘分区

首先要搞清楚在哪一块磁盘上安装

1
lsblk

然后使用 fdisk 进行分区

1
fdisk /dev/nvme0n1	# nvme0n1 是我的磁盘名称,请替换为上面 lsblk 显示的结果

tips: fdisk 使用字节计算大小,将 G 换算为 字节时要乘 1024*2048

详细分区及格式化步骤略过,仅提一句 swap 分区的格式化

1
2
3
mkswap /path/to/swap	# 格式化
swapon /path/to/swap # 启用
free -h # 查看是否启用成功

挂载分区

1
2
3
4
5
6
7
mount /path/to/root /mnt	# 挂载 root 分区
# 挂载 home
mkdir /mnt/home
mount /path/to/home /mnt/home
# 挂载 EFI
mkdir /mnt/efi
mount /path/to/efi /mnt/efi

安装必需软件包

顺便把一会要用的都给装了

1
pacstrap /mnt base linux linux-firmware vim iwd dhcpcd

生成 fstab

1
genfstab -U /mnt >> /mnt/etc/fstab

如果要为 home 分区 (btrfs 格式) 启用透明压缩,编辑 /mnt/etc/fstab 文件并在 /home 的配置行修改,在下列配置的最后添加 compress=zstd 选项。

1
rw,relatime,ssd,space_cache,subvolid=5,subvol=/,compress=zstd

进入安装的系统

1
arch-chroot /mnt

设置时区

1
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

将硬件时钟调整为与目前的时钟一致

1
hwclock --systohc

本地化设置

注意不是个性化

  1. 编辑 /etc/locale.gen 并将 en_US.UTF-8 和 zh_CN.UTF-8 取消注释
  2. 执行 locale-gen 命令生成 locale
  3. 创建 /etc/locale.conf 并添加变量 LANG
1
LANG=en_US.UTF-8

最好不要设置为中文的 locale,会导致终端乱码

网络设置

  1. 创建 /etc/hostname 并为你的电脑命名
  2. 配置 /etc/hosts ,内容如下
1
2
127.0.0.1	localhost
::1 localhost

设置 root 密码

执行 passwd 即可

1
passwd

安装 GRUB 引导

1
pacman -S grub efibootmgr

grub 可以安装主题将难看的黑白界面换掉,个性化会提到

将 grub 安装到系统

1
grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=ArchLinux

生成配置文件

1
grub-mkconfig -o /boot/grub/grub.cfg

准备重启

无线网络

首先配置 iwd

1
2
3
# 编辑文件 /etc/iwd/main.conf,并加入下面两行内容
[General]
EnableNetworkConfiguration=true

然后启用与网络相关的服务

1
2
3
4
5
6
7
8
# 启用 systemd-resolved 服务
systemctl enable systemd-resolved.service
# iwd 开机自启动
systemctl enable iwd.service

exit # 退出 chroot 环境
umount -R /mnt # 卸载分区
reboot # 重启

登陆

用户名为 root,密码为刚刚设置的密码。

连接网络

步骤同开头的步骤,这里略过

图形界面的安装

安装显示服务器 xorg

1
pacman -S org

安装显卡驱动

1
2
3
pacman -Ss xf86-video	# 查看都有哪些驱动
# 我只有一个 AMD 的显卡,所以安装 xf86-video-amdgpu
pacman -S xf86-video-amdgpu mesa vulkan-radeon libva-mesa-driver mesa-vdpau

安装桌面环境,我选择 KDE 的 plasma,美化效果一级棒

arch 仓库里有两个组

  1. plasma-meta,这个包会将所有 plasma 桌面用到的东西都给你装上,不过我不太喜欢,因为有一些包我用不到,就白白浪费空间 (我的 root 分区只给了 20G)。
  2. plasma-desktop,这个是最小化安装,也就是能跑起来图形界面,但是各种其他组件需要自己安装

我安装的是 plasma-desktop,以及下列其他一些组件

  1. plasma-pa:KDE 的音频管理组件
  2. plasma-nm:KDE 的网络管理器,使用 wpa_supplicant 做后端,也就是说安装完成以后之前装的 iwd 可以删掉了
  3. powerdevil 和 acpid:电源管理,没有它我不能调节笔记本的屏幕亮度
  4. bluez:蓝牙管理
  5. kscreen:屏幕管理,调节分辨率和缩放的。
  6. khotkeys:快捷键
  7. konsole:KDE 的终端模拟器。
1
pacman -S plasma-desktop plasma-pa plasma-nm powerdevil acpid bluez kscreen khotkeys konsole

安装显示管理器,sddm比较好看,还可以换主题

1
2
3
pacman -S sddm
# 设置开机启动
systemctl enable sddm.service

添加普通用户

以下请将 syize 换成你的用户名

root 用户是不能通过 sddm 登陆进入桌面的

由于我使用 zsh 而不是 bash,需要先安装 zsh

1
pacman -S zsh

zsh 可以通过 oh-my-zsh 进行美化

创建用户组

1
groupadd syize

创建用户

1
useradd -m -g syize -s /usr/bin/zsh syize

设置普通用户设置密码

1
passwd syize

赋予 sudo 权限

1
pacman -S sudo	# 安装 sudo 包

编辑 /etc/sudoers 并加入下面的内容

1
2
# 需要在 root ALL=(ALL) ALL 下面一行插入
syize ALL=(ALL) ALL

vim 的话需要用 :w! 强制保存

安装输入法 fcitx5

1
pacman -S fcitx5 fcitx5-chinese-addons fcitx5-gtk fcitx5-qt fcitx5-configtool fcitx5-pinyin-zhwiki fcitx5-table-extra

配置环境变量

这些东西可以先跳过,在你启动到图形界面以后复制粘贴

1
vim /etc/environment

加入下面的内容

1
2
3
4
5
6
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=\@im=fcitx
SDL_IM_MODULE=fcitx
INPUT_METHOD=fcitx
GLFW_IM_MODULE=fcitx

安装字体

1
2
pacman -S ttf-dejavu	# 英文字体
pacman -S wqy-microhei # 中文字体

重启

到目前为止就装的差不多了,重启即可进入桌面了

由于不再使用 iwd,可以将其删除,并将 NetworkManager 设置开机启动

1
2
sudo pacman -Rs iwd
sudo systemctl enable NetworkManager

个性化

浏览器

没有浏览器,你们怎么看我的教程

仓库里没有我喜爱的 chrome,可以先安装 firefox 凑活用一下

1
sudo pacman -S firefox firefox-i18n-zh-cn

中文输入法

没有输入法,你们怎么给我评论

由于之前安装过了 fcitx5,直接在 系统设置->区域设置 里面就能找到输入法设置,键盘配置如图

如果你前面没有配置环境变量,需要配置一下

1
sudo vim /etc/environment

加入下面的内容

1
2
3
4
5
6
GTK_IM_MODULE=fcitx
QT_IM_MODULE=fcitx
XMODIFIERS=\@im=fcitx
SDL_IM_MODULE=fcitx
INPUT_METHOD=fcitx
GLFW_IM_MODULE=fcitx

emoji

为了能打出流汗黄豆,我们需要安装 emoji 字体

1
sudo pacman -S noto-fonts-emoji	# emoji

还需要配置一下 emoji 让其正常显示。编辑 /etc/fonts/conf.d/75-noto-color-emoji.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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>

<!-- Add generic family. -->
<match target="pattern">
<test qual="any" name="family"><string>emoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<!-- This adds Noto Color Emoji as a final fallback font for the default font families. -->
<match target="pattern">
<test name="family"><string>sans</string></test>
<edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test name="family"><string>serif</string></test>
<edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test name="family"><string>sans-serif</string></test>
<edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test name="family"><string>monospace</string></test>
<edit name="family" mode="append"><string>Noto Color Emoji</string></edit>
</match>

<!-- Block Symbola from the list of fallback fonts. -->
<selectfont>
<rejectfont>
<pattern>
<patelt name="family">
<string>Symbola</string>
</patelt>
</pattern>
</rejectfont>
</selectfont>

<!-- Use Noto Color Emoji when other popular fonts are being specifically requested. -->
<match target="pattern">
<test qual="any" name="family"><string>Apple Color Emoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Segoe UI Emoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Segoe UI Symbol</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Android Emoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Twitter Color Emoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Twemoji</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Twemoji Mozilla</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>TwemojiMozilla</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>EmojiTwo</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Emoji Two</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>EmojiSymbols</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

<match target="pattern">
<test qual="any" name="family"><string>Symbola</string></test>
<edit name="family" mode="assign" binding="same"><string>Noto Color Emoji</string></edit>
</match>

</fontconfig>

zsh 个性化

默认的 zsh 很丑,需要 oh-my-zsh 来 给它整容

网络上的教程是需要自己 curl 脚本安装,幸运的是我们有 archlinuxcn 仓库

首先确认一下自己的 localtime 是否正常。某张姓人士被我带的又趟了一遍坑后得到的教训

1
sudo timedatectl status

如果不对,去系统设置里面更改一下时区,等系统时间正常后进行下面的操作。

编辑 /etc/pacman.conf 并加入下面三行来添加仓库

1
2
3
# Arch Linux CN
[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch

还需到导入 GPG 的 key 才行

1
sudo pacman -S archlinuxcn-keyring

更新,并安装 oh-my-zsh-git 和 git

1
sudo pacman -Sy && sudo pacman -S oh-my-zsh-git git

使用 oh-my-zsh 的 zshrc 替换原来的 .zshrc

1
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc

如果你有重要的设置请注意保存

oh-my-zsh 默认的主题其实比较好看了,但是我更喜欢 amuse

编辑 ~/.zshrc,将 theme 改为 amuse

1
ZSH_THEME="amuse"

执行下面的命令看一看效果吧

1
source ~/.zshrc

zsh 插件

语法高亮

可以提示你敲的命令是否正确。根据官方安装方式

可能需要科学上网

1
sudo git clone https://github.com/zsh-users/zsh-syntax-highlighting.git /usr/share/oh-my-zsh/custom/plugins/zsh-syntax-highlighting

编辑 ~/.zshrc 在 plugin 里面添加进去

1
2
3
plugins=(
# other plugins
zsh-syntax-highlighting)

补全建议

以淡色字体显示,根据最近敲击的命令对命令进行建议,减少重复敲键盘次数

1
sudo git clone https://github.com/zsh-users/zsh-autosuggestions /usr/share/oh-my-zsh/custom/plugins/zsh-autosuggestions

添加进 .zshrc

1
2
3
plugins=(
# other plugins
zsh-autosuggestions)

最后效果图

KDE 部件

按照上面的流程下来的话就已经有比较多的小部件了,但是没有我想要的便利贴。安装下面的包获得便利贴和更多的部件

1
sudo pacman -S kwidgetsaddons kdeplasma-addons

还有一些监控系统系统信息的比如网络速度,内存使用情况等。

便利贴没有半透明的效果,稍微有点格格不入

spectacle 是 kde 的截图工具

1
sudo pacman -S spectacle

Variety

Variety 可以自动切换壁纸,选择一些你喜欢的照片,然后让它定时更换。作为老虚荣玩家 (泪目),当然是虚荣美美的英雄皮肤高清原图了

1
sudo pacman -S variety

更换鼠标

bibata-cursor-theme 包含多个可以更换的鼠标皮肤

1
sudo pacman -S bibata-cursor-theme

sddm 主题更换

默认的蓝色登录界面太丑了,KDE Store 的 Sugar Dark for SDDM 看起来非常的优雅,并且我将后面的壁纸换成了 梅兰妮 万圣节🎃皮肤,颜色非常搭。

想要从系统设置里直接更改 sddm 的登录界面,你需要安装 kcm 包

1
sudo pacman -S sddm-kcm

不过对于我来说让系统设置下太慢了,我还是手动下载安装的好

  1. 去 KDE Store 下载主题包
  2. 解压到 /usr/share/sddm/themes
1
sudo -zxvf sugar-dark.tar.gz -C  /usr/share/sddm/themes

如果你不想用默认的壁纸,准备一个 2400*1600 的 jpg 图片,替换掉 /usr/share/sddm/themes/suger-dark 下的Background.jpg

之后就可以在系统设置里面更改了。注销重新登录就可以看到效果了

grub 主题更换

我一直用的是 dracula 的主题 。他们的网站上还有很多用于其他应用的主题,强烈推荐。不过似乎 Libreoffice 的主题不能用,好像也没人修

  1. 下载文件压缩包并解压:地址
  2. 将文件夹放入 /usr/share/grub/themes/
  3. 修改 /etc/default/grub 中的主题,改为如下 (应该是在 47 行左右)
1
GRUB_THEME="/usr/share/grub/themes/dracula/theme.txt"
  1. 重新生成 grub 配置文件
1
sudo grub-mkconfig -o /boot/grub/grub.cfg

如果你觉得字体过小,则需要重新设置一下 grub 的分辨率。例如我的电脑 grub 推荐 2560x1600,但是我改小到 1280x960 字体才正常大小

  1. 查看支持的分辨率选项。在 grub 界面按 c 键进入命令模式,输入 videoinfo 查看可用分辨率。
  2. 挑一个小的,编辑 /etc/default/grub,并更改如下
1
2
# 分辨率改为你自己的,注意中间的 "x" 是小写字母 x
GRUB_GFXMODE="1280x960"
  1. 重新生成配置文件
1
sudo grub-mkconfig -o /boot/grub/grub.cfg
  1. 重启查看效果

dnsmasq 安装

1
sudo pacman -S dnsmasq

停用 systemd-resolved 并启用 dnsmasq

1
2
sudo systemctl disable --now systemd-resolved
sudo systemctl enable --now dnsmasq

NetworkManager 会修改 /etc/resolv.conf ,但是我们想要其里面的内容保持固定,因此需要额外配置 NetworkManager。编辑 /etc/NetworkManager/NetworkManager.conf 并添加以下内容:

1
2
3
[main]
dns=none
rc-manager=unmanaged

然后重启 NetworkManager

1
sudo systemctl restart NetworkManager

编辑 /etc/dnsmasq.conf,取消注释修改以下配置:

1
2
3
4
5
strict-order
listen-address=127.0.0.1
log-queries
log-facility=/var/log/dnsmasq/dnsmasq.log
conf-dir=/etc/dnsmasq.d

创建日志文件夹和配置文件文件夹

1
2
sudo mkdir -p /var/log/dnsmasq
sudo mkdir /etc/dnsmasq.d

Github 上有用于 dnsmasq特殊配置文件,我选用了其中三个:

  • adblock-for-dnsmasq.conf
  • bogus-nxdomain.china.conf
  • google.china.conf

将文件下载放置到目录 /etc/dnsmasq.d 下即可。

编辑 /etc/resolv.conf,修改 nameserver 地址如下:

1
2
3
nameserver      127.0.0.1
nameserver 8.8.8.8
nameserver 114.114.114.114

为了防止文件被修改,修改其权限

1
sudo chattr +i /etc/resolv.conf

最后重启 dnsmasq

1
sudo systemctl restart dnsmasq

安装 bind 包,里面有 dig 命令

1
sudo pacman -S bind

然后运行下列命令检验 dnsmasq 是否工作正常

1
dig www.baidu.com

只要 SERVER 显示为 127.0.0.1 即表明 dnsmasq 工作正常。

aria2 安装-1

1
sudo pacman -S aria2

aria2 只是一个命令行程序,github 上有许多好用的前端。我选择了 AriaNg,并决定安装 nginx 来将其部署在本地。

nginx 安装

1
sudo pacman -S nginx

然后编辑 /etc/nginx/nginx.conf,在第31行下添加如下配置

1
2
3
types_hash_max_size 2048;
types_hash_bucket_size 128;
include conf.d/*.conf;

include 配置使得 nginx 可以读取 /etc/nginx/conf.d 目录下的所有配置文件。编写 AriaNg 的配置文件。

1
2
3
4
5
6
7
server {
server_name aria2.syize.local; # 域名可以自由更换
listen 80;

root /usr/share/nginx/html/aria2-ng;
index index.html;
}

重启 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
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
## 文件保存设置 ##
# 下载目录。可使用绝对路径或相对路径, 默认: 当前启动位置
dir=/home/syize/Downloads
# 磁盘缓存, 0 为禁用缓存,默认:16M
# 磁盘缓存的作用是把下载的数据块临时存储在内存中,然后集中写入硬盘,以减少磁盘 I/O ,提升读写性能,延长硬盘寿命。
# 建议在有足够的内存空闲情况下适当增加,但不要超过剩余可用内存空间大小。
# 此项值仅决定上限,实际对内存的占用取决于网速(带宽)和设备性能等其它因素。
disk-cache=64M
# 文件预分配方式, 可选:none, prealloc, trunc, falloc, 默认:prealloc
# 预分配对于机械硬盘可有效降低磁盘碎片、提升磁盘读写性能、延长磁盘寿命。
# 机械硬盘使用 ext4(具有扩展支持),btrfs,xfs 或 NTFS(仅 MinGW 编译版本)等文件系统建议设置为 falloc
# 若无法下载,提示 fallocate failed.cause:Operation not supported 则说明不支持,请设置为 none
# prealloc 分配速度慢, trunc 无实际作用,不推荐使用。
# 固态硬盘不需要预分配,只建议设置为 none ,否则可能会导致双倍文件大小的数据写入,从而影响寿命。
file-allocation=none
# 文件预分配大小限制。小于此选项值大小的文件不预分配空间,单位 K 或 M,默认:5M
no-file-allocation-limit=64M
# 断点续传continue=true
# 始终尝试断点续传,无法断点续传则终止下载,默认:true
always-resume=false
# 不支持断点续传的 URI 数值,当 always-resume=false 时生效。# 达到这个数值从将头开始下载,值为 0 时所有 URI 不支持断点续传时才从头开始下载。
max-resume-failure-tries=0
# 获取服务器文件时间,默认:false
remote-time=true
## 进度保存设置 ##
# 从会话文件中读取下载任务
input-file=/home/syize/.config/aria2/aria2.session
# 会话文件保存路径# Aria2 退出时或指定的时间间隔会保存`错误/未完成`的下载任务到会话文件
save-session=/home/syize/.config/aria2/aria2.session
# 任务状态改变后保存会话的间隔时间(秒), 0 为仅在进程正常退出时保存, 默认:0
# 为了及时保存任务状态、防止任务丢失,此项值只建议设置为 1
save-session-interval=1
# 自动保存任务进度到控制文件(*.aria2)的间隔时间(秒),0 为仅在进程正常退出时保存,默认:60
# 此项值也会间接影响从内存中把缓存的数据写入磁盘的频率# 想降低磁盘 IOPS (每秒读写次数)则提高间隔时间
# 想在意外非正常退出时尽量保存更多的下载进度则降低间隔时间
# 非正常退出:进程崩溃、系统崩溃、SIGKILL 信号、设备断电等
auto-save-interval=20
# 强制保存,即使任务已完成也保存信息到会话文件, 默认:false
# 开启后会在任务完成后保留 .aria2 文件,文件被移除且任务存在的情况下重启后会重新下载。
# 关闭后已完成的任务列表会在重启后清空。
force-save=false
## 下载连接设置 ##
# 文件未找到重试次数,默认:0 (禁用)
# 重试时同时会记录重试次数,所以也需要设置 max-tries 这个选项
max-file-not-found=10
# 最大尝试次数,0 表示无限,默认:5
max-tries=0
# 重试等待时间(秒), 默认:0 (禁用)
retry-wait=10
# 连接超时时间(秒)。默认:60
connect-timeout=10
# 超时时间(秒)。默认:60
timeout=10
# 最大同时下载任务数, 运行时可修改, 默认:5
max-concurrent-downloads=5
# 单服务器最大连接线程数, 任务添加时可指定, 默认:1
# 最大值为 16 (增强版无限制), 且受限于单任务最大连接线程数(split)所设定的值。
max-connection-per-server=16
# 单任务最大连接线程数, 任务添加时可指定, 默认:5
split=64
# 文件最小分段大小, 添加时可指定, 取值范围 1M-1024M (增强版最小值为 1K), 默认:20M
# 比如此项值为 10M, 当文件为 20MB 会分成两段并使用两个来源下载, 文件为 15MB 则只使用一个来源下载。# 理论上值越小使用下载分段就越多,所能获得的实际线程数就越大,下载速度就越快,但受限于所下载文件服务器的策略。
min-split-size=4M
# HTTP/FTP 下载分片大小,所有分割都必须是此项值的倍数,最小值为 1M (增强版为 1K),默认:1M
piece-length=1M
# 允许分片大小变化。默认:false
# false:当分片大小与控制文件中的不同时将会中止下载# true:丢失部分下载进度继续下载
allow-piece-length-change=true
# 最低下载速度限制。当下载速度低于或等于此选项的值时关闭连接(增强版本为重连),此选项与 BT 下载无关。单位 K 或 M ,默认:0 (无限制)
lowest-speed-limit=0
# 全局最大下载速度限制, 运行时可修改, 默认:0 (无限制)
max-overall-download-limit=0
# 单任务下载速度限制, 默认:0 (无限制)
max-download-limit=0
# 禁用 IPv6, 默认:false
disable-ipv6=true
# GZip 支持,默认:false
http-accept-gzip=true
# URI 复用,默认: true
reuse-uri=false
# 禁用 netrc 支持,默认:false
no-netrc=true
# 允许覆盖,当相关控制文件(.aria2)不存在时从头开始重新下载。默认:false
allow-overwrite=false
# 文件自动重命名,此选项仅在 HTTP(S)/FTP 下载中有效。新文件名在名称之后扩展名之前加上一个点和一个数字(1..9999)。默认:true
auto-file-renaming=true
# 使用 UTF-8 处理 Content-Disposition ,默认:false
content-disposition-default-utf8=true
# 最低 TLS 版本,可选:TLSv1.1、TLSv1.2、TLSv1.3 默认:TLSv1.2
#min-tls-version=TLSv1.2
# prosy
http-proxy=http://127.0.0.1:7890
https-proxy=http://127.0.0.1:7890
## BT/PT 下载设置 ##
# BT 监听端口(TCP), 默认:6881-6999
# 直通外网的设备,比如 VPS ,务必配置防火墙和安全组策略允许此端口入站# 内网环境的设备,比如 NAS ,除了防火墙设置,还需在路由器设置外网端口转发到此端口
listen-port=51413
# DHT 网络与 UDP tracker 监听端口(UDP), 默认:6881-6999
# 因协议不同,可以与 BT 监听端口使用相同的端口,方便配置防火墙和端口转发策略。
dht-listen-port=51413
# 启用 IPv4 DHT 功能, PT 下载(私有种子)会自动禁用, 默认:true
enable-dht=true
# 启用 IPv6 DHT 功能, PT 下载(私有种子)会自动禁用,默认:false
# 在没有 IPv6 支持的环境开启可能会导致 DHT 功能异常
enable-dht6=true
# 指定 BT 和 DHT 网络中的 IP 地址# 使用场景:在家庭宽带没有公网 IP 的情况下可以把 BT 和 DHT 监听端口转发至具有公网 IP 的服务器,在此填写服务器的 IP ,可以提升 BT 下载速率。
#bt-external-ip=
# IPv4 DHT 文件路径,默认:$HOME/.aria2/dht.dat
dht-file-path=/home/syize/.config/aria2/dht.dat
# IPv6 DHT 文件路径,默认:$HOME/.aria2/dht6.dat
dht-file-path6=/home/syize/.config/aria2/dht6.dat
# IPv4 DHT 网络引导节点
dht-entry-point=dht.transmissionbt.com:6881
# IPv6 DHT 网络引导节点
dht-entry-point6=dht.transmissionbt.com:6881
# 本地节点发现, PT 下载(私有种子)会自动禁用 默认:false
bt-enable-lpd=true
# 指定用于本地节点发现的接口,可能的值:接口,IP地址# 如果未指定此选项,则选择默认接口。
#bt-lpd-interface=
# 启用节点交换, PT 下载(私有种子)会自动禁用, 默认:true
enable-peer-exchange=true
# BT 下载最大连接数(单任务),运行时可修改。0 为不限制,默认:55
# 理想情况下连接数越多下载越快,但在实际情况是只有少部分连接到的做种者上传速度快,其余的上传慢或者不上传。
# 如果不限制,当下载非常热门的种子或任务数非常多时可能会因连接数过多导致进程崩溃或网络阻塞。
# 进程崩溃:如果设备 CPU 性能一般,连接数过多导致 CPU 占用过高,因资源不足 Aria2 进程会强制被终结。
# 网络阻塞:在内网环境下,即使下载没有占满带宽也会导致其它设备无法正常上网。因远古低性能路由器的转发性能瓶颈导致。
bt-max-peers=128
# BT 下载期望速度值(单任务),运行时可修改。单位 K 或 M 。默认:50K
# BT 下载速度低于此选项值时会临时提高连接数来获得更快的下载速度,不过前提是有更多的做种者可供连接。
# 实测临时提高连接数没有上限,但不会像不做限制一样无限增加,会根据算法进行合理的动态调节。
bt-request-peer-speed-limit=10M
# 全局最大上传速度限制, 运行时可修改, 默认:0 (无限制)
# 设置过低可能影响 BT 下载速度
max-overall-upload-limit=2M
# 单任务上传速度限制, 默认:0 (无限制)
max-upload-limit=0
# 最小分享率。当种子的分享率达到此选项设置的值时停止做种, 0 为一直做种, 默认:1.0
# 强烈建议您将此选项设置为大于等于 1.0
seed-ratio=1.0
# 最小做种时间(分钟)。设置为 0 时将在 BT 任务下载完成后停止做种。
seed-time=0
# 做种前检查文件哈希, 默认:true
bt-hash-check-seed=true
# 继续之前的BT任务时, 无需再次校验, 默认:false
bt-seed-unverified=false
# BT tracker 服务器连接超时时间(秒)。默认:60
# 建立连接后,此选项无效,将使用 bt-tracker-timeout 选项的值
bt-tracker-connect-timeout=10
# BT tracker 服务器超时时间(秒)。默认:60
bt-tracker-timeout=10
# BT 服务器连接间隔时间(秒)。默认:0 (自动)
#bt-tracker-interval=0
# BT 下载优先下载文件开头或结尾
bt-prioritize-piece=head=32M,tail=32M
# 保存通过 WebUI(RPC) 上传的种子文件(.torrent),默认:true
# 所有涉及种子文件保存的选项都建议开启,不保存种子文件有任务丢失的风险。
# 通过 RPC 自定义临时下载目录可能不会保存种子文件。
rpc-save-upload-metadata=true
# 下载种子文件(.torrent)自动开始下载, 默认:true,可选:false|mem
# true:保存种子文件# false:仅下载种子文件# mem:将种子保存在内存中
follow-torrent=true
# 种子文件下载完后暂停任务,默认:false
# 在开启 follow-torrent 选项后下载种子文件或磁力会自动开始下载任务进行下载,而同时开启当此选项后会建立相关任务并暂停。
pause-metadata=false
# 保存磁力链接元数据为种子文件(.torrent), 默认:false
bt-save-metadata=true
# 加载已保存的元数据文件(.torrent),默认:false
bt-load-saved-metadata=true
# 删除 BT 下载任务中未选择文件,默认:false
bt-remove-unselected-file=true
# BT强制加密, 默认: false
# 启用后将拒绝旧的 BT 握手协议并仅使用混淆握手及加密。可以解决部分运营商对 BT 下载的封锁,且有一定的防版权投诉与迅雷吸血效果。
# 此选项相当于后面两个选项(bt-require-crypto=true, bt-min-crypto-level=arc4)的快捷开启方式,但不会修改这两个选项的值。
bt-force-encryption=true
# BT加密需求,默认:false
# 启用后拒绝与旧的 BitTorrent 握手协议(\19BitTorrent protocol)建立连接,始终使用混淆处理握手。
#bt-require-crypto=true
# BT最低加密等级,可选:plain(明文),arc4(加密),默认:plain
#bt-min-crypto-level=arc4
# 分离仅做种任务,默认:false
# 从正在下载的任务中排除已经下载完成且正在做种的任务,并开始等待列表中的下一个任务。
bt-detach-seed-only=true
## 客户端伪装 ##
# 自定义 User Agent
user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36 Edg/93.0.961.47
# BT 客户端伪装
# PT 下载需要保持 user-agent 和 peer-agent 两个参数一致
# 部分 PT 站对 Aria2 有特殊封禁机制,客户端伪装不一定有效,且有封禁账号的风险。
#user-agent=Deluge 1.3.15
peer-agent=Deluge 1.3.15
peer-id-prefix=-DE13F0-
## 执行额外命令 ##
# 下载停止后执行的命令
# 从 正在下载 到 删除、错误、完成 时触发。暂停被标记为未开始下载,故与此项无关。
on-download-stop=/home/syize/.config/aria2/delete.sh
# 下载完成后执行的命令# 此项未定义则执行 下载停止后执行的命令 (on-download-stop)
on-download-complete=/home/aria2/.aria2/clean.sh
# 下载错误后执行的命令# 此项未定义则执行 下载停止后执行的命令 (on-download-stop)
#on-download-error=
# 下载暂停后执行的命令
#on-download-pause=
# 下载开始后执行的命令
#on-download-start=
# BT 下载完成后执行的命令
#on-bt-download-complete=
## RPC 设置 ##
# 启用 JSON-RPC/XML-RPC 服务器, 默认:false
enable-rpc=true
# 接受所有远程请求, 默认:false
rpc-allow-origin-all=true
# 允许外部访问, 默认:false
rpc-listen-all=true
# RPC 监听端口, 默认:6800
rpc-listen-port=6800
# RPC 密钥
rpc-secret=XXXXXXXX
# RPC 最大请求大小
rpc-max-request-size=10M
# RPC 服务 SSL/TLS 加密, 默认:false
# 启用加密后必须使用 https 或者 wss 协议连接
# 不推荐开启,建议使用 web server 反向代理,比如 Nginx、Caddy ,灵活性更强。
#rpc-secure=false
# 在 RPC 服务中启用 SSL/TLS 加密时的证书文件(.pem/.crt)
#rpc-certificate=/root/.aria2/xxx.pem
# 在 RPC 服务中启用 SSL/TLS 加密时的私钥文件(.key)
#rpc-private-key=/root/.aria2/xxx.key
# 事件轮询方式, 可选:epoll, kqueue, port, poll, select, 不同系统默认值不同
#event-poll=select
## 高级选项 ##
# 启用异步 DNS 功能。默认:true
async-dns=true
# 指定异步 DNS 服务器列表,未指定则从 /etc/resolv.conf 中读取。
async-dns-server=127.0.0.1
# 指定单个网络接口,可能的值:接口,IP地址,主机名
# 如果接口具有多个 IP 地址,则建议指定 IP 地址。
# 已知指定网络接口会影响依赖本地 RPC 的连接的功能场景,即通过 localhost 和 127.0.0.1 无法与 Aria2 服务端进行讯通。
#interface=
# 指定多个网络接口,多个值之间使用逗号(,)分隔。
# 使用 interface 选项时会忽略此项。
#multiple-interface=
## 日志设置 ##
# 日志文件保存路径,忽略或设置为空为不保存,默认:不保存
#log=/var/log/aria2/aria2.log
# 日志级别,可选 debug, info, notice, warn, error 。默认:debug
log-level=notice
# 控制台日志级别,可选 debug, info, notice, warn, error ,默认:notice
console-log-level=notice
# 安静模式,禁止在控制台输出日志,默认:false
quiet=false
# 下载进度摘要输出间隔时间(秒),0 为禁止输出。默认:60
summary-interval=0
## 增强扩展设置(非官方) ##
# 仅适用于 myfreeer/aria2-build-msys2 (Windows) 和 P3TERX/Aria2-Pro-Core (GNU/Linux) 项目所构建的增强版本# 在服务器返回 HTTP 400 Bad Request 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-400=true
# 在服务器返回 HTTP 403 Forbidden 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-403=true
# 在服务器返回 HTTP 406 Not Acceptable 时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-406=true
# 在服务器返回未知状态码时重试,仅当 retry-wait > 0 时有效,默认 false
#retry-on-unknown=true
# 是否发送 Want-Digest HTTP 标头。默认:false (不发送)
# 部分网站会把此标头作为特征来检测和屏蔽 Aria2
#http-want-digest=false

然后编写 systemd 配置文件。创建目录 ~/.config/systemd/user,编写文件 ~/.config/systemd/user/aria2.service

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=aria2 service
After=network.target

[Service]
Type=simple
UMask=0022
ExecStart=/usr/bin/aria2c --conf-path=/home/syize/.config/aria2/aria2.conf
ExecStop=/bin/kill $MAINPID

[Install]
WantedBy=default.target

创建 aria2 的文件

1
2
3
touch ~/.config/aria2/aria2.session
touch ~/.config/aria2/dht.dat
touch ~/.config/aria2/dht6.dat

其启动服务,并打开 AriaNg 查看是否能够连接成功

请注意在 RPC 设置页面填入正确的密钥

1
systemctl --user start aria2

Author: Syize

Permalink: https://blog.syize.cn/2021/12/28/install-arch-and-kde/

本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Syizeのblog

Comments