initrd와 Intramfs의 혼란스러운 사용

initrd와 Intramfs의 혼란스러운 사용

initrd 또는 inramfs의 목적에 대한 나의 이해는 커널이 RAM에 임시 파일 시스템을 마운트하여 드라이버 및 기타 항목을 로드하고 실제 rootfs(위치에 관계없이)를 마운트할 수 있도록 하는 것입니다.

이 게시물을 읽은 후에는 부팅 중에 rootfs를 마운트하는 방법을 알려주기 위해 가능한 모든 시나리오를 하드코딩하지 않고도 공통 커널 배포를 유지할 수 있는 것이 주요 목표인 것 같습니다.

이 경우 initrd 또는 inramfs는 거의 항상 사용자 정의되어 있는 것 같습니다.

그러나 내가 이해하지 못하는 것은 특정 경우에 대해 inramfs가 마운트될 때 무엇을 해야 하는지 알려주기 위해 커널 코드를 수정해야 한다는 것입니다. 예를 들어 특정 스크립트를 실행하거나 실제로 드라이버를 로드하고 사용하는 등의 작업이 가능합니다.

답변1

요점은 커널 RAM(페이징 아님)을 저장하는 것입니다. 모든 것을 포함하는 커널을 구축하는 대신 몇 가지 중요한 드라이버를 포함하고 나머지는 모듈로 사용할 수 있는 커널을 구축합니다. 부팅 시 커널은 pcie와 같이 찾은 다양한 버스를 조사하고 찾은 다양한 항목에 대한 드라이버라고 주장하는 모듈을 찾으려고 시도합니다. 이러한 모듈은 RAM에 남아 있고 나머지 모듈은 폐기됩니다. 일반적으로 initrd에는 가능한 모든 모듈 또는 최소한 많은 수의 모듈이 포함되며 initrd 자체 생성에는 사용자 정의가 많이 포함되지 않습니다.

관련 정보