不靠谱的 Arch Linux 安装指南:为 Headless 设备安装 Arch Linux
Headless 设备无显示/输入设备,需要在其他设备上安装/控制,本指南安装将不包括 Grub 安装,且将使用 EFISTUB 和 Unified Kernel Image 进行引导。
进入 Live CD 或已有系统
- 如果目标设备没有
IPMI
(智能平台管理接口) 也无法连接显示设备,可将硬盘安装到已有计算机进行安装 (安装步骤有些许不同, 文中会标注) - 如果目标设备有显示和输出设备,也可使用 Live CD 启动后安装
- 已有计算机须安装
extra/arch-install-scripts
- 好消息!新版 Live CD 默认开启 SSH,可以远程复制粘贴指令进行安装啦!
连接网络
Arch Linux 的安装必须有网络连接,整个系统的安装将从镜像站下载软件包。这也意味着安装的系统一定为当前最新版本。
- 首先,使用
ip addr
检查是否当前是否分配到 IP。- 若使用的是无线,请先使用
iwctl station wlan0 connect <SSID>
连接到无线网络
- 若使用的是无线,请先使用
- 使用
ping -c 3 223.5.5.5
检查是否正常联网。 - 使用
ping -c 3 aliyun.com
检查 DNS 是否正常。- 若失败可在
/etc/resolv.conf
文件开头添加nameserver 223.5.5.5
使用阿里 DNS
- 若失败可在
设置镜像源
1echo 'Server = https://mirrors.bfsu.edu.cn/archlinux/$repo/os/$arch' | \
2tee /etc/pacman.d/mirrorlist
进行分区并挂载
[!!!数据无价,谨慎操作!!!] 使用 fdisk
或 cfdisk
对磁盘进行分区 菜鸟 fdisk 教程
- 使用
fdisk -l
或lsblk
可以看到当前所有硬盘分区和设备号 (以下分区号均为示例,请根据自身情况调整) - 使用
fdisk /dev/sda
可对sda
进行分区,NVMe 磁盘一般为/dev/nvme0n1
- 添加以下分区 (以 UEFI 和 GPT 为例)
- 分区序号 1,引导分区,可与其他系统共用,确保为第一分区,分区格式 vfat,因为使用 EFISTUB,确保分区大小至少 64M
- 分区序号 2,系统分区,分区格式
ext4
或xfs
或btrfs
,大小 10G+ - 分区序号 3,交换分区,可选,可作为文件放入系统分区,分区类型 swap,大小一般为内存的一半,若要使用休眠功能,大小至少大于等于内存
- 格式化分区
- 引导分区:
mkfs.vfat /dev/sda1
,若与其他系统共用请不要格式化 - 系统分区:
mkfs.xfs /dev/sda2
,ext4/btrfs 格式化指令分别为mkfs.ext4
和mkfs.btrfs
- 交换分区:
mkswap /dev/sda3
- 引导分区:
- 挂载分区
- 系统分区:
mount /dev/sda2 /mnt
- 引导分区:
mkdir -p /mnt/efi && mount /dev/sda1 /mnt/efi
- 交换分区:
swapon /dev/sda2
- 系统分区:
安装 Arch Linux
使用 pacstrap
将 ArchLinux 安装到 /mnt
1pacstrap /mnt <packages_name>
2# eg:
3pacstrap /mnt linux linux-firmware base
- 按需将以下包名替换到
<packages_name>
内(空格分隔):linux
:linux 内核,必选,可替代项linux-lts
、linux-zen
、linux-hardened
,区别可在 这里 找到base
:基本系统组件,必选linux-firmware
:一些设备所需的驱动/固件intel-ucode
:Intel CPU 微代码补丁,AMD CPU 替代项:amd-ucode
networkmanager
:网络管理器,不建议,headless 使用systemd-networkd
就够了vim
:文本编辑器,可替代项nano
sudo
:使普通用户有管理员权限执行指令,可替代项opendoas
efibootmgr
:修改 UEFI 启动项的工具
生成 fstab
内核加载后会读取 /etc/fstab
对分区进行挂载,缺少此文件可能会导致系统启动失败
1genfstab -U /mnt >> /mnt/etc/fstab
配置新系统
使用 arch-chroot /mnt
进入新系统进行配置
设置主机名
1# 将 <hostname> 替换为主机名
2export HOST_NAME="<hostname>"
3echo "$HOST_NAME" | tee /etc/hostname
4echo "127.0.0.1 localhost
5::1 localhost
6127.0.0.1 $HOST_NAME" | tee /etc/hosts
设置时区
1# 修改时区为:亚洲/上海
2ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
设置语言
修改
/etc/locale.gen
,(实在眼疼找不到的话就直接在文件首行添加吧)1- #en_US.UTF-8 UTF-8 2- #zh_CN.UTF-8 UTF-8 3+ en_US.UTF-8 UTF-8 4+ zh_CN.UTF-8 UTF-8
执行
locale-gen
生成语言文件设置语言(二选一)
1# 设置显示语言为中文 2echo 'LANG="zh_CN.UTF-8"' | tee /etc/locale.conf 3# 设置显示语言为英文 4echo 'LANG="en_US.UTF-8"' | tee /etc/locale.conf
创建用户
配置 sudo,编辑
/etc/sudoers
1@ 正常提权(需要输入密码确认) 2- # %wheel ALL=(ALL) ALL 3+ %wheel ALL=(ALL) ALL 4+ Defaults env_reset,pwfeedback 5@ 免密码提权(和上面 二选一) 6- # %wheel ALL=(ALL:ALL) NOPASSWD: ALL 7+ %wheel ALL=(ALL:ALL) NOPASSWD: ALL
创建账户并设置密码
1# 将 <username> 替换为用户名 2export USER_NAME="<username>" 3useradd -m -U -G wheel $USER_NAME 4passwd $USER_NAME 5# 输入密码,回车,确认密码,回车
生成内核
编辑
/etc/mkinitcpio.d/linux{-zen,-lts}.preset
,{}
表示可选项,根据内核自行选择,以 zen 为例1# mkinitcpio preset file for the 'linux-zen' package 2 3ALL_config="/etc/mkinitcpio.conf" 4ALL_kver="/boot/vmlinuz-linux-zen" 5+ ALL_microcode=(/boot/*-ucode.img) 6 7@ 取消生成 fallback 以减少空间占用 8- PRESETS=('default' 'fallback') 9+ PRESETS=('default') 10 11#default_config="/etc/mkinitcpio.conf" 12default_image="/boot/initramfs-linux-zen.img" 13@ 需要用 efibootmgr 添加其他项,不会就用下一条 14+ default_efi_image="/efi/EFI/Linux/linux-zen.efi" 15@ 如果目标计算机和当前执行指令的计算机不是一台,用这个 16+ default_efi_image="/efi/EFI/boot/bootx64.efi" 17#default_options="" 18 19#fallback_config="/etc/mkinitcpio.conf" 20fallback_image="/boot/initramfs-linux-zen-fallback.img" 21fallback_options="-S autodetect"
编辑
/etc/kernel/cmdline
,<UUID>
使用系统分区的 UUID 替换,使用blkid
查看1root=UUID=<UUID> rw loglevel=3 2# eg 3root=UUID=2223f3ec-b8f6-4e19-bb63-fcfed646c110 rw loglevel=3
创建文件夹:
mkdir -p /efi/EFI/boot
生成内核:
mkinitcpio -P
启用 DHCP
1echo "[Match]
2Name=e*
3
4[Network]
5DHCP=yes" | tee /etc/systemd/network/dhcp.network
6systemctl enable systemd-networkd
7systemctl enable systemd-resolved
安装并启用 SSH
1pacman -Sy openssh
2systemctl enable sshd
[选] 修改笔记本合盖策略
编辑 /etc/systemd/logind.conf
,以下策略将在合盖时关闭屏幕
1HandleLidSwitch=lock
2HandleLidSwitchExternalPower=lock
如果系统已经启动,可以使用 sudo systemctl restart systemd-logind.service
使立即生效
[选] 添加 ArchlinuxCN 软件源
添加配置
1echo '[archlinuxcn] 2Server = https://mirrors.bfsu.edu.cn/archlinuxcn/$arch' | \ 3tee -a /etc/pacman.conf
安装密钥环
1sudo pacman -Sy && sudo pacman -S archlinuxcn-keyring
重启进入系统
- 使用
exit
退出当前系统 - 使用
reboot
重启系统