Boot
pxe 引導時使用壓縮的 initrd
我正在使用帶有 grub 的 netboot/pxeboot。
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 }
它工作正常,但是,通過 tftp 載入 initrd 需要很長時間(30 多分鐘)。我想壓縮(gz/bz2)這個文件以節省一些文件傳輸時間。
我看到了一些例子,指的是
initrd.gz
(一個例子:https ://unix.stackexchange.com/questions/217002/which-iso-file-vmlinuz-and-initrd-gz-to-use-for-installing- centos-from-multiboo)但是當我試圖用 gzip 壓縮文件並使用它時,我收到一個錯誤,例如:[ 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)
有沒有辦法壓縮這個文件,以便它可以傳輸更小的文件大小,並在嘗試掛載根 fs 之前將其解壓縮?
或者,有沒有辦法通過不同的協議(HTTP/FTP/SFTP/SCP/etc)傳輸它?
initrd 是從文件樹結構創建的壓縮 CPIO 結構,其命令如下:
find . | cpio -o -c -R root:root | gzip -9 > /boot/new.img
ubuntu-20.04-desktop-amd64
initrd 已經被壓縮,重量約為 87MB 。該文件的 TFTP 傳輸應該在 36 秒左右。[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
如果您的 TFTP 傳輸需要半小時,則您的網路 TFTP 設置存在不同的問題。Wireshark 流量擷取可以幫助您查明問題。