비글본 블랙 보드는 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
참고
Related Posts
- Ubuntu/Linux - 특정 이름이 들어간 파일 모두 찾고 삭제하기
- Ubuntu/Linux - 특정 이름이 포함된 프로세스 모두 종료
- Ubuntu/Linux - 사용자 계정 이름 확인 (id, whoami)
- Ubuntu/Linux - E: unable to locate package 에러 해결
- Ubuntu 22.04/20.04 - Yarn 설치 방법
- Linux/Ubuntu - grep 명령어로 문자열 검색
- Linux/Ubuntu - 터미널에서 seq로 명령어 N회 반복
- Linux/Ubuntu - wc 명령어로 Line(줄) 개수 세기
- bash: pip: command not found 문제 해결 (Linux/Ubuntu)
- Ubuntu 22.04 - Swap 메모리 늘리기
- Linux - 파일이 수정된 날짜/시간 확인 방법
- Linux - 파일, 디렉토리 삭제 명령어(rm -rf, rmdir)
- 우분투 22.04 - deb 파일 설치하기
- Ubuntu 20.04 - OpenJDK 11 설치, 삭제
- Linux - ps 명령어로 실행 중인 프로세스(PID) 확인
- Ubuntu 20.04 - SSH 설치와 접속 방법
- Ubuntu에서 PPA 저장소 추가, 제거 방법
- Ubuntu 22.04 - Brave 브라우저 설치
- Ubuntu 22.04 - 프로스트와이어(FrostWire) 설치
- Ubuntu 22.04 - Remmina 설치 방법
- Ubuntu 22.04 - Rust 설치하기
- Ubuntu 22.04 - 텔레그램 설치하기
- Ubuntu - Deluge 토렌트 클라이언트 설치
- Ubuntu JDK 17 (OpenJDK) 설치, 삭제
- Ubuntu 20.04 스팀(Steam) 설치 방법
- Ubuntu에서 draw.io 설치하는 방법
- 우분투에 VMware 설치하기
- [Ubuntu] VMware에서 Windows 11 설치
- Vi/Vim에서 1줄 또는 여러줄 삭제 방법
- Vi/Vim에서 라인 번호 표시하 기
- 우분투에서 rar 압축, 압축 풀기
- Ubuntu에서 구글 드라이브 사용하기 (로컬 폴더에 마운트)
- [Ubuntu] apt-cache search, 설치 가능한 패키지 검색
- Ubuntu - DNS 캐시 삭제 방법
- Ubuntu에서 사용할 수 있는 Text Editor 소개