도와주세요!!
EZ-S3C6410보드를 사용하는데 있어서
RAM disk 모드와 YAFFS모드에서의 부트 과정에 대해서 질문을 하겠습니다.
EZ_BOOT 설정에서 보면 다음과 같이 나오는데
0x000000000000 - 0x000000400000 : Bootloader
0x000000400000 - 0x000001100000 : Kernel + Ramdisk
0x000001100000 - 0x000020000000 : Application
EZ_BOOT 부트로더의 기능이 시리얼이나 이더넷으로 받은 Kernel image와 Ramdisk는 다음과 같은 주소로 저장되는지요?
이 주소는 Ramdisk와 YAFFS모드에 상관없이 Flash Memory에 저장되어 있는 것입니까?
일반 PC에서는 BIOS가 HDD의 첫번째 색터인 부트섹터에 존재하는 Bootloader를 읽어 운영체제를 램에 적재하고
임베디드 시스템에서는 HDD가 없기때문에 Flash Memory에 주소대로 정의되어있는 Bootloader를 읽어
커널이미지와 램디스크를 SDRAM에 적재하는게 맞습니까?
Ramdisk 모드는 SDRAM에 적재, YAFFS는 SDRAM에 적재하지 않고 바로 Flash Memory에서 kernel image와 Ramdisk를 실행하나요?
그리고 보드의 부팅과정 중에서 Ramdisk모드로 실행을 하면 initrd가 존재하고 YAFFS 모드로 실행을 하면 noinitrd라고 나옵니다.
initrd(초기 램디스크)가 제가 알기로는 완벽한 루트시스템은 아니지만 임시 역할을 하여 커널이 물리적 마운트 하지않고도
완전히 부팅될 수 있도록 도와준다고 알고있습니다.
그렇다면 Ramdisk모드일때는 Initrd는 어떻게 커널이 올라올때까지 도와준다는 것인지요?
YAFFS에서는 따로 Initrd가 왜 필요없는것인가요?
전반적으로 kernel Image와 Ramdisk가 어떻게 사용되는지 어떤 순서로 사용되는지 알고싶습니다.
리눅스의 커널 부팅과 관련된 파라미터나 설정은 매우 어렵기도 하고 답을 찾기도 어렵습니다.
하지만 의외로 가까운 곳에 답이 있기도 하지요.
사용하고 계신 커널의 Documentation 디렉토리에는 ramdisk 와 initrd 의 역할에 대한 것이 자세히 있습니다.
initrd 옵션에 대해서는 Documentation/initrd.txt 라는 파일이 별도로 존재합니다. ^^
영어이긴 하지만 사실은 최고의 레퍼런스입니다.
ramdisk 이건 yaffs 건 리눅스 시스템은 루트로 마운트 해야할 대상이 필요합니다.
그 옵션으로 주소를 주면 커널이 그 주소에서 커널 이미지와 램디스크를 찾아서 압축을 풀고 사용합니다.
결과적으로 커널이 어디에 있는지 루트파일 시스템으로 무엇을 사용할지를 지정하는 과정이 필요한 겁니다.
커널 이미지가 압축되거나 압축되어 있지 않거나 사용되는 과정은 내용이 장대하고 잘 정리된 문서들이 있으니
해당 문서를 참고하시기 바랍니다.