Linux 빌드를 하면 기본적으로 x86_64에 진행하지만 hacking의 맛이 떨어지기 때문에(?) 실제 bare metal에 시도한다는 생각으로 타겟에 리눅스를 올리는 진행과정을 적어두려고 합니다. 사실 명령어 한방이면 빌드가 완성되는 buildroot라는 멋진 툴이 있지만, 밑바닥부터 scratch로 진행하려고 하기때문에 가장 적당한 타겟을 생각하다 집에서 놀고 있는 raspberrypi4 모델에 minimal한 linux를 구축해보려고합니다.
준비물 : RPI4 + uart serial
* 사실 리눅스를 포팅한다는 것은 보통 새로 개발중인 하드웨어에 직접 코드를 작성해가면서 빌드하는 것을 뜻하지만 이 포스팅은 포팅이 아닌 어떻게 리눅스를 빌드하고, 부팅시키는 것이 목적입니다.
리눅스를 올리기 위해 가장 선행돼야하는 부분은 타겟의 이해입니다.
따라서 열심히 구글링을 하거나 없다면 벤더에 연락을 하여 타겟에 익숙해져야합니다. 특히 스펙문서라 불리는 칩 아키텍쳐를 아주 꼼꼼하게 봐야합니다. (driver 개발 역시 마찬가지입니다.)
성격이 급한분이라면 일단 전원을 연결합니다. RPI4의 경우 다행히 친절하게 led로 상태를 알려주며 접근방식이 잘못됐음을 알려줍니다. 하지만 사실 이 방식은 실제로는 절대 하면 안되는 방식입니다. 일단 개발보드의 경우 매우 취약해서 잘못하다가는 보드가 망가집니다. 저는 많은 경우 개발자들이 '느낌'대로 진행하는 걸 많이 보았고(특히 본인) 대부분이 엄청난 시간낭비로 종결됩니다. 따라서 타겟을 이해하는것은 백번 강조해도 지나치지 않습니다.
보통 임베디드 제품들이 그러하듯 역시 타겟 boot sequence 를 이해하여야 하며 상당히 힘든 작업입니다. RPI4 BCM2711의 경우 보통 BL0라고 불리우는 firmware가 존재합니다. gparted or fdisk를 통하여 파티션 1번을 FAT32로 만든 후 firmware를 복사해줍니다. 정상적으로 firmwar(start4*.elf)가 복사되었다면 LED가 7번 깜빡이는게 보이며 이는 문서에서 찾아보면 Kernel image not found 입니다.
이제 BL0이 정상 작동하니 다음 글(#2) 에서 BL1 (U-boot)을 설명하록 하겠습니다.
'Tech > linux' 카테고리의 다른 글
linux media subsystem [0] (0) | 2022.03.30 |
---|---|
리눅스 하드웨어 (0) | 2021.11.01 |
RPI4 에 Linux 빌드 올리기 #3 Linux kernel (0) | 2021.07.30 |
RPI4 에 Linux 빌드 올리기 #2 U-boot (0) | 2021.07.30 |
linux kernel 개발입문 (0) | 2021.07.28 |