web-dev-qa-db-ja.com

preseedを使用した無人インストール-partman-autoにカスタムデバイスを提供します

さまざまなタイプのサーバー(HP Proliant ML110、ML310、ML350)にUSBドライブとpreseedファイルを使用してUbuntu-14.04サーバーを無人インストールしています。

  • ML110およびML310では、ハードドライブは/dev/sdaにあり、USBドライブは/dev/sdbを取ります。
  • サーバーML350に接続している間、USBドライブは/dev/sdaを取得し、ハードドライブは/dev/sdbに表示されます。

これは完全に無人のインストールである必要があるため、サーバーの種類に関係なく、d-i partman-auto/diskに正しいデバイスパスを指定する方法を見つける必要があります。

私の最初のアイデアは、ハードドライブをUSBドライブの前に表示させ、ML350サーバーで/dev/sdaを使用できるようにすることでした。しかし 私はそれをする方法を見つけられませんでした

そのため、partmanが実行される直前にデバイス名を検出し、それを変数$INSTALL_DEVに記録する小さなスクリプトを作成しました。

d-i partman/early_command string                                  \
    for DEV in `ls /sys/block | grep sd`; do                      \
        if [ -n "`ls -l /sys/block/$DEV | grep /usb`" ]; then     \
            USB_DEV=/dev/${DEV};                                  \
            echo "USB_DEV is $USB_DEV" >> /var/log/syslog;        \
        else                                                      \
            INSTALL_DEV=/dev/${DEV};                              \
            echo "INSTALL_DEV = $INSTALL_DEV" >> /var/log/syslog; \
            break;                                                \
        fi;                                                       \
    done;                                                         \

それ以来、私はその変数をd-i partman-auto/diskに与える方法を見つけるのに苦労しています。私はさまざまな代替案を考えましたが、それらの1つを実装する方法を見つけることができませんでした。

  1. partma-auto/diskが変数を解釈するようにします。しかし、残念ながらそれは値として文字列のみを受け取ります。
  2. Preseedされた値が格納されているとよいdebian-installerデータベースを変更します。しかし、私はデータベースファイルを見つけられませんでした(それを変更する方法でもありません)。
  3. 正しいデバイスで小さなpreseedファイルを含むスクリプトを作成します。ただし、ハードドライブがpreseed/includeに表示される前に、/devからのファイルしか含めることができません。
5
Jav

これが私が望んでいたことを正確に実行する単純なpartman/early_commandです

d-i partman/early_command \
    string debconf-set partman-auto/disk "$(echo /dev/`ls -l /sys/block/[hs]d* | grep -v "usb" | head -n1 | sed 's/^.*\([hs]d[a-z]\+\).*$/\1/'`)"

このearly-commandは、partmanが実行される直前に実行されます。 partman-auto/diskdebian-installer構成の値を動的に設定します。

$()の間のコマンドは、USBドライブではない最初に見つかったハードドライブを出力します。

5
Jav