From mboxrd@z Thu Jan 1 00:00:00 1970 From: myglc2 Subject: Re: Non-graphical GRUB configuration Date: Sun, 02 Apr 2017 20:16:08 -0400 Message-ID: <861stany5z.fsf@gmail.com> References: <20170331125956.rhlwjg45vwo3pgwh@abyayala> <20170331234321.GA10435@jasmine> <20170401072740.kgzz3zbtikn5hpg5@abyayala> <20170401202901.GA10480@jasmine> <86vaqmwz3c.fsf@gmail.com> <20170402210620.GA26945@jasmine> Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:54062) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cupfJ-0008DT-Nk for guix-devel@gnu.org; Sun, 02 Apr 2017 20:16:15 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cupfG-0006tQ-GO for guix-devel@gnu.org; Sun, 02 Apr 2017 20:16:13 -0400 Received: from mail-qk0-x241.google.com ([2607:f8b0:400d:c09::241]:34581) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cupfG-0006tK-BZ for guix-devel@gnu.org; Sun, 02 Apr 2017 20:16:10 -0400 Received: by mail-qk0-x241.google.com with SMTP id 10so17419628qkh.1 for ; Sun, 02 Apr 2017 17:16:10 -0700 (PDT) In-reply-to: <20170402210620.GA26945@jasmine> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Leo Famulari Cc: guix-devel@gnu.org On 04/02/2017 at 21:06 Leo Famulari writes: > 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'? I grant you it seems odd, but with 'terminal_output console serial', the grub output on the serial line is "garbled" in the sense that each line is "doubled". Meanwhile, the appearance on the local console (on the attached VGA display) is fine. I don't know if this behavior is peculiar to this motherboard, or if this is typical. >> 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. Yes > terminal-inputs: One or more symbols: console, serial, ofconsole, > at_keyboard,usb_keyboard. Default unset. Yes > serial-unit: An integer from {0,1,2,3}, default 0 yes > serial-port: ??? I don't know which values are accepted I don't think this is required. > serial-speed: GRUB default is 9600. Should this be an arbitrary > integer, or should we offer a list of values? An integer is probably OK. > 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 I think you can skip these. > 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 This seems very fine to me! Thanks - George