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 zcma)Bg;!MF+r9Ki3rIHuBHhv;4FXalH8j$VbR*rNbPm!W-QCh9B_$1_bW8m1`xkuQ ztUKr4bz`mbJm;Lf_p?u=nyNewCOIYm062;YG8zDYL2ic*k)wczWifpz8_% zScL!mk${XWQt&3mM@1D`j7>CZe1M4#mhK4vR6U9^Z?rsr{xw)~CDd+xQkDKPyXq3A zP^+BqL2)pJL^*aV1?94*`bccT?K)g?)o z*pNtS=CKR+KCGvCl>Iuib!rS0syQ(Z6?%k(co;gNqC$XdL1)Cj@6SDY;Vz-Yddbr8 zMk~IV#YI6Op=W{n5*Qv6jHz%$5(6Z-x~jAD@w)5D&(E)e_77o*Uob5sI56QCX8c=@ zFSSAn_^59dJq~6H`@-?Cg#S`dQB_t27~#V=oDbM%J3U_ic!T`RZRX&|$Oxtob*$XK zyE`rp2M34N+{^Uv6B$U*4w^8WXpae&>l)kkyl?WH=)>*I9~%LztpPf92TKC)yj z8y+^cva&KgDkNW$RuXFI>zf5v_&O$w3wIfIT5Mh{%JHR3>)GEgF{a0)Za$5F>o6wm zge=KS9^3AF>*6DV22jV}-|po)Iy!1*qCn_$Qzo-+`?pTNYFJ;$+2GemdmiY zU$=gZvq+U5N4thV*px~7`>&dOTqDH@G2ZjD#M^Eiyng<-D0aST8&WIu%4fU!Pe3s= zJf?t6F-X$b)HL{`i>GIr67B(e3iM!eAi9>VslL8{D>7I^67t}C_K7)lYH0ux!@1JV z&`qkOz++8!%^ZTiyNKpm_f9o4&iH}g;kKUt&ImgYsHuZ}Cq)>P9ueOSMH)N@&_nh| zokMSB2isaOOo5>K+(Wxi3}Mk(D_Q|^bjU>y-!R_bHt)A|*Q+j(q`o2nf=Fd$Rf1h| zGV1q4vQ0t|z)UwKavSKbvz#Q74ayxqbMk(H6v!O8h9{0Md)gg@vK_0huMbqW+^*0o zTwNJcN!3@=ZqaRj%^Wu>@vr9Po6(KqlDVDcs^OG_D6RB%$T})=c|rgx(M1K-4&Pgi z*?Ra%vD_qkFR1;~aTXrC@r7>wvuyMi6>^Oyw4DcB9pW%7?5D$JmU;ITa z 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 ICS@G_Kg^EJ!vFvP 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