PXE 부팅 커널을 생성하려고 합니다.복제배포. 기본적으로 작동하지 않는 일부 드라이버가 필요한 NIC가 있지만 Ubuntu 설치에서는 잘 작동하므로 커널을 사용하여 간단히 PXE 부팅하고 Ubuntu를 부팅하는 initrd를 사용할 것이라고 생각했습니다(Linux가 아님). -savvy 나는 일을 수행하는 이보다 더 좋은 방법을 생각할 수 없습니다. 자체 커널을 구축하려는 시도는 작동하는 NIC를 생성하는 데 실패했습니다.
최신 18.04.2 설치를 실행 중입니다. 그래서 파일을 PXE 시스템의 올바른 위치에 복사
vmlinuz-4.18.0-20-generic
하고 해당 파일에서 부팅을 시도했습니다.initrd.img-4.18.0-20-generic
이것은 (ipxe) 부팅 명령줄입니다(읽을 수 있도록 이미지 위치가 단축됨).
kernel http://.../IpxeBoot?filename=vmlinuz-4.18.0-20-generic&type=kernel initrd=initrd.img-4.18.0-20-generic root=/dev/ram0 rw ramdisk_size=1560000 web=http://.../ USER_TOKEN= task=debug consoleblank=0
imgfetch --name initrd.img-4.18.0-20-generic http://.../IpxeBoot?filename=initrd.img-4.18.0-20-generic&type=bootimage
boot
부팅할 때 여러 관련 장치가 초기화되지만(NIC 포함!) 다음 오류가 발생합니다.
gave up waiting for root file system device
ALERT! /dev/ram0 does not exist. Dropping to a shell!
나는 발견했다이 질문이는 부팅 중에 brd 모듈을 로드하고 initrd를 실제 사용 가능한 램 디스크로 전환하기 위해 어딘가에서 추가 단계를 수행해야 함을 의미합니다. 에 제안되었지만 add "brd rd_size=16777216" to /etc/initramfs/modules
(을 사용하여) initrd.img-4.18.0-20-generic 파일의 압축을 풀면 unmkinitramfs
/etc/initramfs가 없습니다. (또한 ram0부터 ram15까지가 아닌 ram0만 생성해야 할 수도 있습니다 rd_nr=1 rd_size=1048576
.)
부팅 오류를 어떻게 극복합니까? brd 로딩과 관련된 경우, 이 커널 버전에서는 어떻게 해야 합니까?
답변1
초기 램디스크(귀하의 경우 )는 시스템에 커널을 설치하는 동안 도구 initrd.img-4.18.0-20-generic
에 의해 자동으로 생성됩니다 .update-initramfs
update-initramfs
시스템을 확인하고 initrd
부팅 중에 시스템을 로드하기 위해 필요한 모듈을 추가합니다.
스크립트를 넣을 수 있는 위치는 두 군데가 있습니다 initial ramdisk
.
/usr/share/initramfs-tools
그리고
/etc/initramfs-tools
귀하의 경우 해당 줄을 삽입 /etc/initramfs-tools/modules
하고 실행 해야합니다
update-initramfs -u
현재 커널의 경우.
그런 다음 결과를 확인하십시오.
mkdir myinitramfs
cd myinitramfs
zcat /boot/initrd.img-4.18.0-20-generic | cpio --extract
cat conf/modules
모듈이 목록에 있는지 확인하십시오.