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を再パッケージ化する既存のプロセスはここにあります。