initrd에 커널 모듈을 추가하면 mkinitrd가 어떻게 변경됩니까?

initrd에 커널 모듈을 추가하면 mkinitrd가 어떻게 변경됩니까?

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.koinitrd에 하나가 있습니까? 파일 시스템 중 하나(예 /: "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) 아카이브이며 링크나 기타 작업이 수행되지 않습니다.

관련 정보