千家信息网

如何为树莓派编译官方版本Linux内核

发表于:2024-10-02 作者:千家信息网编辑
千家信息网最后更新 2024年10月02日,这篇文章将为大家详细讲解有关如何为树莓派编译官方版本Linux内核,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。为树莓派编译Linux内核的文章在网上
千家信息网最后更新 2024年10月02日如何为树莓派编译官方版本Linux内核

这篇文章将为大家详细讲解有关如何为树莓派编译官方版本Linux内核,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

为树莓派编译Linux内核的文章在网上面有很多,但是大部分文章中记录的是直接从GitHub上面拉取官方的repository,然后用官方的一整套工具链编译生成Linux内核,没有人尝试过直接从Linux Kernel官网下载源码然后编译生成Linux内核的。自己花了点时间编译了kernel官网上的Linux内核源码,并且也成功了,特此来记录一下研究的过程。

下面所有的操作全部在/home/test/RPI/目录下,所用的树莓派硬件版本为3B。

首先,从这里下载交叉编译工具链,然后解压:

wget -c http://releases.linaro.org/components/toolchain/binaries/7.3-2018.05/arm-linux-gnueabihf/gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xzxz -d gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar.xztar xvf gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf.tar

然后配置交叉编译环境:

sudo apt-get install libncurses-dev build-essentialexport PATH=$PATH:/home/test/RPI/gcc-linaro-7.3.1-2018.05-i686_arm-linux-gnueabihf/bin/

其中,ncurses是终端下的界面库,是编译menuconfig阶段的依赖项;build-essential主要用来提供编译时的make命令。

然后,下载内核源码并解压:

wget -c https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.19.104.tar.xzxz -d linux-4.19.104.tar.xztar xvf linux-4.19.104.tar

然后进入源码目录开始配置内核:

cd linux-4.19.104/make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bcm2835_defconfigmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig

这里主要使用了内核源码中自带的bcm2835_defconfig配置,这个是编译官方内核源码的关键。

在编译menuconfig阶段,会弹出内核配置窗口,在这里可以对内核进行相关的配置:

这里为了演示,直接采用默认配置,选择"Exit"后按回车保存并退出。

接下来就可以开始编译内核了:

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- -j4 zImage modules dtbs

为了加快内核编译的速度,这里加上了-j参数,具体编译时间取决于电脑配置。
待内核编译完成之后,就可以对zImage文件进行处理,最终生成树莓派可直接引导的文件:

cd arch/arm/boot/wget -c https://raw.githubusercontent.com/raspberrypi/linux/rpi-4.19.y/scripts/mkknlimgchmod +x mkknlimg./mkknlimg zImage kernel.img

开始执行安装过程:

cd ../../../mkdir installmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules_install INSTALL_MOD_PATH=/home/test/RPI/linux-4.19.104/install/

这一步主要用来创建lib目录,方便后面直接将里面的modules目录拷贝到内存卡系统目录。

拔下树莓派上的内存卡,插上电脑,开始复制文件:

mv /media/test/boot/kernel7.img /media/test/boot/kernel7.img.1cp /home/test/RPI/linux-4.19.104/arch/arm/boot/kernel.img /media/test/boot/kernel7.imgcp /home/test/RPI/linux-4.19.104/arch/arm/boot/dts/*.dtb /media/test/boot/sudo cp -r /home/test/RPI/linux-4.19.104/install/lib/ /media/test/aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa/

复制完成后,拔下内存卡,再插到树莓派上面,然后开机启动,ssh连上树莓派,使用如下命令查看内核版本信息:

uname -a

这是之前系统的内核版本信息:

这是使用新的内核后的版本信息:

可以明显看到,内核被替换成了新编译的内核,内核替换成功。

经实际测试,树莓派在替换新内核后也能够正常的启动,至于具体哪些板载功能收到了影响,具体也没有测试过。另外,这次的测试仅在3B上面进行,对于本方法在其他硬件版本上面是否可行,可能还需要进一步的测试。

关于如何为树莓派编译官方版本Linux内核就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

内核 编译 树莓 版本 配置 源码 官方 目录 文章 测试 信息 内存 内存卡 文件 生成 成功 内容 命令 工具 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 哈尔滨市服务器包装公司报价 数据库课后作业 惠普gen9服务器指示灯图解 网闸是物理层面的网络安全隔离 mapgis网络许可证服务器 天融信防火墙日志服务器设置 网络技术专业征文 服务器什么情况要配io模组 淮北手机软件开发多少钱 香港服务器代维 扬州营销软件开发培训 买梦幻西游服务器多少钱 在戴尔服务器管理页面装系统 徐州软件开发开发商 信息网络安全宣贯学习视频观后感 厦门移动医疗健康软件开发 jooq 多个数据库连接 我国网络安全保护的基本发是 网站后台都有数据库吗 网络安全十大含金量证书 网络安全保卫大队警务技术员 网闸是物理层面的网络安全隔离 伊春dell服务器 数据库设计阶段与任务 网络安全讲解ppt模板 cad中建数据库输参数 记录网络安全行为漫画 计算机服务器是后端吗 服务器中间件应用场景 网络安全的审计和跟踪技术
0