Installer/common/altboot

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


bootchain+altboot

bootchain — форк и дальнейшее развитие pipeline, фичи make-initrd, предлагающей «пошаговый» принцип загрузки.

altboot (альтернативная загрузка) — дистронезависимая система загрузки, построенная поверх bootchain, работающая как часть run-time make-initrd, альтернатива propagator с make-initrd-propagator в дистрибутивах ОС Альт на «одиннадцатой платформе», обеспечивающая дополнительный функционал, слой совместимости с установщиком, alterator-netinst и более гибкие возможности дальнейшего расширения.

Проще говоря, bootchain+altboot пришли на смену propagator'у в p11, сделав возможным использовать run-time и все фичи make-initrd не только в установленной ОС Альт, но теперь и во всех установочных и "живых" носителях (ISO-образах с универсальной загрузкой), содержащих сквоши второй стадии altinst, live или rescue.

Внимание! Здесь можно скачать полное руководство к версии 0.1.5-alt23: Файл:От пропагатора к altboot.pdf. Ниже приведено только краткое описание для тех, кто уже знаком с загрузкой через propagator и init-bottom.


Модули bootchain+altboot

Разделение на модули (подпакеты) позволяет добиться оптимального наполнения initramfs только необходимым для загрузки содержимым. Так, для загрузки по протоколу NFS достаточно установить пакет make-initrd-bootchain-nfs и задействовать фичу bootchain-nfs, всё остальное попадёт в initramfs по зависимостям. Для создания универсального образа stage1 достаточно установки одного мета-пакета make-initrd-bootchain.

  • 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».

Параметры сетевой загрузки

Внимание! В altboot пока не реализована более тесная интеграция с фичей make-initrd «network», в отличии от пропагатора сеть сейчас конфигурируется только через /proc/cmdline, нет диалогов для её настройки. Скрипты и диалоги altboot пока не рассчитаны на работу с IPv6, как и установщика ОС Альт, хотя фича make-initrd «network» понимает IPv6. Propagator умел конфигурировать ADSL-соединение, фича make-initrd «network» не предназначена для настройки ADSL/PPPoE.


Для работы сетевой загрузки необходимо добавлять параметр ip=…, он нужен make-initrd для настройки сети: altboot полагается на то, что сеть будет настроена кем-то и ожидает появления сети при использовании сетевых методов загрузки, таких, как NFS или HTTP. Например, ip=dhcp заставит make-initrd поднять сеть и автоматически её настроить на всех имеющихся сетевых интерфейсах по протоколам DHCPv4 и DHCPv6.

Для дистрибутивов ОС Альт лучше задавать через /proc/cmdline сразу две опции: 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.

Примеры использования

...

Журналирование и отладка

Демон 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».

Полезные ссылки

Enjoy! ;-)