For the complete documentation index, see llms.txt. This page is also available as Markdown.

构建以 ZFS 为根文件系统的 Arch Linux

ZFSBootMenu

ZFSBootMenu 是一种不受此类限制的替代引导加载器,还支持启动环境。如果你计划使用 ZBM,请不要参照本文,因为与其布局不兼容。请参考其网站获取安装细节。

自定义

除非另有说明,否则不建议在重启之前自定义系统配置。

仅使用经过充分测试的存储池特性

你应且只应使用经过充分测试的存储池特性。如果数据完整性至关重要,请避免使用新特性。例如,可参见 此评论

仅支持 UEFI

本指南仅支持 UEFI。

准备

  1. 禁用安全启动。如果启用了安全启动,将无法加载 ZFS 模块。

  2. 由于最新 Live CD 的内核可能与 ZFS 不兼容,我们将使用默认自带 ZFS 的 Alpine Linux Extended。 下载最新版扩展变体的 Alpine Linux Live 镜像,校验 校验和,再从该镜像启动。

    gpg --auto-key-retrieve --keyserver hkps://keyserver.ubuntu.com --verify alpine-extended-*.asc
    
    dd if=input-file of=output-file bs=1M
  3. 以 root 用户登录。密码为空。

  4. 配置网络

    setup-interfaces -r
    # 必须使用选项 "-r" 才能正确启动网络服务
    # 示例:
    network interface: wlan0
    WiFi name:         <ssid>
    ip address:        dhcp
    <按回车键以完成网络设置>
    manual netconfig:  n
  5. 如果使用无线网络但网络未显示在列表中,请参阅 Alpine Linux wiki 获取更多细节。可在无网络情况下通过命令 apk add wpa_supplicant 安装 wpa_supplicant

  6. 配置 SSH 服务器

    setup-sshd
    # 示例:
    ssh server:        openssh
    allow root:        "prohibit-password"  "yes"
    ssh key:           "none"  "<公钥>"
  7. 设置 root 密码或 /root/.ssh/authorized_keys

  8. 从另一台计算机连接

    ssh root@192.168.1.91
  9. 配置 NTP 客户端进行时间同步

    setup-ntp busybox
  10. 设置 apk-repo。将显示可用镜像列表,按空格键继续。

    setup-apkrepos
  11. 本指南中使用由 udev 生成的可预测磁盘名称。

    apk update
    apk add eudev
    setup-devd udev
  12. 目标磁盘 列出可用磁盘:

    find /dev/disk/by-id/

    如果使用 virtio 作为磁盘总线,请关闭虚拟机并为磁盘设置序列号。对于 QEMU,使用 -drive format=raw,file=disk2.img,serial=AaBb;对于 libvirt,请编辑域 XML。示例可参见 此页面。 声明磁盘编号:

    DISK='/dev/disk/by-id/ata-FOO /dev/disk/by-id/nvme-BAR'

    单块磁盘安装使用:

    DISK='/dev/disk/by-id/disk1'
  13. 设置挂载点

    MNT=$(mktemp -d)
  14. 设置分区大小: 设置 swap 大小(GB),若不希望 swap 占用过多空间,可设为 1。

    SWAPSIZE=4

    设置磁盘末尾保留空间,最少 1GB。

    RESERVE=1
  15. 从 Live 安装介质安装 ZFS 支持:

    apk add zfs
  16. 安装分区工具

    apk add parted e2fsprogs cryptsetup util-linux

系统安装

  1. 对磁盘进行分区。

    注意

    必须清除目标磁盘上所有现有的分区表和数据结构。 对于基于闪存的存储,可使用以下 blkdiscard 命令:

  2. 仅为本次安装设置临时加密 swap,当可用内存较小时非常有用:

  3. 加载 ZFS 内核模块

  4. 创建根存储池

    • 未加密:

  5. 创建根系统容器:

    创建系统数据集,使用 mountpoint=legacy 管理挂载点:

  6. 格式化并挂载 ESP。仅使用其中一个作为 /boot,之后需设置镜像:

系统配置

  1. 下载解压最小 Arch Linux 根文件系统:

  2. 启用社区仓库:

  3. 生成 fstab:

  4. chroot:

  5. 在 pacman 配置中添加 archzfs 仓库:

  6. 安装基础软件包:

  7. 安装 ZFS 软件包:

  8. 配置 mkinitcpio:

  9. 物理机还需安装固件:

  10. 启用网络时间同步:

  11. 生成 host id:

  12. 进行本地化:

  13. 设置语言、键盘布局、时区、主机名:

  14. 设置 root 密码:

引导加载器

  1. 安装 rEFInd 引导加载器:

  2. 添加引导条目:

  3. 退出 chroot:

  4. 卸载文件系统并创建初始系统快照:

  5. 导出所有存储池:

  6. 重启:

  7. 挂载其他 EFI 系统分区,然后设置服务来同步其内容。

最后更新于