ALT Linux Team development discussions
 help / color / mirror / Atom feed
From: "Антон Мидюков" <midyukov-anton@ya.ru>
To: devel@lists.altlinux.org,
	Distributions development <devel-distro@lists.altlinux.org>
Subject: Re: [devel] ОЕМ при установке всегда
Date: Sun, 26 May 2024 12:44:56 +0700
Message-ID: <7490fb8e-1474-41c6-ab0e-e5d4d8bfaa26@ya.ru> (raw)
In-Reply-To: <1115f401-e7a2-4f78-97f1-1f1da6fd7e20@gmail.com>

26.05.2024 09:01, Leonid Krivoshein пишет:
> Всем привет!
> 
> 
> On 5/26/24 02:06, Evgeny Sinelnikov wrote:
>> Доброй ночи,
>>
>> пт, 19 апр. 2024 г. в 12:00, Антон Мидюков <midyukov-anton@ya.ru>:
>>> 19.04.2024 14:50, Sergey V Turchin пишет:
>>>> On Thursday, 18 April 2024 21:51:28 MSK Leonid Krivoshein wrote:
>>>>
>>>> [...]
>>>>> Предлагался как вариант отказ от нынешнего инсталлятора, перенос части
>>>>> шагов в stage1, другой части шагов как это сделано с OEM уже при первой
>>>>> загрузке (alterator-setup),
>>>> Мне нравится идея выделить ОЕМ-подобное, выполнять его отдельно после
>>>> перезагрузки и лишь менять состав шагов в зависимости от дистрибутива.
>>>> Это нужно потому, что отдельная настройка ОЕМ после установки портит некоторые
>>>> настройки, которые делают installer-features-* и их надо запускать ещё раз, но
>>>> никто этого не делает. При установке по сети достаточно будет закинуть какой-
>>>> нибудь autoinstall-файл, по которому всё само сделается.
>>>>
>>> А всё от того, что надо запускать эти настройки из /etc/firsttime.d/
>>> Перенести их надо, и всё будет работать правильно.
>>>
>>> Если уж и делить, то с той целью, чтобы не нужно было как сейчас запускать alterator в чруте.
>>> Но установка grub и настройка пароля LUKS, как-то не OEM-но, а они выполняются в чрутном альтераторе.
>>> Да и пароль root может быть необходимо задать.
>>>
>>> Такое разделение облегчило бы переход на новый альтератор, количество необходимых модулей старого типа резко бы сократилось.
>>> Новый альтератор не нужно было бы запускать в инсталляторе.
>>>
>>>>> тогда установщик не нужен, мы развёртываем подготовленную rootfs
>>>> Это можно решить отдельно, но уже видна такая тенденция у коллег из других
>>>> дистрибутивов.
>>>>
>> Это очень интересная тема. Не кажется ли она более подходящей для:
>> - https://lists.altlinux.org/pipermail/devel-distro/ ?
> 
> Да, наверное. Хотя, будущее инсталлятора может интересовать многих и в рассылке devel@.
> 
> 
>> В целом, по существу, я уверен в том, что использование механизмов не
>> выполняющихся "системно", а выполняющихся исключительно скриптах (или
>> копированием скриптов в /etc/firsttime.d/) в mkimage-profiles - не
>> очень хорошая идея.
> 
> Хорошо, что такой механизм уже есть. Он вроде как единственный, позволяющий выполнить предварительное развёртывание на "чужой" архитектуре. Например, мы можем распаковать систему на microSD, используя intel'овую машину, вставить эту microSD в какую-нибудь не intel'овую экзотику, где при первом включении будет выполнен postinstall.
> 
> Стоит сразу заметить, что даже при развёртывании на эту microSD не должны выполняться %post в RPM-пакетах, предназначенные для работы на целевой ("чужой") архитектуре. Заодно вспомнить про /_NEW_SYSTEM_ и $DURING_INSTALL.

Если не будет необходимости на этапе установки выбирать разный набор пакетов, то можно собирать тарбол с rootfs и устанавливать его.

> 
> Здесь же про воспроизводимость и тестирование: мы собрали образ на сборочнице, но никакие скрипты, включая %post в пакетах, предназначенные для работы на целевой архитектуре, раньше времени не должны выполняться. Они должны отработать только при первом запуске после развёртывания.

Не понимаю я этого. Зачем? При сборке rootfs мы всё в hasher ставим, скрипты отрабатывают на нативной архитектуре.

> 
> 
>> На примере сервера я планирую постепенное изживание
>> installer-features-*, как механизмов несистемной, тонкой настройки,
>> более никакими методами не воспроизводимых и скрытых в недрах профиля
>> продукта. Их перенос в /etc/firsttime.d/ будет уже большой шаг вперед,
>> но всех необходимых задач это не решает. Например, развертывание
>> различных служб следует, всё-таки, переносить в контролируемые
>> администратором инструменты, а не в эвристику, результаты работы
>> которой администратору приходится потом вычищать вручную.
> 
> Да, нынешние installer-features-* надо изживать во всех дистрибутивах, особенно *-stage3, и не только по названным причинам. Стоит подумать об их миграции в /etc/firsttime.d так, чтобы было системно, воспроизводимо, опакечено, в дальнейшем управляемо и изначально интегрировано с m-p.

Никакой интеграции с m-p не требуется. Просто опакетить в /etc/firsttime.d и добавить пакеты в сборочный профиль.

> 
> 
>> Ниже попытаюсь изложить минимальный концепт реализации этого плана:
>> 1) вариативность установки и деталей, доступных в процессе
>> инсталляции, необходимо свести к минимуму;
>> 2) выбор дополнительно устанавливаемых групп пакетов перенести в
>> постустановчный процесс;

Это и сейчас поддерживается. Можно собрать rootfs с целью use/oem/install.

>> 3) все дополнительные настройки, исполняемые для дополнительно
>> устанавливаемых групп пакетов перенести в механизмы доступные штатно
>> через инструменты администрирования;
>> 4) параметры настройки штатных механизмов перенести в системные файлы
>> настройки, редактируемые как вручную, так и через API на DBus;
>> 5) модулям, применяющим системные настройки, предполагается
>> предоставить возможность чтения настроек без запуска службы DBus,
>> чтобы чтение и применение настроек могло выполняться даже в
>> ограниченном окружении в хешера (если это применимо, конечно).
> 
> А что, если доверить пост-конфигурирование какой-то существующей системе, типа salt или ansible? Меньше изобретать и допиливать, есть готовые веб-морда, документация, возможность управления большим парком машин. Просто, мысли вслух...
> 
> 
>> ______________
>>
>> По поводу идеи с темой "ОЕМ при установке всегда" у меня есть
>> предложение предварительно выполнить следующий набор шагов:
>>
>> 1. Рассмотреть возможности Kickstart для того, чтобы отобрать перечень
>> уже существующих сценариев использования, которые могут быть у нас
>> реализованы:
>> - https://docs.fedoraproject.org/en-US/fedora/f36/install-guide/appendixes/Kickstart_Syntax_Reference/
> 
> К слову, в make-initrd функционал разбивалки для stage1 с таким синтаксисом частично реализован: https://github.com/osboot/make-initrd/tree/master/features/kickstart , но до полной совместимости ещё далеко. Установщик должен уметь развёртывать систему по файлам ответов не задавая вопросов, он должен изначально под это проектироваться, и синтаксис должен быть удобным для этих целей.
> 
> 
>> 2. Оценить и осмыслить перечень всех ожидаемых и планируемых в
>> ближайшее время к реализации возможностей, которые мы хотим видеть в
>> первую очередь.
> 
> Собственно, всё, что должно и может конфигурироваться при установке, то и нужно в первую очередь.
> 
> 
>> 3. Выделить значимые задачи, для решения которых требуется функционал
>> ОЕМ-установки.
>>
>> Хочу отметить, не я этот термин применил, что OEM означает "original
>> equipment manufacturer". Действительно ли мы тут обсуждаем механизм,
>> который означает оригинальное значение этой аббревиатуры? Ожидание от
>> него не в том, что можно будет автоматически установить Альт на
>> заданную железку, с заданными настройками, а в том, что внешний, по
>> отношению к нам производитель железки сможет, взяв базовый
>> установочный образ, сделать кастомную сборку под свою аппаратную
>> разработку. Легитимность и лицензионная чистота этого результата -
>> вопрос второй.
>>
>> В-первую очередь, для внешнего аппаратного вендора стоит вопрос в том,
>> как завести его железку. А для этого, как правило, требуется
>> установить обновлённое, или даже кастомное, ядро (кто будет отвечать
>> за его сопровождение - это тоже второй вопрос).
>> Во-вторую очередь, внешний вендор ожидает возможность напихать своей
>> "блобятины" (firmware и драйверов, и, может быть, даже
>> "криптокостылей" и т.п.).
>>
>> Всё это и нам полезно было бы для отладки и создания кастомных сборок.
>> Ставится ли так вопрос при проектировании ОЕМ-установки?
> 
> Крайне неудачное название "OEM установка", вызывающее много слов.

Предустановка.

> 
> Вот что на самом деле бывает (и нужно нам), это из разных областей:
> 
> 1. Подсовывание диска с OEM-драйверами в процессе установки стандартного дистрибутива. Без него железо не увидится или не заработает правильно. Реализовано во всех дистрибутивах, начиная с Windows, ещё в середине 90-х, было когда-то и у нас в пропагаторе, пока не прекратилась поддержка флоппи-дисков. Именно это и называют "OEM установкой".
> 
> 2. Подготовка на заводе кастомного образа, при развёртывании с которого не придётся отвечать на разные вопросы. Данный процесс не подразумевает запихивание нужного функционала в установщик ОС. Напротив, система ставится штатным способом на эталонную машину. Производитель вносит в неё необходимые изменения. Например, системный интегратор может доустановить проприетарные пакеты, что-то донастроить. Затем эталонная система должна быть вычищена, запечатана, с неё снимается образ, пригодный для штатного установщика, и после развёртывания на целевое железо могут быть выполнены какие-то первые шаги приветствия, типа alterator-setup (опционально).
> 
> Запихнув "OEM установку" в инсталлятор, мы закрыли только часть потребностей, это редко востребованный кейс.
> 

Вообще-то она позволяет установить систему в виртуалку с универсальным initrd, донастроить систему (нужно убрать параметр загрузки systemd.unit=setup.target), после чего можно упаковать в тарбол и развёртывать.

-- 
С уважением, Антон Мидюков <antohami@altlinux.org>


  reply	other threads:[~2024-05-26  5:44 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-17 17:21 [devel] подсистема настройки сети в дистрибутивах Alexey Shabalin
2024-04-17 18:02 ` [devel] netplan (was: подсистема настройки сети в дистрибутивах) Arseny Maslennikov
2024-04-17 18:52   ` Alexey Shabalin
2024-04-17 18:39 ` [devel] подсистема настройки сети в дистрибутивах Alexey Shabalin
2024-04-18  2:15 ` Антон Мидюков
2024-04-18  9:17 ` Alexey V. Vissarionov
2024-04-18 15:04   ` Alexey Shabalin
2024-04-19  3:19     ` Anton Farygin
2024-04-19  4:52     ` Alexey V. Vissarionov
2024-04-18 18:51 ` Leonid Krivoshein
2024-04-19  0:29   ` Антон Мидюков
2024-04-19 11:32     ` Leonid Krivoshein
2024-04-19  7:50   ` [devel] ОЕМ при установке всегда (was: подсистема настройки сети в дистрибутивах) Sergey V Turchin
2024-04-19  8:00     ` [devel] ОЕМ при установке всегда Антон Мидюков
2024-05-25 23:06       ` Evgeny Sinelnikov
2024-05-26  2:01         ` Leonid Krivoshein
2024-05-26  5:44           ` Антон Мидюков [this message]
2024-05-26 11:52           ` Alexey Gladkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7490fb8e-1474-41c6-ab0e-e5d4d8bfaa26@ya.ru \
    --to=midyukov-anton@ya.ru \
    --cc=devel-distro@lists.altlinux.org \
    --cc=devel@lists.altlinux.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

ALT Linux Team development discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/devel/0 devel/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 devel devel/ http://lore.altlinux.org/devel \
		devel@altlinux.org devel@altlinux.ru devel@lists.altlinux.org devel@lists.altlinux.ru devel@linux.iplabs.ru mandrake-russian@linuxteam.iplabs.ru sisyphus@linuxteam.iplabs.ru
	public-inbox-index devel

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.devel


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git