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 [커널 15차 D팀] 23주차 스터디 장소 [4] 라이더 2018.10.01 7
1744 [커널 15차 A팀] 30주차(2018-11-17) 스터디 장소공지 오곡라떼 2018.11.16 10
1743 [커널 15차 D팀] 24주차 스터디 장소 [4] 라이더 2018.10.08 10
1742 [커널 15차 A팀] 30주차(2018-11-17) 스터디 참석인원 조사 [5] 오곡라떼 2018.11.12 12
1741 [커널 15차 D팀] 27주차 스터디 장소 공지 [3] 형준 2018.10.31 13
1740 [커널 15차 D팀] 25주차 스터디 장소 [7] 라이더 2018.10.14 13
1739 [커널 15차 D팀] 28주차 참석인원 조사 [1] 김정근 2018.11.09 18
1738 [커널 15차 D팀] 26주차 스터디 장소 공지 [2] 형준 2018.10.22 18
1737 [커널 15차 D팀] 30주차 장소공지 [2] 형준 2018.11.21 21
1736 [커널 15차 D팀] 29주차 참석인원 조사 [4] 김정근 2018.11.13 24
1735 [커널 15차 A팀] 25주차 2018년 10월 13일 (토) 스터디 노트 오곡라떼 2018.10.14 30
1734 [커널 15차 D팀] 31주차 참석인원 조사 김정근 2018.12.05 38
1733 안녕하세요 질문있습니다 ! [1] r3ckless 2018.11.18 44
1732 [커널 16차 C팀] 4주차 스터디 노트 Yags 2019.06.19 46
1731 [커널 14차C] 6주차(20170617) 스터디 장소 공지 CLOCK 2017.06.16 50
1730 [커널 16차 C팀] 3주차 스터디 노트 Yags 2019.06.11 54
1729 [커널 14차C] 4주차(20170603) 스터디 장소 공지 CLOCK 2017.06.01 55
1728 [커널 16차 C팀] 5주차 스터디 노트 Yags 2019.06.26 55
1727 [커널D팀] 3주차 장소 공지 밤색모자이크 2018.05.11 56
1726 [커널 15차 A팀] 13주차(2018-07-21) 스터디 노트 바뿌사 2018.07.22 56
XE Login