guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Non-graphical GRUB configuration


From: Leo Famulari
Subject: Non-graphical GRUB configuration
Date: Sun, 2 Apr 2017 17:06:20 -0400
User-agent: Mutt/1.8.0 (2017-02-23)

On Sun, Apr 02, 2017 at 12:31:19PM -0400, myglc2 wrote:
> I gather you are focused on KVM deployment, so this may be off-
> topic. But FWIW, the patch that I use to run GRUB menus both locally on
> the console and over IPMI SOL (serial over LAN) on an headless ASRock
> server (MT-c224 w/ ASPEED 2300 BMC controller) is attached below.

I think we can make it work on KVM and bare metal in the same commit :)

> The important point is that 'terminal_output console' displays grub
> menus on _both_ the local console and via serial ... but ... grub does
> not receive the serial inputs ... unless ... 'terminal_input serial
> console' is also specified.

Okay, but your diff only selects the "console" terminal_output. Is that
because the native console is accessed over the serial line? Or should
it be 'terminal_output console serial'?

> diff --git a/gnu/system/grub.scm b/gnu/system/grub.scm
> index 4f9bde6a6..8199f6f0b 100644
> --- a/gnu/system/grub.scm
> +++ b/gnu/system/grub.scm
> @@ -199,7 +199,8 @@ system string---e.g., \"x86_64-linux\"."
>      insmod vga
>    fi
>  
> -  terminal_output gfxterm
> +  serial --unit=0 --speed=115200
> +  terminal_input serial console; terminal_output console
>  "
>          ""))
>  

Based on the GRUB manual [0], how about this plan?

We'd add these fields to (grub-configuration): 

terminal-outputs: One or more symbols: console, serial, gfxterm,
ofconsole, vga_text. Default gfxterm.

terminal-inputs: One or more symbols: console, serial, ofconsole,
at_keyboard,usb_keyboard. Default unset.

serial-unit: An integer from {0,1,2,3}, default 0
serial-port: ??? I don't know which values are accepted
serial-speed: GRUB default is 9600. Should this be an arbitrary
integer, or should we offer a list of values?
serial-word: An integer from {5,6,7,8}, default 8
serial-stop: An integer from {1,2}, default 1
serial-parity: A symbol from {no, odd, even}, default no

They would correspond to the GRUB configuration keys
GRUB_TERMINAL_OUTPUT, GRUB_TERMINAL_INPUT, and GRUB_SERIAL_COMMAND,
respectively. [0]

If 'terminal-inputs' or 'serial-*' are unset, we do what we do now:
nothing. If 'terminal-outputs' is unset, we also do the same thing we
now, which is set it to gfxterm.

If any of them are set, we'd insert the corresponding text into the
generated grub.cfg.

If terminal-outputs does not include the symbol 'gfxterm', we'd disable
the "setup_gfxterm" function.

We can use the `grub-script-check` program to check the syntax of the
generated grub.cfg.

[0]
https://www.gnu.org/software/grub/manual/html_node/Simple-configuration.html
https://www.gnu.org/software/grub/manual/html_node/terminal_005foutput.html
https://www.gnu.org/software/grub/manual/html_node/terminal_005finput.html
https://www.gnu.org/software/grub/manual/html_node/serial.html

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]