web-dev-qa-db-ja.com

Debian / Ubuntuは、early / runコマンドを介してpreseedミラー変数を設定しました

preseed.cfg引数から/proc/cmdline内にミラーを設定するために、d-i Early/commandまたはd-ipresed/runを介してこれをpreseedに追加する方法を知る必要があります。

私が行った場合:

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プレシードを介してそれを行う方法がわかりません。

7
manga

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でうまく機能します!

6
manga

(PXE?)ブート中にカーネルに任意の値を渡して、preseed中にそれを検出して反応しようとしているようです。これを達成するためのより良い方法があるかもしれないと思いますが、私はあなたの特定のシナリオについてもっと知る必要があります。 Cobblerプロジェクト が頭に浮かびます。

とにかく、これを実現する別の方法は、ホスト名またはコマンドラインに基づいて、適切なミラー設定を持つ構成ファイルを含む条件付きインクルードを使用することです。インクルードファイルは以前のファイルの値をオーバーライドします。

# 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
0
dragon788