Загрузка 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 автоматизированной