petalinux 的rootfs文件系统放在SD 分区上

在前面2文即: petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验 以及 petalinux 2018.2 在QSPI启动中,介绍了制作petalinux 启动的过程。但上面2文的rootfs 都是在RAM中,在文件系统中做的修改,在系统关闭后都不能保存。

本文介绍的方法就是解决不能保存的问题,我们把rootfs文件系统放在SD分区中,可以保存文件以及我们对系统做的修改,比如安装新的软件等。当然本文要求你会 petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验 ,并且也是在其基础上做的实验。

SD 卡的制作:

1. 要在 ubuntu Linux 操作系统里使用 SD 卡,首先我们需要一个 USB-Micro SD 卡转换器,
将 Micro SD 卡插入 USB-SD 卡槽,作为 USB 设备使用( AX7010/AX7020 开发平台套件提
供 USB-SD 卡转换器)。 再打开虚拟机的移动设备连接(点击菜单虚拟机->可移动设备->连
接可移动设备名称->连接)。

2. 在 ubuntu 的搜索路径中,输入 disk,会出现 Disks 的图标。

3. 鼠标点击 Disks 图标,出现"Disks"的对话框,

4.选中 8.0GB Drive 设备, 在右侧窗口中单击按钮+。也许你用的不是8g的sd 卡,或者显示的不是8.0GB,但操作是一样的。

注意:可能你的sd卡本来就有内容了,你就可以看到有分区,你可以选择分区后点-, 就是删除所有分区,回到如下完全未分区的状态。

弹出"Create Partition"对话框,设置参数如下,分区的大小为 2000MB, Type 为 FAT,名字也
为 FAT。

再点击 Create 按钮创建第一个分区。

5.选中后面的 Free Space , 再点击 按钮,来创建第二个分区。
Partition Size 不用修改,就为剩余的 5985MB,可能你的数据不一样,格式类型 Type 为 Ext4, 名字为 EXT。点击
Create 创建。


SD 卡的分区完成。

petalinux文件系统的制作

petalinux 文件系统的可以先看看ug1144 的ch6 的最后一节Configuring SD card ext filesystem Boot

制作和 petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验 基本一样,我是先照上文做了一个SD启动的petalinux系统基础上开始的。其实也应该这样,先做一个可以SD启动的petalinux,并且完成测试。

在此基础上运行petalinux-config , 选择Image Packaging Configration --->, 如下图:

然后选择 Root filesystem type,进去之后,选择SD card,如下图:

选择完后如下图:

然后选择save,最后退出,然后petalinux-build

建立好的文件系统在images/linux 下。

petalinux 系统文件的准备和复制

也像petalinux 2018.2 在ubuntu 16 下的工程制作并启动实验 一文一样制作BOOT.BIN

先要cd 到工程目录下的images/linux 目录,我的工程目录是~/alinx/cnc112

由于开始有BOOT.BIN ,所以先删除rm,然后petalinux-package,操作过程如下:

liwenz@ubuntu:~/alinx/cnc112/images/linux$ rm BOOT.BIN
liwenz@ubuntu:~/alinx/cnc112/images/linux$ petalinux-package --boot --fsbl zynq_fsbl.elf --fpga system.bit --u-boot
INFO: File in BOOT BIN: "/home/liwenz/alinx/cnc112/images/linux/zynq_fsbl.elf"
INFO: File in BOOT BIN: "/home/liwenz/alinx/cnc112/images/linux/system.bit"
INFO: File in BOOT BIN: "/home/liwenz/alinx/cnc112/images/linux/u-boot.elf"
INFO: Generating zynq binary package BOOT.BIN...


****** Xilinx Bootgen v2018.2
  **** Build date : Jun 14 2018-20:09:18
    ** Copyright 1986-2018 Xilinx, Inc. All Rights Reserved.

INFO: Binary is ready.
liwenz@ubuntu:~/alinx/cnc112/images/linux$ ls -l
total 232660
-rw-rw-r-- 1 liwenz liwenz  2712704 Jan 28 14:09 BOOT.BIN
-rw-r--r-- 1 liwenz liwenz  3959092 Jan 28 13:35 image.ub
-rw-r--r-- 1 liwenz liwenz  9986176 Jan 25 16:53 rootfs.bin
-rw-r--r-- 1 liwenz liwenz 13513216 Jan 28 13:36 rootfs.cpio

把BOOT.BIN 和image.ub 这2个文件复制到windows,然后在Windows下把这2个文件复制到SD卡的第一个分区,即FAT的分区。最开始我以为只要BOOT.BIN就可以了呢,结果petalinux系统启动时说找不到image.ub,查了ug1144,发现image.ub 也要一起复制过去。因为只是缺少image.ub,我在ubuntu 下复制过去,居然petalinux 还不能打开,最后在windows下格式化,然后复制这2个文件,才顺利启动。
 

rootfs 文件系统的复制

复制petalinux 的文件系统到SD卡的ext分区。 

进入超级用户,操作如下:

liwenz@ubuntu:~/alinx/cnc112/images$ sudo su
[sudo] password for liwenz: 

进入SD卡上的ext盘,我这里是:/media/liwenz/ext

root@ubuntu:/home/liwenz# cd /media
root@ubuntu:/media# cd liwenz
root@ubuntu:/media/liwenz# cd ext


在这个目录里如下操作,就是释放petalinux的文件系统,在rootfs.cpio归档里的。

root@ubuntu:/media/liwenz/ext# cpio -idv </home/liwenz/alinx/cnc112/images/linux/rootfs.cpio
 

我这是在xilinx的社区问到的,他当时这样回答我:

you only extract rootfs.cpio to 2nd partition by cpio command or execute dd command with rootfs.ext3 or rootfs.ext4 to 2nd partition.

说实在的,我开始不怎么会用cpio ,费了九牛二虎之力,才释放好。开始我用文件系统,可以打开rootfs.cpio,然后复制,想粘贴到sd卡的ext分区,但没有root权限,没做好。

我在上面问问题,主要是不知道文件系统的文件内容在哪里。

petalinux 启动测试

做好了上面的准备,就可以sd 卡插入zynq系统的sd 卡开始启动实验了,记得启动选项跳线选择SD启动。

在启动后在home目录下,用vi  建立一个文件a.txt , 输入一行文字:This is a test only然后保存。

然后重新启动,发现文件还在,打开文件,内容也在,这就说明petalinux的rootfs 在sd 卡上了,可以玩其他linux系统一样玩petalinux了。

发布了131 篇原创文章 · 获赞 112 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/leon_zeng0/article/details/104103981
今日推荐