
저는 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)하고 싶습니다.
나는 a를 언급하는 몇 가지 예를 보았습니다. 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)을 통해 전송하는 방법이 있습니까?
답변1
initrd는 다음과 같은 명령을 사용하여 파일 트리 구조에서 생성된 압축된 CPIO 구조입니다.
find . | cpio -o -c -R root:root | gzip -9 > /boot/new.img
initrd ubuntu-20.04-desktop-amd64
는 이미 압축되어 있으며 무게는 약 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 전송에 30분이 걸리면 네트워크 TFTP 설정에 다른 문제가 있는 것입니다. Wireshark 트래픽 캡처는 문제를 정확히 파악하는 데 도움이 될 수 있습니다.
답변2
@Pat의 답변이 허용되고 더 자세하지만 원래 질문에 대한 직접적인 답변은 다음과 같습니다.
이 파일을 압축하여 더 작은 파일 크기를 전송할 수 있고 루트 fs를 마운트하기 전에 압축을 풀 수 있는 방법이 있습니까?
아니요, 이미 압축되어 있습니다. 허용되는 답변은 이에 대한 예를 제공합니다.
또는 다른 프로토콜(HTTP/FTP/SFTP/SCP/etc)을 통해 전송하는 방법이 있습니까?
일반 PXE에서는 그렇지 않습니다. http/nfs를 허용하는 iPXE와 같은 다른 네트워크 부팅 시스템을 사용하십시오.