樹莓派4 14核心替換

2021-10-17 03:18:19 字數 4205 閱讀 5614

為什麼要進行樹莓派的原始碼配置呢?

是為了驅動**的編寫,驅動**的編譯需要乙個提前編譯好的核心,編譯核心就必須配置,配置的最終目標會生成 .config檔案,該檔案指導makefile去把有用東西組織成核心

1.獲取樹莓派原始碼,安裝好交叉編譯工具

原始碼及工具:

編譯工具安裝好後,所以的make命令都要指明一些環境變數

arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7
arch=arm 指定為ram框架。指明當前要編譯arm,雖然樹莓派是64位的,這裡仍然選擇arm,而不是arm64。

cross_compile 指明交叉工具鏈名稱。

kernel 指明kernel型別,樹莓派1設定為kernel,樹莓派2、3設定為kernel7。

2.配置.config

linux原始碼中有很多任務程:

樹莓派1的工程是bcmrpi_defconfig;

樹莓派2、3的工程是bcm2709_defconfig。

方法一:(1)cp 廠家.config .config

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

在原始碼目錄下執行

arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7 make bcm2709_defconfig
make bcm2709_defconfig 為主要核心命令

方法二:一項項的配置,此方法需要安裝ncurse庫

安裝必要的庫

sudo apt-get install bc

sudo apt-get install libncurses5-dev libncursesw5-dev

sudo apt-get install zlib1g:i386

sudo apt-get install libc6-i386 lib32stdc++

6 lib32gcc1 lib32ncurses5

執行以下語句進行配置

arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7 make menuconfig
進入配置頁面

上下左右鍵進行操作

enter進入下乙個子選單(末尾帶箭頭的會有子選單)

" m " 模組方式生成驅動檔案***.ko 系統啟動後,通過命令inmosd ***.ko 載入

" * " 編譯進核心 zimage包含了驅動

對需要的驅動進行篩選,將其配置為空格,達到核心裁剪的目的

方法三:完全自己來

3.編譯

arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7 make -j4 zimage modules dtbs
make -j4 zimage modules dtbs 核心主要命令

-j4 採用四核處理器來編譯

zimage 編譯生成核心映象

modules 編譯生成驅動模組(樹莓派獨有的)

dtbs 編譯生成配置檔案等等 (樹莓派獨有的)

編譯成功後,看到原始碼樹目錄多了vmlinux(沒有壓縮的linux),失敗則無此檔案,成功後,目標zimage映象在arch/arm/boot底下

對zimage進行打包,運用核心原始碼樹目錄下的scripts檔案在的指令碼檔案進行打包,打包生成kernel_new.img,

.

/scripts/mkknlimg arch/arm/boot/zimage .

/kernel_new.img

4.掛載樹莓派sd卡dmesg 命令是檢視核心資訊,有裝置接入的時候,核心會列印驅動層面的內容,通過此檢視sd卡是否接入ubuntu系統電腦

出現核心列印以下資訊,說明以及接入

sdb:sdb1 sdb2
把樹莓派的sd卡插入ubuntu系統電腦,樹莓派的sd卡有兩個分割槽:

乙個fat分割槽,是boot相關的內容,kernel的img檔案就放在這個分割槽裡;

乙個是ext4分割槽,也就是系統的根目錄分割槽。

fat分割槽可以不用root許可權操作,ext4分割槽需要root許可權操作。

(1)建立兩個資料夾

mkdir data1 data2
(2)掛載sdb1和sdb2 到 data1 data2

sudo mount /dev/sdb1 data1   乙個fat分割槽,是boot相關的內容,kernel的img

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

然後就能檢視sd中的資料,也能對sd中的資料進行操作

5.安裝modules( 裝置驅動檔案: hdmi usb wifi io 等等)

在linux核心原始碼樹目錄下執行

sudo arch=arm cross_compile=arm-linux-gnueabihf- kernel=kernel7 make install_mod_path=

/home/***/data2 modules_install

install_mod_path=/home/***/data2 data2的絕對路徑

操作ext4分割槽,需要root許可權,前邊加上sudo

6.安裝更新 kernel.img(注意映象名字是kernel7.img)

先備份kernel7.img ,避免刷機失敗樹莓派無法啟動

cd /home/***/data1

cp kernel7.img kernel7old.img

然後將在linux原始碼樹目錄下的kernel_new.img 拷貝到 /home/***/data1

將kernel7.img覆蓋

cp kernel_new.img  /home/***/data1/kernel7.img
7.拷貝配置檔案

cp arch/arm/boot/dts/

.*dtb*

/home/***/data1

cp arch/arm/boot/dts/overlays/

.*dtb*

/home/***/data1/overlays/

cp arch/arm/boot/dts/overlays/readme /home/***/data1/overlays/

8.斷開sd開的連線 把sd開的連線接到電腦上1.修改codline.txt檔案

dwc_otg.lpm_enable=

0 console=tty1 console=serial0,

115200 root=

/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline fsck.repair=yes rootwait

2.修改config.tex檔案**

在檔案的末尾加上(如果有這句,就不需要加),目的是斷開藍芽占用串列埠

dtoverlay=pi3-miniuart-bt
3.通過串列埠登入樹莓派

通過串列埠登入樹莓派,目的是看作業系統能否啟動

uname -r 檢視核心版本

原先核心

更換核心後

樹莓派Linux核心替換

資料拷貝 將sd卡轉插到樹莓派 安裝好對應交叉編譯工具 將需要替換的linux拷進ubuntu 驅動 的編譯需要乙個提前編譯好的核心,編譯核心必須配置。配置的最終目標會生成.config檔案,該檔案知道makefile去把有用的東西組織成核心 內建核心一般有一下三種方式 將廠家的複製配置成核心原始碼...

樹莓派 Linux 核心編譯

5.1配置config arch arm cross compile arm linux gnueabihf kernel kernel7 make bcm2709 defconfig 5.2 編譯 arch arm cross compile arm linux gnueabihf kernel ...

樹莓派 RaspberryPi 核心編譯

上面列出了樹莓派所有的開源軟體 linux 核心原始碼 tools 編譯核心和其他原始碼所需的工具 交叉編譯器等 我們只需要以上兩個檔案即可,下面的工程可以了解一下 firmware 樹莓派的交叉編譯好的二進位制核心 模組 庫 bootloader documentation 樹莓派離線幫助文件,教...