我的 Surface Pro 4(m3 处理器 + 128GB 硬盘)已使用近 9 年,配有官方键盘和手写笔。4 年前三星屏出现抖屏问题,更换为 LG 屏后,它成为连接电台和运行业余无线电软件的主力机。今年屏幕上方开胶脱落,粘合后感觉 Windows 系统在夏天发热依然明显。恰逢计划深入学习 Linux,于是决定安装 Arch Linux 继续发挥余热。本文记录详细的安装过程。

🛠️ 一、备份与启动盘准备

  1. 数据备份

    • 系统映像备份: 使用 控制面板 → 备份和还原(Windows 7) → 创建系统映像 将系统映像备份到移动硬盘。
    • 重要数据备份: 将 Surface Pro 4 上的个人重要文件备份到移动硬盘。
  2. 下载镜像

    • 清华大学开源软件镜像站 下载最新版 archlinux-2025.06.01-x86_64.iso
    • 验证完整性: 使用 sha256sumgpg 工具校验下载 ISO 文件的校验和与签名。
  3. 制作启动 U 盘

    • 工具: Rufus
    • 步骤:
      • 插入 U 盘(≥8GB)。
      • 运行 Rufus。
      • 选择下载的 Arch Linux ISO 文件。
      • 分区类型: 选择 GPT
      • 目标系统: 选择 UEFI (非 CSM)
      • 点击“开始”。
      • 镜像写入模式: 选择 DD 模式 (重要!)。
      • 确认操作,等待写入完成。

⚙️ 二、安装 Arch Linux 基础系统

  1. 关闭 Secure Boot

    • 关机状态下,长按 音量+键 并点按电源键开机,进入 UEFI 设置界面。
    • 导航至 Security 选项卡。
    • 找到 Secure Boot 选项,将其关闭。
    • 保存更改并退出。
  2. 从 U 盘启动

    • 关机状态下,长按 音量-键 并点按电源键开机。
    • 在启动菜单中,选择包含 U 盘名称的 UEFI 启动项。

连接网络 (使用 iwd)

rfkill list # 查看无线设备状态(通常默认已解锁)
iwctl # 进入 iwd 交互式命令行
[iwd]# device list # 列出可用无线网卡(如 wlan0)
[iwd]# station wlan0 scan # 扫描可用 Wi-Fi 网络
[iwd]# station wlan0 get-networks # 列出扫描到的网络
[iwd]# station wlan0 connect "你的Wi-Fi名称" # 连接网络,按提示输入密码
[iwd]# exit # 退出 iwd
ip link show wlan0 # 检查网卡状态(应显示 `UP`)
ping -c 3 www.baidu.com # 测试网络连通性

更新系统时钟

timedatectl set-ntp true # 启用 NTP 时间同步
timedatectl status # 检查时间服务状态和当前时间

优化软件源 (国内用户建议)

# 生成国内镜像源列表(按速度排序,使用 HTTPS)
reflector --country China --latest 20 --sort rate --protocol https --save /etc/pacman.d/mirrorlist
# 检查生成的镜像列表
cat /etc/pacman.d/mirrorlist
# 更新软件包数据库
pacman -Syy

硬盘分区

注意: 此示例展示最简单的分区方案(EFI 引导分区 + 根分区 + Swap 交换分区)。请根据实际需求和硬盘大小调整。
警告: 分区操作会清除磁盘数据,请务必确认操作对象 (/dev/nvme0n1) 是目标磁盘。

  • 输入 lsblkfdisk -l 查看磁盘及分区信息,确认目标磁盘设备(如 /dev/nvme0n1)。
  • 使用分区工具(推荐 cfdisk 的图形界面):
    cfdisk /dev/nvme0n1 # 更直观的图形界面分区工具
    # 或 gdisk /dev/nvme0n1 (GPT 专用) / fdisk /dev/nvme0n1
  • 示例分区方案 (128GB SSD):
    • /dev/nvme0n1p1: EFI 系统分区,大小 512MB-1GB,类型 EFI System
    • /dev/nvme0n1p2: 根分区 (/), 剩余大部分空间 (如 110GB+),类型 Linux filesystem
    • /dev/nvme0n1p3: Swap 交换分区, 大小建议等于或稍大于内存 (如 4GB-8GB),类型 Linux swap
  • 分区完成后,写入更改 (Write) 并退出工具。

格式化分区

# 格式化根分区为 f2fs (需已加载 f2fs 内核模块)
mkfs.f2fs -l ArchRoot -O extra_attr,inode_checksum,sb_checksum /dev/nvme0n1p2
# 初始化 Swap 分区
mkswap -L ArchSwap /dev/nvme0n1p3
# 格式化 EFI 分区为 FAT32
mkfs.fat -F 32 -n ARCHBOOT /dev/nvme0n1p1

挂载分区

# 挂载根分区
mount /dev/nvme0n1p2 /mnt
# 创建 EFI 挂载点并挂载 EFI 分区 (标准路径为 /mnt/boot 或 /mnt/efi)
mkdir -p /mnt/boot/efi # 推荐此路径
mount /dev/nvme0n1p1 /mnt/boot/efi
# 启用 Swap 分区
swapon /dev/nvme0n1p3
# 检查分区挂载情况
lsblk -f

重要提示: 挂载顺序必须为先根分区 (/mnt),再 EFI 分区 (/mnt/boot/efi)。否则可能导致系统无法启动。

安装基本系统

pacstrap -K /mnt base base-devel linux linux-firmware vim intel-ucode
# `base-devel` 包含编译工具,后续常用。`intel-ucode` 是 Intel CPU 微码更新。

生成 fstab 文件

# 生成 fstab 文件 (使用 UUID)
genfstab -U /mnt >> /mnt/etc/fstab
# 务必检查生成的 /mnt/etc/fstab 文件是否正确!
cat /mnt/etc/fstab

Chroot 到新系统

arch-chroot /mnt

配置基础系统

# 安装必要软件包
pacman -Syu networkmanager bluez bluez-utils vim f2fs-tools xf86-input-wacom
# 网络管理、蓝牙、编辑器、f2fs工具、Surface Pen驱动

# 针对 Surface Pro 4 的 2736×1824 高分辨率设置显示缩放 (可选,也可进桌面后设置)
echo "export GDK_SCALE=2" >> /etc/profile.d/hidpi.sh
echo "export QT_SCALE_FACTOR=2" >> /etc/profile.d/hidpi.sh
chmod +x /etc/profile.d/hidpi.sh

# 安装并启用 IPTSD (Surface 触控驱动)
pacman -S iptsd
systemctl enable iptsd

# 设置时区
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
# 设置硬件时钟为 UTC 时间
hwclock --systohc --utc

# 本地化设置 (语言环境)
vim /etc/locale.gen # 取消注释 `en_US.UTF-8 UTF-8` 和 `zh_CN.UTF-8 UTF-8`
locale-gen # 生成指定的 locale
echo "LANG=en_US.UTF-8" > /etc/locale.conf # 设置系统默认语言为英文 (建议)
# 或 echo "LANG=zh_CN.UTF-8" > /etc/locale.conf # 设置为中文 (可能导致 TTY 乱码)

# 设置控制台键盘布局和字体 (可选)
vim /etc/vconsole.conf
# 例如:
# KEYMAP=us
# FONT=lat9w-16

# 设置主机名
vim /etc/hostname
# 例如: surface-pro4

# 配置 hosts 文件
vim /etc/hosts
# 添加以下行:
127.0.0.1 localhost
::1 localhost
127.0.1.1 surface-pro4.localdomain surface-pro4 # 将 `surface-pro4` 替换为你的主机名

# 设置 root 密码
passwd

创建普通用户并授予 sudo 权限

# 替换 [yourusername] 为你的用户名
useradd -m -G wheel,users,storage,power,lp,adm,optical [yourusername]
passwd [yourusername] # 设置新用户密码

# 安装 sudo 并配置 wheel 组权限
pacman -S sudo
# 编辑 sudoers 文件 (使用 `visudo` 命令更安全)
EDITOR=vim visudo
# 找到行 `# %wheel ALL=(ALL:ALL) ALL`,取消注释 (删除行首的 `#`)
# 保存退出 (:wq)

安装并配置引导加载程序 (GRUB)

# 安装 GRUB 和相关工具
pacman -S grub efibootmgr os-prober

# 安装 GRUB 到 EFI 分区
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ArchLinux --recheck

# (可选) 编辑 GRUB 默认配置 (如 GRUB_CMDLINE_LINUX 参数)
vim /etc/default/grub

# 生成 GRUB 配置文件 (会自动包含 intel-ucode)
grub-mkconfig -o /boot/grub/grub.cfg

# 启用 NetworkManager 服务
systemctl enable NetworkManager

# 生成初始 RAM 磁盘 (initramfs)
mkinitcpio -P

完成安装并重启

# 退出 chroot 环境
exit
# 卸载所有挂载的分区
umount -R /mnt
# 关闭 Swap
swapoff -a
# 重启系统 (移除安装 U 盘)
reboot

🖥️ 三、安装 Surface 专属内核与驱动

📌 关键步骤! 若不安装,触屏、Type Cover 键盘、摄像头、传感器等将无法正常工作或功能受限。
参考 linux-surface 项目

  1. 添加 linux-surface 仓库密钥和源

    # 导入密钥
    curl -s https://raw.githubusercontent.com/linux-surface/linux-surface/master/pkg/keys/surface.asc | sudo pacman-key --add -
    sudo pacman-key --finger 56C464BAAC421453
    sudo pacman-key --lsign-key 56C464BAAC421453
    # 添加仓库到 pacman 配置
    echo '[linux-surface]' | sudo tee -a /etc/pacman.conf
    echo 'Server = https://pkg.surfacelinux.com/arch/' | sudo tee -a /etc/pacman.conf
  2. 安装 Surface 内核和驱动

    # 更新仓库并安装
    sudo pacman -Syu
    sudo pacman -S linux-surface linux-surface-headers iptsd
    # 确保 IPTSD 服务启用
    sudo systemctl enable --now iptsd
  3. 安装其他必要固件和驱动

    # Marvell WiFi 固件 (Surface Pro 4 需要)
    sudo pacman -S linux-firmware-marvell
    # Libcamera 驱动 (摄像头支持)
    sudo pacman -S libcamera
    # GStreamer 插件 (便于使用摄像头的应用)
    sudo pacman -S gst-plugin-libcamera
  4. 验证安装

    # 安装 screenfetch 或 neofetch
    sudo pacman -S screenfetch
    screenfetch
    • 在输出信息中,检查 Kernel: 一行是否包含 surface 字样 (例如 Kernel: 6.x.x-arch1-1-surface),这表明 Surface 内核已成功加载。
    • 此时触屏、Type Cover 键盘、触控板、笔等应基本可用。

四、安装桌面环境 (KDE Plasma) 与基本应用

安装图形组件与 KDE Plasma

# 安装 Xorg 基础 (Wayland 会话已包含在 plasma-wayland-session 中)
sudo pacman -S xorg-server xorg-xinit mesa

# 安装完整的 KDE Plasma 桌面及其 Wayland 会话
sudo pacman -S plasma plasma-wayland-session kde-applications sddm

# 安装常用工具
sudo pacman -S konsole kate dolphin

# 安装中文字体
sudo pacman -S noto-fonts-cjk noto-fonts-emoji ttf-wps-fonts wqy-microhei adobe-source-han-sans-cn-fonts
sudo fc-cache -fv # 刷新字体缓存

# 安装 Intel 集成显卡驱动 (通常 mesa 已足够,此包提供 legacy Xorg 配置)
sudo pacman -S xf86-video-intel

# (可选) 设置 KDE Plasma 默认为中文界面 (在 SDDM 登录后,系统设置里更改更安全)
# echo "export LANG=zh_CN.UTF-8" >> /home/[yourusername]/.bashrc # 仅影响该用户的终端和部分应用
# KDE 的系统级语言设置在 `/etc/locale.conf` 的 `LANG`,用户级在系统设置里更改。

# 修复 Surface Type Cover 键盘背光控制
echo "options surface_kbd led_autosuspend=2" | sudo tee /etc/modprobe.d/surface_kbd.conf
sudo mkinitcpio -P # 重新生成 initramfs 使内核模块参数生效

启用必要系统服务

# 启用 SDDM 显示管理器 (登录界面)
sudo systemctl enable sddm

# NetworkManager 在基础安装阶段应已启用,确认一下
sudo systemctl enable --now NetworkManager

# (可选) 启用蓝牙
sudo systemctl enable --now bluetooth

# (可选) 启用 CUPS 打印服务
sudo systemctl enable --now cups

重启进入桌面

sudo reboot

配置中文输入法 (Fcitx5)

  1. 安装输入法框架和引擎
    sudo pacman -S fcitx5-im fcitx5-chinese-addons fcitx5-pinyin-zhwiki fcitx5-material-color # 框架、中文引擎、词库、皮肤
  2. 配置环境变量 (针对 Wayland 和 Xorg)
    • 编辑用户文件 ~/.pam_environment (如果不存在则创建):
      GTK_IM_MODULE DEFAULT=fcitx
      QT_IM_MODULE DEFAULT=fcitx
      XMODIFIERS DEFAULT=\@im=fcitx
      SDL_IM_MODULE DEFAULT=fcitx
      GLFW_IM_MODULE=ibus # 某些游戏需要此项
    • 或者在 ~/.xprofile (仅Xorg) 或 ~/.config/environment.d/im.conf (推荐,适用于Wayland和Xorg) 中添加:
      export GTK_IM_MODULE=fcitx
      export QT_IM_MODULE=fcitx
      export XMODIFIERS=@im=fcitx
  3. 在 KDE 设置中配置 Fcitx5
    • 进入 系统设置 > 区域设置 > 输入法
    • 取消勾选 可用输入法 下的 仅使用默认输入法
    • 点击 添加输入法,搜索并添加 Fcitx5
    • 点击 配置附加组件,找到 Pinyin 引擎进行详细设置 (如云拼音、简繁体切换等)。
    • 配置 快捷键 (如切换输入法、切换简繁体)。
    • 重启 Plasma 会话 (注销再登录) 或重启电脑生效。
  4. (可选) 浏览器触控板手势支持
    • 对于 Microsoft Edge 或 Google Chrome/Chromium,在启动命令添加参数以启用 Wayland 和 IME 支持:
      # 修改桌面快捷方式或命令行启动参数
      microsoft-edge-stable --enable-features=UseOzonePlatform,VaapiVideoDecodeLinuxGL --ozone-platform=wayland --enable-wayland-ime
      google-chrome-stable --enable-features=UseOzonePlatform,VaapiVideoDecodeLinuxGL --ozone-platform=wayland --enable-wayland-ime

系统维护

  • 定期更新系统:
    sudo pacman -Syu
  • 清理未使用的包和缓存:
    sudo pacman -Sc    # 清理未安装包的缓存
    sudo pacman -Qtdq | sudo pacman -Rns - # 删除无依赖的孤立包 (谨慎操作)
    sudo paccache -rk2 # 保留最近2个版本的已安装包缓存 (需要 paccache, pacman-contrib包提供)

⚠️ 五、风险与注意事项

  1. 恢复 Windows

    • 如需重装 Windows,必须使用官方镜像制作的 U 盘。
    • 重装 Windows 会覆盖 Linux 引导。修复方法:使用 Windows 安装盘启动,进入命令提示符执行 bootrec /fixmbrbootrec /fixboot (可能还需 bcdboot),或使用 Linux Live USB 重新安装 GRUB。
  2. 硬件兼容性限制

    • 摄像头: Surface Pro 4 的摄像头在 Linux 下功能受限 (libcamera 提供基础支持),兼容性和稳定性不如 Windows。
    • 休眠/睡眠: 从休眠 (hibernate) 或深度睡眠唤醒可能不稳定。建议:
      • 优先使用挂起 (suspend/sleep)。
      • 彻底禁用休眠:sudo systemctl mask sleep.target suspend-then-hibernate.target hibernate.target hybrid-sleep.target
    • Windows Hello 红外传感器面部识别: 不支持
    • Surface Pro 4 的合盖/开盖传感器需要 linux-surface 内核的完整支持
      • 确认已安装 linux-surface:
        pacman -Qs linux-surface
      • 如果未安装,安装:
        sudo pacman -S linux-surface linux-surface-headers
      • 检查是否加载了相关模块:
        lsmod | grep -E "surface|hid"
      • 确保以下模块已加载:
        surface_aggregator
        surface_aggregator_registry
        surface_hid_core
      • 如果缺少,手动加载:
        sudo modprobe surface_aggregator
        sudo modprobe surface_hid_core
      • 更新 mkinitcpio.conf:
        sudo nano /etc/mkinitcpio.conf
      • 添加模块:
        MODULES=(... surface_aggregator surface_aggregator_registry surface_hid_core ...)
      • 重新生成 initramfs:
        sudo mkinitcpio -P
  3. 建议阅读


💎 未尽事项/高级配置

启用 Secure Boot (复杂,可选)

  1. 必要性: 增强安全性,但配置繁琐。Surface 设备关闭 Secure Boot 除了开机有红色警示条外不影响主要功能。
  2. 参考:

Surface Pen 与触摸屏高级设置

  • 文件: /etc/iptsd.conf
  • 关键设置: 避免笔悬停时误触发触摸。
    ##
    ## Ignore all touch inputs if a stylus is in proximity.
    ##
    DisableOnStylus = true # 确保设置为 true
  • 压感笔记软件推荐: Xournal++
  • 更多绘图板软件: 参考 ArchWiki: Graphics tablet

磁盘加密 (LUKS)