Boot PXE ISO 18,04


12

Wcześniej konfigurowałem uruchamianie PXE LiveCD z Ubuntu, wyodrębniając ISO na mount NFS i kopiując vmlinuz.efi i initrd.gz z caspera do katalogu tftpboot z pewną magią skryptową iPXE.

Działa to bezbłędnie dla 16.04, 16.10 i 17.10 (pomysłowe).

W 18.04 po raz pierwszy odkryłem, że vmlinuz.efi już nie istnieje w Casper, ale vmlinuz tak. Próbuję ponownie, zmieniając nazwy ...

A teraz nadal nie kończy uruchamiania. Dostaję „tryb awaryjny”. Wpisanie „Journalctl -xb” (zgodnie z sugestią w trybie awaryjnym) i przeglądanie prowadzi do następujących sytuacji:

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.

Wsparcie!

Dodano 30.04.2018:

Kod skryptu użyty do wyodrębnienia ISO dla montażu PXE (TARGET ustawiony na nazwę obrazu, np. Bioniczny):

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.

Czy była to „czysta” instalacja, co oznacza, że ​​dysk, na którym działa jądro, został świeżo sformatowany? Czy jest to obok / nad innym systemem operacyjnym?
Jonathan

1
Docelowe maszyny, o których mowa, nie mają dysku twardego i ładują pulpit LiveCD 18.04 za pomocą rozruchu sieciowego. Nie ma poprzedniej konfiguracji. Wyobraź sobie grupę komputerów, które zamiast używać kluczy USB lub płyt CD do uruchamiania płyty LiveCD, zamiast tego uruchamiają płytę CD za pomocą iPXE przez sieć.
Joe Marley,

Odpowiedzi:


7

Rozwiązałem ten problem w iPXE, postępując zgodnie z radą „Woodrow Shen” w narzędziu do śledzenia błędów Launchpad .

Zasadniczo dostosowałem nasz stary wpis do 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

Aby wyglądać tak dla 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

zwróć uwagę na następujące zmiany:

  • nazwy vmlinuz.efisię vmlinuxna linii 4 i 6
  • dodaj toramopcję do wiersza 6
  • oczywiście zmień, nfs_pathaby dopasować lokalizację nowego wyciągu ISO

zwróć uwagę, że jak wskazano na Launchpadzie, ta toramopcja wymaga dodatkowej pamięci RAM. W moich testach musiałem upewnić się, że moje maszyny wirtualne mają przydzielone 4 GB pamięci RAM

Pamiętaj, że działa to również w przypadku naszych systemów EFI i starszych systemów BIOS.


1
Dziękuję DrGecko - toramopcja działała dla mnie z mennicą 19!
Brian Sidebotham

Działa to również dla lubuntu 18.04.1 (LTS), czego dokładnie potrzebowałem. Dziękuję Ci!
Joe Marley,

1
Jest jeszcze jedna opcja, która nie wymaga torami pozwala na uruchomienie komputera z dużo mniejszą pamięcią RAM: zmień koniec linii 6 naip=dhcp systemd.mask=tmp.mount ro -- || read void
Ricflomag

@Ricflomag Dziękuję bardzo, mam stos komputerów z 2 GB pamięci RAM. Testowany i działa na Ubuntu MATE 18.04.1 i Linux Mint 19.1, który ma ten sam problem, ponieważ jest oparty na Ubuntu 18.04.
Skylar Ittner


0

aktualizacja poniżej - nie używaj live iso, użyj tradycyjnego, który można uruchomić w środowisku PXE dokładnie tak, jak kiedyś


w przypadku Ubuntu 14.04 i 16.04 po prostu zamontowałem pętlę z powrotem pełnego dysku DVD ISO serwera, aby był dostępny przez serwer WWW, i skonfigurowałem rozruch PXE w zwykły sposób (skopiowałem jądro i initrd do demona tftp, opcja następnego serwera DHCP , menu pxe itp.).

mamy proces kickstart, aby w pełni zautomatyzować wdrażanie węzłów.

to po prostu nie działa z 18.04, nie było jądra w katalogu instalacyjnym i nie ma katalogu install / netboot / ubuntu-installer / amd64! Wypróbowałem więc jądro i initrd z katalogu caspera, ale to też jest bezużyteczne. Chwyciłem iso z płyty DVD z programem netinstall i skorzystałem z jądra i initrd. W rzeczywistości uruchamia instalator tekstu, ale twierdzi, że w kopii lustrzanej brakuje pliku, ale dziennik z mojego serwera HTTP nie podaje żadnych 404!

ogólnie rzecz biorąc, uważam, że ISO serwera Ubuntu 18.04 jest krokiem wstecz dla osób chcących wykonywać automatyczne instalacje.


Próbowałem też dodać to do kickstartu

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

co jest trochę rzeczą, którą musiałem zrobić, aby uruchomić system Ubuntu 14.04 PXE w sposób automatyczny

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.