私は、TPMチップからキーを生成するスクリプトをテストするためにdracutを使用してinitramfsを生成しています。現在、このスクリプトはinitramfsが正しく作成されたことを確認できるダミースクリプトです。
#!/usr/bin/env bash
#
read -p 'This file will run to initialize the TPM'
exit 0
インストール前の起動段階にこのスクリプトを含めたいと思います。 「インストール前の起動スクリプトを書く方法は?」という質問に答えました。このフォーラムでは必要に応じて変更しますが、画像ファイルの内容を一覧表示するとスクリプトが存在しません。また、--includeオプションと--install dracutオプションを試しましたが、エラーが発生したりエラーが発生しなかった場合は、スクリプトがinitramfsに存在しません。ファイル名をtpm.imgとして指定し、/bootディレクトリに配置しました。コンピュータを起動したら、「e」を押してgrub行を修正し、initdefiコマンドが私のtpm.imgを指すように変更しました。もちろん、私のスクリプトはinitramfsには存在しないので実行されません。 dracutマニュアルの「カスタムファイルの挿入」セクションを理解しているかどうかはわかりません。
https://mirrors.edge.kernel.org/pub/linux/utils/boot/dracut/dracut.html
含めるモジュールのフルパスを示すdracut設定ファイルまたはdracutコマンドラインファイルの例が見つかりません。私のスクリプトがinitramfsに含まれていない理由を理解するのに役立ちます。
ありがとうございます!ジェフ
答え1
私は成功しました--include
。にカスタムスクリプトを入れたと仮定すると、/etc/dracut.conf.d/tpm.sh
次のことができます。
sudo dracut --include /etc/dracut.conf.d/tpm.sh /usr/lib/dracut/hooks/pre-mount/tpm.sh tpm.img
ファイルは次のようになります。
$ sudo lsinitrd tpm.img | grep -F tpm.sh
Arguments: --include '/etc/dracut.conf.d/tpm.sh' '/usr/lib/dracut/hooks/pre-mount/tpm.sh'
-rw-rw-r-- 1 root root 80 Apr 5 17:22 usr/lib/dracut/hooks/pre-mount/tpm.sh
残念ながら、私が知っている限り、コマンドライン--include
オプションに対応する設定ファイルはありません。はいinstall_items
、と同じです--install
。 initramfsのパスはプライマリFSのパスと同じであるため、このオプションは1つのパスのみを使用します。したがって、スクリプトをに入れる必要があります/usr/lib/dracut/hooks/pre-mount/tpm.sh
。その後、以下を作成できます/etc/dracut.conf.d/tpm.conf
。
install_items+=" /usr/lib/dracut/hooks/pre-mount/tpm.sh "
これにより、将来自動的に生成されるすべてのinitramfsイメージにこのスクリプトが含まれます(たとえば、カーネルのアップグレードなど)。
答え2
別のオプションは、/usr/lib/dracut/modules.d
そのディレクトリ内に専用のディレクトリを作成してその中に90tpm
入れることです。また、ビルド時に関数が呼び出されるtpm.sh
特別なスクリプトを配置する必要があります。簡単なことは次のとおりです。module-setup.sh
install
dracut
module-setup.sh
#! /bin/bash
install () { inst_hook pre-mount 50 "$moddir/tpm.sh"; }
dracut
これにより、追加のパラメータや設定ファイルなしで呼び出すことができます。
[~]$ ls -l /usr/lib/dracut/modules.d/90tpm
total 8
-rwxr-xr-x. 1 root root 70 Jun 4 01:57 module-setup.sh
-rwxr-xr-x. 1 root root 80 Jun 4 01:46 tpm.sh
[~]$ sudo dracut test.img
[~]$ sudo lsinitrd test.img | grep tpm
tpm
-rwxr-xr-x 1 root root 80 Apr 5 17:22 usr/lib/dracut/hooks/pre-mount/50-tpm.sh