2015年1月12日 星期一

[Kernel][Raspberry Pi][ArchLinux] Raspberry compile kernel source

0. Install package
pacman -S bc


1. pacman -S git


2. Download the cross-compilers of Raspberry pi
git clone https://github.com/raspberrypi/tools


3. Download the kernel source of Raspberry pi
git clone https://github.com/raspberrypi/linux.git
export CCPREFIX=/home/vagrant/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-
[vagrant@vagrant-archlinux arm-bcm2708]{CCPREFIX}gcc -v
Using built-in specs.
COLLECT_GCC=/home/vagrant/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/arm-linux-gnueabihf-gcc
COLLECT_LTO_WRAPPER=/home/vagrant/raspberry/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin/../libexec/gcc/arm-linux-gnueabihf/4.8.3/lto-wrapper
Target: arm-linux-gnueabihf
Configured with: /cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/src/gcc-linaro-4.8-2014.01/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-linux-gnueabihf --prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install --with-sysroot=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-languages=c,c++,fortran --disable-multilib --enable-multiarch --with-arch=armv6 --with-tune=arm1176jz-s --with-fpu=vfp --with-float=hard --with-pkgversion='crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11' --with-bugurl=https://bugs.launchpad.net/gcc-linaro --enable-__cxa_atexit --enable-libmudflap --enable-libgomp --enable-libssp --with-gmp=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpfr=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-mpc=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-isl=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-cloog=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --with-libelf=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/.build/arm-linux-gnueabihf/build/static --enable-threads=posix --disable-libstdcxx-pch --enable-linker-build-id --enable-plugin --enable-gold --with-local-prefix=/cbuild/slaves/oorts/crosstool-ng/builds/arm-linux-gnueabihf-raspbian-linux/install/arm-linux-gnueabihf/libc --enable-c99 --enable-long-long --with-float=hard
Thread model: posix
gcc version 4.8.3 20140106 (prerelease) (crosstool-NG linaro-1.13.1-4.8-2014.01 - Linaro GCC 2013.11) 


4. Clear the kernel source
make mrproper


5. Download configuration file from Ref2.
mv config .config


6. Make configuration
ARCH=arm CROSS_COMPILE=${CCPREFIX} make oldconfig


Compile Kernel
ARCH=arm CROSS_COMPILE=${CCPREFIX} make



7. Install the folder of source
MODULES_TEMP=/home/xxx/modules/ 
ARCH=arm CROSS_COMPILE=${CCPREFIX} INSTALL_MOD_PATH=${MODULES_TEMP} make modules_install

This command will install all of ko file modules


8. Produce kernel.img
export KERNEL_SRC=/home/vagrant/raspberry/test/test/linux-rpi-3.12.y


Go to /home/vagrant/raspberry/tools/mkimage
./imagetool-uncompressed.py ${KERNEL_SRC}/arch/arm/boot/zImage


Move kernel.img to the Raspberry Pi’s /boot/ directory


9.
cp /home/vagrant/modules/lib/firmware to overwrite raspberry_pi/lib/firmware
cp /home/vagrant/modules/lib/modules to overwrite raspberry_pi/lib/modules


10. Get the latest Raspberry Pi firmware (git://github.com/raspberrypi/firmware.git)
cp firmware/boot/bootcode.bin to overwrite the Rraspberry_pi/boot
cp firmware/boot/fixup.dat to overwrite the Rraspberry_pi/boot
cp firmware/boot/start.elf to overwrite the Rraspberry_pi/boot
Reference:
  1. Raspberry Pi Kernel Compilation
  2. raspberry pi /proc/config.gz
  3. Building and Deploying Raspberry PI Kernel

0 意見:

張貼留言