HOME > linux > tips

BeagleBoneBlack의 리눅스 빌드 방법(툴체인, 부트로더, 리눅스 설치 및 빌드)

JSFollow10 Feb 2019

비글본 블랙 보드는 Arm 칩을 사용합니다. Arm에서 동작하는 Linux를 빌드하기 위해서는 먼저 Cross compile을 위한 Toolchain을 설치해야 합니다. 그리고 부트로더인 U-boot와 커널인 Linux를 다운받아 빌드를 하면 됩니다.

elinux.org를 참고하여 Toolchain 설치 및 빌드를 하였습니다.

툴체인 설치(Toolchain)

우분투에서 툴체인을 설치하는 가장 쉬운 방법은 apt로 gcc-arm-linux-gnueabi를 설치하는 것입니다.

$ sudo apt install gcc-arm-linux-gnueabi

설치가 완료되면, Cross compile을 할 때 다음 두개의 설정을 export하고 make로 빌드하면 됩니다. CROSS_COMPILE을 arm-linux-gnueabi-로 설정해주면 알아서 위에서 설치한 툴체인으로 설정해줍니다.

$ export CROSS_COMPILE=arm-linux-gnueabi-
$ export ARCH=arm
$ make

U-boot 빌드

부트로더인 U-boot는 아래 git주소에서 다운받을 수 있습니다.

$ git clone git://git.denx.de/u-boot.git
$ cd u-boot

쉘에서 툴체인을 사용하려면 export로 꼭 한번은 설정을 셋업해줘야 합니다. 아니면 make 옵션에 항상 넣어주어야 합니다.

$ export CROSS_COMPILE=arm-linux-gnueabi-
$ export ARCH=arm

먼저 clean을 합니다.

$ make distclean

그리고 아래 명령어로 비글보드를 위한 설정을 셋업해줍니다.

$ make am335x_evm_config

설정이 모두 끝났다면 make로 빌드를 하면 됩니다. (-j8 옵션을 주면 8개의 쓰레드로 빌드를 수행합니다.)

$ make # -j8

만약 매번 export를 설정하기 귀찮다면 아래처럼 make 명령어를 alias로 ~/.bashrc에 등록하여 사용할 수 있습니다.

alias armmake='make -j8 ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- '

이렇게 armmake로 빌드를 하면 명령어마다 항상 ARCH와 CROSS_COMPILE 옵션이 입력됩니다.

$ armmake distclean
$ armmake am335x_evm_config
$ armmake

Toubleshooting

저는 빌드 중에 이런 에러로 실패하였는데 dtc 버전이 낮아서 그렇다고 합니다.

*** Your dtc is too old, please upgrade to dtc 1.4 or newer
Makefile:1370: recipe for target 'checkdtc' failed
make: *** [checkdtc] Error 1

다음 명령어로 dtc를 최신 버전으로 설치하면 해결이 됩니다. 그 이외에, 다른 에러가 뜨는 경우 필요한 프로그램을 설치해주면 됩니다.

$ sudo apt-get install device-tree-compiler

Linux 빌드

리눅스는 아래의 git 주소에서 다운받을 수 있습니다.

$ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
$ cd linux

리눅스도 U-boot와 유사하게 clean, 설정 셋업, 빌드 순서로 진행하면 됩니다.

$ export CROSS_COMPILE=arm-linux-gnueabi-
$ export ARCH=arm
$ make distclean
$ make multi_v7_defconfig
$ make

Toubleshooting

저의 경우 아래 로그처럼 flex와 bison 프로그램이 설치되어있지 않아 빌드가 실패했습니다.

/bin/sh: 1: flex: not found
scripts/Makefile.lib:193: recipe for target 'scripts/kconfig/zconf.lex.c' failed
....
/bin/sh: 1: bison: not found
scripts/Makefile.lib:207: recipe for target 'scripts/kconfig/zconf.tab.h' failed

필요한 프로그램을 모두 설치해주니 빌드가 완료되었습니다.

$ sudo apt-get install flex
$ sudo apt-get install bison

참고