|
米联客F20-2CG(ZYNQ MPSoC)Petalinux EXT4持久化文件系统搭建教程 适用平台:米联客MLK-F20-CM02-2CG ZYNQ MPSoC开发板 软件版本:Petalinux 2021.1、Ubuntu 18.04 前言 默认Petalinux编译生成的系统采用ramdisk临时文件系统,文件系统运行在内存中,开发板断电后所有修改的数据、配置都会丢失,无法满足实际项目持久化存储需求。 本文基于米联客F20-2CG开发板,手把手教大家将Petalinux根文件系统修改为EXT4持久化文件系统,通过SD卡分区存储根文件系统,实现断电数据保存,全程采用离线编译方式,规避在线编译网络报错问题,适配2021.1版本Petalinux。 本文涵盖:工程配置修改、设备树适配、SD卡分区格式化、系统编译、镜像部署、板卡启动测试全流程。 前置环境 1. 已搭建完成Petalinux2021.1开发环境(米联客定制Ubuntu18.04虚拟机) 2. 已准备好离线编译依赖包(适配MPSoC 64位处理器) 3. 提前获取F20-2CG对应的Vivado导出XSA硬件描述文件 4. 8G及以上SD卡(格式清空,用于分区制作启动卡) 5. 开发板、串口线、SD卡读卡器、电源适配器 一、核心原理说明 1. ramdisk模式:根文件系统挂载在内存,读写速度快,但断电数据清零,仅适用于调试测试 2. EXT4持久化模式:将根文件系统挂载在SD卡EXT4分区,所有文件修改、程序安装、配置保存均可永久生效,断电不丢失 3. SD卡双分区设计: • FAT32分区(boot):存放BOOT.BIN、boot.scr、Image、system.dtb等启动镜像 • EXT4分区(rootfs):挂载Linux根文件系统,持久化存储系统数据 二、进入工程并配置离线编译(必做) 为避免在线编译网络超时、服务器连接失败问题,全程使用离线编译配置,沿用前文搭建的工程目录。 1. 进入Petalinux工程目录,加载环境变量 Plain Text
cd /home/uisrc/project/system
source ../../petalinux2021.1/settings.sh |
2. 打开工程配置界面 Plain Text
petalinux-config |
3. 配置Yocto离线编译参数(已有配置可跳过,新工程必须配置) • 进入 Yocto Settings -> Add pre-mirror url,输入路径:file:///home/uisrc/downloads_2021.1_update1 • 进入 Yocto Settings -> Local sstate feeds settings,输入64位MPSoC路径:/home/uisrc/sstate_aaarch64_2021.1_update1/aarch64 • 取消勾选 Enable Network sstate feeds,关闭网络编译模式 配置完成后暂不保存,继续下一步文件系统配置。 三、修改根文件系统为EXT4模式 3.1 配置文件系统类型与挂载盘符 在petalinux-config配置界面,依次进入: Image Packaging Configuration -> Root filesystem type 默认为ramdisk模式,修改为:EXT4(SD/eMMC/SATA/USB) 选中后界面会新增盘符配置项,填写F20-2CG开发板SD卡挂载节点: Device node of SD device = /dev/mmcblk1p2 关键说明:F20-2CG板卡sdhci0对应SD卡设备,系统识别为mmcblk1,第二分区p2专门用于挂载EXT4根文件系统,切勿填错盘符,否则系统启动失败。 3.2 设备树适配SD卡(防止写保护报错) 修改设备树文件,关闭SD卡写保护,避免挂载失败: 编辑设备树配置文件: Plain Text
vim /home/uisrc/project/system/project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi |
在文件末尾添加如下配置: Plain Text
&sdhci0 {
disable-wp;
};
&sdhci1 {
disable-wp;
}; |
保存退出(ESC :wq),完成设备树适配。 四、清理缓存并编译系统 1. 清理历史编译缓存,避免配置残留冲突 Plain Text
petalinux-build -x cleanall |
2. 执行离线编译(耗时取决于电脑配置,无网络依赖) Plain Text
petalinux-build |
编译成功会提示:Successfully built project 3. 打包生成BOOT.BIN启动镜像 Plain Text
petalinux-package --boot --format BIN --fsbl images/linux/zynqmp_fsbl.elf --u-boot images/linux/u-boot.elf --pmufw images/linux/pmufw.elf --fpga images/linux/*.bit --force |
执行完成后,images/linux目录下生成核心启动文件:BOOT.BIN、image.ub、system.dtb、rootfs.tar.gz 五、SD卡双分区格式化与系统部署 将SD卡通过读卡器接入Ubuntu虚拟机,使用系统自带磁盘工具分区,禁止Windows格式化(会导致分区格式异常)。 5.1 SD卡分区划分 1. 打开Ubuntu磁盘工具,选中接入的SD卡,删除原有所有分区 2. 新建第一个分区: • 分区大小:500MB • 格式:FAT32 • 分区名称:boot 3. 新建第二个分区: • 占用剩余全部空间 • 格式:EXT4 • 分区名称:rootfs 保存分区方案,等待格式化完成,手动挂载两个分区。 5.2 部署启动文件与根文件系统 1. 拷贝启动文件到FAT32 boot分区 将 images/linux 目录下的 boot.scr、BOOT.BIN、image.ub 三个文件复制到SD卡boot分区。 2. 解压根文件系统到EXT4 rootfs分区 Plain Text
sudo tar zxvf rootfs.tar.gz -C /media/uisrc/rootfs/ |
3. 强制写入缓存,避免文件丢失 操作完成后安全弹出SD卡,完成系统部署。 六、开发板启动配置与测试 6.1 拨码开关配置(F20-2CG专用) 将开发板拨码开关调整为 SD卡启动模式:OFF-ON-OFF 接线说明:插入SD卡,连接USB串口、电源,打开Putty串口工具,波特率默认115200。 6.2 持久化功能验证 1. 上电启动开发板,系统正常进入Linux终端 2. 创建测试文件 Plain Text
touch test.txt
echo "EXT4持久化测试" > test.txt |
3. 断电重启开发板,重新进入系统 4. 查看文件是否存在 若test.txt文件保留、内容未丢失,说明EXT4持久化文件系统配置成功。 七、常见问题与解决方案 问题1:系统启动提示mmcblk0p1挂载失败 解决方案:检查设备树是否添加disable-wp配置,关闭SD卡写保护,重新编译烧录。 问题2:断电后数据依旧丢失 解决方案:确认petalinux-config中文件系统类型已改为EXT4,且盘符/dev/mmcblk1p2填写正确,重新配置编译。 问题3:编译过程sstate匹配失败 解决方案:检查离线包路径配置,确认64位离线包适配MPSoC架构,关闭网络编译模式。 问题4:SD卡分区后无法挂载 解决方案:使用Ubuntu原生磁盘工具分区,禁止Windows格式化,确保分区格式为纯FAT32和EXT4。 八、总结 本文基于米联客F20-2CG ZYNQ MPSoC开发板,完成了Petalinux2021.1从临时ramdisk到EXT4持久化文件系统的完整改造。通过修改系统配置、适配设备树、SD卡双分区部署,彻底解决了断电数据丢失问题,完全满足嵌入式Linux项目长期运行、数据存储、程序自启动的开发需求。 该方案全程离线编译,规避了官方服务器网络问题,稳定性高、适配性强,可直接用于F20-2CG板卡的项目开发落地。
|