
Ich verwende Netboot/PXEboot mit Grub.
menuentry "Install Ubuntu 20.04" {
set gfxpayload=keep
echo 'Loading vmlinuz ...'
linux /tftp/vmlinuz ip=dhcp netboot=nfs nfsroot=10.0.0.20:/data/netboot/nfs/ubuntu2004/ boot=casper toram noquiet splash=off console=tty0 console=ttyS1,57600n8 ---
echo 'Loading initrd, this takes a long time ...'
initrd /tftp/initrd
}
Es funktioniert einwandfrei, allerdings dauert das Laden von initrd über TFTP sehr lange (30+ Minuten). Ich möchte diese Datei komprimieren (gz/bz2), um etwas Zeit bei der Dateiübertragung zu sparen.
Ich habe da draußen einige Beispiele gesehen, die sich auf ein initrd.gz
(Ein Beispiel:https://unix.stackexchange.com/questions/217002/welche-iso-datei-vmlinuz-und-initrd-gz-soll-ich-für-die-installation-von-centos-von-multiboo-verwenden), aber als ich versuchte, die Datei einfach mit gzip zu komprimieren und zu verwenden, erhielt ich eine Fehlermeldung wie:
[ 12.543547] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6
[ 12.558487] Please append a correct "root=" boot option; here are the available partitions:
[ 12.575161] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)
Gibt es eine Möglichkeit, diese Datei zu komprimieren, damit eine kleinere Dateigröße übertragen werden kann, und sie zu dekomprimieren, bevor versucht wird, das Stamm-FS zu mounten?
Gibt es alternativ eine Möglichkeit, es über ein anderes Protokoll (HTTP/FTP/SFTP/SCP/usw.) zu übertragen?
Antwort1
Ein initrd ist eine komprimierte CPIO-Struktur, die aus einer Dateibaumstruktur mit einem Befehl wie dem folgenden erstellt wird:
find . | cpio -o -c -R root:root | gzip -9 > /boot/new.img
Das ubuntu-20.04-desktop-amd64
initrd ist bereits komprimiert und wiegt etwa 87 MB. Die TFTP-Übertragung dieser Datei sollte etwa 36 Sekunden dauern.
[04/05 08:17:46.445] TFTP Inf: <\NWA_PXE\ubuntu-20.04-desktop-amd64\casper\initrd>: sent blks=63901 blkSz=1408, Total 89971296 bytes in 36s, err recovery=0
Wenn Ihre TFTP-Übertragung eine halbe Stunde dauert, liegt ein anderes Problem in Ihrem Netzwerk-TFTP-Setup vor. Eine Wireshark-Datenverkehrsaufzeichnung kann Ihnen helfen, Ihr Problem zu lokalisieren.
Antwort2
Die Antwort von @Pat wird akzeptiert und ist ausführlicher, hier sind jedoch die direkten Antworten auf die ursprünglichen Fragen:
Gibt es eine Möglichkeit, diese Datei zu komprimieren, damit eine kleinere Dateigröße übertragen werden kann, und sie zu dekomprimieren, bevor versucht wird, das Stamm-FS zu mounten?
Nein, es ist bereits komprimiert. Die akzeptierte Antwort gibt ein Beispiel dafür.
Gibt es alternativ eine Möglichkeit, es über ein anderes Protokoll (HTTP/FTP/SFTP/SCP/usw.) zu übertragen?
Nicht mit regulärem PXE. Verwenden Sie ein anderes Netzwerk-Boot-System, wie iPXE, das http/nfs erlaubt