buildroot 사용법

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

전에 잠깐 언급했던 임베디드 리눅스 개발용 통합개발 환경 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 2193
1745 setup.c 파일의 cacheid_init 함수 [1] file HyunGyu 2013.11.05 72258
1744 Vol.1의 CMPS ~ CVTPD2PS 입니다. 늦어서 죄송합니다. file 지현구 2007.03.10 64198
1743 as86(1) - Linux man page 입니다. 김민석 2010.04.30 36679
1742 lilo.c에서 !! 관한 토론? [6] 오시리스 2011.07.25 34354
1741 [ARM중] 1차 분석 복습 [5] file 홍문화 2011.08.08 33704
1740 ZONE_DMA, ZONE_NORMAL, ZONE_HIGHMEM (미완성) 구본규 2013.10.15 32763
1739 fork() 함수가 리턴을 두번하는 이유 설명 [2] 커널B조 2016.05.07 30222
1738 task_struct 구조체입니다. [1] file 아폴로 2013.04.30 29852
1737 ARM 프로세서 모드 [7] 홍문화 2011.06.08 26499
1736 BIOS 를 통하여 PCI configuration space를 액세스하는 방법 지현구 2007.08.12 22862
1735 파이프라인과 익셉션의 관계 관련 블로그 주소입니다. 이한울 2012.05.26 22081
» buildroot 사용법 [1] 구본규 2012.07.20 20240
1733 [x86] 스터디때 나왔던 cpu_dev 문제 [2] file pororo 2012.02.19 18428
1732 페이지 테이블에 주소 변환 정보가 채워지는 원리 [16] 홍문화 2011.07.12 16325
1731 odroid bootlog 입니다 박장운 2010.08.14 15560
1730 명령어 정리 - 늦어서 죄송.. 송형주 2007.03.09 14524
1729 Linux booting 과정 (start_kernel() 함수 전까지) 관련 참고자료들 모음 file 지현구 2007.04.27 14328
1728 분석 환경 구축 실습 [11] file 권석민 2013.05.19 14203
1727 [x86] 가족번호 [2] pororo 2012.02.27 13911
1726 LVM에 대해 간략하게 정리했습니다. [2] file 조성진 2013.05.07 13824
XE Login