Boot

pxe 引導時使用壓縮的 initrd

  • April 5, 2022

我正在使用帶有 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-amd64initrd 已經被壓縮,重量約為 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 流量擷取可以幫助您查明問題。

引用自:https://serverfault.com/questions/1097817