Installer/common/altboot: различия между версиями
Klark (обсуждение | вклад) |
Klark (обсуждение | вклад) |
||
Строка 84: | Строка 84: | ||
Оба метода имеют небольшие отличия от исходной реализации в пропагаторе. Если гибридный ISO-образ записан на R/W-носитель (USB-флешь, MMC-карту, итд), то метод загрузки '''cdrom''' выполняет загрузку не с диска, а с первого раздела, что позволяет, при необходимости, создать нужный R/W-раздел для работы с сеансами LiveCD. Метод '''disk''' позволяет организовать загрузку не только с диска или раздела, но и с лежащего на нём ISO-образа, а это можно использовать для загрузки разных дистрибутивов, размещённых на одном носителе. | Оба метода имеют небольшие отличия от исходной реализации в пропагаторе. Если гибридный ISO-образ записан на R/W-носитель (USB-флешь, MMC-карту, итд), то метод загрузки '''cdrom''' выполняет загрузку не с диска, а с первого раздела, что позволяет, при необходимости, создать нужный R/W-раздел для работы с сеансами LiveCD. Метод '''disk''' позволяет организовать загрузку не только с диска или раздела, но и с лежащего на нём ISO-образа, а это можно использовать для загрузки разных дистрибутивов, размещённых на одном носителе. | ||
=Параметры загрузки= | |||
==Поддерживаемые altboot и пропагатором== | |||
* '''automatic''' — основной накопитель аргументов пропагатора; | |||
* '''hash''' — хэш-сумма сквоша второй стадии загрузки, посчитанная по алгоритму SHA-256 (в altboot можно использовать и другие варианты хэша с некоторыми синтаксическими добавками); | |||
* '''live''' — помечает ISO-образ как LiveCD, что предписывает всегда использовать режим экономии памяти; | |||
* '''live_rw''' — предписывает использовать R/W-раздел для сеансов LiveCD/Rescue; | |||
* '''lowmem''' — включает режим экономии памяти, монтируя образ непосредственно с носителя без предварительной загрузки в ОЗУ; | |||
* '''profile''' — профиль сетевой загрузки с поддержкой слоёв LiveCD (в altboot по умолчанию profile=default); | |||
* '''rescue''' — помечает ISO-образ как Rescue LiveCD, что влияет только на вывод финальных сообщений; | |||
* '''stagename''' — название файла сквоша с rootfs второй стадии загрузки, по факту только: altinst, rescue, live; | |||
* '''updatemodules''' — в пропагаторе ранее использовался совместно с дискетами, в altboot используется для обновления «на лету» файловой системы в stage1, что в частности позволяет подгрузить недостающие модули ядра и правила udev. | |||
==Не реализованные в altboot== | |||
* '''propagator-debug''' — давал промежуточный shell перед переходом из stage1 в stage2; | |||
* '''testing''' — «мёртвый» параметр, реально ни на что не влиял; | |||
==Новые параметры в altboot== | |||
* '''bc_debug''' — | |||
* '''bc_test''' — | |||
* '''console''' — | |||
* '''noaskuser''' — | |||
* '''nolines''' — | |||
* '''nfsopts''' — | |||
* '''cifsopts''' — | |||
* '''curlopts''' — | |||
* '''bootchain''' — | |||
* '''overlayroot''' — | |||
==Параметры bootchain, используемы внутренне altboot== | |||
* altboot_cifs[] — | |||
* altboot_nfs[] — | |||
* altboot_localdev[] — | |||
* altboot_copyfile[] — | |||
* altboot_download[] — | |||
* altboot_squashfs[] — | |||
* altboot_checksum[] — | |||
* altboot_liveboot[] — | |||
==Параметры pipeline и bootchain== | |||
Обычно не используются совместно с '''altboot'''. | |||
* pipeline — | |||
* getimage[] — | |||
* ping[] — | |||
* pipe_retry — | |||
* overlayfs[] — | |||
* mountfs[] — | |||
* waitedev[] — | |||
* waitdev_timeout — | |||
=Примеры использования= | =Примеры использования= |
Версия от 04:20, 25 июля 2024
bootchain+altboot
bootchain+altboot пришли на смену propagator'у в p11, сделав возможным использовать run-time и все фичи make-initrd не только в установленной ОС Альт, но теперь и во всех установочных и «живых» носителях (ISO-образах с универсальной загрузкой), содержащих сквоши второй стадии altinst, live или rescue.
bootchain — форк и дальнейшее развитие pipeline, фичи make-initrd, предлагающей «пошаговый» принцип загрузки.
altboot (альтернативная загрузка) — дистронезависимая система загрузки, построенная поверх bootchain, работающая как часть run-time make-initrd, альтернатива propagator с make-initrd-propagator в дистрибутивах ОС Альт на «одиннадцатой платформе», обеспечивающая дополнительный функционал, слой совместимости с установщиком, alterator-netinst и более гибкие возможности дальнейшего расширения.
Модули bootchain+altboot
Разделение на модули (подпакеты) позволяет добиться оптимального наполнения initramfs только необходимым для загрузки содержимым. Так, для загрузки по протоколу NFS достаточно установить пакет make-initrd-bootchain-nfs и задействовать фичу bootchain-nfs, всё остальное попадёт в initramfs по зависимостям. Для создания универсального образа stage1 достаточно установки одного мета-пакета make-initrd-bootchain. Пример:
apt-get install make-initrd-bootchain-nfs echo "FEATURES += bootchain-nfs" >>/etc/initrd.mk make-initrd
Список модулей:
- make-initrd-bootchain — мета-пакет, собирающий воедино все существующие модули bootchain, он же исходный SRPM;
- make-initrd-bootchain-core — базовый функционал, включая шаги debug, fg, mountfs, noop, noretry, overlayfs, retry и rootfs;
- make-initrd-bootchain-getimage — обеспечивает метод загрузки образов по сети утилитой wget по протоколам HTTP и FTP;
- make-initrd-bootchain-waitdev — обеспечивает метод ожидания локального носителя по заданной спецификации;
- make-initrd-bootchain-interactive — обеспечивает интерактивное взаимодействие, предоставляет диалоговые виджеты;
- make-initrd-bootchain-waitnet — обеспечивает ожидание сети и экспорт сетевых настроек в stage2, используется всеми сетевыми методами загрузки (ftp, http, nfs, cifs) и является временным кодом;
- make-initrd-bootchain-altboot — весь общий функционал пропагатора и шаг, транслирующий его аргументы;
- make-initrd-bootchain-localdev — обеспечивает методы загрузки disk/cdrom, установку дополнительных модулей ядра;
- make-initrd-bootchain-liverw — обеспечивает дополнительный функционал для работы с R/W-сеансами LiveCD и Rescue;
- make-initrd-bootchain-nfs — обеспечивает метод загрузки с сервера NFS и поддержку read-only слоёв LiveCD (сквошей);
- make-initrd-bootchain-cifs — обеспечивает метод загрузки с сервера SAMBA и поддержку read-only слоёв LiveCD (сквошей);
- make-initrd-bootchain-doc — документация и набор тестов.
Быстрое знакомство
Теперь для загрузки достаточно добавить к привычным всего пару опций в /proc/cmdline:
root=bootchain bootchain=fg,altboot automatic=… [ramdisk_size=…] [lowmem] [stagename={altinst|live|rescue}]
Параметр automatic обрёл несколько новых аргументов, утратив при этом аргументы, связанные с настройкой сети, типа «network:...» (они игнорируются). Например, можно задавать пользовательский таймаут: «timeout:120» или указывать тип загружаемого диска для методов http/ftp: «type:iso».
Конфигурирование bootchain и altboot выполняется через файл /etc/sysconfig/bootchain, используемые фичи перечисляются в /etc/initrd.mk перед созданием образа stage1 командой make-initrd.
Параметры сетевой загрузки
Для работы сетевой загрузки необходимо добавлять параметр ip=…, он нужен make-initrd для настройки сети: altboot полагается на то, что сеть будет настроена кем-то и ожидает появления сети при использовании сетевых методов загрузки, таких, как nfs или http. Например, ip=dhcp заставит make-initrd поднять сеть и автоматически её настроить на всех имеющихся сетевых интерфейсах по протоколам DHCPv4 и DHCPv6.
Для дистрибутивов ОС Альт лучше задавать через /proc/cmdline параметр ip=dhcp4, поскольку установщик не работает с IPv6, а отсутсвие в сети двух типов DHCP-серверов увеличивают время настройки секунд на 20 для каждого интерфейса.
В конфигурациях с несколькими сетевыми интерфейсами можно задавать сразу две опции: ifname=bootif0:<macaddr> ip=bootif0:dhcp4 — это заставит фичу make-initrd «network» переименовать интерфейс с указанным MAC-адресом в «bootif0» и поднять сеть только на нём и только по протоколу DHCPv4. В сценариях сетевой загрузки по iPXE с несколькими сетевыми картами прошивка уже выбрала ту, на которой есть несущая, и которая настроилась по DHCP, именно её MAC-адрес передаётся такой записью в iPXE-скрипте: ifname=bootif0:${net/mac}.
ramdisk_size, automatic=type:iso и lowmem
Ядерный параметр ramdisk_size=… стал необязательным: начиная с версии 0.1.5-alt17 образы загружаются в TMPFS, если параметр не указан. Новая логика работы некоторых параметров для методов http и ftp:
- Если указан ramdisk_size=…, сквош грузится в RAM-диск;
- При наличии automatic=type:iso,..., ISO-образ грузится в TMPFS;
- Если ramdisk_size=... не указан, сквош грузится в TMPFS.
При этом параметр lowmem не имеет значения. Для других методов:
- Если указан lowmem, ничего не грузится, монтируется сквош;
- Если указан ramdisk_size=..., сквош грузится в RAM-диск;
- Если ramdisk_size=... не указан, сквош грузится в TMPFS.
Методы загрузки altboot
В altboot практически все параметры любого метода загрузки имеют свои значения по умолчанию, т.е. для загрузки достаточно указать в /proc/cmdline или выбрать средствами диалога только нужный метод загрузки. При загрузке с обычной Linux rootfs, а не с универсального загрузочного носителя, напротив, метод не указывается (method="").
- nfs — указанный ISO-образ либо каталог монтируется с сервера NFS;
- ftp — образ скачивается целиком с сервера по протоколу FTP;
- http — образ скачивается целиком с сервера по протоколу HTTP;
- cifs — указанный ISO-образ либо каталог монтируется с сервера SAMBA;
- cdrom — загрузка непосредственно с локального носителя в формате ISO-9660 Hybrid с возможностью работы с R/W-слоем;
- disk — загрузка с локального диска, раздела либо лежащего на нём ISO-образа.
Методы загрузки http/ftp пока что не предназначены для работы с read-only слоями LiveCD, но если кому-то это нужно, добавить их поддержку не очень сложно. Существует два режима работы с этими методами — старый вариант, когда путь на сервере рассматривается как каталог, из которого загружается файл со сквошом второй стадии, и новый вариант, когда путь на сервере рассматривается как ISO-образ, загружаемый целиком вместо сквоша. Для работы с новыми методами необходимо убрать из /proc/cmdline параметр загрузки ramdisk_size=… и добавить к параметру automatic=…,type:iso,…
При использовании «локальных» методов загрузки (disk или cdrom), становится доступной возможность обновлять «на лету» образ initramfs с дополнительного внешнего носителя, что в частности позволяет догружать недостающие модули ядра и правила udev. За это отвечает параметр updatemodules (детали есть в полном руководстве).
Оба метода имеют небольшие отличия от исходной реализации в пропагаторе. Если гибридный ISO-образ записан на R/W-носитель (USB-флешь, MMC-карту, итд), то метод загрузки cdrom выполняет загрузку не с диска, а с первого раздела, что позволяет, при необходимости, создать нужный R/W-раздел для работы с сеансами LiveCD. Метод disk позволяет организовать загрузку не только с диска или раздела, но и с лежащего на нём ISO-образа, а это можно использовать для загрузки разных дистрибутивов, размещённых на одном носителе.
Параметры загрузки
Поддерживаемые altboot и пропагатором
- automatic — основной накопитель аргументов пропагатора;
- hash — хэш-сумма сквоша второй стадии загрузки, посчитанная по алгоритму SHA-256 (в altboot можно использовать и другие варианты хэша с некоторыми синтаксическими добавками);
- live — помечает ISO-образ как LiveCD, что предписывает всегда использовать режим экономии памяти;
- live_rw — предписывает использовать R/W-раздел для сеансов LiveCD/Rescue;
- lowmem — включает режим экономии памяти, монтируя образ непосредственно с носителя без предварительной загрузки в ОЗУ;
- profile — профиль сетевой загрузки с поддержкой слоёв LiveCD (в altboot по умолчанию profile=default);
- rescue — помечает ISO-образ как Rescue LiveCD, что влияет только на вывод финальных сообщений;
- stagename — название файла сквоша с rootfs второй стадии загрузки, по факту только: altinst, rescue, live;
- updatemodules — в пропагаторе ранее использовался совместно с дискетами, в altboot используется для обновления «на лету» файловой системы в stage1, что в частности позволяет подгрузить недостающие модули ядра и правила udev.
Не реализованные в altboot
- propagator-debug — давал промежуточный shell перед переходом из stage1 в stage2;
- testing — «мёртвый» параметр, реально ни на что не влиял;
Новые параметры в altboot
- bc_debug —
- bc_test —
- console —
- noaskuser —
- nolines —
- nfsopts —
- cifsopts —
- curlopts —
- bootchain —
- overlayroot —
Параметры bootchain, используемы внутренне altboot
- altboot_cifs[] —
- altboot_nfs[] —
- altboot_localdev[] —
- altboot_copyfile[] —
- altboot_download[] —
- altboot_squashfs[] —
- altboot_checksum[] —
- altboot_liveboot[] —
Параметры pipeline и bootchain
Обычно не используются совместно с altboot.
- pipeline —
- getimage[] —
- ping[] —
- pipe_retry —
- overlayfs[] —
- mountfs[] —
- waitedev[] —
- waitdev_timeout —
Примеры использования
...
Журналирование и отладка
Демон chaind ведёт журнал /var/log/chaind.log, доступный в stage1 на tty3 (по нажатию Alt-F3), что определяется дефолтными значениями BC_LOG_VT и BC_LOGFILE в файле конфигурации, а также перебивается параметром make-initrd rdlog=console или rdlog=printk в рантайме.
Расширенная диагностика включается через /proc/cmdline параметром bc_debug. В этом случае журнал копируется по тому же пути в stage2 после отработки последнего «шага», а если в новой rootfs нет /var/log, то копируется в /dev/bootchain/. Аналогом propagator-debug в самом make-initrd является параметр rdshell либо stop=runinit, для их использования образ initramfs должен быть собран с соответствующей фичей «rdshell».
Полезные ссылки
- Make-initrd
- Propagator
- Make-initrd-propagator
- https://bugzilla.altlinux.org/30315#c29
- https://lists.altlinux.org/pipermail/devel/2018-April/204192.html
- https://packages.altlinux.org/ru/sisyphus/srpms/make-initrd-bootchain/
- http://0x1.tv/20210418F
Enjoy! ;-)