RaspBerryPi3-内核编译

转载注明出处:http://www.cnblogs.com/einstein-2014731/p/5985128.html

在有道云笔记的同步分享:http://note.youdao.com/share/?id=0867c9cbe7b0167881656e3a86a98e20&type=note#/

编译更新RaspberryPi3的内核有两种方式,第一种是在树莓派上编译新的内核,完成后重启,优点是简单方便,缺点是速度慢。另一种是在另一台电脑上使用交叉编译的方法编译内核,完成后拷贝到SD卡上。优点是速度很快,但是操作起来相对麻烦些。这里记录下两种方式。

在树莓派本地编译内核

这个方式主要就是copy官网上说的了。翻译下

https://www.raspberrypi.org/documentation/linux/kernel/building.md

1、在全球最大男性同性交友网站GitHub上下载linux内核源码。

mkdir PiLinuxCore

cd PiLinuxCore/

git clone  https://github.com/raspberrypi/linux

2、安装缺少的依赖项。

sudo apt-get install bc

3、内核配置。

cd PiLinuxCore/KERNEL=kernel7

make bcm2709_defconfig

4、编译安装内核模块,

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 scripts/mkknlimg arch/arm/boot/zImage /boot/$KERNEL.img    

耗时40分钟到80分钟之间。

5、重启完成内核更新

sudo reboot

6、使用uname 查看下内核版本是否更新了

Ubuntu上交叉编译内核

交叉编译建议使用Ubuntu因为Raspbian是Debian的一种发行版本,有很多指令是相同的。因为树莓派的内核代码总是在更新,所以编译方法尽量按照官网的方法,以下就是最新的方法。

下载源码和交叉编译工具

1、内核源码:https://github.com/raspberrypi/linuxc

直接打包下载zip文件

2、编译工具: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装的系统所以这里挂载sdb6、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

sudo scripts/mkknlimg arch/arm/boot/zImage mnt/fat32/$KERNEL.img
sudo cp arch/arm/boot/dts/*.dtb mnt/fat32/
sudo cp arch/arm/boot/dts/overlays/*.dtb* mnt/fat32/overlays/
sudo cp arch/arm/boot/dts/overlays/README mnt/fat32/overlays/
sudo umount mnt/fat32
sudo umount mnt/ext4
kernel=kernel-myconfig.img

把SD卡插到树莓派然后重启,uname -a查看下版本

没有问题。

最新文章

  1. iOS 之UIButton左文右图
  2. [高斯消元] POJ 2345 Central heating
  3. php课程---练习(联系人信息表)
  4. Spring 定时执行任务
  5. js 编号生成器
  6. Day2 Python的运算符及三大语句控制结构
  7. tcp_wrapper 总结
  8. plink计算两个SNP位点的连锁不平衡值(LD)
  9. [bzoj1059]矩阵游戏
  10. 和CISSP并肩的信息安全认证国际注册信息安全经理CISM
  11. WRITE T AFTER ADVANCING 2 LINES
  12. js上传视频(jquery.form.js)
  13. springcloud-app
  14. Javascript 字符串(一)常见函数使用
  15. ubuntu下mysql远程连接
  16. CSS响应式:根据分辨率加载不同CSS的几个方法,亲测可用
  17. OC学习那些事:第一个OC类
  18. 分布式协议之两阶段提交协议(2PC)和改进三阶段提交协议(3PC)
  19. pdb-不需要IDE也能调试
  20. 获取file中字段,写入到TXT文件中

热门文章

  1. Oracle数据泵远程导入文件到本地数据库
  2. Linux 正则表达式 vi, grep, sed, awk
  3. POJ 题目3264 Balanced Lineup(RMQ)
  4. [转载]UDP丢包率提升
  5. ORA-02050故障诊断一例
  6. H5和CSS3新增内容总结
  7. Orcad CIS怎么批量修改字体大小
  8. 电容有什么作用?为什么cpu电源引脚都并联一个电容?
  9. android开发系列之ContentObserver
  10. Multicast注册中心