樹(shù)莓派內(nèi)核編譯與固件升級(jí)

2018-08-12 21:29 更新

樹(shù)莓派內(nèi)核編譯與固件升級(jí)

前面我們已經(jīng)使用官方給的鏡像搭建好了樹(shù)莓派的開(kāi)發(fā)環(huán)境,可以說(shuō)已經(jīng)可以上手應(yīng)用了,但是如果官方提供的內(nèi)核有些功能不能滿(mǎn)足我們的需要或者需要對(duì)內(nèi)核進(jìn)行部分裁剪,那么就需要對(duì)樹(shù)莓派的內(nèi)核進(jìn)行裁剪,這里我們教一下大家如何更新樹(shù)莓派內(nèi)核。

獲取升級(jí)所需源碼

下載地址

官方網(wǎng)址:https://github.com/raspberrypi

上面列出了樹(shù)莓派所有的開(kāi)源軟件

  • firmware:樹(shù)莓派的交叉編譯好的二進(jìn)制內(nèi)核、模塊、庫(kù)、bootloader
  • linux:內(nèi)核源碼
  • tools:編譯內(nèi)核和其他源碼所需的工具——交叉編譯器等

我們只需要以上三個(gè)文件即可,下面的工程可以了解一下

  • documentation:樹(shù)莓派離線幫助文檔,教你如何使用、部署樹(shù)莓派(樹(shù)莓派官方使用教程)
  • userland:arm 端用戶(hù)空間的一些應(yīng)用庫(kù)的源碼——vc 視頻硬浮點(diǎn)、EGL、mmal、openVG 等
  • hats:Hardware Attached on Top,樹(shù)莓派 B+ 型板子的擴(kuò)展板資料
  • maynard:一個(gè) gtk 寫(xiě)成的桌面環(huán)境
  • scratch:一個(gè)簡(jiǎn)易、可視化編程環(huán)境
  • noobs:一個(gè)樹(shù)莓派鏡像管理工具,他可以讓你在一個(gè)樹(shù)莓派上部署多個(gè)鏡像
  • weston:一個(gè)應(yīng)用程序
  • target_fs:樹(shù)莓派最小文件系統(tǒng),使用 busybox 制作
  • quake3:雷神之錘 3 有線開(kāi)發(fā)源碼 firmwareb

下載方法

網(wǎng)頁(yè)直接下載

到所需要下載的工程,左上角選版本,右方有一個(gè) download ZIP 按鈕可直接下載(筆者下載完成后,在 linux 中解壓提示出錯(cuò),Windows 又非常慢切內(nèi)核建議不要在 Windows 環(huán)境解壓,所以筆者不建議使用這種辦法)。

使用 git 下載

$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git

會(huì)得到三個(gè)文件夾:firmware linux tools

編譯、提取內(nèi)核及其模塊

獲得內(nèi)核配置文件

在運(yùn)行的樹(shù)莓派中運(yùn)行

$ls /proc/

可看到一個(gè)叫 config.gz 的文件,他是當(dāng)前的樹(shù)莓派配置選項(xiàng)記錄文件,我們將他拷出,放入我們的內(nèi)核源碼目錄樹(shù)下。

$cp /proc/config /home/pi

我們這里使用前面交過(guò)的 samba 拷出并拷入內(nèi)核源碼目錄下,不熟悉的人可參考前面文章。

在 linux 內(nèi)核源碼下執(zhí)行

$zcat config.gz > .config

配置、編譯內(nèi)核

修改內(nèi)核源碼 makefile ARCH 類(lèi)型和編譯器路徑$vi Makefile +195,找到以上類(lèi)似代碼,改為如圖所示。

查看、修改配置選項(xiàng)$make menuconfig,可出現(xiàn)以下界面。

如果不做修改,直接選中 exit 即可(注意使用鍵盤(pán)操作)。

編譯內(nèi)核鏡像$makearch/arm/boot目錄下可以看到一個(gè)叫zImage的文件,就是我們新的內(nèi)核,但是樹(shù)莓派需要另外一種格式的鏡像,需要進(jìn)行處理一下,執(zhí)行以下命令

$cd tools/mkimage

$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage

即可在當(dāng)前文件夾下看到一個(gè)叫kernel.img的文件,就是我們需要的新內(nèi)核了。

提取 modules 上一步其實(shí)不但編譯出來(lái)了內(nèi)核的源碼,一些模塊文件也編譯出來(lái)了,這里我們提取一下,

$cd raspberrypi_src
$mkdir modules
$cd linux
$ make modules_install INSTALL_MOD_PATH=../modules

即可在 modules 得到我們需要的模塊文件。

升級(jí) RPi 的 kernel、Firmware、lib

將SD卡拔下插在電腦上(可使用讀卡器)

  1. 升級(jí)內(nèi)核,將新編好的內(nèi)核拷入 SD 卡,改名為:kernel_new.img。打開(kāi) boot 目錄下 找到config.txt文件,加入:kernel=kernel_new.img這一行。

  2. 升級(jí) boot,將firmware/boot/目錄下文件拷入 SD 卡 boot 目錄:fbootcode.bin fixup.dat fixup_cd.dat start.elf

  3. 更新 vc 庫(kù)及內(nèi)核 modules,將編譯出來(lái)的modules/lib/modules拷入樹(shù)莓派文件系統(tǒng)/lib
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)