Необслужвани инсталации¶
ISO файлът на OmarOS може да се инсталира сам, без никой да е пред клавиатурата. Ако инсталаторът намери втори диск с етикет cidata, носещ неговите конфигурационни файлове, той ги копира, пропуска изцяло съветника за настройка и сам рестартира в завършената система. Няма специална ISO компилация, няма допълнителен запис в менюто за зареждане — без прикачен такъв диск нищо не се променя и получаваш обикновения съветник.
Това прави OmarOS страхотен като базов образ за еднократни среди за разработка: създай виртуална машина в Proxmox или с Packer, зареди я, тръгни си, влез през SSH. cidata е етикетът NoCloud на cloud-init, така че всички често срещани инструменти за виртуализация вече знаят как да прикачат такъв диск.
Конфигурационните файлове¶
Файловете са точно това, което собственият съветник на инсталатора записва, така че най-лесният начин да получиш начален набор е да пуснеш една интерактивна инсталация (да речем във виртуална машина) и да копираш това, което е записал в /root:
| Файл | Задължителен | Предназначение |
|---|---|---|
user_configuration.json |
Да | Диск, име на хост, часова зона, клавиатура |
user_credentials.json |
Да | Потребителско име и хеш на парола |
user_full_name.txt |
Не | Пълно име за Git |
user_email_address.txt |
Не | Имейл за Git |
user_encrypt_installation.txt |
Не | true, когато конфигурацията носи блок disk_encryption |
authorized_keys |
Не | SSH публични ключове, по един на ред |
tailscale_authkey |
Не | Ключ за удостоверяване в Tailscale за присъединяване към твоя tailnet при първо зареждане |
Генерирай хеша на паролата за user_credentials.json с openssl passwd -6 "yourpassword".
Можеш също да пуснеш празен файл, наречен defer-provisioning, вместо user_credentials.json. Това изпълнява същата инсталация за подготовка за друг собственик, която можеш да задействаш интерактивно: машината се инсталира без лични данни и този, който я зареди първи, избира клавиатурата си и създава потребителя си. Това е режимът за машини за създаване на образи, където дискът изобщо не трябва да носи нечии идентификационни данни.
SSH достъп¶
Когато authorized_keys е наличен, инсталацията настройва ключовете като ~/.ssh/authorized_keys на потребителя, включва sshd и отваря защитната стена за него. (Стандартна инсталация на OmarOS доставя openssh с изключена услуга и затворен порт, така че необслужвана машина иначе би била недостижима.) Инсталацията само добавя ключовете ти — не разхлабва никоя от другите настройки за удостоверяване на SSH демона.
Когато tailscale_authkey е наличен, машината вместо това се присъединява към твоя tailnet при първо зареждане: Tailscale се инсталира от пакетите, включени в ISO файла, защитната стена позволява интерфейса на tailnet-а и фонова задача изпълнява присъединяването веднага щом машината действително има мрежа, като опитва отново, докато успее. Използвай ключ за многократна употреба с предварително разрешаване, така че един образ на диск да може да обслужва много машини.
Създаване на диска cidata¶
Всеки файлов систем с правилния етикет работи. Малък ISO файл е лесният начин:
mkdir cidata
cp user_configuration.json user_credentials.json authorized_keys cidata/
genisoimage -output cidata.iso -volid cidata -joliet -rock cidata/
След това го прикачи към виртуалната машина редом с ISO файла на OmarOS. Ето пълен пример с Proxmox:
qm create 101 --name my-omaros \
--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/omaros.iso,media=cdrom \
--ide3 local:iso/cidata.iso,media=cdrom \
--boot order='scsi0;ide2'
qm start 101
Редът на зареждане изброява диска първи нарочно: празният диск при първото зареждане преминава към ISO файла, а инсталираната система оттогава нататък зарежда от диска.
Две уговорки¶
Криптираните необслужвани инсталации не са напълно необслужвани — някой все пак трябва да въведе LUKS паролната фраза при първото зареждане. А блокът disk_encryption в user_configuration.json носи тази паролна фраза в чист текст, така че третира диск cidata, създаден от криптирана инсталация, като тайната, която е.