Загрузка PXE из 18.04 ISO

3

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

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

С 18.04 я впервые обнаружил, что vmlinuz.efi больше не существует в casper, но 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.

Help!

Добавлено 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.
    
задан Joe Marley 28.04.2018 в 03:05
источник

3 ответа

0

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

Ссылка

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

    
ответ дан Joe Marley 30.04.2018 в 16:10
0

для ubuntu 14.04 и 16.04, я просто обратился к полному серверу DVD ISO, чтобы он был доступен через веб-сервер, и установил загрузку PXE обычным способом (скопировал ядро ​​и initrd на демон tftp, затем следующий DHCP -сервер, меню и т.д.).

у нас есть кикстарт, чтобы полностью автоматизировать развертывание узлов.

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

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

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

preseed live-installer / net-image string Ссылка

, что несколько похоже на то, что я должен был сделать, чтобы сделать загрузочную загрузку Ubuntu 14.04 PXE

    
ответ дан Paul M 02.05.2018 в 12:44
0

Я работал над этой проблемой в 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.

    
ответ дан DrGecko 30.05.2018 в 11:50