跳转到内容

无人值守安装

Omarchy ISO 可以在无需人工操作的情况下完成安装。安装程序若发现第二个驱动器的标签为 cidata,且其中包含配置文件,便会复制这些文件、完全跳过设置向导,并自行重启进入已完成的系统。无需制作特殊 ISO,也无需额外添加启动菜单项;未连接此类驱动器时,安装行为不会改变,仍会显示通常的设置向导。

这使 Omarchy 很适合作为一次性开发环境的基础镜像:在 Proxmox 或通过 Packer 创建虚拟机,启动后即可离开,之后通过 SSH 连接。cidata 是 cloud-init 的 NoCloud 标签,因此常见的虚拟化工具都已知道如何挂载这样的驱动器。

这些文件与安装程序自身的向导写入的文件完全相同。因此,最容易的起步方式是先完成一次交互式安装(例如在虚拟机中),再将其写入 /root 的文件复制出来:

文件 必填 用途
user_configuration.json 是 磁盘、主机名、时区、键盘
user_credentials.json 是 用户名和密码哈希
user_full_name.txt 否 Git 全名
user_email_address.txt 否 Git 邮箱
user_encrypt_installation.txt 否 当配置包含 disk_encryption 块时为 true
authorized_keys 否 SSH 公钥,每行一个
tailscale_authkey 否 首次启动时加入 tailnet 所用的 Tailscale 认证密钥

可使用 openssl passwd -6 "yourpassword" 为 user_credentials.json 生成密码哈希。

你也可以不使用 user_credentials.json,而是放入一个名为 defer-provisioning 的空文件。这会执行与交互式操作相同的为其他所有者准备安装:系统安装时不包含个人信息,首次启动的人再选择键盘布局并创建自己的用户。这适合制作批量部署镜像,此时驱动器不应携带任何人的凭据。

存在 authorized_keys 时,安装程序会将这些密钥配置到用户的 ~/.ssh/authorized_keys,启用 sshd,并为其开放防火墙。(标准 Omarchy 安装虽然包含 openssh,但服务默认禁用、端口默认关闭;否则无人值守安装的设备将无法远程访问。)安装程序只会添加你的密钥,不会放宽 SSH 守护进程的其他认证设置。

存在 tailscale_authkey 时,设备会在首次启动时加入你的 tailnet:Tailscale 从 ISO 内置软件包安装,防火墙允许 tailnet 接口,后台任务会在设备真正获得网络后执行加入操作,并持续重试直至成功。请使用可重复使用且已预授权的密钥,以便一个驱动器镜像可服务多台设备。

任何具有正确标签的文件系统都可以。制作一个小型 ISO 是最简单的方式:

终端窗口
mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/

然后将它与 Omarchy ISO 一起挂载到虚拟机。以下是完整的 Proxmox 示例:

终端窗口
qm create 101 --name my-omarchy \
--bios ovmf --machine q35 --cpu host --cores 4 --memory 8192 \
--ostype l26 --scsihw virtio-scsi-single \
--efidisk0 local-lvm:0,efitype=4m,pre-enrolled-keys=0 \
--scsi0 local-lvm:40,discard=on,iothread=1 \
--net0 virtio,bridge=vmbr0 --vga virtio --serial0 socket \
--ide2 local:iso/omarchy.iso,media=cdrom \
--ide3 local:iso/cidata.iso,media=cdrom \
--boot order='scsi0;ide2'
qm start 101

启动顺序特意将磁盘列在最前:首次启动时,空磁盘会继续尝试从 ISO 启动;之后已安装的系统则始终从磁盘启动。

加密的无人值守安装并不完全无人值守,首次启动时仍需有人输入 LUKS 密码。并且,user_configuration.json 中的 disk_encryption 块会以明文携带该密码,因此请将根据加密安装创建的 cidata 驱动器视作秘密资料并妥善保护。