Arch安装

系列 - Start Use Arch

全球镜像站校园网联合镜像站 中找一个合适的镜像站下载 ISO。对于我的网络情况, 以下站点按照下载速度由快到慢排序:

名称地址
西安交通大学镜像站https://mirrors.xjtu.edu.cn/archlinux/iso/latest/
武昌首义学院镜像站https://mirrors.wsyu.edu.cn/archlinux/iso/latest/
南方科技大学镜像站https://mirrors.sustech.edu.cn/archlinux/iso/latest/
哈尔滨工业大学镜像站https://mirrors.hit.edu.cn/archlinux/iso/latest/
北京邮电大学镜像站https://mirrors.bupt.edu.cn/archlinux/iso/latest/
重庆大学镜像站https://mirrors.cqu.edu.cn/archlinux/iso/latest/
北京外国语大学镜像站https://mirrors.bfsu.edu.cn/archlinux/iso/latest/
上海交通大学镜像站(思源)https://mirror.sjtu.edu.cn/archlinux/iso/latest/
吉林大学镜像站https://mirrors.jlu.edu.cn/archlinux/iso/latest/
南京大学镜像站https://mirror.nju.edu.cn/archlinux/iso/latest/
中国科学技术大学镜像站https://mirrors.ustc.edu.cn/archlinux/iso/latest/
阿里云镜像站https://mirrors.aliyun.com/archlinux/iso/latest/

使用 Ventoy 制作启动 U 盘。

进入 BIOS, 关闭安全启动, 将 U 盘设置为第一位加载。

进入 Live 环境后, 验证引导模式:

1
ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误, 则系统以 UEFI 模式引导。

检查网络接口启用状态:

1
ip link

对于Wi-Fi, 确保网卡未被 rfkill 禁用。

连接方式:

  • 网线: 最方便, 不用额外设置。
  • 无线: 参考 iwctl
  • 手机 USB 共享网络: 也不用额外设置, 但是离开 Live 环境后一般就不能共享手机网络了, 也许缺少驱动?
注意
默认情况下, 安装映像已预配置好并启用了 systemd-networkdsystemd-resolvediwdModemManager。但已经安装好了的系统并非如此。

所以在后面的 安装必要包 步骤中记得安装网络工具, 不然重启后进入系统无法联网。

测试网络:

1
ping archlinux.org

自带的字体实在是没法看, 安装 terminus-font 字体:

1
pacman -S terminus-font

查看适用于 TTY 的字体:

1
ls /usr/share/kbd/consolefonts

临时设置一个字体:

1
setfont ter-g24n

或者编辑 /etc/vconsole.conf, 设置默认字体:

1
FONT=ter-g24n

关于 terminus-font 字体名称中的 g**n 之类的参数, 请阅读 /usr/share/kbd/consolefonts/README.Lat2-Terminus16

1
timedatectl status

双系统的 EFI 分区是个麻烦, 缘由有两个:

  1. Windows 的 EFI 分区太小了, 区区 100M 根本不满足 Windows 和 Arch 两个系统使用, 将直接导致安装 Arch 失败。
  2. 一块硬盘上只能有一个 EFI 分区。

不能一味地遵循 Arch WiKi 和各路文档的做法, 直接挂载已有的 EFI 分区, 那只适用于只有一块硬盘且已有的 EFI 分区足够大的情况。

如果只有一块硬盘, 而且已经安装了 Windows, 那么就要为 Windows 的 EFI 分区扩容, 但是扩容 EFI 分区也挺麻烦, 说不定还会出问题, 建议直接重装:

  1. 提前将 Windows 数据备份。
  2. 在安装 Arch 的 Live 环境中使用 cfdisk /dev/设备号 命令对目标硬盘分区, 先将整个硬盘格式化, 再创建一个大的 EFI 分区。
  3. 退出 Live 环境。
  4. 先安装 Windows, Windows 会自动使用已有 EFI 分区。
  5. 再安装 Arch, 安装 Arch 时手动挂载 EFI 分区。

如果有两块硬盘, 那么最佳实践是将两个系统分别安装在两块不同的硬盘中, 各自使用自己的 EFI 分区。

要想双启动, 就将 Windows 的启动文件复制到 Arch 的 EFI 分区中, 在 BIOS 中将 GRUB 调整为第一位加载, 每次开机就可以选择启动 Arch 还是 Windows 了。

毕竟都有两块硬盘了, 如果已有的 EFI 分区不够用, 还要再按照一块硬盘的处理方式, 扩容 EFI 分区? 或者先重装 Windows 再装 Arch? 那真是不嫌麻烦。

两个系统安装在两块硬盘上, Arch 如果还要去使用另一块硬盘上的 EFI 分区, 以后万一那块硬盘故障了、重装系统了(造成 Arch 启动文件丢失), 后果就是两个系统都打不开。

使用 lsblk -ffdisk -l 查看所有硬盘设备。

使用 cfdisk /dev/设备号 命令对目标硬盘分区。

比如我有两块硬盘, /dev/sda/ 上已经安装了 Windows, 那就让 Arch 使用 /dev/sdb/。输入 cfdisk /dev/sdb/sdb 进行分区。

EFI 分区建议分配 1G, 因为说不定后续有安装多内核的需求、同硬盘安装其他 Linux 的需求, 反正现在的硬盘容量都很大, 不差这点。

假设先创建了 1G 的 EFI 分区, 为 /dev/sdb1; 又创建了 50G 的 Linux 文件系统分区(根分区), 为 /dev/sdb2; 最后创建了 SWAP 分区, 为 /dev/sdb3

格式化根分区:

1
mkfs.ext4 /dev/sdb2

初始化交换空间:

1
mkswap /dev/sdb3

格式化 EFI 分区:

1
mkfs.fat -F 32 /dev/sdb1
警告
只有在分区步骤中创建 EFI 系统分区时才需要格式化。如果这个磁盘上已经有一个 EFI 系统分区了, 将它重新格式化会破坏其他已安装操作系统的引导加载程序。

这是我完成分区和格式化操作后的fdisk -l 输出:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
设备            起点      末尾      扇区   大小 类型
/dev/sda1       2048    206847    204800   100M EFI 系统
/dev/sda2     206848    239615     32768    16M Microsoft 保留
/dev/sda3     239616 498708479 498468864 237.7G Microsoft 基本数据
/dev/sda4  498708480 500115455   1406976   687M Windows 恢复环境

设备            起点      末尾      扇区 大小 类型
/dev/sdb1       2048   2099199   2097152   1G EFI 系统
/dev/sdb2    2099200 106956799 104857600  50G Linux 文件系统
/dev/sdb3  106956800 123734015  16777216   8G Linux swap
注意
一定要按照顺序挂载。

先挂载根分区:

1
mount /dev/sdb2 /mnt

再挂载引导分区:

1
mount --mkdir /dev/sdb1 /mnt/boot

这时可以挂载 Windows 的 EFI 分区, 以便之后使用 os-prober 探测系统:

1
mount --mkdir /dev/sda1 /mnt/windowsboot

挂载交换空间:

1
swapon /dev/sdb3

使用 reflector 筛选镜像源保存到文件中:

1
reflector --sort delay -c China -p https --isos --save /etc/pacman.d/mirrorlist

或者使用校园网联合镜像站的测速 脚本 测试一下, 结合校园网联合镜像站 列表, 手动编辑 /etc/pacman.d/mirrorlist, 比如:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
Server = https://mirrors.xjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.wsyu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.sustech.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.hit.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.bupt.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.cqu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirror.sjtu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.jlu.edu.cn/archlinux/$repo/os/$arch
Server = https://mirror.nju.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch
Server = https://mirrors.aliyun.com/archlinux/$repo/os/$arch

禁用 reflector.service:

1
systemctl disable reflector.service
1
pacstrap -K /mnt base base-devel linux linux-firmware os-prober intel-ucode networkmanager vim

微码: AMD 处理器安装 amd-ucode, Intel 处理器安装 intel-ucode

网络工具: 只安装 networkmanager 即可。如果安装 iwd, 由于它与 networkmanager 冲突, 最后不免要手动关闭它。

生成 fstab 文件:

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

检查生成的 /mnt/etc/fstab 文件是否正确:

1
cat /mnt/etc/fstab

chroot 到新安装的系统:

1
arch-chroot /mnt
1
vim /etc/hostname

这一步只有 Wi-Fi才需要配置; 如果插着网线, 那网络是一直连通的; 如果使用手机 USB 共享网络, 到了这一步, 网络能连通还好, 不连通的话也不好折腾。

如果 之前 安装的是 networkmanager, 那么参考 NetworkManager#nmcli examples 来使用 Wi-Fi。

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

生成 /etc/adjtime:

1
hwclock --systohc

查看当前硬件时钟的时间标准:

1
timedatectl | grep local

输出:

1
RTC in local TZ: no

将硬件时间设置为 localtime:

1
timedatectl set-local-rtc 1

为什么使用 localtime 而不是 UTC, 参考 双系统时间不一致

可以参考 Systemd-timesyncd, vim /etc/systemd/timesyncd.conf, 自定义 NTP 服务器, 比如:

1
2
3
[Time]
NTP=ntp.aliyun.com ntp1.aliyun.com ntp2.aliyun.com ntp3.aliyun.com ntp4.aliyun.com ntp5.aliyun.com ntp6.aliyun.com ntp7.aliyun.com
FallbackNTP=0.cn.pool.ntp.org 1.cn.pool.ntp.org 2.cn.pool.ntp.org 3.cn.pool.ntp.org

启用时间同步:

1
timedatectl set-ntp true 

检查服务状态:

1
timedatectl status

检查配置:

1
timedatectl show-timesync --all

检查同步状态:

1
timedatectl timesync-status

vim /etc/locale.gen 写入以下内容:

1
2
en_US.UTF-8 UTF-8
# zh_CN.UTF-8 UTF-8

生成 locale 信息:

1
locale-gen

vim /etc/locale.conf 写入以下内容:

1
2
LANG=en_US.UTF-8
# LANG=zh_CN.UTF-8

使用 locale 命令查看区域信息。

目前先使用 英文 locale, 等重启进入桌面之后再设置为中文 locale。虽然直接使用中文 locale 会导致 TTY 上中文显示为方块, 但是又不经常使用 TTY; 非要使用 TTY 的时候, 再手动设置英文 locale 就好了。

当然最好的办法是永远只使用英文 locale。

1
passwd

参考 GRUB 安装:

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

为防止得到如下报错:

1
Warning: os-prober will not be executed to detect other bootable partitions

vim /etc/default/grub, 取消这一行的注释, 如果没有这一行, 就在文件末尾加上:

1
GRUB_DISABLE_OS_PROBER=false

运行 os-prober 探测其他系统:

1
os-prober

生成主配置文件:

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

每次安装或者移除一个内核后, 都需要重新运行一次 grub-mkconfig 命令。

若要管理多个 GRUB 条目, 比如既使用 linux 又使用 linux-lts 内核, 参考 GRUB/Tips and tricks#Multiple entries

1
sudo useradd -d /home/username -m -s /bin/bash username

更改普通账户的密码:

1
passwd username

vim /etc/sudoers, 在 root ALL=(ALL:ALL) ALL 下添加一行, 比如:

1
2
root ALL=(ALL:ALL) ALL
username ALL=(ALL:ALL) ALL

编辑 /etc/pacman.conf, 取消以下两行的注释:

1
2
[multilib]
Include = /etc/pacman.d/mirrorlist

此处只能添加一个 Server, 参考 archlinuxcn/mirrorlist-repo, 选择一个镜像站, 虽然它列举的镜像站不全, 但大部分 arch 镜像站也同时托管 archlinuxcn, 可以自己检查一下。

编辑 /etc/pacman.conf, 添加:

1
2
[archlinuxcn]
Server = https://mirrors.xjtu.edu.cn/archlinuxcn/$arch

安装 archlinuxcn-keyring 包导入 GPG key:

1
pacman -S archlinuxcn-keyring
完成一半了
到这里, 无桌面的系统基本配置都已完成。

更新系统:

1
pacman -Syu

安装 XorgSDDMKDE Plasma:

1
pacman -S xorg sddm plasma

xorgplasma 都是包组, 包组里的软件包大部分都有用, 全部安装即可。

安装常用的 KDE 系列软件:

1
pacman -S ark dolphin dolphin-plugins elisa gwenview kcalc kcolorchooser kdeconnect kdf kmail konsole partitionmanager spectacle
包名简介
ark压缩软件
dolphin文件管理器
dolphin-plugins集成其他服务
elisa音乐播放器
gwenview图像查看器
kcalc计算器
kcolorchooser调色板、取色器
kdeconnect局域网连接设备、传输文件
kdf磁盘占用查看器
kmail电子邮件
konsole终端
partitionmanager分区管理器
spectacle截图工具

安装 yay:

1
pacman -S yay

安装其他软件:

1
yay -S 7-zip-full aria2 clash-for-windows-bin git google-chrome inkscape joplin-desktop kclock ntfs-3g telegram-desktop unrar visual-studio-code-bin vlc wps-office wps-office-mui-zh-cn ttf-wps-fonts
包名简介
7-zip-full代替 p7zip 作为 ark 的依赖使其支持 7z
aria2下载器
clash-for-windows-bin代理软件
git版本控制
google-chrome浏览器
inkscape矢量图编辑器
joplin-desktop笔记软件
kclock多时钟、计时器、秒表和闹钟
ntfs-3g挂载 NTFS 硬盘
telegram-desktop聊天软件
unrar作为 ark 的依赖使其支持 RAR
visual-studio-code-bin文本编辑器
vlc音视频播放器
wps-office办公软件
wps-office-mui-zh-cnWPS 中文语言包
ttf-wps-fontsWPS 符号字体

输入法等重启进入桌面后再配置, 参考 Rime配置

等重启进入桌面后再配置, 参考 Arch与Intel核显

等重启进入桌面后再配置, 参考 Arch配置/#音频

等重启进入桌面后再配置, 参考 Arch配置/#蓝牙

到这里, 绝大部分配置都已完成, 剩余的工作等重启以后再处理。

  1. 手动卸载被挂载的分区:

    1
    
    umount -R /mnt
    

    有助于发现任何“繁忙”的分区, 并通过 fuser 查找原因。

  2. 输入 exit 或按 Ctrl+D 退出 chroot 环境。

  3. 输入 reboot 重启系统, systemd 将自动卸载仍然挂载的任何分区。不要忘记移除安装介质, 然后使用 root 帐户登录到新系统。

参考 Arch配置