Назад | Перейти на главную страницу

Debian / Ubuntu устанавливает переменную зеркала preseed с помощью команды Early / run

Мне нужно знать, как я могу добавить это в предварительную настройку с помощью команды d-i Early / или d-i preseed / run, чтобы установить зеркало внутри preseed.cfg из /proc/cmdline аргумент.

Если я сделаю:

d-i preseed/run string ws/ubuntu.sh

#!/bin/sh
     for x in `cat /proc/cmdline`; do
             case $x in RPHOST*)
                     eval $x

                     d-i mirror/http/hostname string ${RPHOST}
                     d-i mirror/http/mirror string ${RPHOST}
                     d-i apt-setup/security_host string ${RPHOST}
                     ;;
             esac; 
done

это не удается.

Хорошо работает в кикстарте CentOS %pre раздел, но я понятия не имею, как это сделать через предварительную настройку debian / ubuntu.

после некоторого исследования debconf я пришел к следующему решению:

в вашем preseed.cfg вы вызываете скрипт через:

d-i preseed/run string ws/ubuntu.sh    // subdir from preseed file location

содержимое ubuntu.sh:

#!/bin/sh
echo "Start ubuntu.sh runscript" >> /var/log/syslog
for x in `cat /proc/cmdline`; do
        case $x in RPHOST*)
                eval $x
                HOST=$RPHOST
                echo "d-i mirror/http/hostname string ${HOST}" > /tmp/mirror.cfg
                echo "d-i mirror/http/mirror string ${HOST}" >> /tmp/mirror.cfg
                echo "d-i apt-setup/security_host string ${HOST}" >> /tmp/mirror.cfg
                ;;
        esac;
done
// add´s values to /var/lib/cdebconf/question.dat
debconf-set-selections /tmp/mirror.cfg

хорошо работает @ 12.04.2 LTS!

Похоже, вы пытаетесь передать ядру произвольное значение во время загрузки (PXE?), А затем обнаружить и отреагировать на него во время предварительной загрузки? Я думаю, что могут быть лучшие способы добиться этого, но мне нужно больше узнать о вашем конкретном сценарии. В Сапожник проект хотя приходит на ум.

Тем не менее, другим способом достижения этого может быть использование условного включения на основе имени хоста или командной строки, которая включает файл конфигурации с соответствующими настройками зеркала, поскольку файлы включения переопределяют значения из любого более раннего файла.

# More flexibly, this runs a shell command and if it outputs the names of
# preconfiguration files, includes those files. 
#d-i preseed/include_command \
#      string if [ "`hostname`" = bob ]; then echo bob.cfg; fi