arch安装笔记
1.1 预备操作及网络验证
在虚拟机中通过 Arch Linux ISO 镜像启动后,进入 Live 环境。首要步骤是验证网络连通性,以确保后续软件包的下载。
# 测试与 Arch Linux 官方服务器的连通性
ping archlinux.org确认收到 ICMP 回复后,网络验证通过。
1.2 磁盘分区方案定义与实施
本节详述使用 cfdisk 交互式工具在目标磁盘 (/dev/sda) 上进行分区的具体操作步骤。本次安装遵循 GPT (GUID Partition Table) 分区方案。
首先,使用 lsblk 命令列出所有块设备,确认您要安装系统的目标磁盘。
# 检查磁盘列表和大小,确定目标磁盘符(例如 /dev/sda)
lsblk警告:接下来的操作是破坏性的,请务必确认选择了正确的磁盘。本文档以 /dev/sda 为例。
首先,执行以下命令启动分区工具,并将其指向目标磁盘:
cfdisk /dev/sda该命令将打开一个全屏的交互式界面。后续所有操作均在此界面中通过键盘完成。
选择分区表类型 (Label Type) 若目标磁盘为空盘或无有效分区表,
cfdisk会首先提示选择分区表类型。使用方向键选择gpt,然后按 Enter 键确认。创建分区 接下来,根据下表的规划逐一创建分区。在
cfdisk界面中,通过方向键↑/↓选择磁盘上的Free space,然后使用←/→键选择底部菜单项。目标分区规划表:
分区设备 规划容量 分区类型 挂载点及用途 /dev/sda1512 MiB EFI System/boot/efi(EFI 系统分区)/dev/sda22.5 GiB Linux swapSwap (交换空间) /dev/sda350 GiB Linux filesystem/(根文件系统)/dev/sda447 GiB Linux filesystem预留给 ZFS,本次安装不使用 规划理由:
/dev/sda1 (EFI): 512 MiB 是 UEFI 规范推荐的最小尺寸之一,对于存放多个引导加载程序绰绰有余。
/dev/sda2 (Swap): 2.5 GiB 是基于本虚拟机计划运行的内存大小(例如 2 GiB)设定的,用于休眠或内存压力较大时的补充。
/dev/sda3 (Root): 50 GiB 为操作系统和常用软件提供了充足的空间。
创建
/dev/sda1(EFI System Partition):- 确保选中了磁盘开头的
Free space。 - 在底部菜单选择
[ New ]并按 Enter。 - 当提示输入
Partition size时,键入512M并按 Enter。 - 此时分区已创建,但类型不正确。在底部菜单选择
[ Type ]并按 Enter。 - 在分区类型列表中,使用方向键找到并选中
EFI System,按 Enter 确认。
- 确保选中了磁盘开头的
创建
/dev/sda2(Linux Swap):- 使用
↓键选中/dev/sda1下方的Free space。 - 选择
[ New ],输入2.5G并按 Enter。 - 选择
[ Type ],在列表中找到并选中Linux swap,按 Enter 确认。
- 使用
创建
/dev/sda3(Root Filesystem):- 选中剩余的
Free space。 - 选择
[ New ],输入50G并按 Enter。 - 分区类型默认为
Linux filesystem,符合根分区的要求,无需更改。
- 选中剩余的
创建
/dev/sda4(ZFS Placeholder):- 选中最后剩余的
Free space。 - 选择
[ New ],直接按 Enter 键以使用所有剩余空间(应约为 47 GiB)。 - 分区类型同样默认为
Linux filesystem,符合要求。
- 选中最后剩余的
写入更改并退出 分区规划完成后,界面顶部会显示新规划的分区表,但此时更改仅存在于内存中,尚未写入磁盘。
- 在底部菜单中选择
[ Write ]并按 Enter。 - 程序会要求确认操作,这是最后防止误操作的机会。输入
yes并按 Enter。 - 待写入完成后,选择
[ Quit ]并按 Enter,退出cfdisk工具。
- 在底部菜单中选择
完成上述步骤后,可以使用 lsblk 命令检查磁盘分区是否与规划一致,以确认操作成功。
1.3 文件系统格式化与挂载
对已定义的分区进行格式化,并按照预定结构挂载至 Live 环境的 /mnt 目录。
- 文件系统创建:
# 格式化 EFI 系统分区为 FAT32 mkfs.fat -F32 /dev/sda1 # 初始化 Swap 分区 mkswap /dev/sda2 # 格式化根分区为 ext4 mkfs.ext4 /dev/sda3 - 文件系统挂载:
# 激活 Swap 分区 swapon /dev/sda2 # 挂载根分区至 /mnt mount /dev/sda3 /mnt # 创建并挂载 EFI 分区 mkdir -p /mnt/boot/efi mount /dev/sda1 /mnt/boot/efi
1.4 基础系统安装
使用 pacstrap 脚本将基础软件包及必要的工具集安装到目标根文件系统 (/mnt)。
pacstrap -K /mnt base linux linux-firmware vim networkmanager git sudo-K 选项会使用 Live 环境的密钥环来初始化新系统的 pacman 密钥环
1.5 核心系统配置
- 生成 fstab: 创建文件系统表,用于定义系统启动时的挂载规则。
genfstab -U /mnt >> /mnt/etc/fstab - 切换根环境: 使用
arch-chroot进入新安装的系统内部,以执行系统级别的配置。arch-chroot /mnt - 时区与本地化 (Chroot 环境内):
- 设置系统时区为
Asia/Shanghai。 - 编辑
/etc/locale.gen,启用en_US.UTF-8和zh_CN.UTF-8。 - 执行
locale-gen生成本地化信息。 - 在
/etc/locale.conf中设定LANG=en_US.UTF-8。
- 设置系统时区为
- 主机与网络配置 (Chroot 环境内):
- 在
/etc/hostname中定义主机名为arch-vm。 - 相应地更新
/etc/hosts文件。
- 在
- 设置 Root 密码 (Chroot 环境内):
passwd - 安装并配置引导加载程序 (Chroot 环境内):
- 安装 GRUB 及 UEFI 相关工具。
pacman -S grub efibootmgr - 执行 GRUB 安装,目标为 x86_64-efi 架构,EFI 目录为
/boot/efi。grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB - 生成 GRUB 配置文件。
grub-mkconfig -o /boot/grub/grub.cfg
- 安装 GRUB 及 UEFI 相关工具。
- 创建管理员用户 (Chroot 环境内):
- 创建新用户
nolan并将其加入wheel用户组,以备后续提权。useradd -m -G wheel nolan - 为新用户
nolan设置密码。 - 使用
visudo编辑 sudoers 配置,解除对%wheel组的注释,授予其sudo权限。
- 创建新用户
- 启用网络服务 (Chroot 环境内):
systemctl enable NetworkManager
1.6 安装收尾与首次启动
- 退出 chroot 环境 (
exit)。 - 卸载所有已挂载的分区 (
umount -R /mnt)。 - 重启系统 (
reboot)。 - 在首次启动后,使用
nolan用户登录,并安装htop软件包作为系统初步验证。sudo pacman -Syu htop
安装流程至此结束。
第二部分:附录:关键技术概念解析
2.1 磁盘分区方案:GPT 与 MBR
磁盘分区方案是定义存储设备上分区布局的底层规范。GPT (GUID Partition Table) 是替换传统 MBR (Master Boot Record) 的现代标准。其主要优势在于:突破了 MBR 的 2TB 磁盘容量和 4 个主分区的限制;通过在磁盘两端存储分区表备份,显著提高了数据结构的冗余度和可靠性;原生支持 UEFI 启动模式。
2.2 固件接口与启动模式:UEFI 与 Legacy BIOS
固件是嵌入在硬件设备中的低级别软件,负责在操作系统接管之前执行硬件初始化。UEFI (Unified Extensible Firmware Interface) 是取代传统 BIOS (Basic Input/Output System) 的现代固件接口规范。
与 BIOS 相比,UEFI 提供模块化设计、64 位寻址能力、图形化界面、网络功能和安全启动 (Secure Boot) 等高级特性。UEFI 规范规定,引导加载程序必须是存放于一个被称为 EFI 系统分区 (ESP) 内的 .efi 可执行文件。该分区必须采用 FAT 文件系统格式,以便固件能够识别和执行。
市面上有很多主板进入后显示图形化界面,用户界面可能标注为"BIOS设置",但实际上这些现代主板都使用的是UEFI固件。这不应被简单理解为“BIOS加了个皮肤”。真正的区别在于底层架构:传统 BIOS 是一个中断驱动的、16位汇编代码的集合,而 UEFI 是一个更像微型操作系统的、可扩展的 C 语言平台。图形化界面、网络启动等高级功能都是这种现代架构带来的自然产物。
2.3 引导加载程序:GRUB
引导加载程序 (Bootloader) 是一个在固件完成硬件初始化之后、操作系统内核启动之前的程序。它的核心职责是定位并加载操作系统内核到内存中,然后将执行控制权移交给内核。
GRUB (GRand Unified Bootloader) 是 Linux 生态系统中最常用的引导加载程序之一。在 UEFI 启动流程中,UEFI 固件负责从 ESP 分区加载并执行 GRUB 的 .efi 文件。随后,GRUB 接管控制权,凭借其识别 ext4 等复杂文件系统的能力,从根分区加载 Linux 内核 (vmlinuz-linux) 和初始内存盘 (initramfs-linux.img),最终启动操作系统。
2.4 根环境切换工具:arch-chroot
chroot (Change Root) 是一项允许进程将其根目录临时更改为文件系统中某个指定目录的操作。在 Arch Linux 安装过程中,此操作是必需的,因为它允许我们在新安装的系统能够独立启动之前,进入其内部环境执行配置命令。
arch-chroot 是 Arch Linux 提供的 chroot 封装脚本。相较于标准 chroot 命令,它额外执行了关键的准备工作,包括:
- 挂载 API 文件系统:自动将 Live 环境的
/proc、/sys、/dev等内核接口文件系统挂载到新的根环境中,确保系统工具(如pacman,grub-install)能够正常工作。 - 复制 DNS 配置:自动将 Live 环境的
/etc/resolv.conf复制到新根环境中,保证在 chroot 状态下依然具备网络域名解析能力。