guix-devel
[Top][All Lists]
Advanced

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

Re: [PATCH] system: grub: Add 'libreboot?' install flag.


From: Danny Milosavljevic
Subject: Re: [PATCH] system: grub: Add 'libreboot?' install flag.
Date: Wed, 9 Mar 2016 22:37:43 +0100

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
}




reply via email to

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