起動時にシステム暗号化パスワードを入力するプロンプトをカスタマイズする

起動時にシステム暗号化パスワードを入力するプロンプトをカスタマイズする

私のアーチLinuxノートブックにはフルディスク暗号化があります。コンピュータの電源を入れると、ディスクパスワードの入力を求められます。私のシステムはluks ArchwikiページのLVMを通して暗号化されています。プロンプトには、「cryptlvmボリュームにパスワードが必要です」などの内容が表示され、所有者や紛失時に返品先住所などのシステムに関する情報を含めるように変更します。これまでアーチウィキを見て、似たような質問をした人がいるか検索してみましたが、何も見つからないようです。

答え1

私はmkinitcpioを使用してそのような情報を印刷するカスタムinitramfsモジュールを作成できることを発見しました。これに正しく従ってください。それ以外の場合、カーネルはクラッシュします。これを行うには、次の場所にファイルを作成します。

  • /usr/lib/initcpio/hooks/MODULENAME
  • /usr/lib/initcpio/install/モジュール名

/usr/lib/initcpio/install/モジュール名
以下は、mkinitcpioを使用してinitramfsを再生成するときにモジュールを構築するのに役立つbashスクリプトです。 build() と help() 関数が必要です。ビルド関数は、同じ名前のランタイムbashファイルを/usr/lib/initcpio/hooks/MODULENAMEに追加するadd_runscriptコマンドを呼び出します。

build() {

    add_runscript
}

/usr/lib/initcpio/hooks/MODULENAME
これはinitramfsがロードされたときに実行されるbashスクリプトです。実行するすべてのコマンドはrun_hook()という関数になければなりません。


run_hook() {
    # note this environment is limited as our drive is encrypted
    # only core system commands will be available 
    # it is possible to add more commands to the initramfs environment
    echo "hello!!"
}

mkinitcpio.confにフックを追加
次に、/etc/mkinitcpio.confにあるmkinitcpio構成ファイルの配列にフックを追加します。

# we put in the custom hook
# we put it before our encrypt hook!!
# so it shows before our password prompt
HOOKS=(base udev autodetect modconf kms keyboard MODULENAME encrypt lvm2 keymap consolefont block filesystems fsck)

mkinitcpioの再生成
最後に、次の起動時にモジュールがロードされるようにinitramfsを再生成できます。

$~ sudo mkinitcpio -p linux

再起動する前に、出力にエラーがないことを確認し、カーネルパニックが発生しないように祈ってください。

関連情報