[PATCH] distro_boot: Fix bootfile env after calling boot_extlinux

Artem Lapkin email2tema at gmail.com
Tue Oct 12 10:55:44 CEST 2021


Problem

PXE cannot boot normally after Sysboot changed the bootfile env (called
from boot_extlinux) from the default "boot.scr.uimg" to
"/boot/extlinux/extlinux.conf".

In addition, an unbootable extlinux configuration will also make the PXE
boot unbootable, because it will use the incorrect path "/boot/extlinux/"
from the bootfile env.

Solution

Save and restore default bootfile env value when boot_extlinux is used.

Example
================================================================
Hit SPACE in 2 seconds to stop autoboot
... is now current device
Found /boot/extlinux/extlinux.conf
Retrieving file: /boot/extlinux/extlinux.conf
413 bytes read in 2 ms (201.2 KiB/s)
Skipping Krescue for failure retrieving kernel
SCRIPT FAILED: continuing...
...
Speed: 1000, full duplex
BOOTP broadcast 1
DHCP client bound to address 192.168.11.151 (8 ms)
Using ethernet at ff3f0000 device
TFTP from server 192.168.11.1; our IP address is 192.168.11.151
Filename '/boot/extlinux/pxelinux.cfg/default'.
Not retrying...
================================================================

Signed-off-by: Artem Lapkin <art at khadas.com>
---
 include/config_distro_bootcmd.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/config_distro_bootcmd.h b/include/config_distro_bootcmd.h
index 3f724aa10f..db3d1b2362 100644
--- a/include/config_distro_bootcmd.h
+++ b/include/config_distro_bootcmd.h
@@ -445,7 +445,9 @@
 				"${devnum}:${distro_bootpart} "           \
 				"${prefix}${boot_syslinux_conf}; then "   \
 			"echo Found ${prefix}${boot_syslinux_conf}; "     \
+			"bootfile_bak=${bootfile}; "                      \
 			"run boot_extlinux; "                             \
+			"setenv bootfile ${bootfile_bak}; "               \
 			"echo SCRIPT FAILED: continuing...; "             \
 		"fi\0"                                                    \
 	\
-- 
2.25.1



More information about the U-Boot mailing list