Hello, I added a feature to wic. It can create a partition from a subdirectory of an image and preserves permissions, the owner and the group of the files. Here's an exemple on how I use it in a wks file to create a different partition for the home directory.
part /home --source rootfs --rootfs-dir=core-image-base:/home --size 500 --ondisk mmcblk --fstype=ext4 --label APPS --align 4096 Here is the patch. diff --git a/scripts/lib/wic/partition.py b/scripts/lib/wic/partition.py index 3da7e23..580abcb 100644 --- a/scripts/lib/wic/partition.py +++ b/scripts/lib/wic/partition.py @@ -202,7 +202,7 @@ class Partition(): (self.mountpoint, self.size, self.fixed_size)) def prepare_rootfs(self, cr_workdir, oe_builddir, rootfs_dir, - native_sysroot, real_rootfs = True): + native_sysroot, real_rootfs = True, folder = ""): """ Prepare content for a rootfs partition i.e. create a partition and fill it from a /rootfs dir. @@ -241,7 +241,7 @@ class Partition(): prefix = "ext" if self.fstype.startswith("ext") else self.fstype method = getattr(self, "prepare_rootfs_" + prefix) - method(rootfs, oe_builddir, rootfs_dir, native_sysroot, pseudo) + method(rootfs, oe_builddir, rootfs_dir + folder, native_sysroot, pseudo) self.source_file = rootfs # get the rootfs size in the right units for kickstart (kB) diff --git a/scripts/lib/wic/plugins/source/rootfs.py b/scripts/lib/wic/plugins/source/rootfs.py index aec720f..8861156 100644 --- a/scripts/lib/wic/plugins/source/rootfs.py +++ b/scripts/lib/wic/plugins/source/rootfs.py @@ -81,6 +81,13 @@ class RootfsPlugin(SourcePlugin): raise WicError("Couldn't find --rootfs-dir=%s connection or " "it is not a valid path, exiting" % part.rootfs_dir) + # You can select the subfolder of an image by using ":" to separate the image name and the sub folder name. + # i.e. --rootfs-dir=core-image-base:/home + folder = "" + folder_index = rootfs_dir.find(":") + if folder_index >= 0: + folder = rootfs_dir[folder_index + 1:] + rootfs_dir = rootfs_dir[:folder_index] part.rootfs_dir = cls.__get_rootfs_dir(rootfs_dir) new_rootfs = None @@ -123,4 +130,4 @@ class RootfsPlugin(SourcePlugin): shutil.rmtree(full_path) part.prepare_rootfs(cr_workdir, oe_builddir, - new_rootfs or part.rootfs_dir, native_sysroot) + new_rootfs or part.rootfs_dir, native_sysroot, True, folder) I hope you will consider adding it to wic. Thank you. -- Patrick Gauvin
-- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core