在github的raspberrypi專案裏是有給linux用的cross compiler。不過它只能在Ubuntu-11.10中使用,若果在CentOS 5執行,會出找不到新版glibc的錯誤。用不到,唯有自己再整一個。
首先安裝CentOS 5.8。在選Package的時候,選擇"Development"裏的"Development Libraries"和"Development Tools"。
安裝crosstool-ng-1.15.3
可參考http://www.bootc.net/archives/2012/05/26/how-to-build-a-cross-compiler-for-your-raspberry-pi/。
需要gperf(在root行yum install gperf),同埋GNU automake 1.10以上版本。CentOS 5跟機的版本太舊,要自行由source code compile。而automake 1.10又需要autoconf 2.60以上版本。
tar zxvf autoconf-2.60.tar.gz
cd autoconf-2.60
./configure --prefix=/home/salad/autoconf-2.60
make
make install
PATH=/home/salad/autoconf-2.60/bin:"$PATH"
cd ..
tar zxvf automake-1.10.2.tar.gz
cd automake-1.10.2
./configure --prefix=/home/salad/automake-1.10.2
make
make install
PATH=/home/salad/automake-1.10.2/bin:"$PATH"
cd ..
tar jxvf crosstool-ng-1.15.3.tar.bz2
cd crosstool-ng-1.15.3
./configure --prefix=/home/salad/crosstool-ng-1.15.3
make
make install
安裝cross compiler
之後可以預備build cross compiler。開另一個shell(為了reset PATH variable),再設定PATH。
PATH=/home/salad/crosstool-ng-1.15.3/bin:"$PATH"
mkdir src.arm-unknown-linux-gnueabi
ct-ng menuconfig
這會進入設定畫面,照著上列參考網頁所講的設定,之後再按需要更改設定檔。即用設定檔在此。
ct-ng build
進入compile程序。首先會自動下載原始碼
linux-3.1.10.tar.bz2
gmp-5.0.2.tar.bz2
mpfr-3.1.0.tar.bz2
ppl-0.11.2.tar.bz2
cloog-ppl-0.15.11.tar.gz
mpc-0.9.tar.gz
binutils-2.21.1a.tar.bz2
gcc-linaro-4.6-2012.04.tar.bz2
eglibc-2_15(svn://svn.eglibc.org/branches/eglibc-2_15)
檔案在.build/tarballs,有需要可backup一份,下次再用時就無需再download。然後開始compile,數小時後,cross compiler會在/home/salad/x-tools/裏。
compile linux kernel
可參考http://mitchtech.net/raspberry-pi-kernel-compile/。
CentOS 5是沒有git,所以要先安裝git。用root行以下命令。
yum install perl-DBI
yum install subversion-perl
wget http://pkgs.repoforge.org/git/git-1.7.11.1-1.el5.rf.i386.rpm
wget http://pkgs.repoforge.org/git/perl-Git-1.7.11.1-1.el5.rf.i386.rpm
wget http://pkgs.repoforge.org/perl-YAML/perl-YAML-0.72-1.el5.rf.noarch.rpm
rpm -ivh git-1.7.11.1-1.el5.rf.i386.rpm perl-Git-1.7.11.1-1.el5.rf.i386.rpm perl-YAML-0.72-1.el5.rf.noarch.rpm
首先從github的raspberrypi專案中下載kernel原碼和工具。
mkdir raspberrypi
cd raspberrypi
git clone git://github.com/raspberrypi/tools.git
git clone git://github.com/raspberrypi/linux.git
然後config kernel。
cd linux
PATH=/home/salad/x-tools/arm-unknown-linux-gnueabi/bin:"$PATH"
make ARCH=arm CROSS_COMPILE=/home/salad/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- bcmrpi_defconfig
開始compile,慢慢等。
make ARCH=arm CROSS_COMPILE=/home/salad/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- -k
mkdir modules
make ARCH=arm CROSS_COMPILE=/home/salad/x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi- INSTALL_MOD_PATH=modules modules_install
firmware和modules在modules的目錄裏。最後製作kernel image。
cd ../tools/mkimage/
./imagetool-uncompressed.py ../../linux/arch/arm/boot/Image
將所有檔案抄進SD Card,開機。在dmesg指令中看到
pi@raspberrypi ~ $ dmesg
[ 0.000000] Initializing cgroup subsys cpu
[ 0.000000] Linux version 3.1.9+ (salad@LINUX-190) (gcc version 4.6.4 20120402 (prerelease) (crosstool-NG 1.15.3) ) #1 PREEMPT Thu Aug 9 07:06:31 HKT 2012
電腦正在使用新kernel。
Add new comment