컴파일 된 커널을 보면 relative 주소로 되어 있는데, 부트로더가 커널의 .data랑 .bss를 다른 프로세스처럼 적절한 곳에 따로 두는 걸로 착각했다. 당연히 부트로더 단계에서는 MMU나 페이징이 아직 없고, 커널은 메모리에 매핑이 된게 아니라 고정된 주소에 있어야 한다.
커널은 PIC(Position Independant Code)인데, \`.text\`, \`.data\`, \`.bss\`가 정해진 offset 차이로 고정되어 메모리에 올라가기 때문에 동적 주소 매핑 없이 base address에 relative 하게 모든 section의 위치를 알 수 있다.