我正在使用带有 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 结构,其命令如下:
ubuntu-20.04-desktop-amd64
initrd 已经被压缩,重量约为 87MB 。该文件的 TFTP 传输应该在 36 秒左右。如果您的 TFTP 传输需要半小时,则您的网络 TFTP 设置存在不同的问题。Wireshark 流量捕获可以帮助您查明问题。
@Pat 的回答被接受并且更详细,但是这里是原始问题的直接答案:
不,它已经被压缩了。接受的答案给出了一个例子。
不适用于常规 PXE。使用另一个网络引导系统,例如 iPXE,它允许 http/nfs