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查看下版本
没有问题。