mkiinitrd(CentOS 5.5)를 사용하여 initrd를 생성하면 initrd에 추가된 커널 모듈이 프로세스에서 수정됩니다. 예를 들어, initrd에는 /lib/modules/2.6.18-194.32.1.el5/kernel/drivers/ata/sata_via.ko와 /lib/sata_via.ko에 대한 다른 바이너리가 있습니다.
mkinitrd에 커널 모듈이 포함되면 어떤 일이 발생하는지 궁금합니다. 종속성에 연결되어 있나요? 아니면 모듈을 변경하는 이유는 무엇인가요?
답변1
/lib/sata_vio.ko
initrd에 하나가 있습니까? 파일 시스템 중 하나(예 /
: "root")가 현재 이 드라이버가 필요한 SATA 드라이브에 있습니까(또는 원래 있었습니까)? 해당 항목이 /etc/modules
또는 에 나타납니까 /etc/mkinitrd/modules
?
내 Ubuntu 시스템에서 이 모듈은 initrd 이미지 내의 동일한 위치에 있습니다(예: <extracted initrd>/lib/modules/<uname -r>/drivers/ata/sata_vio.ko
.
뭐라고 file
? 뭐라고 strings | grep '\<ver'
? 어쩌면 다른 드라이버나 다른 커널 버전에서 나온 것일 수도 있습니다.
분명히 ls -l
또는 를 사용하여 더 큰지 du
확인한 /lib/sata_vio.ko
다음 nm -D
두 파일 모두에서 실행하여 기호에 차이가 있는지 확인할 수 있습니다(예: 사용 diff
).
전체 프로세스는 에 문서화되어야 합니다 man mkinitrd
. 특히 시스템이 어떤 스크립트를 실행하는지, /usr/share/initrd-tools/scripts
또는 /etc/mkinitrd/scripts
?
답변2
initrd(또는 initramfs)는 부트로더가 부팅 시 로드할 수 있는 작은 RAM 기반 파일 시스템의 내용입니다. 여기에는 모듈 로딩을 위한 최소한의 도구와 필수 하드웨어(예: 하드 디스크 및 파일 시스템)에 액세스하는 데 필요한 모듈이 포함되어 있습니다. 그 안에 포함된 최소 초기화(첫 번째 프로세스)는 실제 /로 전환됩니다. initrd 이미지는 필요한 파일의 gzip(1)ed cpio(1) 아카이브이며 링크나 기타 작업이 수행되지 않습니다.