2015/4/15

【樹莓派】重編Kernel,客制化自己的核心

編譯Linux Kernel,準備好Toolchain(即Compiler, Linker等工具)與Kernel Source就可以開始了!此範例採用Cross-Compile,也就是在一般X86架構的PC上為樹莓派編譯核心,編譯完成在將相關檔案複製到SD Card上讓樹莓派使用。

過程中會使用到git抓取toolchain與kernel source,因此須先安裝git套件:
sudo apt-get install git-core

接著在家目錄建立rpi目錄並使用git下載toolchain與kernel source
cd ~
mkdir rpi
cd rpi
git clone https://github.com/raspberrypi/tools
git clone --depth=1 https://github.com/raspberrypi/linux
完成上述動作後可在rpi目錄中看到tools與linux兩個子目錄

為了方便後續操作,將tools套件所在目錄加到$PATH變數
vi ~/.bashrc
在檔案尾端加入敘述
PATH=$PATH:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
如果使用的作業系統平台是64位元的話,需換成下面這敘述
PATH=$PATH:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
修改完成後重新關聯~/.bashrc讓設定生效
source ~/.bashrc

完成工具與環境設定後,就可以開始進行核心編譯了
進入kernel source目錄,設定預設值,進行編譯!
cd ~/rpi/linux
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
如果使用的是多核心CPU可以在make指令中使用-j <n>參數讓編譯動作分散在各核心中加快整體速度,其中<n>是核心數量,過一段時間完成後若沒出現錯誤就已經完成核心編譯了。

最後將SD卡插入電腦,把剛編譯好的模組檔案與核心檔案取代原先檔案後即完成所有步驟
mkdir /mnt/fat32
mkdir /mnt/ext4
sudo mount /dev/sdb1 /mnt/fat32
sudo mount /dev/sdb2 /mnt/ext4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/mnt/ext4 modules
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=/mnt/ext4 modules_install
sudo cp /mnt/fat32/kernel.img /mnt/fat32/kernel-backup.img
sudo cp arch/arm/boot/Image /mnt/fat32/kernel.img
sudo umount /mnt/fat32
sudo umount /mnt/ext4

將SD卡插入樹莓派,開機登入後查看歡迎訊息顯示的核心資訊,可以驗證一下核心產生的時間是不是正確的!

沒有留言:

張貼留言