最近内存涨价涨的疯狂,连带着笔记本价格也水涨船高。再买新的肯定不值得,但我目前正在使用的电脑又太沉不方便携带,于是把目光投眼于我爸的老电脑上。
跑 Windows11 肯定是算了,虽然电脑还算是现代,但我没必要忍受卡顿,于是 Linux 自然成了首选。
至于为什么是 Arch,因为我离不开 Aur.
电脑配置
电脑是 HP Envy 13-ad1xx,是 2017 年的电脑(哇距离 2017 年都快 10 年了),配置如下:
- CPU: Intel I7-8550U
- GPU: Intel Graphic 620 / Nvidia MX150
- RAM: 8GB DDR3
- SSD: KingSton SA2000M8500G
看到 Nvidia 就感觉麻烦了,哎。FUCK YOU, NVIDIA!
关于网络问题
可以使一台 Windows 系统的,连接网线的,拥有无线网卡的,运行着 TUN 模式代理的设备充当软路由。
首先,以管理员模式启动代理软件,开启 TUN 模式。
之后,在设置中开启电脑热点。
接着,使用快捷键Win+R,输入ncpa.cpl打开网卡列表:

双击打开 TUN 模式的网卡属性,按如下流程操作:

其它设备在连接网络时选择热点即可。
可在其它设备上使用:
curl -I www.google.com检验是否成功,若返回 200 即为成功。
安装 Arch Linux
进入 Live CD 环境
先下载镜像。镜像可以在镜像源下载,这里查看。
如选择阿里云1该链接为本文撰写日期(2026.06.28)的最新镜像,时效性强,切忌盲目使用,如下图所示,选择archlinux-2026.06.01-x86_64.iso下载:

接着烧录启动盘,我习惯用Rufus,不过也有人用Ventory,这个随意。
进入需要安装的电脑的 BIOS,关闭安全启动,同时清除安全启动金钥
上电启动(记得进 BIOS 关掉安全启动)。
启动完成后大致如图所示:

连接网络
接了网线应该直接就能用。连接到无线局域网参考以下步骤。
使用iwctl工具,在 shell 中输入以下内容:
iwctl # 进入 iwctl 命令行
[iwd]# device list # 显示所有 Wifi 设备
[iwd]# station <适配器名称> scan # 扫描网络(不会有输出)
[iwd]# station <适配器名称> get-networks # 显示所有扫描到的网络
[iwd]# station <适配器名称> connect <SSID> # 连接网络
[iwd]# exit # 退出可尝试ping baidu.com查看是否连接到互联网。
ssh 连接
安装过程中会有很多地方需要输入命令,手输肯定不方便,能用 ssh 的话就能复制粘贴了
在已经启动 Live CD 的电脑上,使用ip addr查看 ip 地址。
如下图,注意选择正确的无线网络适配器下的内网 ip(这里是wlan0下的192.168.1.243):

然后,使用passwd设置 root 密码。
在连接到同一局域网的电脑中,使用ssh root@<获取到的ip地址>进行 ssh 连接。
如图为连接成功:

切换镜像
编辑/etc/pacman.d/mirrorlist:
mv /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.bak
nano /etc/pacman.d/mirrorlist注意这里的 mirrorlist 会被复制到安装好的系统里面,需要仔细斟酌。
官方镜像列表在这里
最后我配出来是这样:
# HTTPS
# University of Science and Technology of China
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
# Tsinghua University
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
# Aliyun
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch
# HTTP
# University of Science and Technology of China
Server = http://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
# Tsinghua University
Server = http://mirrors.tuna.tsinghua.edu.cn/archlinux/$repo/os/$arch
# Aliyun
Server = http://mirrors.aliyun.com/archlinux/$repo/os/$arch接着pacman -Syy更新。
磁盘分区
我习惯 cfdisk,别的也行,但这个我顺手。
因为有 UKI 的需求,把 boot 分区分得大一些。
最后分区表如下:
lsblk /dev/nvme0n1
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 465.8G 0 disk
├─nvme0n1p1 259:3 0 1G 0 part
└─nvme0n1p2 259:4 0 464.8G 0 part接着创建 LUKS 加密卷与 BtrFS 子卷。
对刚分出的大分区加密:
cryptsetup luksFormat /dev/nvme0n1p2记住硬盘密码就好。
注意Are you sure? (Type 'yes' in capital letters):,输入YES,全大写(capital letters)。
接下来将加密分区解密,并映射为一个名为 cryptroot 的虚拟设备:
cryptsetup open /dev/nvme0n1p2 cryptroot解密后的设备路径是/dev/mapper/cryptroot,向这个加密通道内部写入BtrFS文件系统:
mkfs.btrfs /dev/mapper/cryptroot接下来挂载它,并创建需要的子卷就好,我这里是这样:
# 压缩算法随意选择
mount --mkdir /dev/mapper/cryptroot -o compress=zstd /tmp/btrfs-full
# 暂时挂载到 /mnt
mount /dev/mapper/cryptroot /mnt
# 创建标准子卷
btrfs subvolume create /tmp/btrfs-full/@
btrfs subvolume create /tmp/btrfs-full/@home
btrfs subvolume create /tmp/btrfs-full/@var-log
btrfs subvolume create /tmp/btrfs-full/@var-cache
btrfs subvolume create /tmp/btrfs-full/@var-tmp
btrfs subvolume create /tmp/btrfs-full/@swap
# 为部分不需要写时复制的子卷设置相关属性
chattr +C /tmp/btrfs-full/@swap
chattr +C /tmp/btrfs-full/@var-cache
chattr +C /tmp/btrfs-full/@var-log
# 卸载,为了之后按照最终布局重新挂载
umount /tmp/btrfs-full然后挂载子卷:
# 注意这里的 compress 和上面选择的压缩算法一致
mount --mkdir /dev/mapper/cryptroot -o compress=zstd,space_cache=v2,noatime,subvol=@ /mnt
mount --mkdir /dev/mapper/cryptroot -o compress=zstd,space_cache=v2,noatime,subvol=@home /mnt/home
mount --mkdir /dev/mapper/cryptroot -o compress=zstd,space_cache=v2,noatime,subvol=@var-log /mnt/var/log
mount --mkdir /dev/mapper/cryptroot -o compress=zstd,space_cache=v2,noatime,subvol=@var-cache /mnt/var/cache
mount --mkdir /dev/mapper/cryptroot -o compress=zstd,space_cache=v2,noatime,subvol=@var-tmp /mnt/var/tmp
mount --mkdir /dev/mapper/cryptroot -o noatime,subvol=@swap /mnt/swap
# 创建 swapfile 并启用
btrfs fi mkswapfile /mnt/swap/swapfile --uuid clear --size 16G
swapon /mnt/swap/swapfile
# 格式化并挂载 EFI 分区
mkfs.vfat -F 32 /dev/nvme0n1p1
mount --mkdir /dev/nvme0n1p1 /mnt/boot安装软件包
使用pacstrap安装必须的软件包,我这里是这些:
pacstrap -K /mnt base base-devel linux linux-firmware btrfs-progs intel-ucode networkmanager nano neovim man-pages man-db texinfo sbctl openssh写入磁盘分区配置
使用genfstab进行生成即可:
genfstab -U /mnt > /mnt/etc/fstab进入 chroot 环境
如下:
arch-chroot /mnt时间同步
设置时间和时区:
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime启用 ntp(这里用systemd-timesyncd)
先进行配置,编辑/etc/systemd/timesyncd.conf:
取消NTP和FallbackNTP的注释,并配置NTP为喜欢的 ntp 服务,用空格区分(我这里是0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org)
接着:
systemctl enable --now systemd-timesyncd.service
timedatectl set-ntp true验证:
date应当输出本地时间。
最后生成/etc/adjtime:
hwclock --systohc区域和本地化设置
编辑/etc/locale.gen,取消需要地区的注释。于我而言,取消en_US.UTF-8 UTF-8、en_SG.UTF-8 UTF-8和zh_CN.UTF-8 UTF-8三行。
然后执行locale-gen以生成 locale 信息。
创建/etc/locale.conf文件,并编辑设定LANG变量:
LANG=en_SG.UTF-8使用en_SG以避免英式单位。
创建/etc/vconsole.conf确定键盘布局:
KEYMAP=us网络配置
设置主机名即可。
编辑/etc/hostname:
<主机名>创建 initramfs
编辑/etc/mkinitcpio.conf,在HOOKS=(...)这一行的括号里的filesystem前添加sd-encrypt
重新生成内核镜像:
mkinitcpio -P配置启动引导程序与 UKI
这里用systemd-boot,使用以下命令来安装:
bootctl install忽略警告,这个没有影响。
获取加密主分区的 UUID:
blkid -s UUID -o value /dev/nvme0n1p2创建并编辑/etc/kernel/cmdline:
rd.luks.name=<你的LUKS分区UUID>=cryptroot root=/dev/mapper/cryptroot rootflags=subvol=@ rw quiet编辑/etc/mkinitcpio.d/linux.preset,改成这样:
ALL_config="/etc/mkinitcpio.conf"
ALL_kver="/boot/vmlinuz-linux"
#ALL_kerneldest="/boot/vmlinuz-linux"
#PRESETS=('default')
PRESETS=('default' 'fallback')
default_config="/etc/mkinitcpio.conf"
#default_image="/boot/initramfs-linux.img"
default_uki="/boot/EFI/Linux/arch-linux.efi"
#default_options="--splash /usr/share/systemd/bootctl/splash-arch.bmp"
fallback_config="/etc/mkinitcpio.conf"
#fallback_image="/boot/initramfs-linux-fallback.img"
fallback_uki="/boot/EFI/Linux/arch-linux-fallback.efi"
#fallback_options="-S autodetect"创建对应的存放目录:
mkdir -p /boot/EFI/Linux检查当前安全启动状态:
sbctl status
Installed: ✗ sbctl is not installed
Setup Mode: ✗ Enabled
Secure Boot: ✗ Disabled
Vendor Keys: none若在开始安装前清除了安全启动金钥,则Setup Mode应为Enabled。若不为,则重启至 BIOS 清除金钥后再返回 Live CD 环境中,重新解密、挂载磁盘后进入 chroot 环境。
接着生成自定义加密密钥、将密钥注册到主板 BIOS 中:
sbctl create-keys
sbctl enroll-keys -m再次查看 status,发现应如下:
Installed: ✓ sbctl is installed
Owner GUID: d6f24875-6a21-4500-aed4-9c7b211fe340
Setup Mode: ✓ Disabled
Secure Boot: ✗ Disabled
Vendor Keys: microsoft接着生成 UKI 文件:
mkinitcpio -P签名systemd-boot自身的引导程序与vmlinuz-linux:
sbctl sign -s /boot/EFI/systemd/systemd-bootx64.efi
sbctl sign -s /boot/EFI/BOOT/BOOTX64.EFI检查是否全部被签名:
sbctl verify
Verifying file database and EFI images in /boot...
✓ /boot/vmlinuz-linux is signed
✓ /boot/EFI/BOOT/BOOTX64.EFI is signed
✓ /boot/EFI/systemd/systemd-bootx64.efi is signed
✓ /boot/EFI/Linux/arch-linux-fallback.efi is signed
✓ /boot/EFI/Linux/arch-linux.efi is signed全部被签名即为成功。
设置 root 密码、创建新用户
设置 root 密码:
passwd创建新用户:
useradd -G wheel -m <用户名>
passwd <用户名>设置wheel用户组权限:
export EDITOR=nano
visudo删除%wheel ALL=(ALL:ALL) ALL前的注释符号。
进入真机环境
先退出 chroot 环境:
exit然后卸载磁盘:
swapoff /mnt/swap/swapfile
umount -R /mnt重启计算机至 BIOS,打开安全启动。
重新启动后,设备应当会要求输入磁盘密码,输入后即可进入正常的 tty 界面。
配置 TPM2
systemd-cryptenroll --tpm2-device=auto --tpm2-pcrs=0+7 /dev/nvme0n1p2会要求输入磁盘密码,输入后TPM2即配置完成。
此后开机时应不再要求输入磁盘密码。
安装 Nvidia 驱动
连接网络
打开 Network Manager:
systemctl enable --now NetworkManager连接网络:
nmcli device wifi connect "<SSID>" password "<WIFI密码>"还想使用 ssh 连接的话,打开 sshd:
systemctl enable --now sshd注意 ssh 默认不允许登入 root 账号,请登入刚刚设置的其他账号。
如果真机环境的局域网 ip 与 Live CD 下相同,可能由于known_hosts中保存的ssh_key与实际不一致而产生错误无法登入 ssh,这时修改~/.ssh/known_hosts删掉即可。
添加 32 位库、ArchLinuxCN
编辑/etc/pacman.conf:
删除multilib配置前的注释符号,并在最底部添加:
[archlinuxcn]
Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch更新数据库并安装archlinuxcn-keyring:
pacman -Sy archlinuxcn-keyring更新系统并安装镜像仓库列表;
pacman -Su archlinuxcn-mirrorlist-git编辑/etc/pacman.conf,将刚刚添加的Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch替换为Include = /etc/pacman.d/archlinuxcn-mirrorlist。
编辑/etc/pacman.d/archlinuxcn-mirrorlist,去除任意数量的想要使用的站点前面的注释即可。
安装 AUR 助手
ArchLinuxCN 源里面有paru,直接安装即可:
pacman -S paru安装驱动
Intel 这边相对省心一些:
sudo pacman -S mesa lib32-mesa vulkan-intel lib32-vulkan-intel不要安装xf86-video-intel。
对于 Nvidia 显卡,先检查自己电脑显卡对应的驱动版本。对我而言,MX150 是Pascal架构的显卡,已经被 Nvidia 停止支持,因此需要安装旧版本驱动。
如下:
paru -S nvidia-550xx-dkms nvidia-550xx-utils lib32-nvidia-550xx-utils编辑/etc/mkinitcpio.conf,找到MODULES=(...)行,把 Intel 和 Nvidia 的模块按顺序填进去:
MODULES=(i915 nvidia nvidia_modeset nvidia_uvm nvidia_drm)找到BINARIES=(...)行,添加setfont
BINARIES=(setfont)然后重新生成内核镜像:
mkinitcpio -P重启电脑,使用nvidia-smi,应当得到类似输出:
Sun Jun 28 16:53:24 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.163.01 Driver Version: 550.163.01 CUDA Version: 12.4 |
|-----------------------------------------+------------------------+----------------------+
| GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. |
| | | MIG M. |
|=========================================+========================+======================|
| 0 NVIDIA GeForce MX150 Off | 00000000:01:00.0 Off | N/A |
| N/A 48C P0 N/A / ERR! | 0MiB / 2048MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
+-----------------------------------------------------------------------------------------+
| Processes: |
| GPU GI CI PID Type Process name GPU Memory |
| ID ID Usage |
|=========================================================================================|
| No running processes found |
+-----------------------------------------------------------------------------------------+省电相关
MX150 是 Pascal 架构的显卡,不支持 RTD3,显卡待机时不能完全断电,不过仍然能通过 PRIME 减少耗电。
开启 Nvidia 电源管理服务:
systemctl enable --now nvidia-suspend.service
systemctl enable --now nvidia-hibernate.service
systemctl enable --now nvidia-resume.service编辑 Nvidia 模块配置文件/etc/modprobe.d/nvidia.conf:
options nvidia_drm modeset=1
options nvidia "NVreg_DynamicPowerManagement=0x01"安装prime-run:
pacman -S prime-run重新生成内核镜像:
mkinitcpio -P本地化
安装字体:
pacman -S adobe-source-han-sans-cn-fonts adobe-source-han-serif-cn-fonts noto-fonts-cjk ttf-dejavu wqy-microhei更换一个可以显示中文的 VT(KMSCON):
pacman -S kmscon
systemctl disable [email protected]
systemctl enable [email protected]把全局 locale 换为简体中文(zh_CN)。编辑/etc/locale.conf:
LANG=zh_CN.UTF-8重启电脑,搞定。
题外话
没有题外话。
我要累死了。
886
Footnotes
该链接为本文撰写日期(2026.06.28)的最新镜像,时效性强,切忌盲目使用 ↩