def _create(self): """ For 'wic', we already have our build artifacts - we just create filesystems from the artifacts directly and combine them into a partitioned image. """ parts = self._get_parts() self.__image = Image(self.native_sysroot) for p in parts: # as a convenience, set source to the boot partition source # instead of forcing it to be set via bootloader --source if not self.ks.handler.bootloader.source and p.mountpoint == "/boot": self.ks.handler.bootloader.source = p.source fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) for p in parts: # need to create the filesystems in order to get their # sizes before we can add them and do the layout. # Image.create() actually calls __format_disks() to create # the disk images and carve out the partitions, then # self.assemble() calls Image.assemble() which calls # __write_partitition() for each partition to dd the fs # into the partitions. p.prepare(self, self.workdir, self.oe_builddir, self.rootfs_dir, self.bootimg_dir, self.kernel_dir, self.native_sysroot) self.__image.add_partition(int(p.size), p.disk, p.mountpoint, p.source_file, p.fstype, p.label, fsopts=p.fsopts, boot=p.active, align=p.align, no_table=p.no_table, part_type=p.part_type, uuid=p.uuid) if fstab_path: shutil.move(fstab_path + ".orig", fstab_path) self.__image.layout_partitions(self.ptable_format) self.__imgdir = self.workdir for disk_name, disk in self.__image.disks.items(): full_path = self._full_path(self.__imgdir, disk_name, "direct") msger.debug("Adding disk %s as %s with size %s bytes" \ % (disk_name, full_path, disk['min_size'])) disk_obj = fs_related.DiskImage(full_path, disk['min_size']) self.__disks[disk_name] = disk_obj self.__image.add_disk(disk_name, disk_obj) self.__image.create()
def _create(self): """ For 'wic', we already have our build artifacts - we just create filesystems from the artifacts directly and combine them into a partitioned image. """ parts = self._get_parts() self.__image = Image(self.native_sysroot) for part in parts: # as a convenience, set source to the boot partition source # instead of forcing it to be set via bootloader --source if not self.ks.bootloader.source and part.mountpoint == "/boot": self.ks.bootloader.source = part.source fstab_path = self._write_fstab(self.rootfs_dir.get("ROOTFS_DIR")) shutil.rmtree(self.workdir) os.mkdir(self.workdir) for part in parts: # get rootfs size from bitbake variable if it's not set in .ks file if not part.size: # and if rootfs name is specified for the partition image_name = part.rootfs_dir if image_name: # Bitbake variable ROOTFS_SIZE is calculated in # Image._get_rootfs_size method from meta/lib/oe/image.py # using IMAGE_ROOTFS_SIZE, IMAGE_ROOTFS_ALIGNMENT, # IMAGE_OVERHEAD_FACTOR and IMAGE_ROOTFS_EXTRA_SPACE rsize_bb = get_bitbake_var('ROOTFS_SIZE', image_name) if rsize_bb: part.size = int(round(float(rsize_bb))) # need to create the filesystems in order to get their # sizes before we can add them and do the layout. # Image.create() actually calls __format_disks() to create # the disk images and carve out the partitions, then # self.assemble() calls Image.assemble() which calls # __write_partitition() for each partition to dd the fs # into the partitions. part.prepare(self, self.workdir, self.oe_builddir, self.rootfs_dir, self.bootimg_dir, self.kernel_dir, self.native_sysroot) self.__image.add_partition(int(part.size), part.disk, part.mountpoint, part.source_file, part.fstype, part.label, fsopts=part.fsopts, boot=part.active, align=part.align, no_table=part.no_table, part_type=part.part_type, uuid=part.uuid) if fstab_path: shutil.move(fstab_path + ".orig", fstab_path) self.__image.layout_partitions(self.ptable_format) self.__imgdir = self.workdir for disk_name, disk in self.__image.disks.items(): full_path = self._full_path(self.__imgdir, disk_name, "direct") msger.debug("Adding disk %s as %s with size %s bytes" \ % (disk_name, full_path, disk['min_size'])) disk_obj = fs_related.DiskImage(full_path, disk['min_size']) self.__disks[disk_name] = disk_obj self.__image.add_disk(disk_name, disk_obj) self.__image.create()