diff options
Diffstat (limited to 'scripts/lib')
| -rw-r--r-- | scripts/lib/mic/kickstart/custom_commands/partition.py | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/scripts/lib/mic/kickstart/custom_commands/partition.py b/scripts/lib/mic/kickstart/custom_commands/partition.py index 75ad6ad103..4662bdd75c 100644 --- a/scripts/lib/mic/kickstart/custom_commands/partition.py +++ b/scripts/lib/mic/kickstart/custom_commands/partition.py | |||
| @@ -186,6 +186,11 @@ class Wic_PartData(Mic_PartData): | |||
| 186 | rootfs_dir, native_sysroot, | 186 | rootfs_dir, native_sysroot, |
| 187 | pseudo) | 187 | pseudo) |
| 188 | 188 | ||
| 189 | elif self.fstype.startswith("vfat"): | ||
| 190 | return self.prepare_rootfs_vfat(cr_workdir, oe_builddir, | ||
| 191 | rootfs_dir, native_sysroot, | ||
| 192 | pseudo) | ||
| 193 | |||
| 189 | def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir, | 194 | def prepare_rootfs_ext(self, cr_workdir, oe_builddir, rootfs_dir, |
| 190 | native_sysroot, pseudo): | 195 | native_sysroot, pseudo): |
| 191 | """ | 196 | """ |
| @@ -270,6 +275,53 @@ class Wic_PartData(Mic_PartData): | |||
| 270 | self.size = rootfs_size | 275 | self.size = rootfs_size |
| 271 | self.source_file = rootfs | 276 | self.source_file = rootfs |
| 272 | 277 | ||
| 278 | def prepare_rootfs_vfat(self, cr_workdir, oe_builddir, rootfs_dir, | ||
| 279 | native_sysroot, pseudo): | ||
| 280 | """ | ||
| 281 | Prepare content for a vfat rootfs partition. | ||
| 282 | """ | ||
| 283 | image_rootfs = rootfs_dir | ||
| 284 | rootfs = "%s/rootfs_%s.%s" % (cr_workdir, self.label, self.fstype) | ||
| 285 | |||
| 286 | du_cmd = "du -bks %s" % image_rootfs | ||
| 287 | rc, out = exec_cmd(du_cmd) | ||
| 288 | blocks = int(out.split()[0]) | ||
| 289 | |||
| 290 | extra_blocks = self.get_extra_block_count(blocks) | ||
| 291 | |||
| 292 | if extra_blocks < BOOTDD_EXTRA_SPACE: | ||
| 293 | extra_blocks = BOOTDD_EXTRA_SPACE | ||
| 294 | |||
| 295 | blocks += extra_blocks | ||
| 296 | |||
| 297 | msger.debug("Added %d extra blocks to %s to get to %d total blocks" % \ | ||
| 298 | (extra_blocks, self.mountpoint, blocks)) | ||
| 299 | |||
| 300 | # Ensure total sectors is an integral number of sectors per | ||
| 301 | # track or mcopy will complain. Sectors are 512 bytes, and we | ||
| 302 | # generate images with 32 sectors per track. This calculation is | ||
| 303 | # done in blocks, thus the mod by 16 instead of 32. | ||
| 304 | blocks += (16 - (blocks % 16)) | ||
| 305 | |||
| 306 | dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (rootfs, blocks) | ||
| 307 | exec_native_cmd(dosfs_cmd, native_sysroot) | ||
| 308 | |||
| 309 | mcopy_cmd = "mcopy -i %s -s %s/* ::/" % (rootfs, image_rootfs) | ||
| 310 | rc, out = exec_native_cmd(mcopy_cmd, native_sysroot) | ||
| 311 | if rc: | ||
| 312 | msger.error("ERROR: mcopy returned '%s' instead of 0 (which you probably don't want to ignore, use --debug for details)" % rc) | ||
| 313 | |||
| 314 | chmod_cmd = "chmod 644 %s" % rootfs | ||
| 315 | exec_cmd(chmod_cmd) | ||
| 316 | |||
| 317 | # get the rootfs size in the right units for kickstart (Mb) | ||
| 318 | du_cmd = "du -Lbms %s" % rootfs | ||
| 319 | rc, out = exec_cmd(du_cmd) | ||
| 320 | rootfs_size = out.split()[0] | ||
| 321 | |||
| 322 | self.set_size(rootfs_size) | ||
| 323 | self.set_source_file(rootfs) | ||
| 324 | |||
| 273 | def prepare_empty_partition(self, cr_workdir, oe_builddir, native_sysroot): | 325 | def prepare_empty_partition(self, cr_workdir, oe_builddir, native_sysroot): |
| 274 | """ | 326 | """ |
| 275 | Prepare an empty partition. | 327 | Prepare an empty partition. |
| @@ -280,6 +332,9 @@ class Wic_PartData(Mic_PartData): | |||
| 280 | elif self.fstype.startswith("btrfs"): | 332 | elif self.fstype.startswith("btrfs"): |
| 281 | return self.prepare_empty_partition_btrfs(cr_workdir, oe_builddir, | 333 | return self.prepare_empty_partition_btrfs(cr_workdir, oe_builddir, |
| 282 | native_sysroot) | 334 | native_sysroot) |
| 335 | elif self.fstype.startswith("vfat"): | ||
| 336 | return self.prepare_empty_partition_vfat(cr_workdir, oe_builddir, | ||
| 337 | native_sysroot) | ||
| 283 | 338 | ||
| 284 | def prepare_empty_partition_ext(self, cr_workdir, oe_builddir, | 339 | def prepare_empty_partition_ext(self, cr_workdir, oe_builddir, |
| 285 | native_sysroot): | 340 | native_sysroot): |
| @@ -322,6 +377,25 @@ class Wic_PartData(Mic_PartData): | |||
| 322 | 377 | ||
| 323 | return 0 | 378 | return 0 |
| 324 | 379 | ||
| 380 | def prepare_empty_partition_vfat(self, cr_workdir, oe_builddir, | ||
| 381 | native_sysroot): | ||
| 382 | """ | ||
| 383 | Prepare an empty vfat partition. | ||
| 384 | """ | ||
| 385 | fs = "%s/fs.%s" % (cr_workdir, self.fstype) | ||
| 386 | |||
| 387 | blocks = self.size * 1024 | ||
| 388 | |||
| 389 | dosfs_cmd = "mkdosfs -n boot -S 512 -C %s %d" % (fs, blocks) | ||
| 390 | exec_native_cmd(dosfs_cmd, native_sysroot) | ||
| 391 | |||
| 392 | chmod_cmd = "chmod 644 %s" % fs | ||
| 393 | exec_cmd(chmod_cmd) | ||
| 394 | |||
| 395 | self.source_file = fs | ||
| 396 | |||
| 397 | return 0 | ||
| 398 | |||
| 325 | def prepare_swap_partition(self, cr_workdir, oe_builddir, native_sysroot): | 399 | def prepare_swap_partition(self, cr_workdir, oe_builddir, native_sysroot): |
| 326 | """ | 400 | """ |
| 327 | Prepare a swap partition. | 401 | Prepare a swap partition. |
