Arch Linux 安装
获取安装映像
下载 archlinux-x86_64.iso 和 sha256sums.txt。
验证签名
建议使用前先验证所下载文件的签名,特别是从 HTTP 镜像源/非官方镜像仓库下载的文件,因为 HTTP 连接一般来说容易遭到拦截而提供恶意文件,而非官方镜像仓库可能会对镜像的文件进行恶意修改。验证签名也能及时发现文件损坏。
将 sha256sums.txt 放在与 archlinux-x86_64.iso 同一个目录下,然后在此目录运行以下命令:
Get-FileHash archlinux-x86_64.iso -Algorithm SHA256将输出结果中的 Hash 字段与 sha256sums.txt 中 archlinux-x86_64.iso 前的 sha256sum 字段对比,如果一样即安装镜像没有问题。
准备安装介质
Arch Linux 的 ISO 文件可以被制作成多种类型安装介质,如 U 盘、光盘和带有 PXE 的网络安装映像。请按照合适的文章与教程,使用 ISO 文件为自己准备安装介质。
Windows 上可以考虑使用 Rufus 制作安装介质。
启动到 live 环境
警告
Arch Linux 安装镜像不支持 UEFI 安全启动(Secure Boot)功能。如果要引导安装介质,需要禁用安全启动。如果需要,可在完成安装后重新配置。
选择从带有 Arch 安装文件的介质启动,通常是需要在计算机启动加电自检时快速按下某个热键。启动时的画面也可能会有提示,详情请参考自己的计算机的说明书或主板说明书。
当引导加载程序菜单出现时,选择 Arch Linux install medium 并按 Enter 进入安装环境。
您将会以 root 身份登录进入一个虚拟控制台,默认的 Shell 是 Zsh。
关于 archinstall 的提示
如果您觉得用命令行安装过于繁琐,可以试试官方的安装脚本 archinstall。
archinstall但不建议初学者用 archinstall 走捷径,因为手动安装 Arch Linux 本身就是 Arch Linux 教学实操中重要的一环,少了这个环节,会让初学者面对一些基础问题时束手无策,为自己和社区带来不必要的麻烦。
验证引导模式
要验证系统目前的引导模式,请检查 UEFI 固件位数:
cat /sys/firmware/efi/fw_platform_size- 如果命令结果为
64,则系统是以 UEFI 模式引导且使用 64 位 x64 UEFI。 - 如果命令结果为
32,则系统是以 UEFI 模式引导且使用 32 位 IA32 UEFI,虽然其受支持,但引导加载程序只能使用 systemd-boot 和 GRUB。 - 如果命令结果为
No such file or directory,则系统可能是以 BIOS 模式(或 CSM 模式,这两种模式通常出现在老旧的电脑或未经配置的虚拟机上)引导。 - 如果系统没有以您想要的模式(UEFI 或 BIOS)引导启动,请您参考自己的计算机或主板说明书。
ArchISO 连接到互联网
要在 Live 环境中配置网络连接,请遵循以下步骤:
确保系统已经列出并启用了网络接口,用
ip-link检查:baship link对于无线局域网(Wi-Fi)和无线广域网(WWAN),请确保网卡未被 rfkill 禁用。
连接到网络:
- 有线以太网——连接网线。
- WiFi——使用 iwctl 认证无线网络。
- 启动bash
iwctl - 连接bash
station wlan0 connect [你的WiFi名称] - 退出bash
exit
- 启动
- 移动宽带调制解调器(移动网卡) - 使用 mmcli 连接到移动网络。
配置网络连接:
- DHCP:对于有线以太网、无线局域网(WLAN)和无线广域网(WWAN)网络接口来说,动态 IP 地址和 DNS 服务器分配(由 systemd-networkd 和 systemd-resolved 提供功能)能够开箱即用。
- 静态 IP 地址:按照网络配置#静态 IP 地址进行操作。
用 ping 检查网络连接:
bashping ping.archlinux.org
警告
默认情况下,安装映像在启动时已经预先配置好并启用了 systemd-networkd、systemd-resolved、iwd 和 ModemManager。但在已经安装完成了的系统之中并非如此。
创建硬盘分区
查看当前分区情况
lsblk -pf查询硬盘详细情况
fdisk -l [硬盘,如 /dev/nvme0n1,具体请看上条命令的输出]单硬盘版
假设硬盘为 /dev/nvme0n1,分出 1GiB 当 boot 分区,剩余空间当 root 分区。
对硬盘进行分区
cfdisk /dev/nvme0n1如果是新硬盘的话会弹出选项,选
GPT。boot 分区
上下方向键选中空闲空间,左右方向键选择
New,输入1GB并回车,选择Type,选择EFI System。如果你的类型里没有
EFI System说明你的硬盘不是 GPT 分区表,可以选择Quit退出,运行fdisk [硬盘],输入g回车创建 GPT 分区表(会删除所有已经存在的分区),输入w并回车保存更改,并从头开始。root 分区
上下方向键选中空闲空间,选择
New,用掉所有剩余空间,类型Linux Filesystem不需要更改。选择
Write,输入yes并回车。选择
Quit退出。
格式化分区
mkfs.vfat -F 32 /dev/nvme0n1p1
mkfs.xfs /dev/nvme0n1p2挂载分区
mount /dev/nvme0n1p2 /mnt
mount -m /dev/nvme0n1p1 /mnt/boot多硬盘版
假设硬盘为 /dev/nvme0n1 和 /dev/nvme1n1,/dev/nvme0n1 分出 1GiB 当 boot 分区,两个硬盘所有剩余空间当 root 分区。
对硬盘进行分区
cfdisk /dev/nvme0n1如果是新硬盘的话会弹出选项,选
GPT。左右方向键选择
Delete并回车,删掉所有分区。boot 分区
上下方向键选择
Free Space,选择New,输入1GB并回车,选择Type,选择EFI System。如果你的类型里没有
EFI System说明你的硬盘不是 GPT 分区表,可以选择Quit退出,运行fdisk [硬盘],输入g回车创建 GPT 分区表(会删除所有已经存在的分区),输入w并回车保存更改,并从头开始。选择
Free Space,选择New,用掉所有剩余空间,类型Linux LVM。选择
Write,输入yes并回车。选择
Quit退出。
cfdisk /dev/nvme1n1- 如果是新硬盘的话会弹出选项,选
GPT。 - 左右方向键选择
Delete并回车,删掉所有分区。 - 选择
Free Space,选择New,用掉所有剩余空间,类型Linux LVM。 - 选择
Write,输入yes并回车。 - 选择
Quit退出。
创建 LVM
pvcreate /dev/nvme0n1p2 /dev/nvme1n1p1
vgcreate vg /dev/nvme0n1p2 /dev/nvme1n1p1
lvcreate -l 100%FREE -n lv vg格式化分区
mkfs.vfat -F 32 /dev/nvme0n1p1
mkfs.xfs /dev/mapper/vg-lv挂载分区
mount /dev/vg/lv /mnt
mount -m /dev/nvme0n1p1 /mnt/boot警告
请注意必须安装 lvm2 包并在 mkinitcpio.conf 的 HOOKS 里添加 lvm2,否则无法正常启动。稍后会提到具体操作。
ArchISO 包管理
配置镜像源
reflector -c China -p https --sort rate --completion-percent 95 --save /etc/pacman.d/mirrorlistPacman 配置
nano /etc/pacman.conf去掉 [multilib] 和 Color 前的井号
基础包安装
pacstrap -K /mnt base linux-zen linux-zen-headers linux-firmware amd-ucode nano xfsprogs sudo-rs base-devel git networkmanager bluez bluez-utils pipewire pipewire-pulse pipewire-jack lvm2 opensshbase、linux-zen、linux-zen-headers、linux-firmware是 Linux 内核和硬件包,其中 linux-zen 是一个相比官方内核性能更强的内核,不需要 linux-zen 可以将-zen删去。amd-ucode和intel-ucode是 CPU 微码,减小 CPU 错误率,安装哪个包取决于你是 AMD 还是 Intel CPU。nano是一个好用的 TUI 文本编辑器。xfsprogs是 XFS 文件系统的管理工具。sudo-rs是 sudo 的 rust 重写版,用来在普通用户下以 root 权限运行命令base-devel和git是编译程序需要用到的包。networkmanager是网络管理器。bluez和bluez-utils是蓝牙管理器。pipewire、pipewire-pulse、pipewire-jack是声音管理器。lvm2是 LVM 管理器,使用 LVM 必须安装。openssh是提供 SSH 的软件。
Arch-Chroot
生成挂载信息
genfstab -U /mnt > /mnt/etc/fstab进入 Arch-Chroot
arch-chroot /mnt同步时间
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
hwclock -w
timedatectl set-ntp true连接到互联网
启用网络管理器、蓝牙管理器、OpenSSH 服务(会开机自启)
systemctl enable NetworkManager.service bluetooth.service sshd.service再次连接网络
包管理
nano /etc/pacman.conf去掉 [multilib] 和 Color 前的井号
[archlinuxcn]
Server = https://repo.archlinuxcn.org/$arch同步软件包并安装 archlinuxcn-keyring
pacman -Syu archlinuxcn-keyring本地化
安装字体
pacman -S noto-fonts noto-fonts-cjk noto-fonts-emoji ttf-jetbrains-mono ttf-jetbrains-mono-nerd配置语言
nano /etc/locale.gen去掉 zh_CN.UTF-8 和 en_US.UTF-8 前面的井号
locale-gen
echo LANG=zh_CN.UTF-8 > /etc/locale.conf
echo 'KEYMAP=us' > /etc/vconsole.conf配置计算机名称
echo [计算机名称(不能包含中文)] > /etc/hostname用户
设置 root 用户密码
passwd创建普通用户
useradd -m -G wheel [用户名]
passwd [用户名]sudo
EDITOR=nano visudo去掉 %wheel ALL=(ALL:ALL) ALL 前的井号。
如果去掉 %wheel ALL=(ALL:ALL) NOPASSWD: ALL 前的井号,运行 sudo 不需要输入密码。
引导
单系统用 Systemd-Boot,它是最轻量的 UEFI 引导程序。
多系统用 rEFInd,它可以自动检测 /boot 下的内核并提供图形化选择界面,支持手动添加引导条目以传递内核参数。
Systemd-Boot
生成 Systemd-Boot
bootctl install --path=/boot
mkdir -p /boot/loader/entries
nano /boot/loader/loader.conf添加以下内容
default arch.conf
timeout 0
console-mode max
editor no配置引导选项
nano /boot/loader/entries/arch.conf添加以下内容
title Arch Linux
linux /vmlinuz-linux
initrd /[amd-ucode 或 intel-ucode].img
initrd /initramfs-linux.img
options root=[root分区(单硬盘填 /dev/nvme0n1p2,多硬盘填 /dev/vg/lv)] rw quiet nvidia-drm.modeset=1rw标记分区可读写,必须加。quiet可以隐藏内核输出。- 使用 NVIDIA 独显且在 Wayland 上时加
nvidia-drm.modeset=1。
rEFInd
安装 rEFInd
pacman -S refind-efi
refind-install如果 refind-install 无法自动安装,可以运行下面命令。
cp -r /usr/share/refind /boot/EFI/refind
mkdir -p /boot/EFI/BOOT
cp /boot/EFI/refind/refind_x64.efi /boot/EFI/BOOT/BOOTX64.EFI危险
使用 NVIDIA 独显且在 Wayland 上时需要开启 NVIDIA DRM。
nano /boot/EFI/refind/refind_linux.conf在 Boot with standard options 最后添加 nvidia-drm.modeset=1。
退出 Arch ISO
输入 exit 退出到 Chroot 的第一层,也就是最开始的 root 用户。
警告
如果使用 lvm2,请按以下步骤操作。
nano /etc/mkinitcpio.conf在 HOOKS 里在 filesystems 之前添加 lvm2。
mkinitcpio -P
exit
reboot你将会重启到 Arch Linux 实体机。
配置 AUR
从现在开始需要使用到普通用户,命令前 # 代表 root 用户,$ 代表普通用户。
你通常不应该直接使用 root 用户,在普通用户下可以在命令前加上 sudo 来以 root权限运行命令,如 sudo pacman -S base。
之后的教程默认为普通用户,需要用到 root 权限的命令会在前面加上 sudo。
GitHub 下载加速
加速脚本
# pacman -S axel mold pigz pbzip2 lbzip2
# su [用户名]
$ nano ~/makepkg_proxy添加以下内容
#!/bin/sh
domain=$(echo "$2" | cut -f3 -d'/')
case "$domain" in
"github.com"|"raw.githubusercontent.com")
url="https://github.dpik.top/$2"
;;
*)
url=$2
;;
esac
/usr/bin/axel -n 10 -a -o "$1" "$url"https://github.dpik.top 是一个加速 GitHub 下载的网站,更多加速下载网站见此网站。 10是多线程下载的线程数。
$ chmod +x ~/makepkg_proxy使脚本可运行。
配置 MakePKG
$ sudo nano /etc/makepkg.conf修改下面的内容
DLAGENTS=('file::/usr/bin/curl -gqC - -o %o %u'
'ftp::/usr/bin/axel -n 15 -a -o %o %u'
'http::/usr/bin/axel -n 15 -a -o %o %u'
'https::/home/[用户名]/makepkg_proxy %o %u'
'rsync::/usr/bin/rsync --no-motd -z %u %o'
'scp::/usr/bin/scp -C %u %o')
LDFLAGS="... -fuse-ld=mold"
MAKEFLAGS="-j4"
OPTIONS=(... !debug !lto)
COMPRESSGZ=(pigz -c -f -n)
COMPRESSBZ2=(lbzip2 -c -f)
COMPRESSZST=(zstd -c -T0 --auto-threads=logical -)
COMPRESSLZ=(plzip -c -f)
PKGEXT='.pkg.tar'配置 Cargo
sudo pacman -S rust
$ mkdir ~/.cargo
$ nano ~/.cargo/config.toml添加以下内容
[source.crates-io]
replace-with = 'mirror'
[source.mirror]
registry = "sparse+https://mirrors.aliyun.com/crates.io-index/"安装 Paru
$ git clone https://aur.archlinux.org/paru.git ~/paru
$ cd ~/paru
$ makepkg -si
$ paru -S plzip终端
Fish Shell 和 Zsh Shell 是两个不同的终端。Fish Shell 更轻量,功能多,但不兼容 POSIX;Zsh Shell 兼容 POSIX。可以同时安装。
Fish
安装 Fish 和插件管理器 Fisher
sudo pacman -S fish
mkdir -p ~/.config/fish/{plugins,conf.d}
nano ~/.config/fish/conf.d/fisher.fish添加以下内容
set -g fisher_path ~/.config/fish/plugins
set fish_complete_path $fish_complete_path[1] $fisher_path/completions $fish_complete_path[2..]
set fish_function_path $fish_function_path[1] $fisher_path/functions $fish_function_path[2..]
for file in $fisher_path/conf.d/*.fish
source $file 2>/dev/null
end安装 Tide
fish
curl -sL https://github.dpik.top/https://raw.githubusercontent.com/jorgebucaran/fisher/main/functions/fisher.fish | source && fisher install jorgebucaran/fisher
fisher install IlanCosman/tide@v6将 Fish 用作交互式 Shell
nano ~/.bashrc追加以下内容
if [[ $(ps --no-header --pid=$PPID --format=comm) != "fish" && -z ${BASH_EXECUTION_STRING} && ${SHLVL} == 1 ]]
then
shopt -q login_shell && LOGIN_OPTION='--login' || LOGIN_OPTION=''
exec fish $LOGIN_OPTION
fiZsh + p10k
安装 Zsh
sudo pacman -S zsh zsh-autosuggestions zsh-syntax-highlighting zsh-completions autojump
chsh -s /usr/bin/zsh
vim ~/.zshrc添加以下内容
source /usr/share/zsh/plugins/zsh-autosuggestions/zsh-autosuggestions.zsh
source /usr/share/autojump/autojump.zsh
source /usr/share/zsh/plugins/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh警告
你可能需要将在 ~/.bash_profile 所做的配置复制到 ~/.zsh_profile,将在 ~/.bashrc 所做的配置复制到 ~/.zshrc。
安装 p10k
curl -fsSL https://github.dpik.top/https://raw.githubusercontent.com/zimfw/install/master/install.zsh | zsh
echo "zmodule romkatv/powerlevel10k" >> ~/.zimrc
zimfw install因为 Zim 框架是从 GitHub 下载插件的,所以速度极慢,多等多试几次就好,或者挂梯子。
电源管理
sudo pacman -S tlp acpi
sudo systemctl enable --now tlp fstrim.timer笔记本电池充电阈值
sudo nano /etc/tlp.conf修改以下内容
START_CHARGE_THRESH_BAT0=60
STOP_CHARGE_THRESH_BAT0=80笔记本合盖不睡眠
sudo nano /etc/systemd/logind.conf修改以下内容
HandleLidSwitch=ignore
HandleLidSwitchExternalPower=ignore
LidSwitchIgnoreInhibited=yesZram内存压缩与 Swappiness 策略优化
Zram 在内存中创建一个压缩块设备作为 Swap 使用。由于 RAM 的速度远快于磁盘,且 Zstd 压缩效率高,这能显著提升系统响应速度,避免系统在内存压力大时卡死。
Zram: Compressed RAM-based block devices
通用配置原则:
- Zram 大小:建议设为物理内存的 50% (
zram-fraction = 0.5)。- 小内存设备 (<16GB):可激进设为 100% (1.0) 以防止内存耗尽。
- 大内存设备 (≥32GB):50% (0.5) 已绰绰有余,既能提供巨大的交换空间,又保留了足够的物理内存安全红线。
- Swappiness:配合 Zram 时,建议保持默认 60 或更高(如 100)。这能让系统积极利用 Zram 压缩冷数据,腾出物理内存给文件缓存。切勿在使用 Zram 时将其设为 10。
1. 安装与配置 Zram 安装 zram-generator
sudo pacman -S zram-generator
sudo nano /etc/systemd/zram-generator.conf添加以下内容(注意:可以解除 4GB 默认限制):
[zram0]
# 压缩算法,zstd 是性能和压缩率的最佳平衡
compression-algorithm = zstd
# Zram 大小:设置为物理内存的百分之多少除以 100
zram-fraction = 0.5
# 解除默认的 4096MB (4GB) 限制,否则大内存机器只会分到 4G
max-zram-size = none
# 优先级,确保比磁盘 Swap 高(如果有的话)
swap-priority = 100启动 Zram
sudo systemctl daemon-reload
sudo systemctl start dev-zram0.swap验证安装
zramctl预期输出示例(DISKSIZE 应接近你的物理内存大小,如 64G)
# NAME ALGORITHM DISKSIZE DATA COMPR TOTAL STREAMS MOUNTPOINT
# /dev/zram0 zstd 32G 4K 64B 20K 16 [SWAP]如果修改了配置文件(如调整大小)想立即生效且不重启电脑,建议按照以下“彻底重置”步骤操作:
sudo systemctl stop dev-zram0.swap
sudo systemctl stop systemd-zram-setup@zram0.service
# 如果下面的命令提示模块在使用,请先执行 sudo swapoff /dev/zram0,再执行此命令
sudo modprobe -r zram
sudo systemctl daemon-reload
sudo systemctl start dev-zram0.swap2. 调整 Swappiness(确保 Zram 被有效利用)
查看当前值(默认通常为 60)
cat /proc/sys/vm/swappiness确保其不为 10。如果需要强制指定为 60 或更高(如 100)
sudo nano /etc/sysctl.d/99-swappiness.conf添加以下内容
# Zram 专用优化:保持积极的换页策略
vm.swappiness = 60
# 可选:如果希望系统更激进地利用 Zram,可设为 100
# vm.swappiness = 100应用配置
sudo sysctl --system