Особенность первая — Foreman не поддерживает NFS, поэтому образы можно грузить только через TFTP, FTP или HTTP.
Особенность вторая. Протоколы FTP и HTTP в стандартной поставке Foreman не работают, приходится чуть изощряться.
Особенность третья. В настоящий момент, в силу текущей специфики формирования образов и текущего инсталлятора, у ROSA пока нет образов netinstall как у того же Debian. Я надеюсь, в ближайшем будущем сможем исправить это упущение.
Для подготовки образа для дальнейшей возможности загрузки по сети, необходимо на рабчий компьютер или сервер установить пакет livecd-tools. Из установленного пакета необходимо воспользоваться командой livecd-iso-to-pxeboot. Выглядеть будет следующим образом: livecd-iso-to-pxeboot ROSA.FRESH.R2.LXDE.x86_64.iso. Где ROSA.FRESH.R2.LXDE.x86_64.iso — название образа в формате iso.
В результате работы данной команды у нас должен сгенерироваться каталог tftpboot со следующим содержимым:
jormungand tftpboot # ls -lh итого 1,1G -rw-r--r-- 1 root root 1,1G янв. 22 14:33 initrd0.img -rw-r--r-- 1 root root 26K янв. 22 14:33 pxelinux.0 drwxr-xr-x 2 root root 4,0K янв. 22 14:33 pxelinux.cfg/ -r--r--r-- 1 root root 3,6M янв. 22 14:33 vmlinuz0Внутри каталога находится файл pxelinux.cfg с нужным нам содержимым:
DEFAULT pxeboot TIMEOUT 20 PROMPT 0 LABEL pxeboot KERNEL vmlinuz0 APPEND rootflags=loop initrd=initrd0.img root=live:/ROSA.FRESH.R2.LXDE.x86_64.iso rootfstype=auto ro rd.live.image rhgb splash=silent logo.nologo rd.luks=0 rd.md=0 rd.dm=0 ONERROR LOCALBOOT 0Далее необходимо закинуть файлы initrd0.img и vmlinuz0 на сервер с foreman, где гнездится tftp. У меня это каталог /var/lib/tftpboot/images/lxde. Можно положить и в другой каталог, но в этом случае не забудьте поправить путь в KERNEL и APPEND.
Для загрузки при помощи стандартной связки PXE/tftpboot необходимо записать в шаблон Foreman под названием PXE Default File всё, что идёт после строки LABEL и до строки ONERROR LOCALBOOT 0. В результате правок у меня получилось примерно следующее:
LABEL pxeboot MENU LABEL ROSA Installer KERNEL images/lxde/vmlinuz0 APPEND rootflags=loop initrd=images/lxde/initrd0.img root=live:/ROSA.FRESH.R2.LXDE.x86_64.iso rootfstype=auto ro rd.live.image rhgb splash=silent logo.nologo install rd.luks=0 rd.md=0 rd.dm=0Обратите внимание на ключ install. Он отвечает за запуск инсталлятора. Если его убрать, то будет запущен режим стандартного LiveCD, а установку в этом случае необходимо будет производить из меню. И да, не забываем положить сам образ ОС в корень каталога tftpboot.
Загрузка с помощью iPXE для поддержки загрузки образов HTTP чуть посложнее и требует больше манипуляций.
Для начала необходимо установить в Foreman плагин foreman-bootdisk. Далее, необходимо создать какой-нибудь хост в Hosts. После чего, необходимо зайти в настройки хоста и нажать кнопку Boot disk. Где выпадающем меню требуется выбрать пункт Generic image. Если всё будет корректно, будет сформирована исошка, которую необхоимо положить на сервер в каталог, где TFTPD хранит все свои данные. Т.е. в /var/lib/tftpboot/.
В шаблон PXE Default File добавляются следующие строки:
LABEL isoboot MENU LABEL isoboot LINUX memdisk INITRD boot/bootdisk.iso APPEND iso rawЕсли в случае нажатия на пункт generic image будет вылезать ошибка вида "Safemode doesn't allow to access 'constant' on URI", необходимо открыть Settings > Provisioning, и выставить значение булевой переменной safemode_render из true в false.
Далее необходимо скопировать содержимое шаблона Boot disk gPXE - generic host, создать новый. Назвать, например, iPXE Generic. Подправить шаблон iPXE Generic, приведя к следующему виду:
<% (0..32).each do |i| -%> :net<%= i %> isset ${net<%= i -%>/mac} || goto no_nic echo net<%= i -%> is a ${net<%= i -%>/chip} with MAC ${net<%= i -%>/mac} dhcp net<%= i %> || goto net<%= i+1 %> kernel http://192.168.100.1/pub/os/pxeboot/vmlinuz0 initrd http://192.168.100.1/pub/os/pxeboot/initrd0.img imgargs vmlinuz0 root=live:/ROSA.FRESH.R2.LXDE.x86_64.iso rootfstype=auto loop=/ROSA.FRESH.R2.LXDE.x86_64.iso rootflags=loop ro rd.live.image install rhgb splash=silent logo.nologo install rd.luks=0 rd.md=0 rd.dm=0 bootГде http://192.168.100.1/ — публичный http-сервер, на котором лежат образы initrd и vmlinuz сгенерённые программой livecd-iso-to-pxeboot. Образ ROSA.FRESH.R2.LXDE.x86_64.iso кладётся в корень tftpboot, как и в примере с обычной загрузкой по PXE.
Если использовать HTTP сервер, то впоследствии можно уже организовать CDN для раздачи образов с системой. Но это уже тема для другого поста :)
> у ROSA пока нет образов netinstall
ОтветитьУдалитьНе "пока", а до сих порю
Глянул на дату статьи..прослезился(
К сожалению, всё так. :( Я хотел сам заняться, но уже не судьба.
УдалитьПодскажите, как для Rosa Linux сделать полностью автоматическую установку? Есть какое-то подобие preseed.cfg или kickstart?
ОтветитьУдалитьСмотря какую. Если речь про RELS, то kickstart там есть. Если про настольные версии, то никак. Эту функциональность хотели добавить в новый инсталлятор, но проект заморожен на неопределённый срок. Хотя после моего ухода из «РОСЫ» уже вот-вот должны были опубликовать.
УдалитьДля нынешнего инсталлятора ещё существовал грязный хак для сделанный специально под конкретного заказчика, но вряд ли он опубликован.