Этот каталог содержит т.н. фичи (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 в каталогах фич (отсутствие — баг!).
Этот каталог содержит "заготовку" фичи в качестве примера и должен дать представление о том, какой код может быть включён в настоящую фичу: статические файлы, два makefile для создания конфигурации и генерирования части профиля, а также шелл-скрипт для такого генерирования.
Вовсе не требуется втягивать всё в свою фичу: лучше постараться сделать её минимальной, самодостаточной и полезной в качестве "кирпичика".
Единственной обязательной частью фичи является файл config.mk, который включается в distro.mk верхнего уровня и предоставляет цель вида use/*, специфичную для данной фичи, а также добавляет её в переменную FEATURES. Если название фичи не упоминается в списке, содержащемся в этой переменной, то она не задействуется при построении профиля, а только при сборке конфигурации.
Для наиболее ходовых целей use/, особенно если их много, можно создавать цели-алиасы + (например, +power). Просьба относиться вдумчиво, т.к. в дальнейшем предполагается визуализировать такие цели в UI конфигурирования образа.
Остальное содержимое является дополнительным и используется в таком порядке (см. features.in/Makefile):
Например, если используются субпрофили stage1, stage2/install2 и main, можно решить собрать специфические для фичи скрипты инсталятора в install2/image-scripts.d/ (или необходимые для операций с пакетной базой — в main/scripts.d/, смотря чего надо добиться; загляните также в документацию mkimage).
А если требуются нетривиальные действия по конфигурированию (как при сборке syslinux.cfg из кусочков, в зависимости от того, что из запрошенных модулей оказалось в наличии) — то их можно произвести из generate.sh и generate.mk.
Пожалуйста, присылайте отзывы о (бес)полезности кода в этом каталоге mike@altlinux.org.
Данная фича позволяет задавать альтернативы [1]. Например, так:
@$(call add,ALTERNATIVES,/usr/bin/xvt:/usr/bin/xterm)
Также в самом конфиге могут быть уже преопределены цели для установки альтернатив. Например, use/alternatives/xvt/% позволяет задавать произвольные альтернативы для xvt: use/alternatives/xvt/xterm, use/alternatives/xvt/mate-terminal и т.д. При этом альтернатива должна быть доступна.
Фича предназначена для обеспечения поддержки процессорного модуля "ЭЛВИС Салют ЭЛ24ПМ2".
Подробнее: https://altlinux.org/mcom02
Добавление установки загрузчика основной системы, затребованного посредством указания "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).
Эта фича врезается в makefile субпрофилей и обеспечивает добавление задающих внешний вид и сообщения дистрибутива пакетов; см. тж. https://www.altlinux.org/Branding
Реализация "двумерная" — отдельно задаётся BRANDING (см. пакеты branding-*-%version-%release.src.rpm), затем отдельно указывается, какие и куда помещать компоненты заданного брендинга.
Назначение и возможные значения (если требуются):
STAGE1_BRANDING
STAGE2_BRANDING
INSTALL2_BRANDING
THE_BRANDING
Эта фича обеспечивает наличие и конкретизацию выбора браузера. Разумеется, дополнительные варианты могут быть установлены явным или косвенным затребованием.
Следует понимать, что каждая из целей может быть использована лишь один раз, повторное упоминание будет проигнорировано make.
Эта фича конфигурирует создание образа дистрибутива, включая работу с субпрофилями — которая сейчас нужна только дистрибутивным целям.
Дополняет финальную стадию сборки (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.
Эта фича конфигурирует создание образа виртуального окружения (VE), что используется для сборки шаблонов OpenVZ и ARM-чрутов для TWRP.
Дополняет финальную стадию сборки (lib/, image-scripts.d/) и тесно с ней связана.
Эта фича конфигурирует создание образа виртуальной машины (VM) или тарбола rootfs для использования его на реальном компьютере. Дополняет финальную стадию сборки (lib/, image-scripts.d/). Для создания образа виртуальной машины требуется sudo(8) Для создания тарбола sudo не требуется. — см. тж. doc/vm.txt
Эта фича вместо созидания занимается выкидыванием лишнего (например, части модулей инсталятора из установленной системы).
По возможности стоит работать над дизайном инфраструктуры и пакетной базой так, чтобы ставить-удалять приходилось как можно меньше. В идеале такой антифичи не должно быть вовсе :)
Для пакетов, которые следует удалять из установленной классическим инсталятором системы, но не из livecd, применяйте переменную CLEANUP_BASE_PACKAGES.
Для удаления пакетов только из livecd используйте переменную CLEANUP_LIVE_PACKAGES.
также удаляет rpm, apt и базу по пакетам из livecd, если в него не был добавлен инсталятор! |
Эта фича предоставляет интерфейс для конфигурирования дистрибутивных значений по умолчанию control(8).
См. тж.:
Данная фича предназначена для настройки часового пояса и переключения хранения времени в BIOS между UTC (по Гринвичу) и местным временем.
TIME_UTC
TIME_ZONE
Эта фича конфигурирует 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.
Эта фича служит для создания образов, предназначающихся для разработки. В первую очередь обеспечивается развёртывание hasher и mkimage.
Реализованы поддержка LiveCD, VM, VE и добавление группы в инсталятор.
Обратите внимание: use/dev/repo достаточно серьёзно изменяет поведение субпрофиля main, оставляя из всего обычного множества обрабатываемых переменных только MAIN_PACKAGES, MAIN_PACKAGES_REGEXP и MAIN_LISTS во избежание дублирования не требующихся для сборки минимальных образов пакетов.
Эта фича добавляет в образ распакованную документацию дистрибутива, а именно вводную страничку (входит в пакет branding--indexhtml), и/или специфичное для данного продукта руководство из пакета docs- (вариант задаётся отдельно выставлением переменной DOCS), и/или тексты лицензионных соглашений.
Обратите внимание, что для indexhtml создаётся переброска с учётом языка (при наличии index-LL.html), поэтому ожидается задействование фичи l10n с соответствующим указанием языка по умолчанию.
предполагается применение при формировании ISO-образов, другие случаи наверняка потребуют доработки. |
Эта фича конфигурирует поддержку клиента домена ALT Linux.
krb5-ticket-watcher применяется для отладки либо обновления билетов при нехватке сконфигурированного по умолчанию (сутки) либо указанного администратором времени жизни таковых.
не проверено на инсталяторах! |
Фича добавляет создание FreeDOS "live floppy" в stage1.
Текущее состояние — загружается минимальная система. Для практического применения (в первую очередь это перешивка firmware) требуется сделать подключение CD и/или USB Flash с тем, чтобы класть туда прошивки.
Спасибо за идею и местами реализацию: Александру Бандуре, Сергею Горенко, Николаю Гречуху и Алексею Фролову.
Фича drm решает задачу создания общей точки входа для добавления drm-модулей ядра для разных списков пакетов. Потребность выделения в отдельную фичу возникла с одной стороны в связи с необходимостью сделать переключатель между свободным и проприетарным драйвером NVIDIA, с другой из-за необходимости добавлять только drm-модули ядра в таких целях, как use/stage2/kms и use/plymouth.
Фича добавляет в образы необходимое для поддержки EFI/UEFI.
Конфигурируется заданием загрузчика (EFI_BOOTLOADER) и файла сертификата (EFI_CERT) при помощи целей; пример использования доступен в conf.d/regular.mk
См. тж.:
Эта фича добавляет комплекты различного firmware в инсталятор, устанавливаемую систему и т.п.
Следует учитывать, что объём добавленного может быть довольно существенным — в десктопе вряд ли нужен микрокод для FC HBA или SCSI RAID, который может быть критичен для полезного серверного или спасательного дистрибутива (см. #18047).
Эта фича позволяет системно конфигурировать файлы конфигурации подсистемы конфигурирования шрифтов fontconfig (sic!), заодно предоставляя прошедшие обкатку в дистрибутивах варианты предварительно заданной конфигурации для удобства.
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] |
Добавление поддержки grub; требуется для инсталяторов, live/rescue; реализуется в рамках stage1.
Самостоятельное творческое использование на данный момент подразумевает изучение кусочков конфигурации, которые уже существуют.
Цели config.mk:
Переменные generate.mk:
Здесь производится первичная обработка конфигурационных данных, окончательно проверяемых и используемых уже в инструментальном чруте.
Обратите внимание: фрагменты, соответствующие именам субпрофилей, добавляются автоматически; это поведение при необходимости отключается выставлением переменной 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'
Добавление модуля hdt (Hardware Detection Tool) к syslinux; может быть востребовано для инсталяторов, live/rescue.
Фича не только требует фичу syslinux (и соответствующий пакет, а также pciids), но и тесно с ней интегрирована; в частности, фрагмент конфигурационного файла располагается не "здесь", а "там", поскольку сам hdt.c32 также входит в пакет syslinux.
Каталог содержит основную feature для создания адаптированного дистрибутива Homeros. Это промежуточный вариант, при помощи которого можно получить минимальный разговаривающий образ, но, возможно, помимо его дальнейшего естественного развития требуется ещё осмысление с точки зрения идей mkimage-profiles.
Эта фича добавляет средства настройки методов ввода (Input Methods).
На данный момент является экспериментальной, приветствуется помощь в тестировании/доработке/отладке.
Осуществляется сборка 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!)
Добавляется поддержка propagator. propagator обеспечивает первую стадию загрузчика. Ранее был неотъемлемой частью субпрофиля stage1. Был вынесен в фичу для обеспечения возожности собирать образы с использованием специально собранного initrd вместо него.
Эта фича определяет систему инициализации, которая будет использована в пользовательской среде (livecd, установленный дистрибутив, vm). Она не влияет на состав инсталятора и rescue-образа.
Обратите внимание: как и с use/bootloader/%, в силу особенностей make переключение в каждую позицию возможно лишь один раз, далее эта цель считается достигнутой и при последующих вызовах не отрабатывает.
См. тж.:
Эта фича дополняет базовый "живой" образ второй стадии специфическими для инсталяционного образа настройками и скриптовыми хуками.
Рекомендуется подключать при помощи +installer, чтобы обеспечить включение типового набора связанных с инсталятором функций.
При добавлении скриптов в image-scripts.d/ следует позаботиться, чтобы в компактном livecd, которым является инсталятор, оказались нужные им утилиты (INSTALL2_PACKAGES). Перегружать его не следует, поскольку это прямо влияет на требования по минимальному размеру оперативной памяти для установки (если не задействован параметр загрузки ядра lowmem, обрабатываемый propagator).
При необходимости принудительно удалить что-либо из попавшего в образ инсталятора (вместе с "оптовым" пакетом либо по зависимостям, когда точно известно, что для данного применения они избыточны) можно воспользоваться переменной INSTALL2_CLEANUP_PACKAGES для указания списка пакетов на удаление без учёта зависимостей перед формированием squashfs и INSTALL2_CLEANUP_KDRIVERS для удаления излишних модулей ядра.
Эта фича обеспечивает формирование ISO-образа с добавлением липовой таблицы разделов с целью обеспечения возможности его загрузки как с CD/DVD, так и с USB-флэшки.
Можно указать в цепочке зависимостей дистрибутива явно с тем, чтобы гарантировать гибридный вид образа, либо запросить включение этой фичи при сборке конфигурации произвольного дистрибутива (ISOHYBRID=1, см. features.in/pack/config.mk).
Обратите внимание: в propagator до 20101130-alt15 поддержка автоматической загрузки с флэш-носителя, содержащего ISO-образ, отсутствует, что компенсируется специальной обработкой в gfxboot.
Эта фича привносит код, имеющий смысл при добавлении в образ ядра, и задаёт начальный вариант такового.
Также занимается складированием наборов имён пакетов kernel-modules-* с тем, чтобы избавить релиз-менеджеров от необходимости учитывать полные списки и точные имена дополнительных модулей для поддержки, скажем, Ethernet.
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
Эта фича дополняет live образ второй стадии специфическими для инсталяционного образа настройками и скриптовыми хуками.
В отличие от фичи install2 не собирается отдельный образ второй стадии altinst, а дополняется образ live пакетами инсталятора с целью уменьшить общий объём iso-образа.
Есть два варианта инcталятора:
Первый вариант выглядит так:
В отличии от install2 в репозиторий main помещаются только те пакеты, которых нет в live образе. Этим и достигается уменьшение размера iso-образа.
Второй вариант не отличается от altinst.
Эта фича дополняет базовый "живой" образ второй стадии специфическими для полноценного LiveCD настройками и скриптовыми хуками, а также создаёт файл index.html с домашней страницей (редиректором) в корне образа.
Графический вариант безусловно требует x11-autologin, при появлении необходимости обойтись без него можно временно продублировать содержимое цели и сообщить о таком случае.
Дополнительно обрабатываемые переменные:
LIVE_REPO
LIVE_CLEANUP_KDRIVERS
LIVE_RUNAPP_BINARY
Эта фича дополняет зачистку "живой" стадии инсталятора с тем, чтобы уменьшить её размер и требования к памяти.
Эта фича обеспечивает добавление функций терминального сервера:
На данный момент является экспериментальной.
Эта секретная фича добавляет в инсталяторы поддержку шифрования файловых систем с помощью LUKS при их создании.
Эта фича конфигурирует внедрение контрольной суммы в образ инсталятора после его сборки с целью проверки целостности на ранней стадии установки.
NB: прототип, для реального использования надо сделать микрообраз на основе stage2.
Эта фича добавляет и включает очистку освобождаемой памяти средствами zmalloc (через LD_PRELOAD).
Добавление memtest86+ в загрузку с образа и в устанавливаемую пакетную базу; востребовано для инсталяторов, live/rescue. Интегрируется с syslinux.
Эта фича занимается метаданными в составе образов — в первую очередь инсталяционных и пригодных к установке "живых".
Обязательные к установке по умолчанию пакеты задаются переменными SYSTEM_PACKAGES, COMMON_PACKAGES, BASE_PACKAGES, BASE_LISTS, THE_PACKAGES, THE_LISTS и передаются инсталятору посредством Metadata/pkg-groups.tar (файл .base).
См. тж. фичу main.
Фича предназначена для создания образа прошивки для отладочной платы BFK3.1.
Фича предназначена для создания прошивки для компьютера "Таволга Терминал".
https://www.altlinux.org/Ports/mipsel/Прошивка_образа_в_формате_recovery.tar_на_Таволга_Терминал
Эта фича позволяет сконфигурировать публично доступный рекурсивный DNS-сервер для условий, когда локальный неизвестен заранее или попросту отсутствует; следует понимать, что это в некотором роде утечка данных, т.е. риск безопасности.
Также возможно указать свои NAMESERVERS через пробел у себя в фиче или конфигурации дистрибутива, которая задействует use/net-dns.
Эта фича позволяет задать конфигурацию Ethernet-интерфейсов.
udev-rule-generator-net штатно добавляется для обеспечения предсказуемых имён вида eth0/eth1/… в силу того, что их сломали в апстримном systemd-udevd; для генерируемых "на лету" следует применять конфигурирование времени загрузки (NM, connman либо пакет livecd-net-eth).
Обратите внимание: применение в инсталяторах требует задействования как use/net-eth, так и use/stage2/net-eth; +net-eth "подберёт" оба.
Эта фича конфигурирует базовую поддержку сети, включая нужную подсистему (etcnet, NetworkManager поверх etcnet или connman).
Используйте TARGET_HOSTNAME для определения имени узла (файлы /etc/sysconfig/network и /etc/hostname).
Эта фича предназначена для добавления в образ поддержки SSH: добавляется клиент и конфигурируется сервер (требуется задание пути к существующему публичному ключу посредством переменной SSH_KEY).
Эта фича выполняет предварительное конфигурирование системы для работы плагинов файл-менеджеров, реализующих взаимодействие с Samba-сервером для динамического создания разделяемых файловых ресурсов ("пользовательских шар"). Без добавления соответствующего файл-менеджера и нужного плагина смысла не имеет.
Эта фича отключает спящий и ждущий режимы, а также гибернацию. Нужна для одноплатных компьютеров вроде Raspberry Pi, не поддерживающих их.
Эта фича конфигурирует службу NTP в качестве клиента с целью предоставления точного времени в составе LiveCD; для установленных систем рекомендуется применение модуля alterator-datetime.
Эта фича обеспечивает автоматический запуск предварительной настройки, характерный для 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/
Эта фича обеспечивает наличие и конкретизацию выбора офисного пакета по аналогии с выбором браузера. Разумеется, дополнительные варианты могут быть установлены явным или косвенным затребованием.
Следует понимать, что каждая из целей может быть использована лишь один раз, повторное упоминание будет проигнорировано make.
Эта фича определяет формат упаковки создаваемого образа.
На данный момент поддерживаются iso (загрузочный ISO9660 для дистрибутивов), tar/cpio с возможностью сжатия gz/xz (виртуальные окружения), а также различные варианты для образов виртуальных машин, поддерживаемые qemu-img.
Эта экспериментальная фича предназначена для обеспечения запуска заданного приложения в моно^Wкачестве единственного, т.е. PID 1.
Особенности результата:
Возможна настройка сетевых интерфейсов средствами ядра, условия:
Пакет следует добавить в STAGE1_PACKAGES; путь к бинарнику задаётся в PID1_BIN; PID1_PANIC позволяет указать время до перезагрузки ядра при завершении работы приложения.
Эта фича обеспечивает добавление записей в файл
$(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
можно
влиять на состав дистрибутива, но его содержание, в отличие от
обыкновенных списков пакетов, имеет рекомендательный, а не
обязательный, характер.
Эта фича предназначена для добавления поддержки plymouth — современной реализации bootsplash. Плотно взаимодействует с фичей branding по объективным причинам, но оформлена отдельно для возможности собирать образы с частичным брендированием либо "без излишеств".
Эта фича конфигурирует поддержку управления питанием — выключение и регулировку частоты CPU для ACPI, засыпание для APM (не проверялось).
Эта фича меняет содержимое файла /etc/altlinux-release в соответствии с установленной переменной RELNAME, что изменяет пункты загрузки GRUB.
Применяется при необходимости перекрыть внесенный брендингом текст.
Эта фича предназначена для конфигурирования репозиториев в образе, включая генерацию хэшей и подключение к LiveCD.
По умолчанию таким репозиторием является RPMS.main (создаваемый sub/main), но возможно добавление addons, updates или иных по мере необходимости.
Результат — каталог ALTLinux/base/ для копирования в образ.
Дополнительно обрабатываемые переменные:
REPO
Эта фича дополняет базовый "живой" образ второй стадии специфическими для спасательного образа настройками и скриптовыми хуками.
Цель use/rescue/rw добавляет предварительно настроенный пункт загрузки, который в случае "просто гибридного" (не GPT) ISO, записанного на USB Flash, обеспечит создание и монтирование дополнительного раздела для сохранения данных между сессиями.
Эта фича предоставляет типичные для серверных образов наборы списков пакетов и модулей ядра.
Данная фича конфигурирует автоматический запуск сервисов при загрузке системы.
Поскольку в конкретном образе может быть желательно перекрыть умолчания предыдущей конфигурации, рекомендуется в фичах работать с переменными 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.
Эта фича добавляет поддержку аудиоподсистемы (как ядерную, если не включена в kernel-image, так и утилиты).
Эта фича полностью подготавливает русскоязычный или англоязычный вывод речи на базе сервера VoiceMan.
Эта фича служит для добавления в первую стадию хуков, необходимых при наличии в stage1 ядра (что типично, но не обязательно).
Передача информации о конфигурации ядра между stage1 и stage2 также требуется для оптимального сжатия squashfs-образа второй стадии.
Возможно пополнение списка опций конфигурации ядра (CONFIG_*), необходимых для загрузки целевого дистрибутива, посредством переменной STAGE1_KCONFIG (см. фичу efi в качестве примера).
Добавление поддержки syslinux; требуется для инсталяторов, live/rescue; реализуется в рамках stage1.
Самостоятельное творческое использование на данный момент подразумевает знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков конфигурации, которые уже существуют.
Цели config.mk:
Переменные generate.mk:
Здесь производится первичная обработка конфигурационных данных, окончательно проверяемых и используемых уже в инструментальном чруте.
Обратите внимание: фрагменты, соответствующие именам субпрофилей, добавляются автоматически; это поведение при необходимости отключается выставлением переменной SYSLINUX_DIRECT и тогда вместо use/syslinux/*.cfg следует применять прямое указание вида @$(call set,SYSLINUX_CFG,…).
Установить дефолтный пункт: Для того, чтобы установить конкретный дефолтный пункт (пример для LiveCD с поддержкой сессии):
@$(call set,SYSLINUX_DEFAULT,session)
Именем дефолтного пункта является LABEL.
Эта фича занимается терминалами ввода-вывода, в первую очередь COM-портами (serial console).
Следует заметить, что systemd занимается развешиванием agetty самостоятельно.
По умолчанию при сборке образа 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
Эта фича обеспечивает специфичную для vagrant предварительную настройку образа файловой системы виртуальной машины.
Обратите внимание, что специфика включает широко известные: - пароли root и пользователя vagrant с беспарольным sudo; - "секретный" ключ от публичной части у пользователя vagrant.
См. тж.:
Эта фича предназначена для конфигурирования поддержки выполнения дистрибутивов в качестве гостей в среде виртуальных машин.
Эта фича обеспечивает выставление нужного профиля разбивки дисков при установке с помощью installer или livecd-install.
Эта фича добавляет в формируемый пользовательский корень (как правило, live) функцию автоматического входа путём конфигурирования отдельно запрошенного для установки display manager (например, lightdm) либо специального средства (пакеты nodm или autologin).
Обратите внимание: с autologin могут быть проблемы под systemd, а при использовании работающего в таком окружении nodm на сегодня отмечено наличие /sbin:/usr/sbin в пользовательском PATH перед /bin:/usr/bin, что приводит к неработоспособности consolehelper и livecd-install, который им пользуется.
Эта фича добавляет в формируемый пользовательский корень (как правило, live) функцию автоматического запуска графической сессии; обратите внимание, что автоматическим входом после запуска графики занимается соседняя фича x11-autologin.
Эта фича добавляет базовую поддержку графической системы 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,нужный)
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.
Эта фича обеспечивает наличие "ручки" для конфигурирования типовых пользовательских каталогов для нескольких типов данных и предоставляет возможность задавать предпочитаемые умолчания, которые могут различаться по дистрибутивам.
См. тж.: