부트로더와 커널 빌드에 대해 궁금해요!
제가 알고 있는 바로는
부트로더는 파워가 들어오면 메모리의 제일 처음에서 시작해서 기본적인 하드웨어를 읽어들이고 커널 이미지를 불러오는 역할
커널은 디바이드 드라이버를 읽어들이고 OS의 핵심적인 역할...로 알고 있는데
요즘 리눅스를 임베디드 보드에 포팅하면서 개념이 나락으로 빠져가고 있습니다.
제가 사용하고 있는 임베디드 보드는 판다보드ES인데요.
요놈을 부팅을 하기위해서 리눅스 커널을 빌드하기 전에 프리빌드 버전을 사용해보았습니다.
판다보드 특성상 SD카드에 부트영역과 시스템파일 영역으로 나눠서 파일을 집어넣고 파워넣으면 끝. 부팅됩니다.
그런데 문제가... LCD를 사용하려는데... LCD에 대한 드라이버가 있어야겠죠. 그래서 LCD를 제작한 업체에서 제공하는 프리빌드 우분투를 사용했습니다. 지금까지...
그런데 그 우분투가 너무 막되먹은 녀석이라(안되는게 너무 많음. X윈도에서 와이파이 설정이라던가...) 판다보드에서 공식지원하는 녀석을 포팅해서 사용해보려고 합니다.
일단은 공식지원하는 우분투는 LCD에 대한 드라이버가 없어서 프리빌드로 부팅하면 화면안나옵니다.
그래서 공식지원 우분투에서 LCD 드라이버만 추가수정해서 빌드해보려고 합니다.
그런데... 어떻게 하는지 모릅니다..
여기서 더 햇갈려지는게... 부트로더 uboot 이미지를 업체제공껄로 바꾸면 LCD로 부팅이 잘됩니다. 이렇게 되면 부트로더는 LCD업체 제공 / 시스템영역은 판다보드 공식지원으로 켜집니다.
LCD와 터치패널에 대한 추가 및 수정 드라이버는 커널 파일에 제공하는데 부트로더를 바꾼다고 LCD가 나오는게 이상합니다.
아니면 uboot이미지를 만들때 커널을 참고로 해서 만들어지는건가요?ㅠㅠ
정말 모르겠네요.. 도와주십시요...
정리 :
- 임베디드보드에 공식지원 우분투를 빌드시켜 포팅시키고 싶음
- LCD를 쓰려면 LCD제작사에서 제공하는 드라이버를 추가 및 수정해서 빌드해야함
- uboot 부트로더와 커널 2개 소스로 나눠져 있는데 LCD에 대한 건 커널에 있음
- 공식지원 우분투의 프리빌드를 돌리면 LCD가 안켜지는데 부트로더만 LCD제작사 껄로 넣으면 잘됨.
- LCD드라이버를 어떻게 써야하지는 모르겠음. 에초에 우분투 빌드 방법도 모름 살려주셈
우분투면 커널뿐만 아니라 initrd 램디스크도
부트로더 올리니 화면나온다는 것은 부트로더 내에 그 드라이버가 포함되어 있다는 뜻이고요.
우분투면 커널뿐만 아니라 initrd 램디스크도 만드셔야 할텐데요. initrd 자체가 조그마한 리눅스 시스템이라 손으로 만들기는 쉽지 않습니다. 리눅스 커널 자체가 원래 통짜커널에서 출발한 것이어서 커널이 부트로더에 로드 완료된 다음에는 모듈로 분리되지 않은 자신이 가지고 있는 드라이버만으로 시스템 초기화를 한다음에 임시로 initrd를 마운트하는데 이 안에서 드라이버가 모듈로 분리되어 있는 하드웨어들을 감지해서 대응되는 커널모듈 올려서 모든 하드웨어를 인식합니다. 이게 끝나면 진짜 루트파일시스템을 마운트하면서 리눅스 부팅이 시작되는거죠. initrd 안쓰고 커널이 바로 루트파일시스템 마운트해서 부팅하는것도 가능하지만, 요즘 나오는 메이저 베포본들은 여러 환경을 고려해야 하기 때문데 initrd 램디스크 거의 다쓴다고 봐도 됩니다. 부팅스크립트가 비교적 단순한 젠투조차도 기본제공 커널은 initrd 쓰고요.
initrd 안만드신다면 모듈로 하면 안되고 커널에 통째로 집어넣어야 하고, 파라미터 필요하다면 부트로더에서 커널 로드할때 인자 넘기면 됩니다만 우분투의 여러 유저를 배려한 기능들을 보면 간단하게 될지는 모르겠습니다. initrd나 루트파일시스템 마운트는 커널 부팅옵션중에 루트 파일시스템을 뭘 지정하느냐에 따라 달라집니다.
Written By the Black Knight of Destruction
댓글 달기