From 49792211521d859931bff3a78ad49273e16c1c4c Mon Sep 17 00:00:00 2001 From: Alexander Boettcher Date: Wed, 23 May 2018 00:43:43 +0200 Subject: [PATCH] tool: support to use graphical grub2 --- repos/base/ports/grub2.hash | 2 +- repos/base/ports/grub2.port | 2 +- tool/boot/boot.png | Bin 0 -> 7714 bytes tool/run/boot_dir/nova | 28 ++++++++++++++++++++++++++++ tool/run/image/disk | 3 ++- 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 tool/boot/boot.png diff --git a/repos/base/ports/grub2.hash b/repos/base/ports/grub2.hash index d724eb4f2..ad3a4940c 100644 --- a/repos/base/ports/grub2.hash +++ b/repos/base/ports/grub2.hash @@ -1 +1 @@ -bf7448a8ecabfa70a5f9ba3f82f42c04b1052097 +e1b6f0ea55b716ef8548fbf416ec503a5d31a09d diff --git a/repos/base/ports/grub2.port b/repos/base/ports/grub2.port index 60c2a2ebc..67161c80d 100644 --- a/repos/base/ports/grub2.port +++ b/repos/base/ports/grub2.port @@ -3,7 +3,7 @@ VERSION := git DOWNLOADS := g2fg.git URL(g2fg) := https://github.com/alex-ab/g2fg.git -REV(g2fg) := e6095dd34d71cb180271f47a7bbf20a813102a28 +REV(g2fg) := cf35a6e5dc35a9b1961f66cd37cb1d4c23309832 DIR(g2fg) := boot default: $(DOWNLOADS) diff --git a/tool/boot/boot.png b/tool/boot/boot.png new file mode 100644 index 0000000000000000000000000000000000000000..ec695877d151281593ac0ff6f34c220b7d3058a3 GIT binary patch literal 7714 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 literal 0 HcmV?d00001 diff --git a/tool/run/boot_dir/nova b/tool/run/boot_dir/nova index 25bb3ff70..368ec9002 100644 --- a/tool/run/boot_dir/nova +++ b/tool/run/boot_dir/nova @@ -69,6 +69,11 @@ proc run_boot_dir {binaries} { if {[have_include "image/disk"]} { 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 + if {[file exists /boot/grub/unicode.pf2]} { + # needed in graphical menu with non-scrampled characters + # exec cp /boot/grub/unicode.pf2 [run_dir]/boot/grub/unicode.pf2 + } } if {[have_include "image/iso"]} { @@ -84,6 +89,12 @@ proc run_boot_dir {binaries} { 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 + if {[file exists /boot/grub/unicode.pf2]} { + # needed in graphical menu with non-scrampled characters + # exec cp /boot/grub/unicode.pf2 [run_dir]/boot/grub/unicode.pf2 + } + set serial_bender_opt "serial_fallback" } @@ -91,9 +102,26 @@ proc run_boot_dir {binaries} { # Generate GRUB2 config file # set fh [open "[run_dir]/boot/grub/grub.cfg" "WRONLY CREAT TRUNC"] + + # If timeout != 0 is used and gfxterm, enable and add unicode.pf2 (see above) + # puts $fh "loadfont /boot/grub/unicode.pf2" puts $fh "set timeout=0" + # tell grub2 to prefer 32bit framebuffer resolution puts $fh "set gfxpayload=\"0x0x32\"" + + if {[have_include image/uefi]} { + puts $fh "insmod gfxterm" + puts $fh "terminal_output gfxterm" + puts $fh "insmod gfxterm_background" + puts $fh "insmod png" + puts $fh "background_image -m center /boot/boot.png" + } + + # set this to get text console instead of graphical console + # puts $fh "terminal_input console" + # puts $fh "terminal_output console" + puts $fh "menuentry 'Genode on NOVA' {" puts $fh " insmod multiboot2" puts $fh " insmod gzio" diff --git a/tool/run/image/disk b/tool/run/image/disk index 71b91b9ea..6eabb947f 100644 --- a/tool/run/image/disk +++ b/tool/run/image/disk @@ -32,7 +32,7 @@ proc run_image { {unused ""} } { if {[image_disk_size] > 0} { set disk_size_kb [expr [image_disk_size] * 1024 * 1024] } else { - set disk_size_kb [expr ($size_run + 256 + 128) / 32 * 32] + set disk_size_kb [expr ($size_run + 512) / 32 * 32] } # setup partition with content @@ -75,6 +75,7 @@ proc run_image { {unused ""} } { # create partition table entry pointing to the content catch { exec parted -a none [run_dir].img -- mkpart Fix GENODE ext2 [expr $first_sector]s ${last_sector}s } + exec parted [run_dir].img -s 'name 3 GENODE' # create hybrid MBR exec echo -e "r\no\nh\n1\nn\n\ny\nn\no\nw\ny\n" | gdisk [run_dir].img