몰디브를 꿈꾸며...

리눅스 개발 환경 구축(Odroid U3) 본문

리눅스

리눅스 개발 환경 구축(Odroid U3)

노란채송화 2014. 11. 3. 09:51

http://odroid.us/mediawiki/index.php?title=Step-by-step_Cross-compiling_a_Kernel

위 사이트의 내용대로 작업을 진행해본다.

 

# 우분투 설치

최신 우분투 패키지를 Virtual Box에 설치한다. 현재 시점에서 최신 버젼은 14.04.1 lts이다. 우분투 홈페이지에서 다운받는 것도 좋지만, 다음 미러 사이트(http://ftp.daum.net/ubuntu-releases/)에서 cd 이미지 화일을 다운 받았다.

설치를 하고 나서 필요없는 office/게임등은 지웠다.

 

 

 

# toochain 설정

- 공유 작업 공간 설정.

 

$ sudo mkdir -p /usr/local/arm >/dev/null
$ sudo chmod 777 /usr/local/arm
$ cd /usr/local/arm


- toolchain을 가지고 와서 압축해제.

$ cd /usr/local/arm
$ wget https://launchpadlibrarian.net/129963014/gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar.xz
$xz -d gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar.xz
$tar -xvf gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux.tar


 

- toolchain이라는 심볼릭 링크 생성. 버젼이 바뀔때 심볼릭 링크를 변경하면 편하다.

$ ln -s gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux /usr/local/arm/toolchain

 

- c-컴파일러 캐시 설정.

$ cd /usr/local/arm/toolchain
$ mkdir bin-ccache
$ sudo apt-get install ccache
$ ln -s $(which ccache) arm-linux-gnueabihf-gcc
$ ln -s $(which ccache) arm-linux-gnueabihf-g++
$ ln -s $(which ccache) arm-linux-gnueabihf-cpp
$ ln -s $(which ccache) arm-linux-gnueabihf-c++

 

# 환경변수 설정

- ~/.bashrc 화일에 아래 내용 추가

export PATH=/usr/local/arm/toolchain/bin-ccache:/usr/local/arm/toolchain/bin:$PATH
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm

 

# 커널 소스 가져오기

- 작업 디렉토리 생성

$ cd $HOME
$ mkdir work
$ cd work


 

- 커널 소스 가져오기

$ wget --no-check-certificate https://github.com/hardkernel/linux/archive/odroid-3.0.y.zip
$ unzip odroid-3.0.y.zip

 

# 빌드

$ cd linux-odroid-3.0.y/
$ make odroidu2_ubuntu_defconfig
$ make -j8 zImage

 

- 아래와 같은 에러 메세지가 뜬다.

$ /usr/local/arm/gcc-linaro-arm-linux-gnueabihf-4.7-2013.01-20130125_linux/bin/../libexec/gcc/arm-linux-gnueabihf/4.7.3/cc1: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

 

- libz 설치

$ sudo apt-get install lib32z1

 

- 재빌드

$ make -j8 zImage

$ make -j8 modules

 

- 커널 모듈 화일들을 디렉토리에 복사후 불필요한 심볼릭 링크를 제거하고 압축하여 타겟보드로 옮기기 쉽게 만든다.

$ mkdir ../rfs
$ export INSTALL_MOD_PATH=$PWD/../rfs
$ make modules_install
$ cd ../rfs

$ find . -name source | xargs rm
$ find . -name build | xargs rm
$ sudo tar -cvzf ../modules.tgz .
$ cd ../

 

# u-boot 빌드

- 소스 가져오기

http://github.com/hardkernel 에서 최신 u-boot을 다운로드한다.

$ wget https://github.com/hardkernel/u-boot/archive/odroid-v2010.12.zip

 

- 빌드

$ make distclean <-- clean

$ make smdk4412_config <- U3용 config

$ make -j10 <- 이미지 생성

 

- error 발생 !!! 최신 cross compiler를 인스톨.

$ sudo apt-get install gcc-arm-linux-gnueabihf

 

- 이전버젼은 4.7.X이고 4.8로 업그레이드

- 재빌드하면 에러가 없어진다.

 

# 디버깅을 위한 시리얼 통신 프로그램

- minicom이라는 패키지를 설치하면 된다.

$ sudo apt-get install minicom

$ sudo minicom

 

# 커널 업데이트

- 보드의 커널 버젼이 3.8이다. 같은 버젼의 커널로 업그레이드

wget --no-check-certificate https://github.com/hardkernel/linux/archive/odroid-3.8.y.zip

- 화일을 압추해제하면서 symbolic link 관련 에러가 발생한다.

- github 사이트에서 긁어오자.

$ git clone --depth 1 https://github.com/hardkernel/linux.git -b odroid-3.8.y odroid-3.8.y
- linux라는 디렉토리가 생기고 해당 소스들이 들어 있다.

- config를 실행한다.

$ make odroidu_defconfig

- 빌드한다.

$ make -j8 zImage

 

- zImage와 /lib/modules/* 데이타를 타겟으로 복사하고 재부팅.

- 네트워크가 연결되어 있으면 타겟보드에는 ssh 서버가 동작하므로 간편하게 scp 명령어를 이용하여 화일을 전송하면 된다

$ scp zImage root@192.168.1.1:/boot/

 

- module들은 압축해서 위와 같이 전송하고 타켓에서 압축해주면 된다.

 

- 커널 버젼 확인

$ uname -a

- OK!!!!

Comments