修改 rootfs (petalinux on zynq)

Do modification to rootfs (petalinux on zynq)

我已经在我的 Zynq 开发板上安装了 Petalinux 2014.4,但是当我启动开发板时,NAND 闪存没有安装。我想知道是否可以通过提取包来更改 rootfs.cpio,然后对 fstab 进行更改,从而恢复 cpio arhcive。如果是,那么仅 运行 petalinux-build 就足够了吗?

谢谢:)

如果您有权访问 ramdisk 映像文件,那么是的,您可以修改其内容。我假设您的图像文件是使用 gzip 压缩的。此外,我假设您使用 U-Boot 并且您的压缩 ramdisk 映像具有 U-Boot 序言。

首先你需要剥离 U-Boot header:

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 的一部分,位于工具目录的相应源中。

我对 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) 之前的空格替换为 Tab.

您可以进入PetaLinux安装目录和运行 components/rootfs/targetroot-inst.sh

阅读$(TARGETINST)命令的帮助

开发使用任何标准发行版时更方便。 Petalinux 可用于创建内核、u-boot 文件。 然后在sd卡上安装一个你喜欢的Linux然后开机。 例如,您可以使用标准工具 apt 来安装软件包。