From mboxrd@z Thu Jan 1 00:00:00 1970 From: Danny Milosavljevic Subject: Re: [PATCH] system: grub: Add 'libreboot?' install flag. Date: Wed, 9 Mar 2016 22:37:43 +0100 Message-ID: <20160309223743.5aa31343@scratchpost.org> References: <56b319f8.c7b08c0a.5aff5.fffff356@mx.google.com> <8760y4kvkr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:41416) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1adlnm-0002i9-CD for guix-devel@gnu.org; Wed, 09 Mar 2016 16:37:55 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1adlnj-0008Fl-4L for guix-devel@gnu.org; Wed, 09 Mar 2016 16:37:54 -0500 In-Reply-To: <8760y4kvkr.fsf@gnu.org> 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-bounces+gcggd-guix-devel=m.gmane.org@gnu.org To: Ludovic =?UTF-8?B?Q291cnTDqHM=?= Cc: guix-devel@gnu.org Hi, just adding a few bits of information: It's true that libreboot can (and does) source other grub config files. GRUB should also be able to chainload other bootloaders, however I tried that several times now and it just doesn't work. Is this a known limitation? insmod ahci insmod ext2 insmod part_msdos insmod chain set default=0 set timeout=1 submenu "Load Config" 0 { root=(ahci0,msdos1) source /boot/grub/grub.cfg <--- works unset superusers } menuentry "Chainload GuixSD" { chainloader (ahci0)+1 <-- doesn't work, "unknown payload" } But I can confirm that having /boot/grub/libreboot_grub.cfg makes libreboot use that by default (after a 1 second or so delay where you can choose something else for it to do). Personally, I just use $ ln -s grub.cfg /boot/grub/libreboot_grub.cfg without any other patches instead. Works fine. Also auto-updates. The default libreboot grub config (in flash) is: set prefix=(memdisk)/boot/grub insmod nativedisk insmod ehci insmod ohci insmod uhci insmod usb insmod usbserial_pl2303 insmod usbserial_ftdi insmod usbserial_usbdebug # Serial and keyboard configuration, very important. serial --speed=115200 --unit=0 --word=8 --parity=no --stop=1 terminal_input --append serial terminal_output --append serial terminal_input --append at_keyboard gfxpayload=keep terminal_output --append gfxterm # Default to first option, automatically boot after 1 second set default="0" set timeout=1 # This is useful when using 'cat' on long files on GRUB terminal set pager=1 # # Play a beep on startup # play 480 440 1 insmod jpeg background_image (cbfsdisk)/background.jpg loadfont (memdisk)/dejavusansmono.pf2 keymap ukqwerty menuentry 'Load Operating System' { insmod ahci insmod part_msdos insmod part_gpt for x in (ahci0,1) (ahci0,2) (ahci0,3) (ahci0,4); do if [ -f "$x/grub/libreboot_grub.cfg" ] ; then set root=$x configfile /grub/libreboot_grub.cfg fi if [ -f "$x/boot/grub/libreboot_grub.cfg" ] ; then set root=$x configfile /boot/grub/libreboot_grub.cfg fi done set root='ahci0,1' linux /vmlinuz root=/dev/sda1 rw if [ -f "/initrd.img" ] ; then initrd /initrd.img fi } menuentry 'Parse ISOLINUX menu (ahci0)' { insmod ahci insmod part_msdos insmod part_gpt for x in (ahci0,1) (ahci0,2) (ahci0,3) (ahci0,4); do set root=$x if [ -f "/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /isolinux/isolinux.cfg elif [ -f "/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /syslinux/syslinux.cfg elif [ -f "/boot/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /boot/isolinux/isolinux.cfg elif [ -f "/boot/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /boot/syslinux/syslinux.cfg fi done } menuentry 'Parse ISOLINUX menu (USB)' { insmod usbms insmod part_msdos insmod part_gpt for x in (usb0) (usb0,1) (usb0,2) (usb0,3) (usb0,4); do set root=$x if [ -f "/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /isolinux/isolinux.cfg elif [ -f "/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /syslinux/syslinux.cfg elif [ -f "/boot/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /boot/isolinux/isolinux.cfg elif [ -f "/boot/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /boot/syslinux/syslinux.cfg fi done } menuentry 'Parse ISOLINUX menu (CD/DVD)' { insmod ahci insmod ata insmod iso9660 for x in (ata0) (ahci1); do set root=$x if [ -f "/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /isolinux/isolinux.cfg elif [ -f "/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /syslinux/syslinux.cfg elif [ -f "/boot/isolinux/isolinux.cfg" ] ; then syslinux_configfile -i /boot/isolinux/isolinux.cfg elif [ -f "/boot/syslinux/syslinux.cfg" ] ; then syslinux_configfile -i /boot/syslinux/syslinux.cfg fi done } menuentry 'Switch to grubtest.cfg' { set root='cbfsdisk' configfile (cbfsdisk)/grubtest.cfg } menuentry 'Search for GRUB configuration (grub.cfg) outside of CBFS' { insmod ahci insmod usbms insmod part_msdos insmod part_gpt for x in (ahci0,1) (ahci0,2) (ahci0,3) (ahci0,4) (usb0) (usb0,1) (usb0,2) (usb0,3) (usb0,4); do if [ -f "$x/grub/grub.cfg" ] ; then submenu "Load Config from $x" $x { root=$2 source /grub/grub.cfg unset superusers } fi if [ -f "$x/boot/grub/grub.cfg" ] ; then submenu "Load Config from $x" $x { root=$2 source /boot/grub/grub.cfg unset superusers } fi if [ -f "$x/grub2/grub.cfg" ] ; then submenu "Load Config from $x" $x { root=$2 source /grub2/grub.cfg unset superusers } fi if [ -f "$x/boot/grub2/grub.cfg" ] ; then submenu "Load Config from $x" $x { root=$2 source /boot/grub2/grub.cfg unset superusers } fi done }