Linux自制系统烧写

本文详细介绍了如何在I.MX6U开发板上烧写自编译的u-boot、zImage、dtb和rootfs文件,以及如何设置网络开机自启动,包括手动开启网卡、配置IP地址和添加到rcS文件中。作者还提到了可能遇到的问题,如网络不通和uboot.imx配置影响网络设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

1、firmare下的文件名
u-boot-imx6ull14x14evk_emmc.imx  uboot
zImage							
zImage-imx6ull-14x14-evk-emmc.dtb   dtb

2、files下的文件名
u-boot-imx6ull14x14evk_emmc.imx		uboot
zImage								kernel
zImage-imx6ull-14x14-evk -emmc.dtb	dtb
rootfs_nogpu.tar.bz2					rootfs

提示:以下是本篇文章正文内容,下面案例可供参考

一、系统烧写

本小节我们就来学习如何将我们做好的系统烧
写到开发板中,首先是准备好要烧写的原材料:
①、自己移植编译出来的 uboot 可执行文件: u-boot.imx。(在我的uboot目录下没有uboot.imx,不知道哪里错了,以后慢慢找吧再重新做一遍,现在就用例程源码中开发板对应的uboot源码)
编译出来的 u-boot.imx(u-boot.bin 前面加了一些头文件)
②、自己移植编译出来的 zImage 镜像文件和开发板对应的.dtb(设备树),对于 I.MX6UALPHA 开发板来说就是 imx6ull-alientek-emmc.dtb。(之前通过tftp下载,已经在tftpboot目录下)
③、自己构建的根文件系统 rootfs,这里我们需要对 rootfs 进行打包,进入到 Ubuntu 中的rootfs 目录中,然后使用 tar 命令对其进行打包,命令如下:

cd rootfs/
tar -vcjf rootfs.tar.bz2 *

完成以后会在 rootfs 目录下生成一个名为 rootfs.tar.bz2 的压缩包,将 rootfs.tar.bz2 发送到windows 系统中。
将上面提到的这 4 个“原材料”都发送到 Windows 系统中,如图 所示:
在这里插入图片描述
材料准备好以后还不能直接进行烧写,必须对其进行重命名,否则的话 ucl2.xml 是识别不出来的,前面讲解 ucl2.xml 语法的时候已经说过了,图 39.4.1 中的这四个文件重命名见表
在这里插入图片描述
在这里插入图片描述
接下来就是用我们的文件替换掉 NXP 官方的文件,先将图 中
1 zImage、 u-bootimx6ull14x14evk_emmc.imx 和 zImage-imx6ull-14x14-evk-emmc.dtb 这三个文件拷贝到 mfgtoolswith-rootfs/mfgtools/Profiles/Linux/OS Firmware/firmware 目录中,替换掉原来的文件。
2 然后将图中的所有 4 个文件都拷贝到 mfgtools-with-rootfs/mfgtools/Profiles/Linux/OS Firmware/files目录中,这两个操作完成以后我们就可以进行烧写了。从USB01000000,启动,拔出TF卡
3 双击“mfgtool2-yocto-mx-evk-emmc.vbs”,打开烧写软件,点击“Start”按钮开始烧写,由于我们自己制作的 rootfs 比较小,因此烧写相对来说会快一点(实际是我烧录的非常慢,比nxp的还慢)。烧写完成以后设置开发板从EMMC 启动,启动我们刚刚烧写进去的系统,测试有没有问题。在这里插入图片描述

2 网络开机自启动设置

大家在测试网络的时候可能会发现网络不能用,这并不是因为我们将系统烧写到 EMMC(10100110) 中以后网络坏了。仅仅是因为网络没有打开,我们用 NFS 挂载根文件系统的时候因为要使用 NFS服务,因此 Linux 内核会打开 eth0 这个网卡,现在我们不使用 NFS 挂载根文件系统,因此 Linux内核也就不会自动打开 eth0 网卡了。我们可以手动打开网卡,首先输入“ifconfig -a”命令查看一下 eth0 和 eth1 是否都存在,结果如图 所示:
在这里插入图片描述

可以看出 eth0 好 eth1 都存在,既然存在我们就打开,以打开 eth0 网卡为例,输入如下命令打开 eth0:

ifconfig eth0 up
ifconfig eth1 up

每次开机以后都要自己手动打开网卡,然后手动设置 IP 地址也太麻烦了,有没有开机以后自动启动网卡并且设置 IP 地址的方法呢?肯定有的,我们将打开网卡,设置网卡 IP 地址的命令添加到/etc/init.d/rcS 文件中就行了,完成以后的 rcS 文件内容如下所示:

vi /etc/init.d/rcS
ifconfig eth0 up                                                           
#udhcpc -i eth0                                                            
ifconfig eth0 192.168.1.50 netmask 255.255.255.0                           
route add default gw 192.168.1.1                                           
                                                                           
                                                                           
ifconfig eth1 up                
ifconfig eth1 192.168.1.80 netmask 255.255.255.0
route add default gw 192.168.1.1

在这里插入图片描述

重启开发板

reboot

网络设置一直改不过来,不知道是不是用原子的u-boot.imx原因,等我重新配置好uboot再看看
修改了uboot.imx,配置完IPP地址还是不行
在这里插入图片描述

2 改造我们自己的烧写工具

用到再改吧·

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值