18.04.2 initrd를 램디스크에 로드

18.04.2 initrd를 램디스크에 로드

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

모듈이 목록에 있는지 확인하십시오.

관련 정보