2015-01-08 21:08:48 +00:00
|
|
|
##
|
|
|
|
# Create disk image with contents of the run directory
|
|
|
|
#
|
|
|
|
# \param --image-disk-size disk size in MiB
|
|
|
|
#
|
|
|
|
|
|
|
|
source [genode_dir]/tool/run/iso.inc
|
|
|
|
|
|
|
|
|
|
|
|
proc image_disk_size { } { return [get_cmd_arg --image-disk-size 0] }
|
|
|
|
|
|
|
|
|
|
|
|
##
|
|
|
|
# Create disk image with the content of the run directory
|
|
|
|
#
|
|
|
|
proc run_image { {unused ""} } {
|
|
|
|
|
|
|
|
requires_installation_of parted
|
|
|
|
requires_installation_of resize2fs
|
|
|
|
requires_installation_of fallocate
|
|
|
|
|
|
|
|
set grub_img "[genode_dir]/tool/grub2-head.img"
|
|
|
|
set disk_img "[run_dir].img"
|
|
|
|
set part1_img "[run_dir]-part1.img"
|
2015-02-28 11:42:22 +00:00
|
|
|
set run_size [expr [regsub {\s.*} [exec du -sm [run_dir]] {}] + 8]
|
2015-01-08 21:08:48 +00:00
|
|
|
if {[image_disk_size] > 0} {
|
|
|
|
set disk_size [image_disk_size]
|
|
|
|
} else {
|
|
|
|
set disk_size $run_size
|
|
|
|
}
|
|
|
|
set part1_size [expr $disk_size - 1]MiB
|
|
|
|
|
|
|
|
# extract and resize partition image
|
|
|
|
exec dd if=$grub_img of=$part1_img bs=1M skip=1 2>/dev/null
|
|
|
|
exec fallocate -l $part1_size $part1_img
|
|
|
|
exec resize2fs $part1_img 2>/dev/null
|
|
|
|
|
|
|
|
# populate partition with binaries
|
|
|
|
exec [genode_dir]/tool/rump -F ext2fs -p [run_dir] $part1_img
|
|
|
|
|
|
|
|
# merge final image from GRUB2 head and partition
|
|
|
|
exec dd if=$grub_img of=$disk_img status=noxfer bs=1M count=1 2>/dev/null
|
|
|
|
exec dd if=$part1_img of=$disk_img status=noxfer bs=1M seek=1 2>/dev/null
|
|
|
|
exec parted -s $disk_img -- rm 1 mkpart primary 2048s -1s set 1 boot on
|
|
|
|
|
|
|
|
exec rm -f $part1_img
|
|
|
|
|
|
|
|
puts "Created image file $disk_img ($disk_size MiB)"
|
|
|
|
}
|