树莓派学习(6)--编译系统内核

在最近的实习中,学会了内核编译技巧。内核的编译并没有想象中的难,因为主要的内核配置都会很容易获得,而且官方也有给出合适的配置

一、下载编译工具和内核镜像

在github下的并不是官方的4.19版本

sudo apt-get install build-essential git automake  
git clone https://github.com/raspberrypi/linux.git
git clone git://github.com/raspberrypi/tools.git

下载好工具后,进入tools/arm-bcm2708/ 目录,我们可以发现要使用的编译工具:gcc-linaro-arm-linux-gnueabihf-raspbian-x64/ ,后面的x64的意思是用64位的linux来编译树莓派内核,而刚好我的电脑的linux系统是deepin的64位系统。

二、安装环境变量

在/etc/profile 文件末尾添加
export PATH=/root/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin:$PATH
当然,要对应你当前下载tools的目录,然后source /etc/source 使环境生效。
是否生效可以用  arm-linux-gnueabihf-gcc -v 命令来判断

三、获取配置文件,然后编译

进入linux目录,然后查看 ls arch/arm/configs/ 目录,我们可以找到我们树莓派3B用到的配置文件---- bcm2709_defconfig

先暂时声明目标编译工具和目标平台(arm)
然后使用内核目录下使用 make bcm2709_defconfig 命令,可以直接生成.config内核配置文件

KERNEL=kernel7 
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-
bcm2709_defconfig

然后就可以进行编译了,命令是:
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage modules dtbs -j4
后面的4,代表这进行4线程编译,一般按你的cpu核心数或者它的1.5倍来进行编译,因为编译内核是cpu密集性,一般的电脑 cpu是它的瓶颈。

编译成功

四、安装编译好的内容,现在主要的安装主要是挂载树莓派系统到新建的mnt/目录下,然后进行文件的替换

#挂载U盘的文件系统
mkdir mnt
mkdir mnt/fat32
mkdir mnt/ext4
sudo mount /dev/sdc1 mnt/fat32
sudo mount /dev/sdc2 mnt/ext4

#编译安装  
sudo make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- 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

五、编译过程中遇到的错误

1、openssl/bio.h:没有那个文件或目录,缺少 libssl-dev依赖
sudo apt-get install libssl-dev 来解决

scripts/extract-cert.c:21:25: fatal error: openssl/bio.h: 没有那个文件或目录
#include
compilation terminated.
DTCO arch/arm/boot/dts/overlays/hy28a.dtbo

发表评论

电子邮件地址不会被公开。 必填项已用*标注