부트로더(Grub 또는 U-boot 등)가 커널(HDD에서 또는 임베디드 시스템인 경우 플래시에서)을 찾아 부팅 시 메모리에 로드한다는 내용을 읽었습니다.
이제 이는 부트로더가 커널을 사용 가능한 RAM에 완전히 로드한 다음 제어권을 전달한다는 의미입니까? 내 생각에는 커널이 RAM에 정확하게 맞지 않을 것이므로 커널 명령이 RAM에서 저장 장치로 또는 그 반대로 교체될 것입니다.
내가 이해하지 못하는 것은 이 단계에서 부트로더가 실행을 중지하고 커널이 인계받았다는 것인데, 부트로더가 적합하지 않은 경우 부트로더가 어떻게 커널의 나머지 부분을 메모리에 로드하거나 메모리에서 로드하는 일을 담당할 수 있습니까? 하나의?
답변1
커널은 부팅 시 RAM에 완전히 로드되며 교체되지 않습니다. 커널은 그것이 어디서 로드되었는지 모르거나 신경쓰지 않습니다. 네트워크에서 로드할 수 있으며 tftp를 통해 교환하기가 어렵습니다.
답변2
더 정확하게 말하자면, 부트로더는 로드하는 모든 것을 메모리에 커널로 로드합니다. 커널 자체일 필요는 없으며 두 번째 단계 부트로더일 수도 있습니다(대부분의 경우 GRUB가 실제 커널을 추출하는 압축 해제 루틴으로 점프하므로 이는 실제로 기술적으로 발생하는 일입니다). 또는 유형 1일 수 있습니다. 그런 다음 Linux 커널을 로드하고 실행하는 하이퍼바이저입니다.
즉, 모든 것이 메모리에 맞아야 합니다.그리고사용자 공간 등을 위한 충분한 공간을 확보하십시오. 그렇지 않으면 시스템이 부팅되지 않습니다. (이것이 현재 실행 메모리가 64M 미만인 Linux 시스템을 구축하기 어려운 이유 중 하나입니다.) 내가 아는 다른 모든 UNIX 시스템(SVR4, BSD, Solaris, IRIX, Ultrix, Xenix 등)에서도 마찬가지입니다. 커널 공간에서 메모리 스와핑을 처리하는 것은 너무 고통스러워서 구현할 가치가 없습니다.