天天看點

9. 樹莓派linux核心源碼的 - 配置 與 編譯1. 安裝适合的編譯器。2. 樹莓派linux源碼配置3. 樹莓派linux核心編譯4. 測試樹莓派是否正常啟動

目錄

1. 安裝适合的編譯器。

2. 樹莓派linux源碼配置

2.1 基本概念

2.2 核心配置

3. 樹莓派linux核心編譯

4. 測試樹莓派是否正常啟動

更具體的參考博文 :https://blog.csdn.net/nicekwell/article/details/78482833

1. 安裝适合的編譯器。

 配置好交叉編譯工具鍊:

https://blog.csdn.net/jinchi_boke/article/details/117822476

得到這個交叉編譯工具:arm-linux-gnueabihf

2. 樹莓派linux源碼配置

2.1 基本概念

linux源碼中有很多工程:

樹莓派1的工程是 bcmrpi_defconfig

樹莓派2、3的工程是 bcm2709_defconfig

驅動代碼的編寫

驅動代碼的編譯需要一個提前編譯好的核心

編譯核心就必須配置

配置的最終目标會生成 .config檔案,該檔案指導Makefile去把有用東西組織成核心

廠家配linux核心源碼,比如說買了樹莓派,樹莓派linux核心源碼

            第一種方式:

                cp 廠家.config    .config

            第二種方式:

                make menuconfig 一項項配置,通常是基于廠家的config來配置

            第三種方式:

                完全自己來

如何配置樹莓派的Linux核心

            驅動兩種加載方式:

                *    編譯進核心  zImage包含了驅動

                M   子產品方式生成驅動檔案xxx.ko  系統啟動後,通過指令inmosd xxx.ko 加載

2.2 核心配置

所有的操作幾乎都是在源碼目錄下進行的:/home/yu/SYSTEM/linux-rpi-4.14.y

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make bcm2709_defconfig 

指定ARM架構                               指定編譯器                                樹莓派  主要核心指令

這個就會生成一個 .config 核心配置檔案(類似上面 2.1 第一種方式)

3. 樹莓派linux核心編譯

3.1 編譯

 ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs

                                                                                                     j4  指定用多少電腦資源進行編譯

                                                                                                     zImage  生成核心鏡像

                                                                                                     modules  要生成驅動子產品

                                                                                                     dtbs  生成配置檔案

3.2 編譯成功後,看到核心源碼樹目錄底下多了vmlinux, 失敗則無此檔案

      成功後,目标 zImage 鏡像 在arch/arm/boot 底下(可檢視)

3.3 打包 zImage 成樹莓派可用的 xxx.img

        回到源碼目錄下打包:/home/yu/SYSTEM/linux-rpi-4.14.y

      ./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

3.4 資料拷貝

        把樹莓派的sd卡插入ubuntu系統電腦,樹莓派的sd卡有兩個分區:

        一個fat分區,是boot相關的内容,kernel的img檔案就放在這個分區裡;

        一個是ext4分區,也就是系統的根目錄分區。

 指令 dmesg 檢視linux核心資訊,即可檢視U盤插入成功與否(出現 sdb:sdb1 sdb2)

      mkdir data1 data2   建立兩個将要挂載分區的檔案夾

      挂載U盤 

      sudo mount /dev/sdb1 data1   一個fat分區,是boot相關的内容,如kernel的img

      sudo mount /dev/sdb2 data2   一個是ext4分區,也就是系統的根目錄分區。

      安裝modules, 裝置驅動檔案: hdmi usb wifi io ...沒有安裝的話,核心能起來,但驅動不能用

      sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/chenlc/data2 modules_install

       安裝更新 kernel.img 檔案,注意sd卡中的鏡像名字是kernel7.img

       先備份(以免刷機失敗,導緻樹莓派無法啟動)

              cd /home/chenlc/data1

              cp kernel7.img kernel7OLD.img

       再把編譯新生成的拷貝到data1,起名kernel7.img

              cp kernel_new.img /home/chenlc/data1/kernel7.img

                        檢視拷貝的檔案有沒有壞掉(每個檔案都有自己的md5編号)

                        md5sum kernel7.img

        拷貝配置檔案,為了能加載一些驅動等..(.*dtb* : *是通配符,以.開頭,中間是dtb這種格式的檔案,不管dtb前後是什麼字元,都拷貝)

              cp arch/arm/boot/dts/.*dtb* /home/chenlc/data1

              cp arch/arm/boot/dts/overlays/.*dtb* /home/chenlc/data1/overlays/

              cp arch/arm/boot/dts/overlays/README /home/chenlc/data1/overlays/

4. 測試樹莓派是否正常啟動

斷開虛拟機的U盤

到window下找到U盤的cmdline.txt,修改成通過序列槽啟動,看樹莓派的啟動過程,確定系統能正常

檢視核心是否更換

uname -r  (檢視核心版本)

繼續閱讀