Глава 7. features.in

Этот каталог содержит т.н. фичи (features, особенности).

Фича — отдельно подключаемая сущность, которая содержит повторно используемые конфигурацию/код и определяет одну из особенностей создаваемого образа. Может зависеть от других фич либо субпрофилей.

Каждая фича должна содержать файл config.mk, включаемый в main.mk при построении конфигурации будущего профиля; он может описывать одну или более целей вида use/*, дополняющих конфигурацию, и обязан добавить имя фичи в $(FEATURES), для чего создана функция add_feature.

На этапе генерации сборочного профиля фичи рассматриваются после инициализации профиля (см. image.in/) и копирования субпрофилей (см. sub.in/). Для каждой фичи, указанной в $(FEATURES), копируются подкаталоги сообразно включенным субпрофилям, а также lib/ и {image-,}scripts.d/; затем выполняются generate.sh и generate.mk при их наличии.

Если фича дополняет хуками семейство целевых субпрофилей, построенных на одном базовом, можно воспользоваться подкаталогом с именем исходного базового субпрофиля (см. $src, $dst в Makefile).

Рекомендуется давать несколько различающиеся имена скриптам, которые одна и та же фича может добавлять в различные стадии, чтобы они не выглядели одинаково в логе сборки.

Наиболее востребованные цели можно снабжать "ярлычками" вроде "+icewm" с тем, чтобы сделать более краткими и выразительными использующие их правила. Просьба не злоупотреблять количеством, такие имена предполагается показывать в интерфейсе к профилю.

Каталог lib/ является специфическим для фич, определяющих построение конкретного вида образа — см. build-*/.

Несложный пример содержится в 00example/, более близкий к жизни и нынешним пределам возможностей метапрофиля — в syslinux/.

См. тж. файлы README в каталогах фич (отсутствие — баг!).

7.1. features.in/00example

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

Вовсе не требуется втягивать всё в свою фичу: лучше постараться сделать её минимальной, самодостаточной и полезной в качестве "кирпичика".

Единственной обязательной частью фичи является файл config.mk, который включается в distro.mk верхнего уровня и предоставляет цель вида use/*, специфичную для данной фичи, а также добавляет её в переменную FEATURES. Если название фичи не упоминается в списке, содержащемся в этой переменной, то она не задействуется при построении профиля, а только при сборке конфигурации.

Для наиболее ходовых целей use/, особенно если их много, можно создавать цели-алиасы + (например, +power). Просьба относиться вдумчиво, т.к. в дальнейшем предполагается визуализировать такие цели в UI конфигурирования образа.

Остальное содержимое является дополнительным и используется в таком порядке (см. features.in/Makefile):

  • сперва в $(BUILDDIR)/image/ копируются все подкаталоги, соответствующие итоговым именам субпрофилей, запрошенных для профиля образа; при этом они сливаются с деревом, которое уже сформировано субпрофилями (sub.in/) и уже скопированными фичами; если какие-либо файлы перекрылись по именам, rsync должен оставить резервные копии (~), которые должны просигнализировать о беспорядке;
  • запускается generate.sh, если существует и исполнимый;
  • применяется generate.mk, если существует и непустой.

Например, если используются субпрофили stage1, stage2/install2 и main, можно решить собрать специфические для фичи скрипты инсталятора в install2/image-scripts.d/ (или необходимые для операций с пакетной базой — в main/scripts.d/, смотря чего надо добиться; загляните также в документацию mkimage).

А если требуются нетривиальные действия по конфигурированию (как при сборке syslinux.cfg из кусочков, в зависимости от того, что из запрошенных модулей оказалось в наличии) — то их можно произвести из generate.sh и generate.mk.

Пожалуйста, присылайте отзывы о (бес)полезности кода в этом каталоге mike@altlinux.org.

7.2. features.in/alternatives

Данная фича позволяет задавать альтернативы [1]. Например, так:

@$(call add,ALTERNATIVES,/usr/bin/xvt:/usr/bin/xterm)

Также в самом конфиге могут быть уже преопределены цели для установки альтернатив. Например, use/alternatives/xvt/% позволяет задавать произвольные альтернативы для xvt: use/alternatives/xvt/xterm, use/alternatives/xvt/mate-terminal и т.д. При этом альтернатива должна быть доступна.

7.3. features.in/apt-conf

Данная фича определяет то, какая конфигурация apt попадёт в образ.

7.4. features.in/armh-mcom02

Фича предназначена для обеспечения поддержки процессорного модуля "ЭЛВИС Салют ЭЛ24ПМ2".

Подробнее: https://altlinux.org/mcom02

7.5. features.in/arm-rpi4

Настраивает систему для Raspberry Pi 4.

7.6. features.in/bootloader

Добавление установки загрузчика основной системы, затребованного посредством указания "grub" или "uboot" в BASE_BOOTLOADER.

Модуль alterator-grub добавляется в устанавливаемую систему (он НЕ должен требоваться пакету installer-distro-) и требует пакет выбранного загрузчика. Так как для uboot такого модуля нет и в тоже время uboot не используется в установочных дистрибутивах, то установка модуля alterator была ограничена целями distro/, формирующими ISO-образы.

Обратите внимание: в процессе конфигурирования дистрибутива "переключение" загрузчика может происходить только в одну сторону — если выставлен grub, произведено переключение на lilo и затем произведена ещё одна попытка переключения на grub, то в конфигурации останется lilo как последняя "новая" цель с точки зрения make.

При необходимости всё-таки "пересилить" последнее изменение можно

@$(call set,BASE_BOOTLOADER,grub)

Реализация экспериментальная (нужно модуляризовать installer-steps).

7.7. features.in/branding

Эта фича врезается в makefile субпрофилей и обеспечивает добавление задающих внешний вид и сообщения дистрибутива пакетов; см. тж. https://www.altlinux.org/Branding

Реализация "двумерная" — отдельно задаётся BRANDING (см. пакеты branding-*-%version-%release.src.rpm), затем отдельно указывается, какие и куда помещать компоненты заданного брендинга.

Назначение и возможные значения (если требуются):

  • STAGE1_BRANDING

    • относится к загрузке со сгенерированного образа (например, ISO)
    • bootloader bootsplash (при старте)
  • STAGE2_BRANDING

    • общая часть для всех вариантов stage2
    • bootsplash (при выключении)
  • INSTALL2_BRANDING

    • специфические пакеты брендирования инсталятора
    • notes slideshow
  • THE_BRANDING

    • общий список для использования в установленной системе и LiveCD
    • alterator bootsplash graphics indexhtml notes slideshow

7.8. features.in/browser

Эта фича обеспечивает наличие и конкретизацию выбора браузера. Разумеется, дополнительные варианты могут быть установлены явным или косвенным затребованием.

Следует понимать, что каждая из целей может быть использована лишь один раз, повторное упоминание будет проигнорировано make.

7.9. features.in/build-distro

Эта фича конфигурирует создание образа дистрибутива, включая работу с субпрофилями — которая сейчас нужна только дистрибутивным целям.

Дополняет финальную стадию сборки (lib/, scripts.d/) и тесно с ней связана.

При желании более полно воспользоваться доступными средствами фиксации метаданных обратите внимание на следующие переменные: META_SYSTEM_ID, META_PUBLISHER, META_PREPARER, META_APP_ID, META_VOL_ID, META_VOL_SET, META_BIBLIO, META_ABSTRACT; см. тж. genisoimagerc(5) из пакета genisoimage.

При необходимости задать своё содержимое файла .disk/info, который также используется propagator, см. META_DISK_INFO.

7.10. features.in/build-ve

Эта фича конфигурирует создание образа виртуального окружения (VE), что используется для сборки шаблонов OpenVZ и ARM-чрутов для TWRP.

Дополняет финальную стадию сборки (lib/, image-scripts.d/) и тесно с ней связана.

7.11. features.in/build-vm

Эта фича конфигурирует создание образа виртуальной машины (VM) или тарбола rootfs для использования его на реальном компьютере. Дополняет финальную стадию сборки (lib/, image-scripts.d/). Для создания образа виртуальной машины требуется sudo(8) Для создания тарбола sudo не требуется. — см. тж. doc/vm.txt

7.12. features.in/cleanup

Эта фича вместо созидания занимается выкидыванием лишнего (например, части модулей инсталятора из установленной системы).

По возможности стоит работать над дизайном инфраструктуры и пакетной базой так, чтобы ставить-удалять приходилось как можно меньше. В идеале такой антифичи не должно быть вовсе :)

Для пакетов, которые следует удалять из установленной классическим инсталятором системы, но не из livecd, применяйте переменную CLEANUP_BASE_PACKAGES.

Для удаления пакетов только из livecd используйте переменную CLEANUP_LIVE_PACKAGES.

[Внимание]

также удаляет rpm, apt и базу по пакетам из livecd, если в него не был добавлен инсталятор!

7.13. features.in/control

Эта фича предоставляет интерфейс для конфигурирования дистрибутивных значений по умолчанию control(8).

См. тж.:

https://www.altlinux.org/Control

7.14. features.in/datetime

Данная фича предназначена для настройки часового пояса и переключения хранения времени в BIOS между UTC (по Гринвичу) и местным временем.

  • TIME_UTC

    • Переключает хранение времени в BIOS с UTC (по Гринвичу) на местное время
    • значение: 0 - местное; 1 - UTC
  • TIME_ZONE

    • Задаёт часовой пояс
    • значение: формат регион/город из каталога /usr/share/zoneinfo/регион/город

7.15. features.in/deflogin

Эта фича конфигурирует root login и пользователей по умолчанию.

Если ROOTPW не задан, то подходящий пароль не существует. При необходимости задать пустой пароль root (например, на LiveCD) выставьте переменную ROOTPW_EMPTY в значение "1".

[Внимание]

применяйте разумно, т.к. крайне легко создать и оставить дыру в безопасности!

Пользователи добавляются через переменную USERS через пробел в формате:

login:passwd:admin:sudo

Например:

@$(call add,USERS,fedya:123:1:1 masha:321::)

Будут созданы два пользователя: fedya с паролем 123', c правами администратора и настроенным sudo, и пользователь masha c паролем 321, без прав администратора и без sudo.

Также можно определить группы, в которые будут добавляться пользователи через переменную GROUPS.

В версии mkimage-profiles 1.4.4 появилась возможность создать пользователя с произвольными uid, gid, домашним каталогом, интерпретатором shell и т.д. Используйте для этого следующую конструкцию:

@$(call set,SPEC_USER,имя_пользователя:группа:uid:gid:home_dir:shell)

Например:

@$(call set,SPEC_USER,user:user:500:500:/home/user:/bin/bash)

При этом нужно иметь в виду, что будет создана соответствующая группа с соответствующим gid (нужно быть уверенным, что одноимённая группа не существует), а пользователь будет добавлен в неё. Пользователь будет создан без пароля. Для установки пароля при первом запуске, смотрите фичу oem.

7.16. features.in/dev

Эта фича служит для создания образов, предназначающихся для разработки. В первую очередь обеспечивается развёртывание hasher и mkimage.

Реализованы поддержка LiveCD, VM, VE и добавление группы в инсталятор.

Обратите внимание: use/dev/repo достаточно серьёзно изменяет поведение субпрофиля main, оставляя из всего обычного множества обрабатываемых переменных только MAIN_PACKAGES, MAIN_PACKAGES_REGEXP и MAIN_LISTS во избежание дублирования не требующихся для сборки минимальных образов пакетов.

7.17. features.in/docs

Эта фича добавляет в образ распакованную документацию дистрибутива, а именно вводную страничку (входит в пакет branding--indexhtml), и/или специфичное для данного продукта руководство из пакета docs- (вариант задаётся отдельно выставлением переменной DOCS), и/или тексты лицензионных соглашений.

Обратите внимание, что для indexhtml создаётся переброска с учётом языка (при наличии index-LL.html), поэтому ожидается задействование фичи l10n с соответствующим указанием языка по умолчанию.

[Примечание]

предполагается применение при формировании ISO-образов, другие случаи наверняка потребуют доработки.

7.18. features.in/domain-client

Эта фича конфигурирует поддержку клиента домена ALT Linux.

krb5-ticket-watcher применяется для отладки либо обновления билетов при нехватке сконфигурированного по умолчанию (сутки) либо указанного администратором времени жизни таковых.

[Примечание]

не проверено на инсталяторах!

7.19. features.in/dos

Фича добавляет создание FreeDOS "live floppy" в stage1.

Текущее состояние — загружается минимальная система. Для практического применения (в первую очередь это перешивка firmware) требуется сделать подключение CD и/или USB Flash с тем, чтобы класть туда прошивки.

Спасибо за идею и местами реализацию: Александру Бандуре, Сергею Горенко, Николаю Гречуху и Алексею Фролову.

7.20. features.in/drm

Фича drm решает задачу создания общей точки входа для добавления drm-модулей ядра для разных списков пакетов. Потребность выделения в отдельную фичу возникла с одной стороны в связи с необходимостью сделать переключатель между свободным и проприетарным драйвером NVIDIA, с другой из-за необходимости добавлять только drm-модули ядра в таких целях, как use/stage2/kms и use/plymouth.

7.21. features.in/e2k

Эта фича содержит необходимое для поддержки систем архитектуры "Эльбрус".

7.22. features.in/efi

Фича добавляет в образы необходимое для поддержки EFI/UEFI.

Конфигурируется заданием загрузчика (EFI_BOOTLOADER) и файла сертификата (EFI_CERT) при помощи целей; пример использования доступен в conf.d/regular.mk

См. тж.:

7.23. features.in/firmware

Эта фича добавляет комплекты различного firmware в инсталятор, устанавливаемую систему и т.п.

Следует учитывать, что объём добавленного может быть довольно существенным — в десктопе вряд ли нужен микрокод для FC HBA или SCSI RAID, который может быть критичен для полезного серверного или спасательного дистрибутива (см. #18047).

7.24. features.in/fonts

Эта фича позволяет системно конфигурировать файлы конфигурации подсистемы конфигурирования шрифтов fontconfig (sic!), заодно предоставляя прошедшие обкатку в дистрибутивах варианты предварительно заданной конфигурации для удобства.

7.25. features.in/gitlab-runner

This feature installs gitlab-runner according official guide [1]

The following envs can be altered:

GL_USER - define default gitlab-runner username (gitlab-runner by default) GL_SSH_KEY - ssh pubkey added to authorized_keys of GL_USER

[Примечание]

this feature depends on network enablement in hasher (see [2] for details) and mkimage [3]

7.26. features.in/grub

Добавление поддержки grub; требуется для инсталяторов, live/rescue; реализуется в рамках stage1.

Самостоятельное творческое использование на данный момент подразумевает изучение кусочков конфигурации, которые уже существуют.

Цели config.mk:

  • use/grub/ui/% — конфигурирование интерфейса (см. cfg.in/01gfxterm.cfg); при использовании автоматически добавляют grub в FEATURES;
  • use/grub/timeout/% — задание таймаута автозагрузки (в секундах);
  • use/grub/%.cfg — подключение кусочков конфигурации.

Переменные generate.mk:

  • BOOTARGS — дополнительные аргументы загрузчику;
  • BOOTLOADER — isolinux (реализовано с оглядкой на grub/grub4);
  • BOOTVGA — видеорежим, запрашиваемый у ядра (параметр vga=);
  • GRUB_UI — тип интерфейса (если указан gfxboot, то графический, иначе текстовый);
  • GRUB_CFG — дополнительные кусочки конфигурации (например, live_rw);
  • GRUBTHEME — имя темы grub, если не задана, то получает значение BRANDING за вычетом традиционной приставки alt-);
  • DISABLE_LANG_MENU — отключает меню выбора языка в grub, если задана.

Здесь производится первичная обработка конфигурационных данных, окончательно проверяемых и используемых уже в инструментальном чруте.

Обратите внимание: фрагменты, соответствующие именам субпрофилей, добавляются автоматически; это поведение при необходимости отключается выставлением переменной grub_DIRECT и тогда вместо use/grub/*.cfg следует применять прямое указание вида @$(call set,grub_CFG,…).

Установить дефолтный пункт: Для того, чтобы установить конкретный дефолтный пункт (пример для LiveCD без поддержки сессии):

@$(call set,GRUB_DEFAULT,live)

Именем дефолтного пункта является --id.

Запуск iso образа с неправильно работающей в grub графике (только EFI): На ESP-разделе образа можно отредактировать конфиг EFI/BOOT/grub.cfg, добавив в его начало:

GRUB_TERMINAL='console'

Если нужно включить последовательную консоль, пропишите в нём:

GRUB_TERMINAL='console serial'
GRUB_SERIAL_COMMAND='serial --unit=0 --speed=115200'

7.27. features.in/hdt

Добавление модуля hdt (Hardware Detection Tool) к syslinux; может быть востребовано для инсталяторов, live/rescue.

Фича не только требует фичу syslinux (и соответствующий пакет, а также pciids), но и тесно с ней интегрирована; в частности, фрагмент конфигурационного файла располагается не "здесь", а "там", поскольку сам hdt.c32 также входит в пакет syslinux.

7.28. features.in/homeros

Каталог содержит основную feature для создания адаптированного дистрибутива Homeros. Это промежуточный вариант, при помощи которого можно получить минимальный разговаривающий образ, но, возможно, помимо его дальнейшего естественного развития требуется ещё осмысление с точки зрения идей mkimage-profiles.

7.29. features.in/im

Эта фича добавляет средства настройки методов ввода (Input Methods).

На данный момент является экспериментальной, приветствуется помощь в тестировании/доработке/отладке.

7.30. features.in/initrd-bootchain

Осуществляется сборка initrd.img при помощи make-initrd с включенными фичами bootchain. Это альтернатива фичи initrd-propagator. Используется тот же список модулей ядра, что и при сборке с propagator, но в отличие от последнего модули добавляются в initrd.img самим make-initrd.

Документацию по использованию bootchain следует смотреть в пакетах make-initrd-bootchain-*:

/usr/share/make-initrd/features/bootchain-*/README.md

Конфиг находится в stage1/files/bootchain. Почти все переменные можно переопределить. Переменные в m-p по сравнению с конфигом bootchain имеют приставку BOOTCHAIN_. Дефолты заданы в config.mk

Переопределить можно так:

$(call set,BOOTCHAIN_OEM_WELCOME_TEXT,Welcome to my OS!)

7.31. features.in/initrd-propagator

Добавляется поддержка propagator. propagator обеспечивает первую стадию загрузчика. Ранее был неотъемлемой частью субпрофиля stage1. Был вынесен в фичу для обеспечения возожности собирать образы с использованием специально собранного initrd вместо него.

7.32. features.in/init

Эта фича определяет систему инициализации, которая будет использована в пользовательской среде (livecd, установленный дистрибутив, vm). Она не влияет на состав инсталятора и rescue-образа.

Обратите внимание: как и с use/bootloader/%, в силу особенностей make переключение в каждую позицию возможно лишь один раз, далее эта цель считается достигнутой и при последующих вызовах не отрабатывает.

См. тж.:

https://www.altlinux.org/Sysvinit

https://www.altlinux.org/Systemd

7.33. features.in/install2

Эта фича дополняет базовый "живой" образ второй стадии специфическими для инсталяционного образа настройками и скриптовыми хуками.

Рекомендуется подключать при помощи +installer, чтобы обеспечить включение типового набора связанных с инсталятором функций.

При добавлении скриптов в image-scripts.d/ следует позаботиться, чтобы в компактном livecd, которым является инсталятор, оказались нужные им утилиты (INSTALL2_PACKAGES). Перегружать его не следует, поскольку это прямо влияет на требования по минимальному размеру оперативной памяти для установки (если не задействован параметр загрузки ядра lowmem, обрабатываемый propagator).

При необходимости принудительно удалить что-либо из попавшего в образ инсталятора (вместе с "оптовым" пакетом либо по зависимостям, когда точно известно, что для данного применения они избыточны) можно воспользоваться переменной INSTALL2_CLEANUP_PACKAGES для указания списка пакетов на удаление без учёта зависимостей перед формированием squashfs и INSTALL2_CLEANUP_KDRIVERS для удаления излишних модулей ядра.

7.34. features.in/isohybrid

Эта фича обеспечивает формирование ISO-образа с добавлением липовой таблицы разделов с целью обеспечения возможности его загрузки как с CD/DVD, так и с USB-флэшки.

Можно указать в цепочке зависимостей дистрибутива явно с тем, чтобы гарантировать гибридный вид образа, либо запросить включение этой фичи при сборке конфигурации произвольного дистрибутива (ISOHYBRID=1, см. features.in/pack/config.mk).

Обратите внимание: в propagator до 20101130-alt15 поддержка автоматической загрузки с флэш-носителя, содержащего ISO-образ, отсутствует, что компенсируется специальной обработкой в gfxboot.

7.35. features.in/kernel

Эта фича привносит код, имеющий смысл при добавлении в образ ядра, и задаёт начальный вариант такового.

Также занимается складированием наборов имён пакетов kernel-modules-* с тем, чтобы избавить релиз-менеджеров от необходимости учитывать полные списки и точные имена дополнительных модулей для поддержки, скажем, Ethernet.

7.36. features.in/l10n

Эта фича занимается поддержкой локализации (l10n).

7.37. features.in/ldm

Simple hook to run Linux Driver Management tools to configure hybrid graphics (aka Optimus/PRIME) for different DM’s.

Currently supported: + LightDM + GDM + SDDM

See https://github.com/solus-project/linux-driver-management

7.38. features.in/live-install

Эта фича дополняет live образ второй стадии специфическими для инсталяционного образа настройками и скриптовыми хуками.

В отличие от фичи install2 не собирается отдельный образ второй стадии altinst, а дополняется образ live пакетами инсталятора с целью уменьшить общий объём iso-образа.

Есть два варианта инcталятора:

  1. установка из live при выборе цели use/live-install
  2. установка из пакетов, как в altinst при выборе цели use/live-install/pkg

Первый вариант выглядит так:

  1. Распаковывается образ live, как в livecd-install
  2. Устанавливаются дополнительные пакеты BASE_PACKAGES и группы пакетов THE_GROUPS, как в install2.

В отличии от install2 в репозиторий main помещаются только те пакеты, которых нет в live образе. Этим и достигается уменьшение размера iso-образа.

Второй вариант не отличается от altinst.

7.39. features.in/live

Эта фича дополняет базовый "живой" образ второй стадии специфическими для полноценного LiveCD настройками и скриптовыми хуками, а также создаёт файл index.html с домашней страницей (редиректором) в корне образа.

Графический вариант безусловно требует x11-autologin, при появлении необходимости обойтись без него можно временно продублировать содержимое цели и сообщить о таком случае.

Дополнительно обрабатываемые переменные:

  • LIVE_REPO

    • позволяет выбрать и включить зеркало репозитория
    • значение: http/alt (по умолчанию) либо протокол/зеркало
    • см. тж. /etc/apt/sources.list.d/, проверьте наличие нужного!
  • LIVE_CLEANUP_KDRIVERS

    • перечисляет префиксы каталогов драйвров ядра для удаления
    • значение: пусто (по умолчанию) или список через пробел
    • см. config.mk
  • LIVE_RUNAPP_BINARY

    • указывает имя программы для запуска в режиме киоска
    • значение: пусто (по умолчанию) или путь (из $PATH или полный)
    • см. тж. пакеты livecd-0ad, livecd-fgfs и сам livecd-runapp

7.40. features.in/lowmem

Эта фича дополняет зачистку "живой" стадии инсталятора с тем, чтобы уменьшить её размер и требования к памяти.

7.41. features.in/ltsp

Эта фича обеспечивает добавление функций терминального сервера:

  • загрузку бездисковых тонких клиентов по сети;
  • предоставление им доступа к серверу приложений.

На данный момент является экспериментальной.

7.42. features.in/luks

Эта секретная фича добавляет в инсталяторы поддержку шифрования файловых систем с помощью LUKS при их создании.

7.43. features.in/lxc-guest

Adds systemd generators needed to run lxd container.

7.44. features.in/lxc

Эта фича предназначена для создания контейнеров LXC и LXD.

7.45. features.in/mediacheck

Эта фича конфигурирует внедрение контрольной суммы в образ инсталятора после его сборки с целью проверки целостности на ранней стадии установки.

NB: прототип, для реального использования надо сделать микрообраз на основе stage2.

7.46. features.in/memclean

Эта фича добавляет и включает очистку освобождаемой памяти средствами zmalloc (через LD_PRELOAD).

7.47. features.in/memtest

Добавление memtest86+ в загрузку с образа и в устанавливаемую пакетную базу; востребовано для инсталяторов, live/rescue. Интегрируется с syslinux.

7.48. features.in/metadata

Эта фича занимается метаданными в составе образов — в первую очередь инсталяционных и пригодных к установке "живых".

Обязательные к установке по умолчанию пакеты задаются переменными SYSTEM_PACKAGES, COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS, THE_PACKAGES, THE_LISTS и передаются инсталятору посредством Metadata/pkg-groups.tar (файл .base).

См. тж. фичу main.

7.49. features.in/mipsel-bfk3

Фича предназначена для создания образа прошивки для отладочной платы BFK3.1.

https://www.altlinux.org/BFK3.1

7.50. features.in/mipsel-mitx

Фича предназначена для создания прошивки для компьютера "Таволга Терминал".

https://www.altlinux.org/Ports/mipsel/Прошивка_образа_в_формате_recovery.tar_на_Таволга_Терминал

7.51. features.in/net-dns

Эта фича позволяет сконфигурировать публично доступный рекурсивный DNS-сервер для условий, когда локальный неизвестен заранее или попросту отсутствует; следует понимать, что это в некотором роде утечка данных, т.е. риск безопасности.

Также возможно указать свои NAMESERVERS через пробел у себя в фиче или конфигурации дистрибутива, которая задействует use/net-dns.

7.52. features.in/net-eth

Эта фича позволяет задать конфигурацию Ethernet-интерфейсов.

udev-rule-generator-net штатно добавляется для обеспечения предсказуемых имён вида eth0/eth1/… в силу того, что их сломали в апстримном systemd-udevd; для генерируемых "на лету" следует применять конфигурирование времени загрузки (NM, connman либо пакет livecd-net-eth).

Обратите внимание: применение в инсталяторах требует задействования как use/net-eth, так и use/stage2/net-eth; +net-eth "подберёт" оба.

7.53. features.in/net

Эта фича конфигурирует базовую поддержку сети, включая нужную подсистему (etcnet, NetworkManager поверх etcnet или connman).

Используйте TARGET_HOSTNAME для определения имени узла (файлы /etc/sysconfig/network и /etc/hostname).

7.54. features.in/net-ssh

Эта фича предназначена для добавления в образ поддержки SSH: добавляется клиент и конфигурируется сервер (требуется задание пути к существующему публичному ключу посредством переменной SSH_KEY).

7.55. features.in/net-usershares

Эта фича выполняет предварительное конфигурирование системы для работы плагинов файл-менеджеров, реализующих взаимодействие с Samba-сервером для динамического создания разделяемых файловых ресурсов ("пользовательских шар"). Без добавления соответствующего файл-менеджера и нужного плагина смысла не имеет.

7.56. features.in/no-sleep

Эта фича отключает спящий и ждущий режимы, а также гибернацию. Нужна для одноплатных компьютеров вроде Raspberry Pi, не поддерживающих их.

7.57. features.in/ntp

Эта фича конфигурирует службу NTP в качестве клиента с целью предоставления точного времени в составе LiveCD; для установленных систем рекомендуется применение модуля alterator-datetime.

7.58. features.in/oem

Эта фича обеспечивает автоматический запуск предварительной настройки, характерный для OEM-образов.

Дефолтные шаги определяются в файле /etc/alterator-setup/steps. Его дефолтное содержание: sysconfig notes-license datetime root users setup-finish

Для переопределения списка шагов используйте переменную OEM_STEPS. Пример: цель: use/oem @$(call set,OEM_STEPS,sysconfig notes-license datetime setup-finish)

Список доступных шагов для alterator-setup находится в /usr/share/alterator/steps/

7.59. features.in/office

Эта фича обеспечивает наличие и конкретизацию выбора офисного пакета по аналогии с выбором браузера. Разумеется, дополнительные варианты могут быть установлены явным или косвенным затребованием.

Следует понимать, что каждая из целей может быть использована лишь один раз, повторное упоминание будет проигнорировано make.

7.60. features.in/pack

Эта фича определяет формат упаковки создаваемого образа.

На данный момент поддерживаются iso (загрузочный ISO9660 для дистрибутивов), tar/cpio с возможностью сжатия gz/xz (виртуальные окружения), а также различные варианты для образов виртуальных машин, поддерживаемые qemu-img.

7.61. features.in/pid1

Эта экспериментальная фича предназначена для обеспечения запуска заданного приложения в моно^Wкачестве единственного, т.е. PID 1.

Особенности результата:

  • предельно быстрый запуск;
  • работа под root;
  • отсутствие какой бы то ни было инициализации окружения.

Возможна настройка сетевых интерфейсов средствами ядра, условия:

  • статически собранный модуль для используемого интерфейса;
  • доступность DHCP/BOOTP/RARP в сегменте локальной сети.

Пакет следует добавить в STAGE1_PACKAGES; путь к бинарнику задаётся в PID1_BIN; PID1_PANIC позволяет указать время до перезагрузки ядра при завершении работы приложения.

7.62. features.in/pkgpriorities

Эта фича обеспечивает добавление записей в файл $(PKGBOX)/aptbox/etc/apt/pkgpriorities после инициализации чрута, но перед установкой пакетов.

Содержимое файла pkgpriorities формируется на основе списка PINNED_PACKAGES. Значение приоритета по умолчанию определяется переменной PIN_PRIORITY, в которую при инициализации фичи записывается "Important". Список приоритетов:

Essential, Important, Required, Standard, Optional, Extra

Переопределить значение приоритета можно отдельно для каждого пакета в списке, указав желаемый приоритет через двоеточие после имени пакета; например:

$(call add,PINNED_PACKAGES,my-package:Essential)

Используя PINNED_PACKAGES, можно заранее определить выбор того или иного пакета для удовлетворения виртуальной зависимости. Если виртуальный пакет присутствует в основном списке пакетов для установки, а пакет, его предоставляющий — в этом списке, то вероятность его установки повышается согласно приоритету. Однако если виртуальный пакет не выбран для установки или приоритетный пакет отсутствует в репозитории, то сборка образа продолжится без изменений. Следовательно, с помощью списка PINNED_PACKAGES можно влиять на состав дистрибутива, но его содержание, в отличие от обыкновенных списков пакетов, имеет рекомендательный, а не обязательный, характер.

7.63. features.in/plymouth

Эта фича предназначена для добавления поддержки plymouth — современной реализации bootsplash. Плотно взаимодействует с фичей branding по объективным причинам, но оформлена отдельно для возможности собирать образы с частичным брендированием либо "без излишеств".

7.64. features.in/power

Эта фича конфигурирует поддержку управления питанием — выключение и регулировку частоты CPU для ACPI, засыпание для APM (не проверялось).

7.65. features.in/relname

Эта фича меняет содержимое файла /etc/altlinux-release в соответствии с установленной переменной RELNAME, что изменяет пункты загрузки GRUB.

Применяется при необходимости перекрыть внесенный брендингом текст.

7.66. features.in/repo

Эта фича предназначена для конфигурирования репозиториев в образе, включая генерацию хэшей и подключение к LiveCD.

По умолчанию таким репозиторием является RPMS.main (создаваемый sub/main), но возможно добавление addons, updates или иных по мере необходимости.

Результат — каталог ALTLinux/base/ для копирования в образ.

Дополнительно обрабатываемые переменные:

  • REPO

    • позволяет выбрать и включить зеркало репозитория
    • не влияет ни на что, если вызывается цель use/repo/main
    • значение: http/alt (по умолчанию) либо протокол/зеркало
    • см. тж. /etc/apt/sources.list.d/, проверьте наличие нужного!

7.67. features.in/rescue

Эта фича дополняет базовый "живой" образ второй стадии специфическими для спасательного образа настройками и скриптовыми хуками.

Цель use/rescue/rw добавляет предварительно настроенный пункт загрузки, который в случае "просто гибридного" (не GPT) ISO, записанного на USB Flash, обеспечит создание и монтирование дополнительного раздела для сохранения данных между сессиями.

7.68. features.in/server

Эта фича предоставляет типичные для серверных образов наборы списков пакетов и модулей ядра.

7.69. features.in/services

Данная фича конфигурирует автоматический запуск сервисов при загрузке системы.

Поскольку в конкретном образе может быть желательно перекрыть умолчания предыдущей конфигурации, рекомендуется в фичах работать с переменными DEFAULT_SERVICES_* и оставить переменные SERVICES_* для релиз-менеджеров.

Выключение сервиса в каждой из этих пар имеет приоритет перед включением.

Предприняты особые меры в виде скрипта для install2, чтобы передать указание настроить службы инсталятору.

Для включения systemd-специфичных сервисов рекомендуется использовать DEFAULT_SYSTEMD_SERVICES_* и SYSTEMD_SERVICES_*.

Для включения служб systemd-logind нужно использовать DEFAULT_SYSTEMD_USER_SERVICES_* и SYSTEMD_USER_SERVICES_*.

Для того, чтобы замаскировать или размаскировать юнит systemd используйте SYSTEMD_SERVICES_MASK и SYSTEMD_SERVICES_UNMASK.

7.70. features.in/slinux

Наборы пакетов для семейства дистрибутивов Simply Linux.

7.71. features.in/sound

Эта фича добавляет поддержку аудиоподсистемы (как ядерную, если не включена в kernel-image, так и утилиты).

7.72. features.in/speech

Эта фича полностью подготавливает русскоязычный или англоязычный вывод речи на базе сервера VoiceMan.

7.73. features.in/stage2

Эта фича служит для добавления в первую стадию хуков, необходимых при наличии в stage1 ядра (что типично, но не обязательно).

Передача информации о конфигурации ядра между stage1 и stage2 также требуется для оптимального сжатия squashfs-образа второй стадии.

Возможно пополнение списка опций конфигурации ядра (CONFIG_*), необходимых для загрузки целевого дистрибутива, посредством переменной STAGE1_KCONFIG (см. фичу efi в качестве примера).

7.74. features.in/syslinux

Добавление поддержки syslinux; требуется для инсталяторов, live/rescue; реализуется в рамках stage1.

Самостоятельное творческое использование на данный момент подразумевает знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков конфигурации, которые уже существуют.

Цели config.mk:

  • use/syslinux/ui/% — конфигурирование интерфейса (см. cfg.in/00*.cfg); при использовании автоматически добавляют syslinux в FEATURES;
  • use/syslinux/timeout/% — задание таймаута автозагрузки (в десятых секунды);
  • use/syslinux/%.com, use/syslinux/%.c32 — подключение одноименных модулей (копирование бинарников и включение кусочков конфигурации; экспериментальное);
  • use/syslinux/%.cfg — подключение кусочков конфигурации.

Переменные generate.mk:

  • BOOTARGS — дополнительные аргументы загрузчику;
  • BOOTLOADER — isolinux (реализовано с оглядкой на syslinux/syslinux4);
  • BOOTVGA — видеорежим, запрашиваемый у ядра (параметр vga=);
  • SYSLINUX_UI — модуль интерфейса (если не указан, то внутренний prompt);
  • SYSLINUX_MODULES — модули .com или .c32 (перечисляются без расширения);
  • SYSLINUX_CFG — дополнительные кусочки конфигурации (например, localboot).

Здесь производится первичная обработка конфигурационных данных, окончательно проверяемых и используемых уже в инструментальном чруте.

Обратите внимание: фрагменты, соответствующие именам субпрофилей, добавляются автоматически; это поведение при необходимости отключается выставлением переменной SYSLINUX_DIRECT и тогда вместо use/syslinux/*.cfg следует применять прямое указание вида @$(call set,SYSLINUX_CFG,…).

Установить дефолтный пункт: Для того, чтобы установить конкретный дефолтный пункт (пример для LiveCD с поддержкой сессии):

@$(call set,SYSLINUX_DEFAULT,session)

Именем дефолтного пункта является LABEL.

7.75. features.in/tty

Эта фича занимается терминалами ввода-вывода, в первую очередь COM-портами (serial console).

Следует заметить, что systemd занимается развешиванием agetty самостоятельно.

7.76. features.in/uboot

Настраивает систему для использования загрузчика uboot.

7.77. features.in/uuid-iso

По умолчанию при сборке образа xorriso генерирует UUID образа вида YYYY-MM-DD-hh-mm-ss-cc из текущего времени. Если в командной строке xorriso есть пареметр -volume_date uuid YYYYMMDDhhmmsscc то UUID образа генерируется из него. Данная фича читает текущее время и создаёт переменные: UUID_ISO, содержащую YYYY-MM-DD-hh-mm-ss-cc UUID_ISO_SHRT, содержащую YYYYMMDDhhmmsscc Также фича добавляет в initrd файл /lib/udev/rules.d/60-cdrom_id.rules Это позволяет идентифицировать CD/DVD по UUID и использовать для загрузки инсталлятора method:disk,uuid:YYYY-MM-DD-hh-mm-ss-cc

7.78. features.in/vagrant

Эта фича обеспечивает специфичную для vagrant предварительную настройку образа файловой системы виртуальной машины.

Обратите внимание, что специфика включает широко известные: - пароли root и пользователя vagrant с беспарольным sudo; - "секретный" ключ от публичной части у пользователя vagrant.

См. тж.:

https://bugzilla.altlinux.org/28553

https://docs.vagrantup.com/v2/boxes/base.html

7.79. features.in/vmguest

Эта фича предназначена для конфигурирования поддержки выполнения дистрибутивов в качестве гостей в среде виртуальных машин.

7.80. features.in/volumes

Эта фича обеспечивает выставление нужного профиля разбивки дисков при установке с помощью installer или livecd-install.

7.81. features.in/wireless

Эта фича занимается добавлением поддержки беспроводных соединений.

7.82. features.in/x11-autologin

Эта фича добавляет в формируемый пользовательский корень (как правило, live) функцию автоматического входа путём конфигурирования отдельно запрошенного для установки display manager (например, lightdm) либо специального средства (пакеты nodm или autologin).

Обратите внимание: с autologin могут быть проблемы под systemd, а при использовании работающего в таком окружении nodm на сегодня отмечено наличие /sbin:/usr/sbin в пользовательском PATH перед /bin:/usr/bin, что приводит к неработоспособности consolehelper и livecd-install, который им пользуется.

7.83. features.in/x11-autostart

Эта фича добавляет в формируемый пользовательский корень (как правило, live) функцию автоматического запуска графической сессии; обратите внимание, что автоматическим входом после запуска графики занимается соседняя фича x11-autologin.

7.84. features.in/x11

Эта фича добавляет базовую поддержку графической системы X11, а также комплектует типовые десктопные окружения и средства графического входа в систему.

Для добавления X-сервера и драйверов используйте цели: - use/x11/xorg — свободные драйверы, может недоставать акселерации, особенно 3D, и функций энергосбережения, но поддерживают наиболее широкий спектр оборудования для типичных десктопных задач; - use/x11/3d — по возможности подключаются проприетарные драйверы NVIDIA, обычно обладающие более высоким уровнем ускорения графики, но также имеющие и больше проблем совместимости со свежими ядрами/xorg-server, а заодно обычно рано теряющие поддержку "устаревших" видеокарт.

Возможно предоставлять в образе одновременно свободные и закрытые драйверы, но в этом случае следует понимать, что автоопределение в X.org предпочитает свободный драйвер и nvidia при наличии nouveau не будет автоматически выбран, т.е. потребуется дополнительное конфигурирование (вручную или при помощи alterator-x11) — для live-систем это может быть лишено практического смысла.

Обратите внимание: как и в фиче bootloader, переключение на какой-либо дисплейный менеджер срабатывает только один раз;

use/x11/xdm use/x11/lxdm use/x11/xdm

приведёт к выставлению lxdm, а не xdm, поскольку это будет последняя "новая" цель с точки зрения make.

При необходимости перекрыть последнее изменение добавьте:

@$(call set,THE_DISPLAY_MANAGER,нужный)

7.85. features.in/x11-vnc

This feature allows to use X11 through VNC server. It adds x11vnc package and sets default password to alt. Another thing is that this feature adds dummy video adapter configuration to the /etc/X11/xorg.conf.d/. x11vnc becomes default service.

7.86. features.in/xdg-user-dirs

Эта фича обеспечивает наличие "ручки" для конфигурирования типовых пользовательских каталогов для нескольких типов данных и предоставляет возможность задавать предпочитаемые умолчания, которые могут различаться по дистрибутивам.

См. тж.:

https://freedesktop.org/wiki/Software/xdg-user-dirs