DollyPapper
@DollyPapper

Как работают установщики OS Linux?

Добрый день! Собираю на данный момент по рабочей задаче под тонкие клиенты "свой линукс". На текущий момент сборка делается так
1) Подготавливаются необходимые изменения в таргет ОС
2)Загружаюсь с любой другой ОС, ставлю необходимые утилиты по типу xorriso для записи ISO
3)Запускаю свой сборочный скрипт который качает systemrescue-cd образ основанный на арче, распаковывает его squashfs, пакую туда архив с таргет системой (прям вот gzip всей системы), собираю обратно squashfs, пишу исошник.
4)Загружается с флешку этот systemrescuecd на арче, из него опять же скриптом установки распаковываю всю систему, форматирую диски, назначаю новый хостнейм и прочие дела.

Вопрос собственно в том, на сколько это "плохой" путь. Интересует именно вопрос пакования таргет системы в архив и распаковка его на новом железе отличающемся от того на котором система была изначально установлена и допилена под свои нужды. Есть ли у данного метода какие-то подводные камни которые которые стоит учесть? Например привязка каких нибудь файлов или функций ОС или ядра к оборудованию или что-то подобное.
Имеет ли вообще такая установка право на жизнь?

Как работают установщики других ОС? Убунты например? Они тоже грузят сначала не целевую систему и из нее ставят целевую, или как то иначе?
  • Вопрос задан
  • 179 просмотров
Решения вопроса 2
Adamos
@Adamos
А что, в арче нет preseed? Ну, Ansible-то точно есть...
Зачем эти запаковки всей системы, как в виндах каких-нибудь?
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Linux
Просто IT'шник.
Тут есть вопрос о железе на которое будет все раскатываться и конечной цели.
Если предположить что везде будет uefi совместимая загрузка, пользователи локальные то я бы сделал так.
Взял арч.
Написал скрипт.
1) Разметка диска скриптом через sfdisk. Грубо на 2 части, /boot и / .Первый vfat на пол гига, все остальное ext4 под / . Назначение единнообразных лейблов разделам чтобы потом грузится по ним а не по UUID, скажем arch_boot и arch_root.
2) Установка базовой ОС. Локаль, часовой пояс, hostname и прочая мелочь.
3) Установка дополнительных пакетов необходимых, DE и прочее именно необходимое.
4) Установка systemd-boot в качестве бутлоадера. Максимально просто. Копирование заранее созданного конфига для бута ОС. Создание правила пакмана для обновления systemd-boot после обновы пакета с ним.
5) Включение службы systemd-timesyncd . Копирование конфига для него с прописанным сервером времени.
6) Отключение службы сети от DE и включение службы systemd-networkd, копирование конфига или конфигов нужных. Включение systemd-resolved (если необходимо то конфиг с прописанными dns нужными).
7) Запуск systemd-homed , копирование "рыбы"(или старого хомяка ) директории пользователя с конфигами софта который будет использоваться. (внезапно это удобно, если не заморачиваться с luks).
8) Накатка административных кофигов, ssh\ftp и прочего.

Т.е. весь скрипт фактически сводится к автоматической разметке диска, установке пачки пакетов. Копирование конфигов и хомяка, включение служб. В случае арча я бы еще пошаманил в конфигах пакмана запретив распаковывать некоторые файлы, типа исходников, ненужных локалей и прочего ненужного обычному пользователю в целях уменьшения итоговой системы. Единожды подготовив все можно получить универсальный скрипт инсталяции в котором всегда будет свежая система.
Конечно если у вас там ldap и большая завязка на что то, то вероятно, такой способ будет не совсем удобным.
Если все в пределах локалки то тут скорее всего в разы удобнее будет pxe загрузка какого нибудь thinstation.

Касательно изначального вопроса про упаковку всей системы в tar.gz архив, вариант не очень хороший по многим причинам но имеет право жизни если вы будете учитывать все нюансы этого подхода.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@pfg21
ex-турист
инсталяк убунту-лайв просто рсинкает свой развернутый в памяти образ на будущий рутовый раздел.
потом запускает скрипты, которые модифицируют получившийся рутовый раздел под текущую аппаратную реалию: меняют fstab, устаналивают груб в загрузочную запись, создают новые идентификаторы, ключи и все остальное необходимое для уникальной индивидуальности каждой системы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы