记一次安装 Arch Linux

制作 U 盘启动盘

推荐找个靠谱的 u 盘安装 ventoy

ISO 文件可去 Arch 官网 下载, 一定要检验下载下来的文件的完整性, 如 sha256sums 等。 如果没问题,把 ISO 文件拷进 u 盘的数据分区即可。

安装

然后插着 u 盘启动电脑,按 f10 或 f12 进 BIOS 设置界面, 在设置里把引导模式改为 uefi only(或关掉 legacy、csm)。记得保存设置。然后进入 ventoy 菜单,选择刚刚的 ISO 文件。

禁用 reflector 服务

进入 Live 环境后,先禁用 reflector 服务,方便后续选择镜像。 运行:

1
systemctl stop reflector.service

可以检查一下是否成功禁用。

1
systemctl status reflector.service

验证引导模式

用下列命令列出 efivars 目录:

1
ls /sys/firmware/efi/efivars

如果命令结果显示了目录且没有报告错误,则系统以 UEFI 模式引导。 如果目录不存在,则系统可能以 BIOS 模式 (或 CSM 模式) 引导。

连接网络

通过以下代码连接网络。注意,Wifi 名不能为中文, 不然只能看到一堆方块, 当然也不能输入中文。

1
2
3
4
5
6
iwctl # 进入交互式命令行
device list # 列出无线网卡设备名,比如无线网卡看到叫 wlan0
station wlan0 scan # 扫描网络
station wlan0 get-networks # 列出所有 wifi 网络
station wlan0 connect wifi-name # 进行连接,注意这里无法输入中文。回车后输入密码即可
exit # 连接成功后退出

连接成功后可以 ping 一下检查网路连接

1
ping www.baidu.com

更新系统时钟

在 Live 环境中 systemd-timesyncd 默认启用,建立互联网连接后,时间将自动同步。当然可以再手动同步并确认。

1
2
timedatectl set-ntp true # 将系统时间与网络时间进行同步
timedatectl status # 检查服务状态

修改 Mirror

修改 /etc/pacman.d/mirrorlist 文件(使用 vim 等)。把 China 相关的源放在最上面,可以适当保留其他源,不需要的使用 # 注释掉即可。

分区与格式化

以下操作具有风险性!!!

cfdisk 进行分区

1
cfdisk /dev/sda

具体分区大小和类型如下,因为后续使用 Btrfs 文件系统,所以根目录和用户主目录实际在一个分区上。

挂载点 分区 分区类型 建议大小
/mnt/boot/efi /dev/efi_system_partition EFI System 至少 300 MiB
[SWAP] /dev/swap_partition Linux swap 大于等于内存
/mnt /dev/root_partition Linux filesystem 剩余空间

操作完后记得写入。可以使用 fdisk -l 查看分区情况。

格式化 EFI 分区

1
mkfs.fat -F32 /dev/sda1

格式化 swap 分区。

1
mkswap /dev/sda2

格式化 btrfs 分区。

1
mkfs.btrfs -L XXiaoA_Arch /dev/sda3 # -L 后是分区的 LABLE

为了创建子卷,我们需要先将 Btrfs 分区挂载到 /mnt 下:

1
mount -t btrfs -o compress=zstd /dev/sda3 /mnt

-t 选项后指定挂载分区文件系统类型
-o 选项后添加挂载参数: compress=zstd —— 开启透明压缩

创建两个 Btrfs 子卷,之后将分别挂载到 / 根目录和 /home 用户主目录:

1
2
btrfs subvolume create /mnt/@ # 创建 / 目录子卷
btrfs subvolume create /mnt/@home # 创建 /home 目录子卷

复查子卷情况:

1
btrfs subvolume list -p /mnt

子卷创建好后,我们需要将 /mnt 卸载掉,以挂载子卷:

1
umount /mnt

挂载

注意挂载的顺序:

1
2
3
4
5
6
mount -t btrfs -o subvol=/@,compress=zstd /dev/sda3 /mnt # 挂载 / 目录
mkdir /mnt/home # 创建 /home 目录
mount -t btrfs -o subvol=/@home,compress=zstd /dev/sda3 /mnt/home # 挂载 /home 目录
mkdir -p /mnt/boot/efi # 创建 /boot/efi 目录
mount /dev/sda1 /mnt/boot/efi # 挂载 /boot/efi 目录
swapon /dev/sda2 # 挂载交换分区

可使用 df -hfree -h 复查挂载情况。

安装系统

使用 pacstrap

1
2
pacstrap -K /mnt base base-devel linux linux-firmware btrfs-progs
pacstrap -K /mnt dhcpcd networkmanager vim sudo fish

生成 fstab

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

复查:

1
cat /mnt/etc/fstab

Chroot

chroot 到新安装的系统:

1
arch-chroot /mnt

其他工作

/etc/hostname 设置主机名(直接加入想取的主机名即可, 如 myarch)

/etc/hosts 添加以下内容:

1
2
3
127.0.0.1   localhost
::1 localhost
127.0.1.1 myarch.localdomain myarch

设置时区:

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

然后运行 hwclock 以生成 /etc/adjtime

1
hwclock --systohc

本地化:

  1. 编辑 /etc/locale.gen,去掉 en_US.UTF-8 UTF-8 以及 zh_CN.UTF-8 UTF-8 行前的注释符号(#)。
  2. 执行 locale-gen 以生成 locale 信息。
  3. /etc/locale.conf 加入 LANG=en_US.UTF-8(注意,不要在此设置为中文)。

为 root 用户设置密码:

1
passwd root

安装引导

1
pacman -S grub efibootmgr os-prober

安装 GRUB 到 EFI 分区:

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

如果后续发现安装失败则尝试加入 removable 参数。

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

编辑 /etc/default/grub 文件:

  1. 去掉 GRUB_CMDLINE_LINUX_DEFAULT 一行中的 quiet 参数
  2. loglevel 的数值从 3 改成 5
  3. 加入 nowatchdog 参数

生成配置文件:

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

重启

输入 exit 或按 Ctrl+d 退出 chroot 环境。然后 umount -R /mnt 手动卸载被挂载的分区。拔掉 u 盘重启即可。

参考


记一次安装 Arch Linux
https://xxiaoa.github.io/posts/45550377/
Author
XXiaoA
Posted on
January 15, 2023
Licensed under