몰디브를 꿈꾸며...
리눅스 개발 환경 구축(Odroid U3) 본문
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!!!!
'리눅스' 카테고리의 다른 글
VirtualBox 공유폴더 권한 문제 (0) | 2014.11.14 |
---|---|
odroid U3 보드에서 무선랜 설정. (0) | 2014.11.05 |
[리눅스]GDB 간단 디버깅 (0) | 2011.04.25 |
[리눅스]oracle 프로그래밍관련 사이트 (0) | 2011.02.26 |
[리눅스]syslog 활성화 (0) | 2010.05.11 |