커널 이미지와 부트로더(grub)가 필요한 것 같은데, Linux 시스템을 부팅하는 데 필요한 것이 더 있나요?
답변1
가장 간단한 경우에는 부트로더, 커널, 파일 시스템만 있습니다.
부트로더는 때때로 펌웨어의 일부입니다(최근 Linux 커널은 x86에서 EFI에 의해 직접 로드될 수 있음). 또한 매개변수(Linux의 경우)를 /
사용하여 마운트할 파일 시스템을 커널에 알려야 합니다 root=
. 그런 다음 제어권을 사용자 공간으로 전송하기 위한 마지막 단계로 init 로드를 시도합니다. Linux의 경우 확인하고 싶을 수도 있습니다.kernel_init_()
존재하다init/main.c
시도할 바이너리의 순서입니다.
답변2
예, 무엇을 어디에 설치할지 알기 위해서는 시스템이 필요합니다. 로더는 이미지와 시스템 바이너리를 찾습니다. Linux From Scratch는 좋은 문서입니다. 한번 살펴보시기 바랍니다.여기.
답변3
커널 이미지가 필요하고 영구적으로 저장되거나 네트워크를 통해 공유되거나 일부 직렬 연결 등을 통해 전송되는지 여부에 관계없이 시스템에서 사용할 수 있도록 해야 합니다. 그리고 일부 코드는 시스템의 펌웨어인지 여부에 관계없이 일부 부트 로더(또한 사용할 수 있음) 이 커널을 시스템 메모리에 로드합니다.
로드 및 초기화 후 커널은 일반적으로 init
일부 initramfs 또는 ramdisk를 통해 제공될 수 있는 명령을 로드하는 첫 번째 프로세스를 생성합니다. 이 프로세스의 이미지는 메모리에 로드되어야 합니다(그리고 initramfs를 위해 커널에 의해 추출됩니다). 일부 일부 네트워크 또는 영구 저장소 파일 시스템에서.
일반적으로 initramfs(있는 경우)는 실제 시스템을 설정하고 전환하기 위해 초기 부팅 중에 일시적으로만 사용되지만 이것이 전부일 필요는 없습니다.
init
시스템이 커널 코드에서 수행하려는 작업을 실행 및 구현하지 않도록 커널을 수정할 수도 있습니다 .
예를 들어 간단한 방화벽/라우터는 모든 라우팅 및 패킷 필터링이 커널에서 수행되므로 사용자 공간 프로세스를 실행할 필요가 없지만 실제로는 이를 관리하기 위해 일부 사용자 공간 도구와 파일 시스템(로깅 등)이 필요합니다.