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
1745 x86 interrupt & instruction table file 백창우 2007.02.23 9190
1744 x86 linux booting 과정 file 백창우 2007.02.23 12734
1743 아키텍쳐에 관련된 내용입니다. [6] file 원민수 2007.02.25 7234
1742 논의사항 [7] 백창우 2007.02.26 4657
1741 Power architecture roadmap이라네요. [17] 정필섭 2007.02.26 4817
1740 첫째날에 공부한 내용 정리한번 해보는게 어떨까요?? 여러분의 의견을 묻습니다. [8] file 김정수 2007.02.26 7255
1739 [re] 제본 신청 하실분 댓글 달아 주세요. [17] 정필섭 2007.02.28 4870
1738 Power ISA 2.03 외 기타 문서. [6] 김형진 2007.02.28 5294
1737 [수정] 스터디 문서 분량을 나누겠습니다. [3] 정필섭 2007.03.02 5190
1736 제송.... 제가 이번에 스터디 그룹에 참여하는데 아직 공부할 부분을 할당받지 못했는데요... [2] 강형석 2007.03.02 5261
1735 power architecture의 역사와 미래 [2] file 백창우 2007.03.03 5179
1734 3월 3일 LKSAS 두번째 모임 즐거웠습니다. [7] file 김정수 2007.03.04 5046
1733 x86 아키텍쳐에 관한 동영상 강좌 링크입니다. [6] 남현우 2007.03.04 4413
1732 EM64T_Guide [2] file 이종우 2007.03.04 3502
1731 "만들면서 배우는 OS 커널의 구조와 원리/김범준 저"에 오늘 공부했던 내용에 대해 쉽게 적혀있네요. [4] 김정수 2007.03.04 5380
1730 메신저 주소 공유합시다!! [8] 김정수 2007.03.04 3672
1729 [질문] POSIX 표준 함수들의 소스 [4] 김강년 2007.03.05 5602
1728 분담2 MOVLHPS ~ MOVUPD 까지입니다 선준규 2007.03.06 4851
1727 asm 강좌 문서 file 맥주 2007.03.06 4147
1726 lilo 공부하실때 참고 할만한 자료 입니다. [5] 강형석 2007.03.07 3034
XE Login