Загрузка PXE 18.04 ISO

Ранее я настроил PXE-загрузку LiveCD с Ubuntu, распаковав ISO-образ для монтирования NFS и скопировав vmlinuz.efi и initrd.gz из casper в каталог tftpboot с помощью некоторой магии сценариев iPXE.

Это работало безупречно для 16.04, 16.10 и 17.10 (хитрый).

С 18.04 я впервые обнаружил, что vmlinuz.efi больше не существует в Каспере, но vmlinuz делает. Итак, я пытаюсь снова с некоторым изменением имени...

И теперь он все еще не завершает загрузку. Я получаю "аварийный режим". Печатание в 'journalctl -xb' (как подсказано приглашением аварийного режима) и просмотр приводит к следующему:

Unit sys-fs-fuse-connections has begun starting up.
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
ubuntu systemd[1]: Failed to set up mount unit: Device or resource busy
sys-kernel-config.mount: Mount process finished, but there is no mount.
sys-kernel-config.mount: Failed with result 'protocol'.
Failed to mount Kernel Configuration File System.

Помогите!

Добавлено 2018-04-30:

Код сценария, используемый для извлечения ISO для монтирования PXE (TARGET установлен на имя образа, например, bionic):

set -e

# Look for bionic.iso as the ISO I am going to extract.
TARGET=invalid.iso
[ -f bionic.iso ] && TARGET=bionic
echo TARGET=$TARGET

# Mount the ISO to the /tmp directory
sudo rm -rf /var/nfs/$TARGET/*
sudo rm -rf /tmp/$TARGET
mkdir /tmp/$TARGET
sudo mount -o loop ~/$TARGET.iso /tmp/$TARGET

# Clear up the NFS directory where things will be copied (and copy them)
sudo rm -rf /var/nfs/$TARGET
sudo mkdir /var/nfs/$TARGET
sudo rsync -avH /tmp/$TARGET/ /var/nfs/$TARGET

# I've not had luck with iPXE changing filesystems to find
# vmlinuz, vmlinuz.efi, or initrd.gz... so I copy those files
# specifically to the tftp directory structure so the boot loader
# can load them.
sudo rm -rf /var/lib/tftpboot/$TARGET
sudo mkdir /var/lib/tftpboot/$TARGET
sudo cp /tmp/$TARGET/casper/vmlinuz* /var/lib/tftpboot/$TARGET/.
sudo cp /tmp/$TARGET/casper/initrd.lz /var/lib/tftpboot/$TARGET/.

# Cleanup: unmount the ISO and remove the temp directory
sudo umount /tmp/$TARGET/
sudo rm -rf /tmp/$TARGET/
echo Done.

3 ответа

Решение

Я работал над этой проблемой в iPXE, следуя совету "Woodrow Shen" в трекере ошибок Launchpad.

В основном я адаптировал нашу старую запись для Ubuntu 16.04.3:

:deployUbuntu-x64-16.04.3
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-16.04.3
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz.efi || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz.efi initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet -- || read void
boot || read void

Чтобы выглядеть так для Ubuntu 18.04:

:deployUbuntu-x64-18.04
set server_ip 123.123.123.123
set nfs_path /opt/nfs-exports/ubuntu-x64-18.04
kernel nfs://${server_ip}${nfs_path}/casper/vmlinuz || read void
initrd nfs://${server_ip}${nfs_path}/casper/initrd.lz || read void
imgargs vmlinuz initrd=initrd.lz root=/dev/nfs boot=casper netboot=nfs nfsroot=${server_ip}:${nfs_path} ip=dhcp splash quiet toram -- || read void
boot || read void

обратите внимание на следующие изменения:

  • переименовать vmlinuz.efi быть vmlinux по строкам 4 и 6
  • добавить toram вариант строки 6
  • очевидно, изменить nfs_path соответствовать местоположению нового экстракта ISO

обратите внимание, что, как указано на Launchpad, это toram опция требует дополнительной оперативной памяти. В моем тестировании мне нужно было убедиться, что на моих виртуальных машинах выделено 4 ГБ ОЗУ

Обратите внимание, что это также работает как для наших EFI, так и для устаревших систем BIOS.

После выходных я обнаружил ошибку, описывающую мои точные симптомы (и предоставил интерактивное решение).

https://bugs.launchpad.net/ubuntu/+source/casper/+bug/1755863

Видимо я буду ждать 18.04.1. По крайней мере, теперь я знаю, что я не (полностью) сумасшедший!

Для Ubuntu 14.04 и 16.04 я просто монтировал по шлейфу полный ISO-диск DVD сервера, чтобы он был доступен через веб-сервер, и настраивал загрузку PXE обычным способом (копировал ядро ​​и initrd в демон tftp, опция DHCP next-server DHCP), pxe меню и т. д.).

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

это просто не работает с 18.04, в каталоге установки не было ядра, а также в каталоге install/netboot/ubuntu-installer/amd64! Поэтому я попробовал ядро ​​и initrd из каталога casper, но это тоже бесполезно. Я взял netinstall DVD iso и использовал ядро ​​и initrd из этого. Он фактически запускает текстовый установщик, но настаивает на том, что в зеркале отсутствует файл, но журнал с моего http-сервера не дает никаких 404-х!

В целом, я чувствую, что ISO-образ сервера ubuntu 18.04 - это шаг назад для людей, желающих выполнить автоматическую установку.


Я также попытался добавить это в кикстарт

preseed live-installer / net-image string http://myreposerver/ubuntu-18.04-live-server-amd64/casper/filesystem.squashfs

что-то вроде того, что я должен был сделать, чтобы сделать загрузку Ubuntu 14.04 PXE автоматизированной

Другие вопросы по тегам