Ubuntuインストーラのプリセット

Ubuntuインストーラのプリセット

Ubuntuをインストールした直後にいくつかのコマンドを実行したいと思います。それで、プレハブの概念を活用してみようと思いました。私のisoを抽出し、preseedフォルダのcustom.seedファイルに次の行を追加しました。

ターゲットmkdir /home/abcのdi preseed/late_command文字列

これで、isoを再パッケージ化し、それを使用してUbuntuをインストールしました。しかし、何も変わりませんでした。ここで私が何を間違っているのでしょうか?

ベストアンサー1

何が問題なのかお話することはできませんが、数多くの試行錯誤の末に私がどのように動作するようになったかはお話しできます。

私の要件は、新しいファイルと置換ファイルをISOにパッケージ化し、インストール後にスクリプトを実行することです。

プロフィール:

d-i preseed/late_command string /bin/sh -c "$(cat /setup.sh); exit 0"

間違いなくスクリプトを実行する奇妙な方法ですが、うまくいきます。

installer.sh:

# [ hardware/hosting detection, other customizations ]
# set PackageList string
in-target --pass-stdout /bin/sh -c \
  "apt-get update &&
   apt-get install -y $PackageList &&
   apt-get dist-upgrade -y
  "

スクリプトは、再起動後に失われるインストーラ環境で実行されます。in-targetインストールされた環境で実行するには、このコマンドを使用する必要があります。

ここでISOの既存のプロセスを解きます。

initrdに圧縮されたファイル

initrdブートおよびインストーラが実行される環境で拡張されるファイルシステムアーカイブ。setup.sh私の場合は、ファイルをこのアーカイブにコピーする必要があります。

拡張 initrdファイル

cd $ExpandedISO/install
mkdir initrd
cd initrd
gzip -dc ../initrd.gz | cpio -id --no-absolute-filenames

コピー新しいファイルは拡張initrdディレクトリに移動されます。

再建 initrdファイル:

# in $ExpandedISO/install/initrd/
find . | cpio -o -H newc | gzip > ../initrd.gz
# expanded dir can now be deleted to not take up space in ISO
rm -rf $ExpandedISO/install/initrd/

ISOを再パッケージ化する既存のプロセスはここにあります。

おすすめ記事