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 \
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/rescue: distro/.base use/rescue use/syslinux/ui/menu; @:
distro/live-systemd: distro/.base use/live/base use/systemd; @:

View File

@ -1,6 +1,10 @@
Добавление поддержки syslinux; требуется для инсталяторов, live/rescue;
реализуется в рамках stage1.
Самостоятельное творческое использование на данный момент подразумевает
знакомство с /usr/share/doc/syslinux-*/syslinux.txt и изучение кусочков
конфигурации, которые уже существуют.
Цели config.mk:
* use/syslinux/ui/% -- конфигурирование интерфейса (см. cfg.in/00*.cfg);
при использовании автоматически добавляют 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
SYSLINUX_MODULES := $(SYSLINUX_MODULES) $(SYSLINUX_UI)
else
$(warning no syslinux ui configured, default is plain text prompt)
SYSLINUX_UI := prompt
$(warning no syslinux ui configured, default is now none)
SYSLINUX_UI := none
endif
# SUBPROFILES are considered SYSLINUX_CFG too

View File

@ -3,6 +3,7 @@
# copy modules; see also ../../generate.mk
MODDIR="/usr/lib/syslinux"
CFG="$GLOBAL_BOOTLOADER.cfg"
mkdir -p "$WORKDIR/syslinux"
cd "$WORKDIR/syslinux"
@ -30,7 +31,18 @@ if [ -n "$SYSLINUX_MODULES" ]; then
fi
# 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
if [ "$DEBUG" != 2 ]; then rm -r .in/; fi