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