鍍金池/ 教程/ 嵌入式/ 樹莓派內(nèi)核編譯與固件升級
樹莓派 GPIO 控制
樹莓派介紹
樹莓派做 wifi 熱點
樹莓派網(wǎng)絡(luò)與更新配置
樹莓派內(nèi)核編譯與固件升級
樹莓派做 web 服務(wù)器
樹莓派啟動方式及支持的系統(tǒng)
樹莓派配置
樹莓派 spi 液晶屏支持
樹莓派常用軟件及服務(wù)

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

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

獲取升級所需源碼

下載地址

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

上面列出了樹莓派所有的開源軟件

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

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

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

下載方法

網(wǎng)頁直接下載

http://wiki.jikexueyuan.com/project/raspberry-pi/images/download.jpg" alt="" />

到所需要下載的工程,左上角選版本,右方有一個 download ZIP 按鈕可直接下載(筆者下載完成后,在 linux 中解壓提示出錯,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

會得到三個文件夾:firmware linux tools

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

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

在運行的樹莓派中運行

$ls /proc/

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

$cp /proc/config /home/pi

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

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

$zcat config.gz > .config

http://wiki.jikexueyuan.com/project/raspberry-pi/images/config.jpg" alt="" />

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

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

http://wiki.jikexueyuan.com/project/raspberry-pi/images/makefile.jpg" alt="" />

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

http://wiki.jikexueyuan.com/project/raspberry-pi/images/makemenuconfig.jpg" alt="" />

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

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

$cd tools/mkimage

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

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

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

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

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

升級 RPi 的 kernel、Firmware、lib

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

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

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

  3. 更新 vc 庫及內(nèi)核 modules,將編譯出來的modules/lib/modules拷入樹莓派文件系統(tǒng)/lib
上一篇:樹莓派介紹下一篇:樹莓派 GPIO 控制