Перейти к содержанию

Автоматические установки

ISO OmarOS может установить себя без кого-либо за клавиатурой. Если установщик находит второй накопитель с меткой cidata, несущий его файлы конфигурации, он копирует их, полностью пропускает мастер настройки и сам перезагружается в готовую систему. Никакой специальной сборки ISO, никакого дополнительного пункта в меню загрузки — без такого накопителя ничего не меняется, и вы получаете обычный мастер.

Это делает OmarOS отличным базовым образом для одноразовых сред разработки: создайте виртуальную машину в Proxmox или с помощью Packer, загрузите её, уйдите, зайдите по SSH. cidata — это метка cloud-init NoCloud, поэтому все распространённые инструменты виртуализации уже умеют подключать такой накопитель.

Файлы конфигурации

Файлы — это ровно то, что пишет собственный мастер установщика, поэтому проще всего получить стартовый набор — выполнить одну интерактивную установку (скажем, в виртуальной машине) и скопировать то, что она записала в /root:

Файл Обязателен Назначение
user_configuration.json Да Диск, имя хоста, часовой пояс, клавиатура
user_credentials.json Да Имя пользователя и хеш пароля
user_full_name.txt Нет Полное имя для Git
user_email_address.txt Нет Email для Git
user_encrypt_installation.txt Нет true, когда конфигурация содержит блок disk_encryption
authorized_keys Нет Публичные ключи SSH, по одному на строку
tailscale_authkey Нет Ключ аутентификации Tailscale для присоединения к вашему tailnet при первой загрузке

Хеш пароля для user_credentials.json генерируйте командой openssl passwd -6 "yourpassword".

Вместо user_credentials.json можно также положить пустой файл с именем defer-provisioning. Это запускает ту же установку с подготовкой для другого владельца, которую можно запустить интерактивно: машина устанавливается без личных данных, а тот, кто загрузит её первым, выбирает клавиатуру и создаёт своего пользователя. Это режим для стендов создания образов, где накопитель вообще не должен нести ничьих учётных данных.

Доступ по 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, собранному из зашифрованной установки, как к секрету, которым он и является.