树莓派Linux源码配置,树莓派Linux内核编译,树莓派Linux内核更换_树莓派内核编译报错

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

进入下图菜单页面即可进行相关配置

*   编译进内核  zImage包含了驱动

M  模块方式生成驱动文件xxx.ko  系统启动后,通过命令inmosd xxx.ko 加载

● 第三种方法 :完全靠自己来移植

二   树莓派Linux内核编译

① 内核编译

对树莓派内核源码进行配置后,接下来就要进行树莓派Linux内核的编译,需要树莓派交叉编译工具、树莓派内核。

交叉编译工具链的下载和环境配置在我的这篇文章有详细介绍:http://t.csdn.cn/w7wBm

在上面的基础上输入下面指令进行编译:

ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make -j4 zImage modules dtbs
//编译时长大概20分钟
j4指定用多少电脑资源进行编译(多少核 4核,根据自己虚拟机配置)
zImage生成内核镜像
modules要生成驱动模块
dtbs生成配置文件

编译完成后,可以看到源码树目录多了vmlinux这个文件,如果编译失败则没有此文件,成功后,目标zImage镜像在arch/arm/boot目录下(此步ARM架构的芯片都是类似)(vmlinux是未压缩的liunx,zImage是压缩好的liunx)。

检查是否编译成功:若生成zImage文件则编译成功

② 编译时报错及解决方案(亲测)

● 错误提示:

/usr/bin/ld: scripts/dtc/dtc-parser.tab.o:(.bss+0x10): multiple definition of `yylloc’; scripts/dtc/dtc-lexer.lex.o:(.bss+0x0): first defined here
● 解决方案:

修改scripts/dtc目录下的dtc-lexer.lex.c_shipped文件中找到
YYLTYPE yyloc这一行,在640行左右的位置,在之前面加上extern  //不加分号;
保存退出,
make 编译 
正常编译

三   更换树莓派Linux内核

操作步骤说明

① 打包zImage文件。打包zImage成树莓派可用的xxx.img

./scripts/mkknlimg arch/arm/boot/zImage ./kernel_new.img

② 树莓派断电,拔出树莓派的SD卡,插到读卡器,读卡器插入电脑,映射到虚拟机

🔺插入读卡器会有如下图选项提示,选择虚拟机及名称。如果没有如下提示,一定要自己调试,防止主机读走USB数据。

然后在命令行输入指令:dmesg查看底层的一些硬件数据,这里查看读卡器映射的内容

● dmesg报错及解决方案(亲测)
sudo sysctl kernel.dmesg_restrict=0

连接USB成功:出现sdb1、sdb2则为连接成功,如果只有一个sdb1,则需要重新往SD刷入系统(有可能是sdc1、sdc2或者sdd1、sdd2)。

把树莓派的sd卡插入ubuntu系统电脑,树莓派的sd卡有两个分区:
● 一个fat分区,是boot相关的内容,kernel的img文件就放在这个分区里;
● 一个是ext4分区,也就是系统的根目录分区。

③ 数据拷贝,挂载U盘

回到工作目录,mkdir创建data1和data2两个目录,分别挂载两个分区的内容

dhw@dhw-virtual-machine:~$ mkdir data1
dhw@dhw-virtual-machine:~$ mkdir data2

挂载U盘

● data1是fat分区,是boot相关的内容,kernel的img;

● data2是ext4分区,也就是系统的根目录分区。

④ 安装modules。含有设备驱动文件:比如HDMI,WIFI,USB,IO等

在ext4分区操作,这里的data2分是ext4分区,需要root权限。

sudo ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- KERNEL=kernel7 make INSTALL_MOD_PATH=/home/dhw/data2 modules_install

⑤ 安装更新 kernel.img 文件,注意镜像名字是kernel7.img

备份kernel7.img,防止存在错误操作:

● cd /home/dhw/data1
● cp kernel7.img kernel7OLD.img

⑥ 把打包的kernel_new.img文件,拷贝到data1分区,起名kernel7.img,覆盖原来的kernel7.img

cp kernel_new.img /home/dhw/data1/kernel7.img

检查拷贝是否有误:md5sum

Linux中,每个文件都有一个编码号,就是md5的值。如果拷贝文件出错,md5的值就会发生变化。

下图中原文件和拷贝后的文件md5的值一样,说明拷贝无误。

⑦ 拷贝其他相关文件

cp arch/arm/boot/dts/.*dtb* /home/dhw/data1
cp arch/arm/boot/dts/overlays/.*dtb* /home/dhw/data1/overlays/
cp arch/arm/boot/dts/overlays/README /home/dhw/data1/overlays/

⑧ 虚拟机弹出USB,让USB被主机识别

进入cmdline.txt文件,添加红框里的部分,目的是稳妥起见,让操作系统能正常运行

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

6)]
[外链图片转存中…(img-1XSmKjUS-1714379333556)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以点击这里获取!

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值