diff --git a/features.in/uuid-iso/README b/features.in/uuid-iso/README new file mode 100644 index 00000000..fac239d7 --- /dev/null +++ b/features.in/uuid-iso/README @@ -0,0 +1,13 @@ +По умолчанию при сборке образа xorriso генерирует UUID образа +вида YYYY-MM-DD-hh-mm-ss-cc из текущего времени. +Если в командной строке xorriso есть пареметр +-volume_date uuid YYYYMMDDhhmmsscc +то UUID образа генерируется из него. +Данная фича читает текущее время и создаёт переменные: +UUID_ISO, содержащую YYYY-MM-DD-hh-mm-ss-cc +UUID_ISO_SHRT, содержащую YYYYMMDDhhmmsscc +Также фича добавляет в initrd файл +/lib/udev/rules.d/60-cdrom_id.rules +Это позволяет идентифицировать CD/DVD по UUID +и использовать для загрузки инсталлятора +method:disk,uuid:YYYY-MM-DD-hh-mm-ss-cc diff --git a/features.in/uuid-iso/config.mk b/features.in/uuid-iso/config.mk new file mode 100644 index 00000000..9bb38243 --- /dev/null +++ b/features.in/uuid-iso/config.mk @@ -0,0 +1,8 @@ +UUID_ISO = $(shell date -u +%Y-%m-%d-%H-%M-%S-00) +UUID_ISO_SHRT = $(shell echo $(UUID_ISO) | sed 's/-//g') + +use/uuid-iso: + @$(call add_feature) + @$(call set,UUID_ISO_SHRT,$(UUID_ISO_SHRT)) + @$(call set,UUID_ISO,$(UUID_ISO)) + @$(call xport,UUID_ISO) diff --git a/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom b/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom new file mode 100755 index 00000000..0523f786 --- /dev/null +++ b/features.in/uuid-iso/stage1/scripts.d/20-initrd-cdrom @@ -0,0 +1,9 @@ +#!/bin/sh +# add 60-cdrom_id.rules to identify CD/DVD by UUID +# if it's available + +if [ -f /lib/udev/rules.d/60-cdrom_id.rules ]; then + echo "PUT_FILES += /lib/udev/rules.d/60-cdrom_id.rules" >> /etc/initrd.mk +else + echo "uuid-iso, 20-initrd-cdrom: skipping 60-cdrom_id.rules (missing)" +fi diff --git a/features.in/uuid-iso/stage1/scripts.d/30-propagator-method-disk-uuid b/features.in/uuid-iso/stage1/scripts.d/30-propagator-method-disk-uuid new file mode 100755 index 00000000..1a7912bd --- /dev/null +++ b/features.in/uuid-iso/stage1/scripts.d/30-propagator-method-disk-uuid @@ -0,0 +1,20 @@ +#!/bin/sh +# postprocess configurations +# set special automatic method +# workaround the bug 39811 + +gcfg='boot/grub/grub.cfg' +scfg='syslinux/*.cfg' + +cd "$WORKDIR" + +# apply method disk with uuid if available +[ -n "$GLOBAL_UUID_ISO" ] || exit 0 + +if [ -n "$(find $scfg)" ]; then + sed -i "s/automatic=method:cdrom/automatic=method:disk,uuid:$GLOBAL_UUID_ISO/" $scfg +fi + +if [ -f "$gcfg" ]; then + sed -i "s/automatic=method:cdrom/automatic=method:disk,uuid:$GLOBAL_UUID_ISO/" $gcfg +fi