wic: use sparse_copy to copy partitions

Copied partition images into final partitioned image using
sparse_copy API. This method preserves sparseness of the
final image. It also makes wic much faster, as unmapped
blocks of the partition images are not copied.

[YOCTO #9099]

(From OE-Core rev: 7f21427aca5df81d8881027fd98f71b821cf31d7)

Signed-off-by: Ed Bartosh <ed.bartosh@linux.intel.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
Ed Bartosh
2016-04-28 13:58:10 +03:00
committed by Richard Purdie
parent 4b971568e1
commit db9557cc46

View File

@@ -22,6 +22,7 @@ import os
from wic import msger
from wic.utils.errors import ImageError
from wic.utils.oe.misc import exec_cmd, exec_native_cmd
from wic.filemap import sparse_copy
# Overhead of the MBR partitioning scheme (just one sector)
MBR_OVERHEAD = 1
@@ -343,10 +344,7 @@ class Image(object):
source = part['source_file']
if source:
# install source_file contents into a partition
cmd = "dd if=%s of=%s bs=%d seek=%d count=%d conv=notrunc" % \
(source, image_file, self.sector_size,
part['start'], part['size'])
exec_cmd(cmd)
sparse_copy(source, image_file, part['start'] * self.sector_size)
msger.debug("Installed %s in partition %d, sectors %d-%d, "
"size %d sectors" % \