github编辑

根文件系统基于 ZFS 的 Arch Linux

ZFSBootMenu

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

自定义

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

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

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

仅支持 UEFI

本指南仅支持 UEFI。

准备

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

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

    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 wikiarrow-up-right 获取更多细节。可在无网络情况下通过命令 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. 从另一台计算机连接

  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。示例可参见 此页面arrow-up-right。 声明磁盘编号:

    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 系统分区,然后设置服务来同步其内容。

最后更新于