#!/bin/bash
echo =========================================
echo 樹莓派3內核下載及編譯替換 raspberry3 kernel 4.19
echo =========================================
echo ======如果在windows下編譯執行出現‘損壞的編譯器’ sed -i 's/\r$//' filename.sh即可恢復正常======
echo ======.sh文件在哪個目錄下執行,樹莓派內核下載也在該目錄下進行======
echo 1.下載樹莓派linux 內核
git clone https://github.com/raspberrypi/linux.git
echo 2.配置編譯環境
sudo apt-get install bc
sudo apt-get arm-bcm2708hardfp-linux-gnueabi
sudo apt-get arm-bcm2708-linux-gnueabi
sudo apt-get arm-rpi-4.9.3-linux-gnueabihf
sudo apt-get gcc-linaro-arm-linux-gnueabihf-raspbian
sudo apt-get gcc-linaro-arm-linux-gnueabihf-raspbian-x64
echo 3.安裝工具鏈(可能和步驟2有重複)
git clone https://github.com/raspberrypi/tools
cp -a tools /
echo 4.將交叉編譯工具加入臨時環境變量(32bit/64bit),只在當前窗口有效,如果想設定永久變量 vim /etc/profile 進行設定
export PATH=$PATH:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
export PATH=$PATH:/tools/arm-bcm2708/arm-bcm2708hardfp-linux-gnueabi/bin
export PATH=$PATH:/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin
export PATH=$PATH:/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin
export PATH=$PATH:/tools/arm-bcm2708/arm-bcm2708-linux-gnueabi/bin
echo 5.在Makefile 中配置ARCH 以及編譯工具
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig
echo 6.Kernel Configuration 生成.config 文件(這個步驟需要手動配置,不能直接通過.sh 執行)
make menuconfig
echo 7.編譯內核鏡像
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage modules dtbs
echo 8.創建兩個掛載文件夾
mkdir /mnt/fat32
mkdir /mnt/ext4
echo 9.將能夠正常啓動的,含有樹莓派img 的SD 插入主機,df -lk 獲取掛載分區(假設掛載在sda1 sda2)
sudo mount /dev/sda1 /mnt/fat32
sudo mount /dev/sda2 /mnt/ext4
echo 10.安裝內核模塊
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- INSTALL_MOD_PATH=mnt/ext4 modules_install
echo 11.將編譯好的內核和設備樹文件替換到SD 卡中(先將原本SD 卡中的img 複製保存一份)
sudo cp /mnt/fat32/kernel7.img ./
sudo scripts/mkknlimg arch/arm/boot/zImage /mnt/fat32/kernel7.img
sudo cp arch/arm/boot/dts/*.dtb /mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README /mnt/fat32/overlays/
echo 12.卸載SD卡的掛載
sudo umount mnt/fat32
sudo umount mnt/ext4
將SD 卡插入樹莓派,上電啓動,進入控制終端:$uname -a 查看內核是否已經替換成4.19