树莓派3B 内核编译
来源:互联网 发布:考勤机数据实时更新 编辑:程序博客网 时间:2024/06/13 08:00
1.准备工作:
1.1开发环境系统ubuntu 16(64位)
1.2下载源码:https://github.com/raspberrypi
linux:树莓派内核源码
tools:树莓派的交叉编译工具
下载方式:
(1)网页下载
直接下载zip
(2)命令下载
git clone --depth=1 https://github.com/raspberrypi/linux
git clone https://github.com/raspberrypi/tools
保存路径为~/Raspberry/下
2.确定版本
2.1查看当前树莓派编译器的信息
root@raspberrypi:~# cat /proc/version
Linux version 4.4.13-v7+ (dc4@dc4-XPS13-9333) (gcc version 4.9.3 (crosstool-NG crosstool-ng-1.22.0-88-g8460611) ) #894 SMP Mon Jun 13 13:13:27 BST 2016
2.2 确定交叉编译工具
root@ubuntu:~/Raspberry/tools-master/arm-bcm2708# ls
arm-bcm2708hardfp-linux-gnueabi
arm-bcm2708-linux-gnueabi
arm-rpi-4.9.3-linux-gnueabihf
gcc-linaro-arm-linux-gnueabihf-raspbian
gcc-linaro-arm-linux-gnueabihf-raspbian-x64
此目录下有5个目录,是不同版本的交叉编译工具。其中arm-rpi-4.9.3-linux-gnueabihf和gcc-linaro-arm-linux-gnueabihf-raspbian-x64是64位机器用的。
每一个交叉编译工具的目录下都有bin目录进入,执行./arm-linux-gnueabihf-gcc -v可查看gcc版本。
这里我使用arm-rpi-4.9.3-linux-gnueabihf,因为目前板子上的gcc版本是4.9.3
3.开始编译
3.1 进入linux内核目录:
$ cd ~/Raspberry/linux-rpi-4.4.y
$ KERNEL=kernel7
$ make ARCH=arm CROSS_COMPILE=~/Raspberry/tools-master/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin/arm-linux-gnueabihf- bcm2709_defconfig
Note:如果是多处理系统可以添加选项-j n ,n为数字,表示多处理器的数量*1.5。可以加快编译速度
$ make -j4 zImage modules dtbs
3.2 创建目录modules
在linux内核目录顶层下创建modules目录。
$ mkdir modules
$ make INSTALL_MOD_PATH=modules modules_install
3.3 更新先有先有树莓派的内核将有系统的内存卡插入电脑上:
在/media/ubuntu/ 目录下会出现两个目录boot/2f840c69-cecb-4b10-87e4-01b9d28c231c/
执行命令
sudo cp arch/arm/boot/zImage /media/ubuntu/boot/$(KERNEL).img
sudo cp arch/arm/boot/dts/*.dtb /media/ubuntu/boot/
sudo cp arch/arm/boot/dts/overlays/*.dtb* /media/ubuntu/boot/overlays/
sudo cp arch/arm/boot/dts/overlays/README /media/ubuntu/boot/overlays/
cp modules/lib/ /media/ubuntu/2f840c69-cecb-4b10-87e4-01b9d28c231c/ -r
4.重新启动树莓派,成功更新了内核
参考连接:https://www.raspberrypi.org/documentation/linux/kernel/building.md
- 树莓派3B 内核编译
- 树莓派3B 内核编译
- 树莓派3B+内核编译
- 树莓派3B 内核模块编译
- 树莓派3B之交叉编译链和内核编译
- 树莓派3B内核移植
- 树莓派3B编译安装Opencv2
- 树莓派内核编译
- 编译树莓派内核
- 树莓派内核编译出错
- 【树莓派】编译内核
- Linux内核编译3
- 玩转树莓派3 -- 内核编译
- 编译loongson内核1b-linux-3.0-20130104问题总结
- 树莓派3b——linux内核更新
- 树莓派编译内核(编译模块)
- [树莓派内核学习] kernel编译
- 树莓派Rpi编译更换 内核
- 基于STM32和SIM900A的无线通信模块设计
- CentOS升级内核教程
- HDU-1020
- java中equals与==的区别
- css postion 理解 absolute 和fixed的区别
- 树莓派3B 内核编译
- 温故而知新——JavaSE高级
- Java 自动装箱与拆箱(Autoboxing and unboxing)
- Linux查看日志命令
- 实现页面跳转后,原页面弹窗且不让后页面失去焦点-javascript函数执行顺序问题
- CocoaPods安装第三方SDK报错[!] The dependency `第三方SDK` is not used in any concrete target
- Android中处理崩溃异常
- android string.xml 添加特殊字符
- 【腾讯Bugly干货分享】移动客户端中高效使用SQLite