From 719d093c40e4c259a4c97d6c8a5efb5aeef5fd38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Henrique=20Ferreira=20de=20Freitas?= Date: Sat, 29 Mar 2014 00:12:08 -0300 Subject: wic: Extend --rootfs-dir to connect rootfs-dirs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The wic command-line param --rootfs-dir gets generalized to support multiple directories. Each '--rootfs-dir' could be connected using a special string, that should be present in .wks. I.e: wic create ... --rootfs-dir rootfs1=/some/rootfs/dir \ --rootfs-dir rootfs2=/some/other/rootfs/dir part / --source rootfs --rootfs-dir="rootfs1" --ondisk sda --fstype=ext3 \ --label primary --align 1024 part /standby --source rootfs --rootfs-dir="rootfs2" \ --ondisk sda --fstype=ext3 --label secondary --align 1024 The user could use harded-code directory instead of connectors. Like this: wic create ... hard-coded-path.wks -r /some/rootfs/dir part / --source rootfs --ondisk sda --fstype=ext3 --label primary --align 1024 part /standby --source rootfs --rootfs-dir=/some/rootfs/dir \ --ondisk sda --fstype=ext3 --label secondary --align 1024 Signed-off-by: João Henrique Ferreira de Freitas Signed-off-by: Richard Purdie --- scripts/lib/mic/imager/direct.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'scripts/lib/mic/imager/direct.py') diff --git a/scripts/lib/mic/imager/direct.py b/scripts/lib/mic/imager/direct.py index ac63c38903..2cf4c8de95 100644 --- a/scripts/lib/mic/imager/direct.py +++ b/scripts/lib/mic/imager/direct.py @@ -84,17 +84,19 @@ class DirectImageCreator(BaseImageCreator): self.hdddir = hdddir self.staging_data_dir = staging_data_dir - def __write_fstab(self): + def __write_fstab(self, image_rootfs): """overriden to generate fstab (temporarily) in rootfs. This is called from mount_instroot, make sure it doesn't get called from BaseImage.mount()""" + if image_rootfs is None: + return None - image_rootfs = self.rootfs_dir + fstab = image_rootfs + "/etc/fstab" + if not os.path.isfile(fstab): + return None parts = self._get_parts() - fstab = image_rootfs + "/etc/fstab" - self._save_fstab(fstab) fstab_lines = self._get_fstab(fstab, parts) self._update_fstab(fstab_lines, parts) @@ -126,6 +128,8 @@ class DirectImageCreator(BaseImageCreator): def _restore_fstab(self, fstab): """Restore the saved fstab in rootfs""" + if fstab is None: + return shutil.move(fstab + ".orig", fstab) def _get_fstab(self, fstab, parts): @@ -235,8 +239,6 @@ class DirectImageCreator(BaseImageCreator): self.__instimage = PartitionedMount(self._instroot) - fstab = self.__write_fstab() - for p in parts: # as a convenience, set source to the boot partition source # instead of forcing it to be set via bootloader --source @@ -263,6 +265,9 @@ class DirectImageCreator(BaseImageCreator): p.prepare(self, self.workdir, self.oe_builddir, self.rootfs_dir, self.bootimg_dir, self.kernel_dir, self.native_sysroot) + fstab = self.__write_fstab(p.get_rootfs()) + self._restore_fstab(fstab) + self.__instimage.add_partition(int(p.size), p.disk, p.mountpoint, @@ -273,7 +278,6 @@ class DirectImageCreator(BaseImageCreator): boot = p.active, align = p.align, part_type = p.part_type) - self._restore_fstab(fstab) self.__instimage.layout_partitions(self._ptable_format) self.__imgdir = self.workdir -- cgit v1.2.3