genode/tool/run/image/uefi
Christian Helmuth 7d4174bceb run: disable heuristics for apple gpt in parted
Newer revisions of parted require special privileges due to use of the
dmidecode tool, which logs permission errors to standard error. In these
cases parted still succeeds with its operation, so just ignore the
jabbering and prevent expect to exit.
2018-06-12 12:11:45 +02:00

50 lines
1.3 KiB
Plaintext

source [genode_dir]/tool/run/grub2.inc
##
# Create GPT disk image with UEFI boot loaders and content of the run directory
#
# \param --image-uefi-size disk size in MiB
#
proc image_uefi_size { } { return [get_cmd_arg --image-uefi_size 0] }
#
# Disable parted heuristics for Apple to prevent error messages
#
set ::env(PARTED_GPT_APPLE) 0
##
# Create uefi image
#
proc run_image { {unused ""} } {
requires_installation_of parted
requires_installation_of mkfs.vfat
requires_installation_of mcopy
set run_size [expr [regsub {\s.*} [exec du -sm [run_dir]] {}]]
if {[image_uefi_size] > 0} {
set disk_size [image_uefi_size]
} else {
set disk_size [expr $run_size + 1]
}
# generate head space designated for the partition table
exec dd if=/dev/zero of=[run_dir].header count=34 bs=512 2>/dev/null
exec dd if=/dev/zero of=[run_dir].partition bs=1M count=$disk_size 2>/dev/null
exec mkfs.vfat -n GENODE [run_dir].partition
# copy content to disk image
foreach file [exec ls [run_dir]] {
exec mcopy -i [run_dir].partition -s [run_dir]/$file ::
}
exec cat [run_dir].header [run_dir].partition > [run_dir].img
exec -ignorestderr parted -a none -s [run_dir].img -- mklabel gpt mkpart ESP fat32 34s [expr $disk_size * 1024 * 1024 / 512]s set 1 boot on
exec rm -f [run_dir].header [run_dir].partition
}