在ubuntu V16.04 中 编译树莓派2 linu内核

来源:互联网 发布:卫星影像下载软件 编辑:程序博客网 时间:2024/05/21 20:25
编译树莓派内核的目标主要是实现定制内核。也可以学习linux驱动开发。
树莓派的内核编译可以在树莓派上编译也可以在虚拟机上编译,
树莓派上编译时,一定要注意树莓派发热问题,非常严重,必须要加散热风扇。
内核编译主要参考官方文档:https://www.raspberrypi.org/documentation/linux/kernel/building.md
先检查更新
#sudo apt-get update
#sudo apt-get upgrade
如果上面两条命令运行失败,则需要检查网络设置
安装git
#sudo apt-get install git -y
配置git 并把生成的rsa公钥加入github 的账号中(只有这样才能clone )
开始克隆内核源码及编译器
#cd ~
#sudo git clone git@github.com:raspberrypi/linux.git
#sudo git clone git@github.com:raspberrypi/tools.git
通过上面的3个命令就可以在用户目录下克隆内核源码及编辑器,这里最好是开2个终端克隆
下面开始配置环境变量
#cd ~
#sudo vim .bashrc //
在.bashrc 最下面 加入编译器路径
export PATH=$PATH:/home/langang/tools/arm-bcm2708/arm-rpi-4.9.3-linux-gnueabihf/bin
更新环境变量
#source .bashrc
下面开始手动配置Make 文件
#cd ~/linux //进入内核源码目录
#sudo cp Makefile Makefile.bak //备份
#sudo vim Makefile +255 //打开Make文件 并跳转到第255行
把ARCH 和 CROSS_COMPILE 改为如下图所示
指定编译器完整路径

开始编译内核
#cd ~/linux
#KERNEL=kernel7
#sudo make bcm2709_defconfig //配置.config文件
#sudo make zImage modules dtbs -j6 //开始编译 时间非常长 -j6是CPU的线程数*1.5 提高编译速度
注意!参数 ARCH 和 CROSS_COMPILE 我们已经手动修改Makefile文件,所以不需要配置
如果没有错误,编译完成,那么开始更新树莓派内核
下面开始给树莓派安装新的内核
取出插在树莓派开发板上面的TF(TF内已经有之前的系统),通过读卡器插入PC。
查看TF卡分配的盘符,
#lsblk //查看
执行后效果如下

其中 sdb1为boot ,sdb2为文件系统空间
现在把这两个盘符挂载在虚拟机的文件系统中
#cd ~/linux
#sudo mkdir mnt //在内核源码中新建文件夹
#sudo mkdir mnt/fat32 mnt/ext4 //在mnt文件夹中建立fat32和ext4文件夹
#sudo mount /dev/sdb1 mnt/fat32 //挂载
#sudo mount /dev/sdb2 mnt/ext4 //挂载
接下来安装模块
#cd ~/linux
#sudo make INSTALL_MOD_PATH=mnt/ext4 modules_install//指定安装路径 开始安装
接下来的操作就是拷贝内核,和一些文件(可能是动态链接库)
#sudo cp mnt/fat32/$KERNEL.img mnt/fat32/$KERNEL-backup.img //备份之前的内核镜像
#sudo cp 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 //取消挂载

现在新的内核已经安装在这个TF卡中了,重新把TF插入树莓派即可运行新的内核。