payloads/external/iPXE: Add more Kconfig options
Add two new options: * Disable the prompt "Press Ctrl+B for the iPXE command line..." Add a boolean that disables the initial 2 second timeout. * Include a script that is executed instead of showing a shell. Allows to add a script that will be included into the iPXE ROM. Tested on Lenovo T500 and PC Engines apu2. Change-Id: Ie1083d8571d9d1f1c7c71659fb6ff0de2eecad0e Signed-off-by: Patrick Rudolph <siro@das-labor.org> Signed-off-by: Michał Żygowski <michal.zygowski@3mdeb.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/20782 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Patrick Georgi <pgeorgi@google.com>
This commit is contained in:
parent
56e2d7d21a
commit
23cb12b040
|
@ -229,7 +229,9 @@ endif
|
||||||
ifeq ($(CONFIG_BUILD_IPXE),y)
|
ifeq ($(CONFIG_BUILD_IPXE),y)
|
||||||
PXE_ROM_FILE:=payloads/external/iPXE/ipxe/ipxe.rom
|
PXE_ROM_FILE:=payloads/external/iPXE/ipxe/ipxe.rom
|
||||||
endif
|
endif
|
||||||
|
ifeq ($(CONFIG_PXE_ADD_SCRIPT),y)
|
||||||
|
PXE_CONFIG_SCRIPT:=$(abspath $(patsubst "%",%,$(CONFIG_PXE_SCRIPT)))
|
||||||
|
endif
|
||||||
ifeq ($(CONFIG_CONSOLE_SERIAL)$(CONFIG_DRIVERS_UART_8250IO),yy)
|
ifeq ($(CONFIG_CONSOLE_SERIAL)$(CONFIG_DRIVERS_UART_8250IO),yy)
|
||||||
IPXE_UART=COM$(call int-add,$(CONFIG_UART_FOR_CONSOLE) 1)
|
IPXE_UART=COM$(call int-add,$(CONFIG_UART_FOR_CONSOLE) 1)
|
||||||
endif
|
endif
|
||||||
|
@ -244,7 +246,7 @@ cbfs-files-$(CONFIG_PXE_ROM)$(CONFIG_BUILD_IPXE) += pci$(CONFIG_PXE_ROM_ID).rom
|
||||||
pci$(CONFIG_PXE_ROM_ID).rom-file := $(PXE_ROM_FILE)
|
pci$(CONFIG_PXE_ROM_ID).rom-file := $(PXE_ROM_FILE)
|
||||||
pci$(CONFIG_PXE_ROM_ID).rom-type := raw
|
pci$(CONFIG_PXE_ROM_ID).rom-type := raw
|
||||||
|
|
||||||
payloads/external/iPXE/ipxe/ipxe.rom ipxe: $(DOTCONFIG)
|
payloads/external/iPXE/ipxe/ipxe.rom ipxe: $(DOTCONFIG) $(PXE_CONFIG_SCRIPT)
|
||||||
$(MAKE) -C payloads/external/iPXE all \
|
$(MAKE) -C payloads/external/iPXE all \
|
||||||
CROSS_COMPILE="$(CROSS_COMPILE_$(ARCH-ramstage-y))" \
|
CROSS_COMPILE="$(CROSS_COMPILE_$(ARCH-ramstage-y))" \
|
||||||
PXE_ROM_PCI_ID=$(PXE_ROM_PCI_ID) \
|
PXE_ROM_PCI_ID=$(PXE_ROM_PCI_ID) \
|
||||||
|
@ -253,6 +255,9 @@ payloads/external/iPXE/ipxe/ipxe.rom ipxe: $(DOTCONFIG)
|
||||||
CONSOLE_SERIAL=$(IPXE_SERIAL_CONSOLE) \
|
CONSOLE_SERIAL=$(IPXE_SERIAL_CONSOLE) \
|
||||||
IPXE_UART=$(IPXE_UART) \
|
IPXE_UART=$(IPXE_UART) \
|
||||||
CONFIG_TTYS0_BAUD=$(CONFIG_TTYS0_BAUD) \
|
CONFIG_TTYS0_BAUD=$(CONFIG_TTYS0_BAUD) \
|
||||||
|
CONFIG_SCRIPT=$(PXE_CONFIG_SCRIPT) \
|
||||||
|
CONFIG_HAS_SCRIPT=$(CONFIG_PXE_ADD_SCRIPT) \
|
||||||
|
CONFIG_PXE_NO_PROMT=$(CONFIG_PXE_NO_PROMT) \
|
||||||
MFLAGS= MAKEFLAGS=
|
MFLAGS= MAKEFLAGS=
|
||||||
|
|
||||||
# LinuxBoot
|
# LinuxBoot
|
||||||
|
|
|
@ -87,5 +87,31 @@ config PXE_SERIAL_CONSOLE
|
||||||
|
|
||||||
Unselect to let only SeaBIOS handle printing output.
|
Unselect to let only SeaBIOS handle printing output.
|
||||||
|
|
||||||
|
config PXE_NO_PROMT
|
||||||
|
bool "Do not show prompt to boot from PXE"
|
||||||
|
default n
|
||||||
|
depends on BUILD_IPXE
|
||||||
|
help
|
||||||
|
Don't wait for the user to press Ctrl-B.
|
||||||
|
The PXE still can be run as it shows up in SeaBIOS's payload list.
|
||||||
|
|
||||||
|
config PXE_ADD_SCRIPT
|
||||||
|
bool "Embed an iPXE script for automated provisioning"
|
||||||
|
depends on BUILD_IPXE
|
||||||
|
default n
|
||||||
|
help
|
||||||
|
Enable to embed a script that is run instead of an iPXE shell.
|
||||||
|
|
||||||
|
config PXE_SCRIPT
|
||||||
|
string "Embedded iPXE script path and filename"
|
||||||
|
depends on PXE_ADD_SCRIPT
|
||||||
|
default ""
|
||||||
|
help
|
||||||
|
Path to a script that is embedded into the iPXE binary.
|
||||||
|
Example: startup.ipxe
|
||||||
|
|
||||||
|
Uses the ipxe script instead showing the prompt:
|
||||||
|
"Press Ctrl-B to start iPXE..."
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
endif
|
endif
|
||||||
|
|
|
@ -54,15 +54,34 @@ ifeq ($(CONSOLE_SERIAL),yy)
|
||||||
sed 's|#define\s*COMCONSOLE.*|#define COMCONSOLE $(IPXE_UART)|' "$(project_dir)/src/config/serial.h" > "$(project_dir)/src/config/serial.h.tmp"
|
sed 's|#define\s*COMCONSOLE.*|#define COMCONSOLE $(IPXE_UART)|' "$(project_dir)/src/config/serial.h" > "$(project_dir)/src/config/serial.h.tmp"
|
||||||
sed 's|#define\s*COMSPEED.*|#define COMSPEED $(CONFIG_TTYS0_BAUD)|' "$(project_dir)/src/config/serial.h.tmp" > "$(project_dir)/src/config/serial.h"
|
sed 's|#define\s*COMSPEED.*|#define COMSPEED $(CONFIG_TTYS0_BAUD)|' "$(project_dir)/src/config/serial.h.tmp" > "$(project_dir)/src/config/serial.h"
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(filter y,$(CONFIG_HAS_SCRIPT) $(CONFIG_PXE_NO_PROMT)),)
|
||||||
|
cp "$(project_dir)/src/config/general.h" "$(project_dir)/src/config/general.h.cb"
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_HAS_SCRIPT),y)
|
||||||
|
sed 's|//#define\s*IMAGE_SCRIPT.*|#define IMAGE_SCRIPT|' "$(project_dir)/src/config/general.h" > "$(project_dir)/src/config/general.h.tmp"
|
||||||
|
mv "$(project_dir)/src/config/general.h.tmp" "$(project_dir)/src/config/general.h"
|
||||||
|
endif
|
||||||
|
ifeq ($(CONFIG_PXE_NO_PROMT),y)
|
||||||
|
sed 's|#define\s*BANNER_TIMEOUT.*|#define BANNER_TIMEOUT 0|' "$(project_dir)/src/config/general.h" > "$(project_dir)/src/config/general.h.tmp"
|
||||||
|
mv "$(project_dir)/src/config/general.h.tmp" "$(project_dir)/src/config/general.h"
|
||||||
|
endif
|
||||||
|
|
||||||
build: config
|
build: config $(CONFIG_SCRIPT)
|
||||||
|
ifeq ($(CONFIG_HAS_SCRIPT),y)
|
||||||
|
echo " MAKE $(project_name) $(TAG-y) EMBED=$(CONFIG_SCRIPT)"
|
||||||
|
$(MAKE) -C $(project_dir)/src bin/$(PXE_ROM_PCI_ID).rom EMBED=$(CONFIG_SCRIPT)
|
||||||
|
else
|
||||||
echo " MAKE $(project_name) $(TAG-y)"
|
echo " MAKE $(project_name) $(TAG-y)"
|
||||||
$(MAKE) -C $(project_dir)/src bin/$(PXE_ROM_PCI_ID).rom
|
$(MAKE) -C $(project_dir)/src bin/$(PXE_ROM_PCI_ID).rom
|
||||||
|
endif
|
||||||
cp $(project_dir)/src/bin/$(PXE_ROM_PCI_ID).rom $(project_dir)/ipxe.rom
|
cp $(project_dir)/src/bin/$(PXE_ROM_PCI_ID).rom $(project_dir)/ipxe.rom
|
||||||
ifeq ($(CONSOLE_SERIAL),yy)
|
ifeq ($(CONSOLE_SERIAL),yy)
|
||||||
cp "$(project_dir)/src/config/console.h.cb" "$(project_dir)/src/config/console.h"
|
cp "$(project_dir)/src/config/console.h.cb" "$(project_dir)/src/config/console.h"
|
||||||
cp "$(project_dir)/src/config/serial.h.cb" "$(project_dir)/src/config/serial.h"
|
cp "$(project_dir)/src/config/serial.h.cb" "$(project_dir)/src/config/serial.h"
|
||||||
endif
|
endif
|
||||||
|
ifneq ($(filter y,$(CONFIG_HAS_SCRIPT) $(CONFIG_PXE_NO_PROMT)),)
|
||||||
|
cp "$(project_dir)/src/config/general.h.cb" "$(project_dir)/src/config/general.h"
|
||||||
|
endif
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
test -d $(project_dir) && $(MAKE) -C $(project_dir)/src veryclean || exit 0
|
test -d $(project_dir) && $(MAKE) -C $(project_dir)/src veryclean || exit 0
|
||||||
|
|
Loading…
Reference in New Issue