Загрузка PXE 18.04 ISO

12

Ранее я настроил PXE-загрузку Ubuntu LiveCD с помощью извлечения 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.
Джо Марли
источник
Была ли это «чистая» установка, то есть диск, на котором находится ядро, был недавно отформатирован? Или это рядом с другой ОС?
Джонатан
1
У целевых машин нет жесткого диска, и они загружают LiveCD 18.04 для настольных ПК через сетевую загрузку. Там нет предыдущей конфигурации. Представьте себе группу машин, которые вместо использования USB-ключей или компакт-дисков для загрузки liveCD вместо этого загружают live CD с помощью iPXE по сети.
Джо Марли,

Ответы:

7

Я работал над этой проблемой в 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
источник
1
Спасибо DrGecko - toramвариант работал для меня с мятой 19!
Брайан Сайдботэм
Это работает также для lubuntu 18.04.1 (LTS), что именно то, что мне было нужно. Спасибо!
Джо Марли
1
Есть еще один вариант, который не требует toramи позволяет загружать компьютер с гораздо меньшим объемом оперативной памяти: измените конец строки 6 наip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag
@Ricflomag Большое спасибо, у меня есть куча компьютеров с 2 ГБ оперативной памяти. Протестировано и работает на Ubuntu MATE 18.04.1 и Linux Mint 19.1, которая имеет ту же проблему, поскольку основана на Ubuntu 18.04.
Скайлар Итнер
2

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

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

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

Джо Марли
источник
Я должен был нажать на ссылку раньше - потратил довольно много времени на выяснение. Я использовал AIO Boot. Благодарю.
Регми
0

Обновление ниже - не используйте live iso, используйте традиционный, который может быть загружен PXE точно так же, как я делал раньше


для 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 автоматизированной

Пол М
источник