【STM32MP157&Linux系统】编译烧录根文件系统

配置buildroot

1 将 buildroot 源码 buildroot-2020.02.6.tar.bz2 拷贝到 ubuntu 中,拷贝完成以后对其进行解压,命令如下:

tar -vxjf buildroot-2020.02.6.tar.bz2

解压完成以后就会得到一个名为“buildroot-2020.02.6”的目录,此目录就是我们解压得到
的 buildroot 源码,进入到此目录中,此目录下的文件如图 19.2.1.1 所示:
在这里插入图片描述

2 解压后,可输入make menuconfig
命令打开持图形化配置界面跟着教程自行配置,也可直接将本人准备好的配置文件“stm32mp1_atk_defconfig”拷贝到buildroot 的 configs 目录下在这里插入图片描述
3 在buildroot源码目录下使用以下命令配置buildroot

make stm32mp1_atk_defconfig

4 在buildroot源码目录下使用以下命令编译buildroot

make -j8 //多线程编译

配置buildroot 下的 busybox

1 在buildroo源码下找到/output/build/busybox-1.31.1 这个文件夹,此文件夹就是解压后的 busybox 源码在这里插入图片描述
2 修改busybox 中的一些代码文件
(跟着教程修改版)
2.1 修改 Makefile,添加编译器
同Uboot和Linux移植一样,打开busybox的顶层Makefile,添加ARCH和CROSS_COMPILE的值,如下所示:

164 CROSS_COMPILE ?= /usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf-
......
190 ARCH ?= arm

2.2 修改busybox-1.31.1/libbb/printable_string.c文件
在这里插入图片描述
在这里插入图片描述
2.3 修改busybox-1.31.1/libbb/unicode.c文件
在这里插入图片描述
(直接替换文件版)
用本人准备的已修改后的代码直接替换原代码文件。
2.1 将提供的busybox的配置文件目录下的Makefile文件放到buybox源码目录,替换原同名文件:
在这里插入图片描述

2.2 将提供的printable_string2和unicode.c直接拷贝到busybox源码的libbb目录下:在这里插入图片描述

3 可使用make busybox-menuconfig打开 busybox 的配置界面跟着教程自行配置,也可直接使用本人准备好的配置文件“busybox的配置文件/stm32mp1_atk_defconfig”拷贝到buildroot 下的 busybox的 configs 目录下
在这里插入图片描述
在busybox源码目录执行以下命令配置busybox

make stm32mp1_atk_defconfig

4 进入到 buildroot 源码目录下输入如下命令查看当前 buildroot 所有配置了的目标软件包,也就是 packages:

make show-targets

在这里插入图片描述
5 执行下面命令重新编译 buildroot 下的 busybox

make busybox

6 编译完成以后重新编译 buildroot,主要是对其进行打包,输入如下命令:

make -j8

测试新的根文件系统

1 将 ouput/images/rootfs.tar 拷贝到 nfs目录下的 rootfs 目录中,然后重新解压

tar -vxf rootfs.tar

解压完成以后就可以使用 FTP 和 SSH 等相关的软件了,由于 FTP 和 SSH 都是通过网络进行数据传输的,因此需要先配置网络,如果是通过 nfs 挂载的根文件系统,那么网络已经初始化完成了,因此可以直接使用。如果是烧写到 EMMC 里面的,那么就需要先配置网络相关功能。

2 nfs挂载启动开发板后,进入开发板命令行输入检查depmod命令,若提示错误
在这里插入图片描述
就手动创建lib/modules/5.4.31 目录,命令如下:

mkdir /lib/modules/5.4.31 -p

创建好以后再执行 depmod 命名就不会报错了

3 配置vsftpd搭建FTP服务器置,打开/etc/vsftpd.conf 文件,将下面两行前面的“#”去掉:

local_enable=YES //取消掉前面的‘#’
write_enable=YES //取消掉前面的‘#’

4 要修改/etc/vsftpd.conf 文件的所属用户,默认为 sshd 用户,将其改为 root用户,输入如下命令:

chown root:root /etc/vsftpd.conf //修改 vsftpd.conf 文件所属用户

5 新建一个用户来完成 FTP 登录,设置完成以后重启开发板,vsftpd 服务默认会使能!如图
在这里插入图片描述
在这里插入图片描述
6 启动SSH服务,提示“sshd: /var/empty must be owned by root and not group or world-writable.”,此时我们需要修改/var/empty目录所属用户以及用户组,输入如下命令:

chown root:root /var/empty

7 创建自启动文件Sautorun

cd /etc/init.d/ //进入/etc/init.d 目录
touch Sautorun //使用 touch 命令创建 Sautorun 脚本
chmod 777 Sautorun //给予 Aautorun 脚本可执行权限

在Sautorun 文件中添加如下代码使能 sysfs debug 目录,便于后续调试驱动:

mount -t debugfs none /sys/kernel/debug

ifconfig eth0 up //打开 eth0
ifconfig eth0 192.168.1.250 netmask 255.255.255.0 //设置 IP 地址

后两行用于开机自动设置静态 IP 地址(因为本人的开发板没有连接路由器,而是直接连接的交换机或者电脑),如果开发板连接路由器的话就更简单了,不需要我们手动设置静态 IP 地址,直接使用“udhcpc”命令从路由器获取动态 IP 地址即可,如图 19.6.3.7 所示:
在这里插入图片描述

打包根文件系统

1 创建一个名为 rootfs 文件夹,注意不要和/home/zuozhongkai/linux/nfs/rootfs 这个目录重复了!这里是在/home/zuozhongkai/linux/目录下创建一个名为“rootfs”目录,进入后再创建 ext4 磁盘

cd rootfs 
dd if=/dev/zero of=rootfs.ext4 bs=1M count=1024
mkfs.ext4 -L rootfs rootfs.ext4 

2 使用 mount 命令将 rootfs.ext4 挂载到/mnt/rootfs 目录下

sudo mkdir /mnt/rootfs
sudo mount rootfs.ext4 /mnt/rootfs/

3 进入nfs下的rootfs目录,将所有根文件系统文件拷贝到/mnt/bootfs 目录下,命令如下:

sudo cp * /mnt/rootfs/ -drf 
sudo umount /mnt/rootfs

至此,根文件系统就已经打包到了/home/zuozhongkai/linux/目录下的 rootfs.ext4 中 , 稍 后可 使 用STM32CubeProgrammer 软件将其烧写到 EMMC 里面。

最后的打包文件

在这里插入图片描述
在这里插入图片描述

提取链接(点击打开)
https://pan.baidu.com/s/1DKLguuIPatymwGA1OZzq1g?pwd=zpul

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值