U-Boot: extlinux.conf boot menu support appears to be broken by commit 739e8361f3fe78038251216df6096a32bc2d5839

Manuel Traut manuel.traut at mt.com
Tue Jan 17 09:39:09 CET 2023


Hi Karsten,

thanks for your report.

Can you test with the attached patch?
I do not have access to a hardware today, but I will test it tomorrow.

Regards
Manuel

Am 16.01.2023 um 19:50 hat Karsten Merker geschrieben:
> Hello,
> 
> it looks like the following commit has broken the extlinux.conf
> boot menu support in U-Boot:
> 
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> commit 739e8361f3fe78038251216df6096a32bc2d5839
> Author: Manuel Traut <manuel.traut at mt.com>
> Date:   Fri Nov 18 09:00:27 2022 +0100
> 
>     distro/pxeboot: Handle prompt variable
>     
>     Regarding the documentation found here:
>     https://github.com/u-boot/u-boot/blob/master/common/menu.c#L347
>     
>     If both timeout and prompt is set to 0 the default entry shall
>     be booted immediately. However the current behaviour is that
>     the prompt is shown (tested with distroboot) until the user
>     selects an entry (no timeout).
>     
>     This change implements a behaviour as documented. It was tested
>     with distroboot.
>     
>     Signed-off-by: Manuel Traut <manuel.traut at mt.com>
>     Reviewed-by: Simon Glass <sjg at chromium.org>
>     Reviewed-by: Simon Glass <sjg at chromium.org>
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> 
> Since the commit above, a system with the following
> /boot/extlinux/extlinux.conf (which sets timeout to 50)
> immediately boots the first entry in the config without
> displaying a boot menu.  According to the description, that
> should only happen if both prompt and timeout are set to zero in
> the config, but it also happens with timeout set to a non-zero
> value as in the config below:
> 
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> ## /boot/extlinux/extlinux.conf
> ##
> ## IMPORTANT WARNING
> ##
> ## The configuration of this file is generated automatically.
> ## Do not edit this file manually, use: u-boot-update
> 
> default l0
> menu title U-Boot menu
> prompt 0
> timeout 50
> 
> 
> label l0
> 	menu label Debian GNU/Linux bookworm/sid 6.1.0-1-riscv64
> 	linux /boot/vmlinux-6.1.0-1-riscv64
> 	initrd /boot/initrd.img-6.1.0-1-riscv64
> 	
> 	
> 	append root=/dev/vda1 rw noquiet
> 
> label l0r
> 	menu label Debian GNU/Linux bookworm/sid 6.1.0-1-riscv64 (rescue target)
> 	linux /boot/vmlinux-6.1.0-1-riscv64
> 	initrd /boot/initrd.img-6.1.0-1-riscv64
> 	
> 	append root=/dev/vda1 rw noquiet single
> 	
> 
> label l1
> 	menu label Debian GNU/Linux bookworm/sid 6.0.0-6-riscv64
> 	linux /boot/vmlinux-6.0.0-6-riscv64
> 	initrd /boot/initrd.img-6.0.0-6-riscv64
> 	
> 	
> 	append root=/dev/vda1 rw noquiet
> 
> label l1r
> 	menu label Debian GNU/Linux bookworm/sid 6.0.0-6-riscv64 (rescue target)
> 	linux /boot/vmlinux-6.0.0-6-riscv64
> 	initrd /boot/initrd.img-6.0.0-6-riscv64
> 	
> 	append root=/dev/vda1 rw noquiet single
> 	
> 
> label l2
> 	menu label Debian GNU/Linux bookworm/sid 6.0.0-5-riscv64
> 	linux /boot/vmlinux-6.0.0-5-riscv64
> 	initrd /boot/initrd.img-6.0.0-5-riscv64
> 	
> 	
> 	append root=/dev/vda1 rw noquiet
> 
> label l2r
> 	menu label Debian GNU/Linux bookworm/sid 6.0.0-5-riscv64 (rescue target)
> 	linux /boot/vmlinux-6.0.0-5-riscv64
> 	initrd /boot/initrd.img-6.0.0-5-riscv64
> 	
> 	append root=/dev/vda1 rw noquiet single
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> 
> Up to commit 51c5c28af59c19407d6602336ac7374dd1432c49 the boot process
> with the extlinux.conf above looks as follows:
> 
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> Hit any key to stop autoboot:  0 
> 
> Device 0: QEMU VirtIO Block Device
>             Type: Hard Disk
>             Capacity: 102400.0 MB = 100.0 GB (209715200 x 512)
> ... is now current device
> Scanning virtio 0:1...
> Found /boot/extlinux/extlinux.conf
> Retrieving file: /boot/extlinux/extlinux.conf
> U-Boot menu
> 1:	Debian GNU/Linux bookworm/sid 6.1.0-1-riscv64
> 2:	Debian GNU/Linux bookworm/sid 6.1.0-1-riscv64 (rescue target)
> 3:	Debian GNU/Linux bookworm/sid 6.0.0-6-riscv64
> 4:	Debian GNU/Linux bookworm/sid 6.0.0-6-riscv64 (rescue target)
> 5:	Debian GNU/Linux bookworm/sid 6.0.0-5-riscv64
> 6:	Debian GNU/Linux bookworm/sid 6.0.0-5-riscv64 (rescue target)
> Enter choice:    
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> 
> The user can then either select a boot menu entry or - if there is
> no user input - the system boots the first entry after the timeout
> set in extlinux.conf is over.
> 
> Starting with commit 739e8361f3fe78038251216df6096a32bc2d5839,
> the boot process looks as follows, i.e. there isn't a boot menu
> anymore but the system immediately boots the first entry:
> 
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> Device 0: QEMU VirtIO Block Device
>             Type: Hard Disk
>             Capacity: 102400.0 MB = 100.0 GB (209715200 x 512)
> ... is now current device
> Scanning virtio 0:1...
> Found /boot/extlinux/extlinux.conf
> Retrieving file: /boot/extlinux/extlinux.conf
> 1:	Debian GNU/Linux bookworm/sid 6.1.0-1-riscv64
> Retrieving file: /boot/vmlinux-6.1.0-1-riscv64
> Retrieving file: /boot/initrd.img-6.1.0-1-riscv64
> append: root=/dev/vda1 rw noquiet
> Moving Image from 0x84000000 to 0x80200000, end=815e5000
> ## Flattened Device Tree blob at ff7344b0
>    Booting using the fdt blob at 0xff7344b0
> Working FDT set to ff7344b0
>    Using Device Tree in place at 00000000ff7344b0, end 00000000ff738dea
> Working FDT set to ff7344b0
> 
> Starting kernel ...
> [...]
> -----8<----------8<----------8<----------8<----------8<----------8<-----
> 
> Regards,
> Karsten
> -- 
> Hiermit widerspreche ich ausdrücklich der Nutzung sowie der Weitergabe
> meiner personenbezogenen Daten für Zwecke der Werbung sowie der Markt-
> oder Meinungsforschung.

-- 
Manuel Traut
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-menu-Ignore-prompt-variable-if-timeout-is-0.patch
Type: text/x-diff
Size: 1131 bytes
Desc: not available
URL: <https://lists.denx.de/pipermail/u-boot/attachments/20230117/24418ee1/attachment.patch>


More information about the U-Boot mailing list