dracutを使ってinitramfsにスクリプトを含める方法は?

dracutを使ってinitramfsにスクリプトを含める方法は?

私は、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イメージにこのスクリプトが含まれます(たとえば、カーネルのアップグレードなど)。

おすすめ記事