source [genode_dir]/tool/run/grub2.inc source [genode_dir]/tool/run/shim.inc ## # Create GPT disk image with UEFI boot loaders and content of the run directory # # \param --image-uefi_size disk size in MiB # \param --image-disk_shim nickname of certificate to use to sign GRUB2 # proc image_uefi_size { } { return [get_cmd_arg --image-uefi_size 0] } proc image_uefi_shim { } { return [get_cmd_arg --image-uefi_shim ""] } ## # Create uefi image # proc run_image { } { set run_size [expr [regsub {\s.*} [exec du -smL [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 [installed_command mkfs.vfat] -n GENODE [run_dir].partition # copy content to disk image foreach file [exec ls [run_dir]] { exec [installed_command mcopy] -i [run_dir].partition -s [run_dir]/$file :: } exec cat [run_dir].header [run_dir].partition > [run_dir].img exec [installed_command sgdisk] --set-alignment=1 --largest-new=1 --typecode=1:EF00 [run_dir].img 2> /dev/null exec rm -f [run_dir].header [run_dir].partition } proc install_uefi_bootloader_to_run_dir { } { exec mkdir -p [run_dir]/efi/boot exec cp [get_grub2_dir]/boot/grub2/grub2_32.efi [run_dir]/efi/boot/bootia32.efi exec cp [get_grub2_dir]/boot/grub2/grub2_64.efi [run_dir]/efi/boot/bootx64.efi if {[image_uefi_shim] != ""} { setup_shim_and_sign_grub2 [image_uefi_shim] [run_dir]/efi/boot } exec mkdir -p [run_dir]/boot/grub exec cp [genode_dir]/tool/boot/bender [run_dir]/boot/bender exec cp [genode_dir]/tool/boot/boot.png [run_dir]/boot/boot.png exec cp [get_grub2_dir]/boot/font.pf2 [run_dir]/boot/font.pf2 }