Linux 커널에서 initrd/initramfs 설정

Linux 커널에서 initrd/initramfs 설정

내가 이해한 바로는 initrd/initramfs가 커널 초기화를 돕기 위해 RAM에 파일 시스템을 설정한다는 것입니다. 다음과 같은 질문이 있습니다.

(1) initrd/initramfs가 부트로더에 의해 설정됩니까(예: GRUB 2)?

(2) 커널이 페이지 테이블을 초기화하기 전에 initrd/initramfs 설정이 발생합니까?

(3) 일시적인가요? 커널 초기화가 성공한 후 이 파일 시스템은 어떻게 됩니까?

답변1

(1) initramfs에서는 일반적으로 커널과 초기 파일 시스템이 동일한 파일에 존재합니다. 따라서 부트로더가 커널 파일의 위치를 ​​알아야 한다면 initramfs의 위치도 알고 있습니다. 그 반대. initramfs가 별도의 파일인 경우 부트로더에서 참조하고 매개변수로 커널에 전달해야 합니다.

부트로더는 커널에 제어권을 전달합니다. 커널은 준비해야 하는 모든 항목의 초기화가 끝나면 initramfs를 추출하고 init(initramfs 내)에 제어권을 전달합니다.

(2) initramfs는 커널이 가상 메모리 하위 시스템을 준비한 후에 추출됩니다.

(3) 일반적으로 initramfs가 작업을 완료한 후(즉, 시스템의 루트 파일 시스템 마운트) 새로 마운트된 루트 파일 시스템으로 "이동"하고 RAM에서 initramfs의 내용을 삭제하기 위한 일련의 미묘한 단계가 수행됩니다. (명시적으로) "rm"을 실행하여);

다음 내용을 읽어 보시기 바랍니다: https://www.kernel.org/doc/Documentation/filesystems/ramfs-rootfs-initramfs.txt

답변2

initrd는 사용자 공간 프로그램에 의해 설정되고 파일(형식)로 cpio디스크에 복사됩니다 . 부트로더는 구성에서 이 파일에 대한 정보를 받고 파일을 RAM에 복사하고(추가 설정 없이) 커널에 RAM 주소를 알려줍니다.

커널은 RAM 디스크를 설정하고 그 안에 initrd를 추출합니다. 해당 설정을 호출하려는 경우... 페이지 테이블 생성과 관련된 타이밍은 모르지만 커널이 페이지 테이블이 필요한 initrd에서 사용자 영역 프로세스를 시작할 때 이런 일이 이미 발생한다고 상상합니다.

/이 RAM 디스크는 실제 루트 FS가 마운트되고 PID 1이 이를 chroot할 때까지 파일 시스템 으로 사용됩니다 .

이 RAM 디스크(및 모든 내용)가 마운트 해제를 위해 루트 FS에서 루트 해제될 때까지 남아 있는지 여부는 알 수 없습니다.

관련 정보