diff options
| author | Maciej Borzecki <maciej.borzecki@open-rnd.pl> | 2014-07-24 14:11:50 +0200 | 
|---|---|---|
| committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2014-07-25 16:54:27 +0100 | 
| commit | 30266a0be946bd0ce76d6920e7afe840c6c3bf80 (patch) | |
| tree | a4eb983b2df5b093a90fc660e3f052ab0743470f /scripts/lib | |
| parent | e91c0db15db74237606fae96c9b7d21936519a86 (diff) | |
| download | openembedded-core-30266a0be946bd0ce76d6920e7afe840c6c3bf80.tar.gz openembedded-core-30266a0be946bd0ce76d6920e7afe840c6c3bf80.tar.bz2 openembedded-core-30266a0be946bd0ce76d6920e7afe840c6c3bf80.zip | |
wic: squashfs partition support
It is possible to instruct wic to create a squashfs partition by setting
--fstype=squashfs in *.wks. For now this is only useable for rootfs
partitions (note that you must have squashfs support in the kernel). An
attempt to create an empty partition will produce a warning.
Signed-off-by: Maciej Borzecki <maciej.borzecki@open-rnd.pl>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'scripts/lib')
| -rw-r--r-- | scripts/lib/mic/kickstart/custom_commands/partition.py | 61 | 
1 files changed, 61 insertions, 0 deletions
| diff --git a/scripts/lib/mic/kickstart/custom_commands/partition.py b/scripts/lib/mic/kickstart/custom_commands/partition.py index 06f29a9885..3b652b399c 100644 --- a/scripts/lib/mic/kickstart/custom_commands/partition.py +++ b/scripts/lib/mic/kickstart/custom_commands/partition.py @@ -25,6 +25,8 @@  #  import shutil +import os +import tempfile  from pykickstart.commands.partition import *  from mic.utils.oe.misc import * @@ -192,6 +194,10 @@ class Wic_PartData(Mic_PartData):              return self.prepare_rootfs_vfat(cr_workdir, oe_builddir,                                              rootfs_dir, native_sysroot,                                              pseudo) +        elif self.fstype.startswith("squashfs"): +            return self.prepare_rootfs_squashfs(cr_workdir, oe_builddir, +                                                rootfs_dir, native_sysroot, +                                                pseudo)      def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir,                             native_sysroot, pseudo): @@ -324,6 +330,28 @@ class Wic_PartData(Mic_PartData):          self.set_size(rootfs_size)          self.set_source_file(rootfs) +    def prepare_rootfs_squashfs(self, cr_workdir, oe_builddir, rootfs_dir, +                                native_sysroot, pseudo): +        """ +        Prepare content for a squashfs rootfs partition. +        """ +        image_rootfs = rootfs_dir +        rootfs = "%s/rootfs_%s.%s" % (cr_workdir, self.label ,self.fstype) + +        squashfs_cmd = "mksquashfs %s %s -noappend" % \ +                       (image_rootfs, rootfs) +        rc, out = exec_native_cmd(pseudo + squashfs_cmd, native_sysroot) + +        # get the rootfs size in the right units for kickstart (Mb) +        du_cmd = "du -Lbms %s" % rootfs +        rc, out = exec_cmd(du_cmd) +        rootfs_size = out.split()[0] + +        self.size = rootfs_size +        self.source_file = rootfs + +        return 0 +      def prepare_empty_partition(self, cr_workdir, oe_builddir, native_sysroot):          """          Prepare an empty partition. @@ -337,6 +365,9 @@ class Wic_PartData(Mic_PartData):          elif self.fstype.startswith("vfat"):              return self.prepare_empty_partition_vfat(cr_workdir, oe_builddir,                                                       native_sysroot) +        elif self.fstype.startswith("squashfs"): +            return self.prepare_empty_partition_squashfs(cr_workdir, oe_builddir, +                                                         native_sysroot)      def prepare_empty_partition_ext(self, cr_workdir, oe_builddir,                                      native_sysroot): @@ -398,6 +429,36 @@ class Wic_PartData(Mic_PartData):          return 0 +    def prepare_empty_partition_squashfs(self, cr_workdir, oe_builddir, +                                         native_sysroot): +        """ +        Prepare an empty squashfs partition. +        """ +        msger.warning("Creating of an empty squashfs %s partition was attempted. " \ +                      "Proceeding as requested." % self.mountpoint) + +        fs = "%s/fs_%s.%s" % (cr_workdir, self.label, self.fstype) + +        # it is not possible to create a squashfs without source data, +        # thus prepare an empty temp dir that is used as source +        tmpdir = tempfile.mkdtemp() + +        squashfs_cmd = "mksquashfs %s %s -noappend" % \ +                       (tmpdir, fs) +        rc, out = exec_native_cmd(squashfs_cmd, native_sysroot) + +        os.rmdir(tmpdir) + +        # get the rootfs size in the right units for kickstart (Mb) +        du_cmd = "du -Lbms %s" % fs +        rc, out = exec_cmd(du_cmd) +        fs_size = out.split()[0] + +        self.size = fs_size +        self.source_file = fs + +        return 0 +      def prepare_swap_partition(self, cr_workdir, oe_builddir, native_sysroot):          """          Prepare a swap partition. | 
