无人值守自动化安装 (Unattended Installs)
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 | 否 | Tailscale 预授权密钥,用于首次开机自动加入网状网络 |
你可以通过 openssl passwd -6 "yourpassword" 命令生成 user_credentials.json 所需的密码哈希值。
你还可以放入一个名为 defer-provisioning 的空文件来代替 user_credentials.json。这会触发与交互式安装相同的为下一任机主准备模式:机器完成基础安装但不包含任何个人信息,由首次开机启动该机器的用户自行配置键盘并创建个人账户。这在批量制作公用设备镜像时极其有用。
SSH 远程访问与 Tailscale 预配
当 authorized_keys 文件存在时,安装程序会将这些公钥配置为目标用户的 ~/.ssh/authorized_keys,自动启用 sshd 守护进程,并在防火墙中开放 22 端口。(原版 Omarchy 安装默认禁用 openssh 服务且关闭该端口,否则无人值守机器将无法从外部连接)。安装程序仅会导入你的公钥 —— 不会放宽 SSH 守护进程的任何其他安全限制。
当 tailscale_authkey 文件存在时,计算机会在首次开机时自动加入你的 Tailscale 虚拟局域网:从 ISO 内置软件包中自动安装 Tailscale、在防火墙中放行 Tailnet 接口,并在后台监听网络连通后自动发起加入请求(失败会自动重试直到成功)。建议使用可重复使用 (Reusable) 且预先授权的 Auth Key,以便同一个镜像驱动盘服务多台机器。
构建 cidata 驱动盘镜像
任何拥有正确卷标的文件系统均可生效。制作一个微型 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 配置示例:
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
引导顺序将虚拟硬盘 scsi0 列在最前是有意为之的:首次开机时空白磁盘无法引导会自动顺延至 ISO 镜像启动安装,安装完成后再次开机则会自动从硬盘直接引导进入新系统。
两点注意事项
带全盘加密的无人值守安装并非 100% 纯无人值守 —— 在首次开机时依然需要人工在键盘上输入一次 LUKS 磁盘解密密码。此外,user_configuration.json 中的 disk_encryption 块包含明文形式的解密密码,因此请务必将制作好的 cidata 镜像文件视为敏感机密数据妥善保管。