[英]Do modification to rootfs (petalinux on zynq)
我已经在Zynq板上安装了Petalinux 2014.4,但是在启动该板时未安装NAND闪存。 我想知道是否有可能通过解压缩软件包来更改rootfs.cpio,然后对fstab进行更改,从而使cpio恢复。 如果是,那么在那之后只运行petalinux-build就足够了吗?
谢谢 :)
如果可以访问ramdisk映像文件,则可以,您可以修改其内容。 我假设您的图片文件是使用gzip压缩的。 此外,我假设您使用U-Boot,并且压缩的ramdisk映像具有U-Boot序言。
首先,您需要剥离U-Boot标头:
dd bs=64 skip=1 if=uramdisk.cpio.gz of=ramdisk.cpio.gz
接下来,我们解压缩:
gunzip ramdisk.cpio.gz
最后,我们提取CPIO存档:
mkdir ramdisk && cd ramdisk
cpio -i -F ../ramdisk.cpio
您可以以root用户身份执行后一个命令,或者在再次归档之前将文件所有权更改回root用户。 这是启动您的init程序所必需的。 修改后,您可以再次创建图像文件:
find . | cpio -o -H newc | gzip -9 > ../ramdisk_new.cpio.gz
mkimage -A arm -T ramdisk -C gzip -d ramdisk_new.cpio.gz uramdisk.image.gz
注意,mkimage工具是U-Boot的一部分,位于tools目录中的相应源中。
我对PetaLinux不熟悉,所以我不知道这个一般答案是否适合您的需求和期望。
使用cpio打包工具是可以的。 但是,每次更新rootfs时都需要完成此操作。
您也可以使用PetaLinux内置工具来完成此操作。 设置完毕后,无需其他步骤。
创建应用程序:
petalinux-create -t apps -n fstab_mount_sd --template install --enable
在创建的components/apps/fstab_mount_sd
目录中,修改Makefile
以将内容追加到当前fstab文件中,或将原始fstab替换为您的fstab文件版本。
这是fstab_mount_sd Makefile的示例:
install:
$(TARGETINST) -a "/dev/mmcblk0p1 /media/card auto defaults,sync,noauto 0 0" /etc/fstab
$(TARGETINST) -a
表示将以下文本附加到目标文件。
注意:makefile中的命令应以Tab开头。 用制表符替换上一个代码块中$(TARGETINST)
之前的空格。
您可以通过转到PetaLinux安装目录并运行components/rootfs/targetroot-inst.sh
来阅读$(TARGETINST)
命令的帮助。
使用任何标准发行版进行开发时都更加方便。 Petalinux可用于创建内核u-boot文件。 然后在SD卡上安装您喜欢的Linux并启动它。 您可以使用标准的工具来安装软件包。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.