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.
This commit is contained in:
Michael Shigorin 2012-07-28 14:14:34 +04:00
parent 78a660aed6
commit 46e3c94707
6 changed files with 24 additions and 8 deletions

View File

@ -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; @:

View File

@ -1,6 +1,10 @@
Добавление поддержки 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 @@
Здесь производится первичная обработка конфигурационных данных, Здесь производится первичная обработка конфигурационных данных,
окончательно проверяемых и используемых уже в инструментальном чруте. окончательно проверяемых и используемых уже в инструментальном чруте.
TODO: может потребоваться обобщение механизма генерации с учётом
многоуровневых меню и включаемых файлов (которыми лучше не злоупотреблять
из соображений скорости инициализации загрузчика); требуется обеспечить
брендирование заголовков.

View File

@ -0,0 +1 @@
prompt 0

View File

@ -0,0 +1,2 @@
noescape 1

View File

@ -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

View File

@ -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
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