И снова об mkimage-profiles — инструментарий сборки дистрибутивов ОС «Альт» (Антон Мидюков, OSSDEVCONF-2024)
Материал из 0x1.tv
- Докладчик
- Антон Мидюков
Нововведения в инструментарии сборки дистрибутивов ОС «Альт» за 2020-2024
Содержание
Видео
Презентация
Thesis
За прошедшие пять лет с момента предыдущего доклада по mkimage-profiles было немало важных изменений.
Чтобы поддерживать несколько бранчей была введена переменная BRANCH (дефолтное значение соответствует бранчу хоста). Кроме того, это позволило удобно подключать нужный apt.conf в зависимости от заданного бранча, настроив
/.mkimage/profiles.mk.
Сборка initrd и добавление ядер в iso образы была перенесена из mkimage в mkimage-profiles. Были сделаны фичи initrd-propagator (для p10) и initrd-bootchain (замена propagator для p11, sisyphus). Теперь initrd собирается самим make-initrd, все модули прописываются в initrd.mk, больше никакого full.cz не собирается, на выходе обычный initrd.img.
Появилась возможность собирать iso-образы с несколькими ядрами.
Isolinux стал legacy, по дефолту в iso-образах используется grub-pc. Для isolinux было невозможно реализовать возможность выбора ядер при загрузке. Это пришлось бы делать на уровне gfxboot, который требует поддержку графики.
Поддержка rEFInd для загрузки iso в режиме EFI была прекращена. Вместо него используется grub-efi. Это позволило поддерживать загрузку в EFI в текстовом режиме и через последовательную консоль, а также использовать один конфиг grub для legacy и uefi, реализовать поддержку выбора ядер.
Для каждой стадии сборки готовятся списки rpm и srpm пакетов и сохраняются в .disk/ у iso, и в /root/.install-logs/ у rootfs и контейнеров. Что позволяет легко отслеживать изменения пакетной базы и выявлять баги.
Каждый iso теперь частично самодокументируется. В .disk/ есть такие файлы: mkinitrd (команда для сборки initrd) и initrd.mk (конфиг для сборки initrd.img).
Появилась возможность использовать классический инсталлятор из live. Это цель use/live-install для установки распаковкой live. При этом «лишние» пакеты удаляются (те, что уже есть в live). Если добавить цель use/live-install/pkg, то установка будет происходить аналогично install2 из пакетов.
Появилась возможность использовать режим rescue в обычном live. Для этого нужно задействовать цель use/live/rescue. При этом в live должна использоваться система инициализации systemd, а в kernel cmdline будет прописан параметр systemd.unit=rescue.target.
Таким образом, стало возможным собирать дистрибутивы с одним сквошом live вместо трёх, что сильно уменьшает размер образа в современных реалиях.
Появился OEM-режим установки для altinst use/install2/oem и для live use/live-install/oem.
Главным нововведением для нового стабильного бранча p11 стало изменение системы загрузки первой стадии (initrd) у iso-образов с propagator на make-initrd-bootchain-altboot, о котором вскользь упоминалось вначале.
Об этом будет подробно в докладе.