buildroot 사용법

구본규 2012.07.20 15:58 조회 수 : 20243

전에 잠깐 언급했던 임베디드 리눅스 개발용 통합개발 환경 buildroot입니다.

openembedded 등도 있는데, 저한테는 이게 조금 더 쉽고 편하네요.


cross-toolchain(build 또는 미리 빌드된 것 사용), kernel, filesystem(busybox) 을 menuconfig로 설정해 사용하는 게 컨셉입니다.


buildroot 다운로드
      http://buildroot.uclibc.org/download.html


다운로드 받으시고 압축을 해제하신 뒤에

$ cd buildroot-2012.05

$ make qemu_arm_vexpress_defconfig         // qemu vexpress용 defconfig 파일을 제공해 줍니다.

$ make menuconfig


이 화면에서 설정해 주어야 할 게 몇 가지 있습니다.

4번째 "Build options  --->" "Number of jobs to run simultaneously" 을 선택하시고, 사용하시는 cpu core 개수정도 입력해 주시면 됩니다.

서버급이라면 thread 수만큼 지정해 주시면 되겠지요. 필수는 아니고, 작업을 더 빨리 수행해 줍니다.


설정한 후에 첫화면으로 다시 돌아와 5번째 "Toolchain  --->"

"Toolchain type" 은 "External toolchain"

"Toolchain" 은 "Linaro 2012.04"  (5월 배포된 buildroot라 4월까지만 있네요. 직접 설정가능하신 분들은 다른 버전을 쓰시면 됩니다)


다시 첫화면으로 돌아와서 9번째 "Filesystem images  --->"

ext2가 기본으로 선택되어 있을 겁니다. 전 "initramfs for initial ramdisk of linux kernel"도 지정했습니다.


다시 첫화면으로 돌아와서 마지막 "Kernel  --->" 을 다음과 같이 지정해 주시면 됩니다. (추가 2012.08.29 로컬에 받아둔 directory를 지정하셔도 됩니다)

[*] Linux Kernel

      Kernel version (Custom Git tree)  --->

(git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git) URL of custom Git repository

(HEAD) Custom Git version

()    Custom kernel patches

      Kernel configuration (Using a defconfig)  --->

(vexpress) Defconfig name

      Kernel binary format (zImage)  --->

      Linux Kernel Extensions  --->


그리고 '저장'하고 종료.

$ make


정상적으로 빌드가 수행되었다면 qemu로 실행시키시면 됩니다.

$ cat board/qemu/arm-vexpress/readme.txt

qemu-system-arm -M vexpress-a9 -kernel output/images/zImage -drive file=output/images/rootfs.ext2,if=sd -append "console=ttyAMA0,115200 root=/dev/mmcblk0" -serial stdio -net nic,model=lan9118 -net user



처음 빌드를 먼저 하시고, debugging 등을 위해 kernel을 수정할 때는

$ make linux-menuconfig

디버깅 옵션 등 설정해 주시고 다시 make 하시면 됩니다.


저는 initramfs 등을 추가로 설정해 주었습니다.

"    General setup  --->"

"[*] Initial RAM filesystem and RAM disk (initramfs/initrd) support"

(./output/images/rootfs.cpio) Initramfs source file(s)


"    Boot options  --->"

"(console=ttyAMA0,115200 root=/dev/ram ram=512M) Default kernel command string"


그리고 이렇게 실행해서 사용했습니다.

$ qemu-system-arm -M vexpress-a9 -m 512M -snapshot -s -S -kernel output/images/zImage -serial stdio -append "root=/dev/ram init=/sbin/init console=ttyAMA0 debug"



busybox의 설정을 바꾸고 싶으시면

$ make busybox-menuconfig

$ make

해서 사용하시면 됩니다.


번호 제목 글쓴이 날짜 조회 수
공지 [공지] 커널 스터디 관련 Q&A 게시판 입니다. [5] woos 2016.04.09 2198
1305 gnu arm assembly [1] file 구본규 2012.08.18 3993
1304 커널 소스 분석에 도움을 주는 도구들 구본규 2012.08.06 12006
1303 [추가] linux, busybox .config / build 방법 [4] file 구본규 2012.07.29 13180
1302 u-boot 분석 참고자료 file 구본규 2012.07.27 13314
1301 linux git gui tool에 대한 링크입니다. 구본규 2012.07.21 5692
» buildroot 사용법 [1] 구본규 2012.07.20 20243
1299 [잡담] 가지고놀 괜찮은 Exynos 4412 보드하나~ [2] 우상정 2012.07.11 8729
1298 안녕하세요 오늘 인사드린 강정환입니다. [3] 강정환 2012.07.07 3185
1297 [DKS - 011] Flattened Device Tree 박세율 2012.07.07 7108
1296 지난주 진행 상황입니다. 이영진 2012.06.19 2946
1295 진도 어디까지 나가셨는지 답변 부탁 드립니다. [2] 한원진 2012.06.10 2680
1294 커널 스터디 9차(ARM B팀) 서버계정 조사 [1] 문계련 2012.06.03 2567
1293 [DKS - 005] 대전 스터디 진행 후기 입니다. [5] 우상정 2012.05.27 3628
1292 파이프라인과 익셉션의 관계 관련 블로그 주소입니다. 이한울 2012.05.26 22081
1291 20120526 linux kernel 9차 ARM C 모임. [8] 이홍우 2012.05.26 3295
1290 5월 19일 스터디 내용. [3] 유훈찬 2012.05.21 2688
1289 Arm Architecture 관련 참조 [1] 박세영 2012.05.20 5318
1288 20120519 linux kernel 9차 ARM C 모임. [1] 이홍우 2012.05.19 3142
1287 <정보> 리눅스 커널 관련 세미나 및 신간 김현철 2012.05.09 3035
1286 리눅스 커널소스 분석 사이트 [2] 이 종인 2012.05.08 7396
XE Login