RaspBerryPi3-內核編譯html
轉載註明出處:http://www.cnblogs.com/einstein-2014731/p/5985128.htmllinux
在有道雲筆記的同步分享:http://note.youdao.com/share/?id=0867c9cbe7b0167881656e3a86a98e20&type=note#/git
編譯更新RaspberryPi3的內核有兩種方式,第一種是在樹莓派上編譯新的內核,完成後重啓,優勢是簡單方便,缺點是速度慢。另外一種是在另外一臺電腦上使用交叉編譯的方法編譯內核,完成後拷貝到SD卡上。優勢是速度很快,可是操做起來相對麻煩些。這裏記錄下兩種方式。github
在樹莓派本地編譯內核ubuntu
這個方式主要就是copy官網上說的了。翻譯下bash
https://www.raspberrypi.org/documentation/linux/kernel/building.md工具
一、在全球最大男性同性交友網站GitHub上下載linux內核源碼。 網站
mkdir PiLinuxCore
cd PiLinuxCore/ui git clone https://github.com/raspberrypi/linuxspa |
二、安裝缺乏的依賴項。
sudo apt-get install bc |
三、內核配置。
cd PiLinuxCore/
|
四、編譯安裝內核模塊,
make -j4 zImage modules dtbs
sudo make modules_install sudo cp arch/arm/boot/dts/*.dtb /boot/ sudo cp arch/arm/boot/dts/overlays/*.dtb* /boot/overlays/ sudo cp arch/arm/boot/dts/overlays/README /boot/overlays/ sudo$KERNEL scripts/mkknlimg arch/arm/boot/zImage /boot/.img |
耗時40分鐘到80分鐘之間。
五、重啓完成內核更新
sudo reboot |
六、使用uname 查看下內核版本是否更新了
在Ubuntu上交叉編譯內核
交叉編譯建議使用Ubuntu由於Raspbian是Debian的一種發行版本,有不少指令是相同的。由於樹莓派的內核代碼老是在更新,因此編譯方法儘可能按照官網的方法,如下就是最新的方法。
下載源碼和交叉編譯工具
一、內核源碼:https://github.com/raspberrypi/linuxc
直接打包下載zip文件
二、編譯工具:https://github.com/raspberrypi/tools
直接打包下載
下載完成後在ubuntu home目錄下的用戶文件夾中建個文件夾RaspberryPi
也能夠隨意定個位置。把下載完的兩個文件拷貝到這個文件夾內。以下:
分別解壓縮
unzip linux-rpi-4.4.y.zip
unzip tools-master.zip |
進入tools目錄,32位機器拷貝下面這個目錄 到指定位置。
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian |
並把下面的路徑添加到home路徑下的.bashrc文件裏,就是所說的環境變量$PATH,添加環境變量有多種方法可自行上網查詢。
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin |
64位系統的主機拷貝下面的路徑,其它步驟和32位的同樣
/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin |
開始編譯
下面的操做都是root權限,進入下載的linux內核解壓後的目錄,Pi1的配置方法:
cd linux
KERNEL=kernel make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcmrpi_defconfig |
Pi2\3的配置方法:
cd linux
KERNEL=kernel7 make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2709_defconfig |
而後進行編譯
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs |
這個時候不出意外的話就開始編譯了 等待十幾分鐘左右吧 就差很少編譯完了。
安裝到SD卡
插入SD卡以後 你會看到咔咔彈出三個對話框,然並卵。
而後輸入 lsblk 會獲得以下分區目錄(我是用NOOBS裝的):
這個sdb是SD卡,顯示7.4G的總容量;sda是虛擬機給ubuntu分的區50G
sdb6 是 FAT(boot)引導分區 相似啓動文件。
sdb7 是 ext4文件系統分區
若是你不是用的NOOBS裝的系統 那就是下面這種狀況:
sdb1 是 FAT(boot)引導分區 相似啓動文件。
sdb2 是 ext4文件系統分區
對於用NOOBS的SD卡:首先掛載SD卡。隨便一個位置建個mnt文件夾用來掛載磁盤。我建在linux目錄下,接下來按照下面的方法建文件夾。
mkdir /mnt/fat32mkdir /mnt/ext4
sudo mount /dev/sdb6 mnt/fat32 sudo mount /dev/sdb7 mnt/ext4 |
由於是NOOBS裝的系統因此這裏掛載sdb六、sdb7。
接下來安裝模組到mnt/ext4:
sudo make ARCH =arm CROSS_COMPILE =arm -linux -gnueabihf - INSTALL_MOD_PATH =mnt /ext4 modules_install |
最後複製內核文件到SD卡。這裏最好備份下以前的內核文件。
sudo cp mnt /fat32 /$KERNEL.img mnt /fat32 /$KERNEL-backup.img
//////$KERNEL.sudo scriptsmkknlimg archarmbootzImage mntfat32img
////*.//sudo cp archarmbootdtsdtb mntfat32
/////*.*///sudo cp archarmbootdtsoverlaysdtbmntfat32overlays
////////sudo cp archarmbootdtsoverlaysREADME mntfat32overlays
/sudo umount mntfat32
/sudo umount mntext4
kernel=kernel-myconfig.img |
把SD卡插到樹莓派而後重啓,uname -a查看下版本
沒有問題。