Commit 46e3c947 authored by Michael Shigorin's avatar Michael Shigorin

syslinux: no ui, no escape

This one was suggested by enp@ for industrial use where some extra protection for the boot process might be quite desirable. If no syslinux ui was specified (the stock configuration paths ensure there is one) or if it was set to "none" explicitly, then there's no boot: prompt (let alone any menu). If there's a need to ensure that the boot process is not interruptable by Ctrl/Shift/Caps Lock/Scroll Lock.
parent 78a660ae
...@@ -4,6 +4,8 @@ ifeq (distro,$(IMAGE_CLASS)) ...@@ -4,6 +4,8 @@ ifeq (distro,$(IMAGE_CLASS))
distro/syslinux: distro/.init \ distro/syslinux: distro/.init \
use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt; @: use/syslinux/localboot.cfg use/syslinux/ui/vesamenu use/hdt; @:
distro/syslinux-test: distro/.init use/hdt use/syslinux/timeout/1 use/syslinux/noescape.cfg; @:
distro/dos: distro/.init use/dos use/syslinux/ui/menu; @: distro/dos: distro/.init use/dos use/syslinux/ui/menu; @:
distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @: distro/rescue: distro/.base use/rescue use/syslinux/ui/menu; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @: distro/live-systemd: distro/.base use/live/base use/systemd; @:
......
Добавление поддержки syslinux; требуется для инсталяторов, live/rescue; Добавление поддержки syslinux; требуется для инсталяторов, live/rescue;
реализуется в рамках stage1. реализуется в рамках stage1.
Самостоятельное творческое использование на данный момент подразумевает
знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков
конфигурации, которые уже существуют.
Цели config.mk: Цели config.mk:
* use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg); * use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg);
при использовании автоматически добавляют syslinux в FEATURES; при использовании автоматически добавляют syslinux в FEATURES;
...@@ -17,8 +21,3 @@ ...@@ -17,8 +21,3 @@
Здесь производится первичная обработка конфигурационных данных, Здесь производится первичная обработка конфигурационных данных,
окончательно проверяемых и используемых уже в инструментальном чруте. окончательно проверяемых и используемых уже в инструментальном чруте.
TODO: может потребоваться обобщение механизма генерации с учётом
многоуровневых меню и включаемых файлов (которыми лучше не злоупотреблять
из соображений скорости инициализации загрузчика); требуется обеспечить
брендирование заголовков.
...@@ -17,8 +17,8 @@ endif ...@@ -17,8 +17,8 @@ endif
ifdef SYSLINUX_UI ifdef SYSLINUX_UI
SYSLINUX_MODULES := $(SYSLINUX_MODULES) $(SYSLINUX_UI) SYSLINUX_MODULES := $(SYSLINUX_MODULES) $(SYSLINUX_UI)
else else
$(warning no syslinux ui configured, default is plain text prompt) $(warning no syslinux ui configured, default is now none)
SYSLINUX_UI := prompt SYSLINUX_UI := none
endif endif
# SUBPROFILES are considered SYSLINUX_CFG too # SUBPROFILES are considered SYSLINUX_CFG too
......
...@@ -3,6 +3,7 @@ ...@@ -3,6 +3,7 @@
# copy modules; see also ../../generate.mk # copy modules; see also ../../generate.mk
MODDIR="/usr/lib/syslinux" MODDIR="/usr/lib/syslinux"
CFG="$GLOBAL_BOOTLOADER.cfg"
mkdir -p "$WORKDIR/syslinux" mkdir -p "$WORKDIR/syslinux"
cd "$WORKDIR/syslinux" cd "$WORKDIR/syslinux"
...@@ -30,7 +31,18 @@ if [ -n "$SYSLINUX_MODULES" ]; then ...@@ -30,7 +31,18 @@ if [ -n "$SYSLINUX_MODULES" ]; then
fi fi
# number ordering sponsored by shell's pathname expansion # number ordering sponsored by shell's pathname expansion
grep -hv '^#' .in/[0-9][0-9]*.cfg > "$GLOBAL_BOOTLOADER.cfg" grep -hv '^#' .in/[0-9][0-9]*.cfg > "$CFG"
# there should be either DEFAULT or UI directive there
if ! egrep -i '^(default|ui)' "$CFG"; then
DEFAULT="$(grep -i '^label ' "$CFG" | head -1 | cut -f2 -d' ')"
if [ -n "$DEFAULT" ]; then
echo "default $DEFAULT" >> "$CFG"
else
echo "error: no DEFAULT or UI directive and cannot guess" >&2
exit 1
fi
fi
# snippets are not going into the actual image # snippets are not going into the actual image
if [ "$DEBUG" != 2 ]; then rm -r .in/; fi if [ "$DEBUG" != 2 ]; then rm -r .in/; fi
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment