用这么久 Arch 了,但是却很少写 Arch 相关的博客……
最近常需要在虚拟机上装 Arch,所以把常用工具及配置整理在这儿,省得每次 pacstrap
时都要想半天咱需要装什么……
装系统
Arch Wiki 的 Installation Guide 在使用 pacstrap
装系统时只写了最基础的软件包 base
, linux
和 linux-firmware
,可以在这一步补充亿些常用的软件。
pacstrap -K /mnt base linux linux-firmware \
base-devel gcc grub amd-ucode \
zsh zsh-syntax-highlighting zsh-autosuggestions \
vim neovim git openbsd-netcat \
sudo man-db htop wget \
neofetch
进 chroot 后编辑 /etc/pacman.conf
,添加以下配置,启用 Arch Linux CN。
# /etc/pacman.conf
[archlinuxcn]
# Server = https://repo.archlinuxcn.org/$arch
Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch
之后安装 yay
:
sudo pacman -Syy && sudo pacman -S archlinuxcn-keyring yay
如果电脑上安装了其他系统的话,需要额外安装 os-prober
,让 GRUB 在生成配置文件时搜索安装了其他系统的磁盘。
sudo pacman -S os-prober
如果是为 QEMU KVM 虚拟机装系统的话,在执行 grub-install
配置 UEFI 启动引导时记得加一个 --removable
参数。
sudo grub-install --target=x86_64-efi --efi-directory=/boot --bootloader-id=GRUB --removable
sudo grub-mkconfig -o /boot/grub.cfg
如果不装其他网络工具,只使用 systemd-networkd
的话,需要创建一份默认的配置文件使用 DHCP,否则连不上网。
# /etc/systemd/network/10-default.network
[Match]
Name=enp*
[Network]
DHCP=yes
如果需要配置静态网络地址:
# /etc/systemd/network/10-static.network
[Match]
Name=eth0
[Network]
Address=10.128.0.100/16
Gateway=10.128.0.1
DNS=10.128.0.1
并启用 systemd-networkd
Systemd Service:
sudo systemctl enable systemd-networkd
基本上到这里就可以愉快的 reboot
了,一个精简的系统所需要的软件就基本装好了。
常用命令行工具
如果只作为服务器 / 不包含图形的虚拟机使用的话,装这些咱常用软件,这部分因人而异,仅供参考。
sudo pacman -S go \
kubectl helm \
docker docker-buildx \
privoxy \
proxychains \
wireguard-tools \
axel aria2 \
ffmpeg \
jq go-yq \
jdk8-openjdk \
lm_sensors \
net-tools traceroute \
nodejs npm \
python3 python-pip \
btrfs-progs \
bind \
ethtool \
bc \
age
# golangci-lint
yay -S golangci-lint-bin \
krew-bin
# 装完 Docker 后把普通用户添加到 docker group 中
sudo usermod -aG docker $USER
创建 Docker Daemon 的配置文件 /etc/docker/daemon.json
,设定国内的 Mirror,这里用的是南京大学的 Docker Mirror:
{
"insecure-registries" : [
"127.0.0.1:5000"
],
"registry-mirrors": [
"https://docker.nju.edu.cn/"
]
}
如果需要跑虚拟机,需要装 QEMU 和 libvirt
相关的组件(咱用 virsh
管理虚拟机,不手搓 qemu 指令):
sudo pacman -S qemu-full libvirt
K3s / RKE2 Server
在 Arch Linux 上安装了 K3s 或 RKE2,关机时会卡在 a stop is running for libcontainer containerd...
一分多钟……
参考 这个 Issue,创建一个 /etc/systemd/system/shutdown-k3s.service
Systemd 文件。
[Unit]
Description=Kill containerd-shims on shutdown
DefaultDependencies=false
Before=shutdown.target umount.target
[Service]
ExecStart=/usr/local/bin/k3s-killall.sh
Type=oneshot
[Install]
WantedBy=shutdown.target
之后启用 shutdown-k3s.service
,在关机时 Kill 掉 K3s。
sudo systemctl daemon-reload
sudo systemctl enable shutdown-k3s.service
WireGuard Client
如果 Arch Linux 还配置了 WireGuard 客户端,而这台 Arch Linux Server 被放在了家里,只能通过有公网 IP 的 WireGuard 服务器连接进去,这时尽管设置了 WireGuard 的 persistent keepalive
,但在运营商更换了你家的公网 IP 后,还是会碰到无法自动连接回去的情况,这时可以用咱的 这个简单粗暴的脚本,在 WireGuard 断连一段时间后,自动重启接口。
图形界面
显卡驱动:
# AMD
sudo pacman -S xf86-video-amdgpu
# NVIDIA
sudo pacman -S nvidia
X11/Wayland 这些相关组件会随着桌面环境一起安装,所以只需要装桌面环境即可,这里就不需要你额外装 X 了。
# 咱用 GNOME
sudo pacman -S gnome
# 通常不直接装 gnome-extra,而是从里面选咱需要的
sudo pacman -S gnome-tweaks
# GNOME 系统使用的 NetworkManager 需要额外安装并手动启用,否则无法联网
sudo pacman -S networkmanager
sudo systemctl enable --now NetworkManager
常用的 GUI 软件
装好图形界面并顺利跑起来之后,就可以装常用的桌面软件了,下面这些是部分可能用到的软件,这些因人而异,仅供参考。
sudo pacman -S vlc \
virt-manager \
ttf-monaco \
noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-dejavu \
ibus ibus-rime \
firefox \
emacs
在 AUR 中安装的软件:
yay -S google-chrome \
visual-studio-code-bin
启用 Multilib
启用 Multilib 以安装那些 32 位的软件,例如 Steam。
# /etc/pacman.conf
[multilib]
Include = /etc/pacman.d/mirrorlist
之后安装 Steam。
sudo pacman -S steam
如果需要加速 Steam 游戏,可以安装 uuplugin-bin,把电脑伪装成 Steam Deck,酱紫路由器有 UU 加速器插件的话就能给 Steam 加速。
yay -S uuplugin-bin
如果要运行 Windows 游戏,还要安装 Proton。
yay -S proton
音乐
netease-cloud-music
这个包已经很久没更新了,现在很多功能用不了,除了这个还有一些基于 GTK4 写的网易云音乐客户端也能用。
yay -S netease-cloud-music # 网易云音乐
yay -S cider-bin # Apple Music
流程图
Draw.io 这个工具画流程图很好用,而且支持 Linux,可以直接从 Arch Linux CN 安装。
sudo pacman -S drawio-desktop-bin
iPhone
如果需要挂载 iPhone 手机(安分守己)到电脑上,需要安装这些软件。
sudo pacman -Sy ifuse usbmuxd libplist libimobiledevice
之后挂载 iPhone 的数据到某个文件夹下,就可以把手机的照片通过数据线拷贝到电脑上了。
mkdir -p iPhone
ifuse ~/iPhone
未完待续,如果还想到了别的再补充到这儿。