PXE에 사용되는 기본 네트워크 부팅 이미지는 5.4인데 최신 버전의 커널 5.11에서 vmlinuz 및 initrd를 사용할 수 없는 이유는 무엇입니까?
답변1
음, vmlinuz 및 initrd는 ISO 이미지 내부에 있습니다(네트워크 부팅에 ISO 이미지를 사용하는지 여부에 관계없이).
따라서 5.4 네트워크 부팅 ISO 이미지에는 5.4의 vmlinuz 및 initrd가 포함됩니다.
5.11에서 vmlinuz 및 initrd를 사용하려면 5.11의 파일로 만든 네트워크 부팅 ISO 이미지가 필요합니다. 다운로드할 수 없다면 하나 만들어야 합니다(Google, Ubuntu용으로 만드는 방법에 대한 표준 프로세스가 있어야 함).
답변2
initrd 파일에는 일반적으로 많은 커널 모듈이 포함되어 있지만 일반적으로 모든 모듈이 포함되어 있지는 않습니다.
netboot 이미지는 완전한 /lib/modules/
디렉토리 트리를 포함하여 보다 완전한 루트 파일 시스템을 설정합니다. 최신 커널을 사용하는 경우 /lib/modules/<kernel-version-number>/
해당 디렉토리는 이미지에 존재하지 않으므로 initramfs 부팅 단계 후에 커널 모듈을 로드하려는 시도는 실패합니다. 모듈은 특별히 "약한 종속성"을 준비합니다.그리고커널 ABI에는 호환되지 않는 변경 사항이 없습니다.
이는 커널이 "필수적이지 않은" 하드웨어나 나중에 핫플러그되는 하드웨어, 모듈로 제공되고 initramfs 부팅 단계에서 로드되지 않는 파일 시스템 및 기타 커널 기능을 지원할 수 없음을 의미합니다.
최신 커널에는 새로운 커널 기능을 활용하기 위해 그에 상응하는 최신 사용자 공간 도구가 필요할 수도 있지만, 이는 위에서 언급한 올바른 커널 버전이 없는 커널 모듈보다 즉각적인 오류를 일으킬 가능성이 적습니다.
물론, 필요한 작업을 수행하려는 경우 최신 커널 버전용 모듈이 포함된 사용자 정의 네트워크 부팅 이미지를 준비하는 데 방해가 되는 것은 없습니다.
casper/extras/modules.squashfs-generic
Ubuntu의 netboot ISO에서 커널 모듈은 ISO에 casper/extras/modules.squashfs-generic-hwe
별도의 squashfs 이미지로 패키지되어 있습니다 ubuntu-20.04.3-live-server-amd64.iso
. 여기에는 커널 modules.squashfs-generic
패키징 5.4.0-81-generic
용 모듈 과 modules.squashfs-generic-hwe
커널을 활성화하는 하드웨어용 모듈 5.11.0-27-generic
(!)이 포함되어 있습니다.
ISO 디렉토리에는 해당 및 파일도 있습니다 hwe-vmlinuz
. PXE 부팅 구성에서 일반 및 파일 대신 이러한 파일을 사용하면 실제로 커널 버전을 얻게 됩니다. 오직hwe-initrd
casper
vmlinuz
initrd
5.11.0-27-generic
일반적인 Ubuntu 네트워크 부팅 지침이 옵션의 존재에 대한 언급은 무시하십시오.
이것이 충분히 새로운 것이 아니라면 casper/extras/modules.squashfs-*
최신 커널 모듈이 포함된 파일을 추가하고 표준 파일 대신 이를 사용하여 사용자 정의 네트워크 부팅 ISO를 만드는 것이 가능해야 합니다. initrd 파일의 필수 사용자 정의(있는 경우)는 "독자에게 연습으로 남겨 둡니다". (번역: 아직 해본 적은 없지만, 적당한 노력을 하면 이룰 수 있을 것 같습니다.)