「Dm-crypt/システム設定」の版間の差分
(→トラブルシューティング: 同期) |
("初期ユーザ空間でロックを解除する" を追加 (一部翻訳)。) |
||
11行目: | 11行目: | ||
* コマンドの出力を挿入できる[[テキストエディタ]]を使用し、[[永続的なブロックデバイスの命名#永続的な命名の方法|適切な lsblk や blkid コマンド]]を使うことで、設定ファイルにおける UUID や PARTUUID などの入力作業を容易にできます (例えば、[[nano]] での {{ic|Ctrl+t}}、[[Vim]] や [[Neovim]] での {{ic|:read}}、[[mcedit]] での {{ic|Alt+u}})。あるいは、[[アプリケーション一覧/ユーティリティ#ターミナルマルチプレクサ|ターミナルマルチプレクサ]]を使用して、そのコピーペースト機能を使用することもできます。 |
* コマンドの出力を挿入できる[[テキストエディタ]]を使用し、[[永続的なブロックデバイスの命名#永続的な命名の方法|適切な lsblk や blkid コマンド]]を使うことで、設定ファイルにおける UUID や PARTUUID などの入力作業を容易にできます (例えば、[[nano]] での {{ic|Ctrl+t}}、[[Vim]] や [[Neovim]] での {{ic|:read}}、[[mcedit]] での {{ic|Alt+u}})。あるいは、[[アプリケーション一覧/ユーティリティ#ターミナルマルチプレクサ|ターミナルマルチプレクサ]]を使用して、そのコピーペースト機能を使用することもできます。 |
||
}} |
}} |
||
+ | |||
+ | == 初期ユーザ空間でロックを解除する == |
||
+ | |||
+ | 暗号化されているルートボリュームを起動するには、初期ユーザ空間でそのボリュームのロックを解除するために必要なツールが [[initramfs]] に含まれている必要があります。ロックを解除するべきボリュームは、たいてい[[カーネルパラメータ]]で渡されます。 |
||
+ | |||
+ | 以下のセクションでは、mkinitcpio の設定方法と、必要なカーネルパラメータのリストを載せています。 |
||
+ | |||
+ | === mkinitcpio === |
||
+ | |||
+ | 場合にもよりますが、以下の [[mkinitcpio#HOOKS|mkinitcpio フック]]の一部は有効化しておく必要があります: |
||
+ | |||
+ | {| class="wikitable" |
||
+ | ! busybox !! systemd !! ユースケース |
||
+ | |- |
||
+ | |style="text-align: center;white-space:nowrap;"| {{ic|encrypt}} |
||
+ | |style="text-align: center;white-space:nowrap;"| {{ic|sd-encrypt}} |
||
+ | | ルートパーティションが暗号化されている場合や、何らかの暗号化されているパーティションがルートパーティションのマウントよりも''前に''必要になる場合に必要です。その他の場合においては必要ありません。{{ic|/etc/crypttab}} などのシステム初期化スクリプトが、ルート以外のパーティションのロックを解除してくれるからです。このフックは {{ic|udev}} や {{ic|systemd}} フックよりも''後に''配置しなければなりません。 |
||
+ | |- |
||
+ | |colspan="2" style="text-align: center;white-space:nowrap;"| {{ic|keyboard}} |
||
+ | | 初期ユーザ空間でキーボードを動作させるために必要です。 |
||
+ | |||
+ | {{Tip|起動するたびにハードウェアの構成が異なるようなシステム (例えば、外部キーボードと内部キーボードのあるノート PC や[[Wikipedia:Headless computer|ヘッドレスシステム]]) では、このフックを {{ic|autodetect}} より前に配置して、全てのキーボードドライバを initramfs に含めると便利です。そうしないと、initramfs イメージの生成時に外部キーボードが接続されていなければ、そのキーボードは初期ユーザ空間では動作しなくなってしまいます。}} |
||
+ | |- |
||
+ | |style="text-align: center;white-space:nowrap;"| {{ic|keymap}} |
||
+ | |rowspan="2" style="text-align: center;white-space:nowrap;"| {{ic|sd-vconsole}} |
||
+ | | 暗号化パスワードの入力において US キーマップ以外のサポートを提供します。このフックは、{{ic|encrypt}} フックよりも''前に''配置しなければなりません。さもないと、暗号化パスワードの入力にデフォルトの US キーマップしか使えません。キーマップは {{ic|/etc/vconsole.conf}} で設定してください ([[Linux コンソール/キーボード設定#永続的な設定]] を参照してください)。 |
||
+ | |- |
||
+ | |style="text-align: center;white-space:nowrap;"| {{ic|consolefont}} |
||
+ | | 初期ユーザ空間で代替のコンソールフォントをロードします。フォントは {{ic|/etc/vconsole.conf}} で設定してください ([[Linux コンソール/キーボード設定#永続的な設定]] を参照してください)。 |
||
+ | |} |
||
+ | |||
+ | 必要な[[mkinitcpio#通常のフック|その他のフック]]は、システムのインストールに関するその他のマニュアルから明らかなはずです。 |
||
+ | |||
+ | {{Note|{{ic|/etc/mkinitcpio.conf}} に変更を加えたときは [[initramfs を再生成する]]のを忘れないでください。}} |
||
+ | |||
+ | ==== 例 ==== |
||
+ | |||
+ | {{ic|encrypt}} フックを使用する典型的な {{ic|/etc/mkinitcpio.conf}} の設定としては、以下のようになります: |
||
+ | |||
+ | {{hc|/etc/mkinitcpio.conf|2= |
||
+ | ... |
||
+ | HOOKS=(base '''udev''' autodetect modconf kms keyboard '''keymap''' '''consolefont''' block '''encrypt''' lvm2 filesystems fsck) |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | {{ic|sd-encrypt}} フックを使用する、systemd ベースの initramfs の設定は: |
||
+ | |||
+ | {{hc|/etc/mkinitcpio.conf|2= |
||
+ | ... |
||
+ | HOOKS=(base '''systemd''' autodetect modconf kms keyboard '''sd-vconsole''' block '''sd-encrypt''' lvm2 filesystems fsck) |
||
+ | ... |
||
+ | }} |
||
+ | |||
+ | === カーネルパラメータ === |
||
+ | |||
+ | 必要な[[カーネルパラメータ]]は、{{ic|encrypt}} フックと {{ic|sd-encrypt}} フックのどちらを使うかによります。{{ic|root}} と {{ic|resume}} は両方において同じように指定します。 |
||
+ | |||
+ | {{Tip|{{ic|sd-encrypt}} フックと [[systemd#GPT パーティションの自動マウント|GPT パーティションの自動マウント]]を使用する場合、これらのカーネルパラメータの指定は省略できます。[[dm-crypt/システム全体の暗号化#ブートローダーの設定]] を参照してください。}} |
||
+ | |||
+ | ==== root ==== |
||
+ | |||
+ | {{ic|1=root=}} パラメータでは、実際の (暗号化の解除された) ルートファイルシステムの {{ic|''device''}} を指定します: |
||
+ | |||
+ | root=''device'' |
||
+ | |||
+ | * ルートファイルシステムが、暗号化の解除されたデバイスファイル上に直接フォーマットされている場合、このパラメータの引数は {{ic|/dev/mapper/''dmname''}} になります。 |
||
+ | * 最初に LVM がアクティブ化されていて、そこに[[dm-crypt/システム全体の暗号化#LUKS on LVM|暗号化されている論理ルートボリューム]]が存在している場合、引数は上記の形式と同じになります。 |
||
+ | * ルートファイルシステムが、完全に[[dm-crypt/システム全体の暗号化#LVM on LUKS|暗号化されている LVM]] の論理ボリューム内に存在している場合、デバイスマッパーは一般に {{ic|1=root=/dev/''volumegroup''/''logicalvolume''}} となります。 |
||
+ | |||
+ | {{Tip|[[GRUB]] を使用していて、''grub-mkconfig'' で {{ic|grub.cfg}} を生成する場合は、{{ic|1=root=}} パラメータを手動で指定する必要はありません。''grub-mkconfig'' は、暗号化の解除されたルートファイルシステムの適切な UUID を検出し、その UUID を {{ic|grub.cfg}} へ自動的に追加します。}} |
||
+ | |||
+ | ==== resume ==== |
||
+ | |||
+ | resume=''device'' |
||
+ | |||
+ | * {{ic|''device''}} は、[[電源管理/サスペンドとハイバネート#ハイバネーション|suspend to disk (ハイバネーション)]] で使用される、暗号化の解除された (スワップ) ファイルシステムのデバイスファイルです。スワップが個別のパーティション上にある場合は、{{ic|/dev/mapper/swap}} という形式になります。[[dm-crypt/スワップの暗号化]] も参照してください。 |
||
+ | |||
+ | ==== encrypt フックを使う ==== |
||
+ | |||
+ | {{Note|[[sd-encrypt]] フックと比べて、{{ic|encrypt}} フックは以下をサポートしていません: |
||
+ | * [[dm-crypt/特記事項#encrypt フックと複数のディスク|複数の暗号化ディスク]]のロック解除 ({{Bug|23182}})。initramfs 内で '''一つ'''のデバイスしかロックを解除できません。 |
||
+ | * [[dm-crypt/特記事項#リモート LUKS ヘッダーを使ってシステムを暗号化|デタッチされた LUKS ヘッダ]]の使用 ({{Bug|42851}})。 |
||
+ | * [[#crypttab|crypttab]] によってサポートされている追加オプションの設定 (例: {{ic|sector-size}}) ({{Bug|72119}})。 |
||
+ | }} |
||
+ | |||
+ | ===== cryptdevice ===== |
||
+ | |||
+ | このパラメータでは、コールドブート時に暗号化済みルートファイルシステムを含むデバイスを指定します。これは、{{ic|encrypt}} フックによってパースされ、どのデバイスに暗号化されているシステムが含まれているかを特定します: |
||
+ | |||
+ | cryptdevice=''device'':''dmname'':''options'' |
||
+ | |||
+ | * {{ic|''device''}} は、暗号化されたデバイスのバッキングデバイスへのパスです。[[永続的なブロックデバイスの命名]]を使うことを強く推奨します。 |
||
+ | * {{ic|''dmname''}} は復号後にデバイスに与えられる '''d'''evice-'''m'''apper の名前です。{{ic|/dev/mapper/''dmname''}} として使用できるようになります。 |
||
+ | * {{ic|''options''}} (オプション) は、コンマで区切られたオプションです (TRIM サポートなど用)。オプションが必要ないのであれば、このパラメータは省略してください ({{ic|1=cryptdevice=''device'':''dmname''}})。 |
||
+ | * LVM に[[Dm-crypt/システム全体の暗号化#LUKS on LVM|暗号化されたルート]]が含まれる場合、最初に LVM が有効になって暗号化されたルートの論理ボリュームを含むボリュームグループが ''device'' として使用できるようになります。それからボリュームグループがルートにマッピングされます。パラメータは {{ic|1=cryptdevice=''/dev/vgname/lvname'':''dmname''}} という形式になります。 |
||
+ | |||
+ | {{Tip|ソリッドステートドライブ (SSD) に対しては、[[dm-crypt/特記事項#ソリッドステートドライブ (SSD) の Discard/TRIM のサポート|Discard/TRIM のサポートを有効化する]]と良いかもしれません。}} |
||
+ | |||
+ | ===== cryptkey ===== |
||
+ | |||
+ | {{Tip|パスフレーズを使用するのであれば、{{ic|1=cryptkey=}} パラメータを手動で指定する必要はありません。その場合、ブート時にパスフレーズを入力するためのプロンプトが表示されます。}} |
||
+ | |||
+ | このパラメータはキーファイルの場所を指定します。{{ic|''encrypt''}} フックがそのキーファイルを読み込んで {{ic|''cryptdevice''}} のロックを解除するために必要です。(鍵がデフォルトの場所にある場合を除き (以下を参照)) キーファイルが特定のデバイスにファイルとして存在するか、特定の場所から始まるビットストリームであるか、initramfs にファイルとして存在するかによって、3つのパラメータセットを持つことができます。 |
||
+ | |||
+ | デバイス内のファイルの場合、形式は以下のようになります: |
||
+ | |||
+ | cryptkey=''device'':''fstype'':''path'' |
||
+ | |||
+ | * {{ic|''device''}}: キーが存在する raw ブロックデバイス。[[永続的なブロックデバイスの命名]]を使うことを強く推奨します。 |
||
+ | * {{ic|''fstype''}}: {{ic|''device''}} のファイルシステムのタイプ (auto を指定することも可)。 |
||
+ | * {{ic|''path''}}: デバイス内のキーファイルの絶対パス。 |
||
+ | |||
+ | 例: {{ic|1=cryptkey=LABEL=usbstick:vfat:/secretkey}} |
||
+ | |||
+ | デバイス上のビットストリームの場合、キーの場所は次のように指定されます: |
||
+ | |||
+ | For a bitstream on a device the key's location is specified with the following: |
||
+ | |||
+ | cryptkey=''device'':''offset'':''size'' |
||
+ | |||
+ | ここで、オフセットとサイズはバイト単位です。例えば、{{ic|1=cryptkey=UUID=''ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ'':0:512}} は、デバイスの先頭にある 512 バイトのキーファイルを読み込みます。 |
||
+ | |||
+ | {{Tip|アクセスしたいデバイスのパスに {{ic|:}} 文字が含まれている場合、その文字をバックスラッシュ {{ic|\}} でエスケープしなければなりません。そのような場合、cryptkey パラメータは次のような見た目になります: ID {{ic|usb-123456-0:0}} の USB キーの場合、{{ic|1=cryptkey=/dev/disk/by-id/usb-123456-0\:0:0:512}}。}} |
||
+ | |||
+ | Initramfs 内に[[mkinitcpio#BINARIES と FILES|含められている]]ファイルの場合、形式は次のようになります[https://gitlab.archlinux.org/archlinux/packaging/packages/cryptsetup/-/blob/main/hooks-encrypt#L14]: |
||
+ | |||
+ | cryptkey=rootfs:''path'' |
||
+ | |||
+ | 例: {{ic|1=cryptkey=rootfs:/secretkey}} |
||
+ | |||
+ | また、{{ic|cryptkey}} が指定されない場合、デフォルトで (initramfs 内の) {{ic|/crypto_keyfile.bin}} が指定されたものとみなされることに注意してください。[https://gitlab.archlinux.org/archlinux/packaging/packages/cryptsetup/-/blob/main/hooks-encrypt#L8] |
||
+ | |||
+ | [[dm-crypt/デバイスの暗号化#キーファイル]] も参照してください。 |
||
+ | |||
+ | ===== crypto ===== |
||
+ | |||
+ | これは、''dm-crypt'' プレーンモードのオプションを ''encrypt'' フックに渡すための固有のパラメータです。 |
||
+ | |||
+ | 以下の形式を取ります: |
||
+ | |||
+ | crypto=''hash'':''cipher'':''keysize'':''offset'':''skip'' |
||
+ | |||
+ | 引数は、''cryptsetup'' のオプションと直接関連します。[[Dm-crypt/デバイスの暗号化#plain モードの暗号化オプション]] を参照してください。 |
||
+ | |||
+ | ''plain'' のデフォルトオプションのみで暗号化されたディスクの場合、{{ic|crypto}} 引数を指定しなければなりませんが、各エントリは空白のままにすることができます: |
||
+ | |||
+ | crypto=:::: |
||
+ | |||
+ | 引数の具体的な例は以下の通りです: |
||
+ | |||
+ | crypto=sha512:twofish-xts-plain64:512:0: |
||
+ | |||
+ | ==== systemd-cryptsetup-generator を使う ==== |
||
+ | |||
+ | ''systemd-cryptsetup-generator'' is a [[systemd]] unit generator that reads a subset of [[kernel parameters]], and {{ic|/etc/crypttab}}, for the purpose of unlocking encrypted devices. See the {{man|8|systemd-cryptsetup-generator}} man page for more details about it and all options it supports. |
||
+ | |||
+ | ''systemd-cryptsetup-generator'' is run during the [[Arch boot process#initramfs|initramfs stage]] when using the {{ic|sd-encrypt}} [[Mkinitcpio#HOOKS|mkinitcpio hook]] or the {{ic|systemd}} [[Dracut#Dracut modules|dracut module]]. |
||
+ | |||
+ | In what follows, we describe some of the [[kernel parameters]] that ''systemd-cryptsetup-generator'' interprets. |
||
+ | |||
+ | {{Tip| |
||
+ | * If the file {{ic|/etc/crypttab.initramfs}} exists, it will be added to the initramfs as {{ic|/etc/crypttab}}, there you can specify devices that need to be unlocked at the initramfs phase. See [[#crypttab]] for the syntax. If {{ic|/etc/crypttab.initramfs}} does not exist, there will be no {{ic|/etc/crypttab}} in the initramfs and the unlockable devices will need to be specified via kernel parameters listed below. |
||
+ | * {{ic|/etc/crypttab.initramfs}} is not limited to using only UUID like {{ic|rd.luks}}. You can use any of the [[Persistent block device naming#Persistent naming methods|persistent block device naming methods]]. |
||
+ | * Passwords entered during boot are cached in the kernel keyring by {{man|8|systemd-cryptsetup}}, so if multiple devices can be unlocked with the same password (this includes devices in [[#crypttab|crypttab]] that are unlocked after boot), then you will only need to input each password once. |
||
+ | }} |
||
+ | |||
+ | {{Note| |
||
+ | * All of the {{ic|rd.luks}} parameters can be specified multiple times to unlock multiple LUKS encrypted volumes. |
||
+ | * The {{ic|rd.luks}} parameters only support unlocking LUKS devices. To unlock a plain dm-crypt device, you must specify it in {{ic|/etc/crypttab.initramfs}}. See [[#crypttab]] for the syntax. |
||
+ | }} |
||
+ | |||
+ | {{Warning|If you are using {{ic|/etc/crypttab}} or {{ic|/etc/crypttab.initramfs}} together with {{ic|luks.*}} or {{ic|rd.luks.*}} parameters, only those devices specified on the kernel command line will be activated and you will see {{ic|Not creating device 'devicename' because it was not specified on the kernel command line.}}. This is because the {{ic|luks.*}} or {{ic|rd.luks.*}} parameters control which devices from the crypttab get activated. To activate all devices in {{ic|/etc/crypttab}} do not specify any {{ic|luks.*}} parameters and use {{ic|rd.luks.*}}. To activate all devices in {{ic|/etc/crypttab.initramfs}} do not specify any {{ic|luks.*}} or {{ic|rd.luks.*}} parameters.}} |
||
+ | |||
+ | ===== rd.luks.uuid ===== |
||
+ | |||
+ | {{Tip|{{ic|rd.luks.uuid}} can be omitted when using {{ic|rd.luks.name}}.}} |
||
+ | |||
+ | rd.luks.uuid=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' |
||
+ | |||
+ | Specify the [[UUID]] of the device to be decrypted on boot with this flag. |
||
+ | |||
+ | By default, the mapped device will be located at {{ic|/dev/mapper/luks-''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''}} where ''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' is the UUID of the LUKS partition. |
||
+ | |||
+ | ===== rd.luks.name ===== |
||
+ | |||
+ | {{Tip|When using this parameter you can omit {{ic|rd.luks.uuid}}.}} |
||
+ | |||
+ | rd.luks.name=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=''name'' |
||
+ | |||
+ | Specify the name of the mapped device after the LUKS partition is open, where ''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' is the UUID of the LUKS partition. This is equivalent to the second parameter of {{ic|encrypt}}'s {{ic|cryptdevice}}. |
||
+ | |||
+ | For example, specifying {{ic|1=rd.luks.name=12345678-9abc-def0-1234-56789abcdef0=root}} causes the unlocked LUKS device with UUID {{ic|12345678-9ABC-DEF0-1234-56789ABCDEF0}} to be located at {{ic|/dev/mapper/root}}. |
||
+ | |||
+ | ===== rd.luks.key ===== |
||
+ | |||
+ | Specify the location of a password file used to decrypt the device specified by its UUID. There is no default location like there is with the {{ic|encrypt}} hook parameter {{ic|cryptkey}}. |
||
+ | |||
+ | If the keyfile is [[mkinitcpio#BINARIES and FILES|included in the initramfs]]: |
||
+ | |||
+ | rd.luks.key=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=''/path/to/keyfile'' |
||
+ | |||
+ | or |
||
+ | |||
+ | rd.luks.key=''/path/to/keyfile'' |
||
+ | |||
+ | {{Tip|The whole {{ic|rd.luks.key}} parameter can be omitted if the keyfile is included as {{ic|/etc/cryptsetup-keys.d/''name''.key}}.}} |
||
+ | |||
+ | If the keyfile is on another device: |
||
+ | |||
+ | rd.luks.key=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=''/path/to/keyfile'':UUID=''ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ'' |
||
+ | |||
+ | Replace {{ic|1=UUID=''ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ''}} with the identifier of the device on which the keyfile is located. |
||
+ | |||
+ | {{Warning| |
||
+ | * If the type of file system is different than your root file system, you must [[mkinitcpio#MODULES|include the kernel module for it in the initramfs]]. |
||
+ | * {{ic|rd.luks.key}} with a keyfile on another device by default does not fallback to asking for a password if the device is not available. To fallback to a password prompt, specify the {{ic|1=keyfile-timeout=}} option in {{ic|rd.luks.options}}. E.g. for a 10 second timeout: {{bc|1=rd.luks.options=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=keyfile-timeout=10s}} |
||
+ | }} |
||
+ | |||
+ | ===== rd.luks.options ===== |
||
+ | |||
+ | rd.luks.options=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=''options'' |
||
+ | |||
+ | or |
||
+ | |||
+ | rd.luks.options=''options'' |
||
+ | |||
+ | Set options for the device specified by it UUID or, if not specified, for all UUIDs not specified elsewhere (e.g., crypttab). |
||
+ | |||
+ | This parameter is the analogue of [[#crypttab|crypttab's]] options field. The format is the same—options are separated by commas, options with values are specified using {{ic|1=''option''=''value''}}. This is roughly equivalent to the third parameter of {{ic|encrypt}}'s {{ic|cryptdevice}}. |
||
+ | |||
+ | For example: |
||
+ | |||
+ | rd.luks.options=timeout=10s,discard,password-echo=no,tries=1 |
||
+ | |||
+ | ====== タイムアウト ====== |
||
+ | |||
+ | There are two options that affect the timeout for entering the password during boot: |
||
+ | |||
+ | * {{ic|1=rd.luks.options=timeout=''mytimeout''}} specifies the timeout for querying for a password |
||
+ | * {{ic|1=rootflags=x-systemd.device-timeout=''mytimeout''}} specifies how long systemd should wait for the rootfs device to show up before giving up (defaults to 90 seconds) |
||
+ | |||
+ | If you want to disable the timeout altogether, then set both timeouts to zero: |
||
+ | |||
+ | rd.luks.options=timeout=0 rootflags=x-systemd.device-timeout=0 |
||
+ | |||
+ | ====== Password echo ====== |
||
+ | |||
+ | When the user is typing the password, ''systemd-cryptsetup'' by default outputs asterisks ({{ic|*}}) for each typed character. This is unlike the {{ic|encrypt}} hook, which does not output anything. To silence the output, set the {{ic|1=password-echo=no}} option: |
||
+ | |||
+ | rd.luks.options=password-echo=no |
||
+ | |||
+ | ====== Trusted Platform Module と FIDO2 鍵 ====== |
||
+ | |||
+ | If a [[TPM|TPM2]] chip is available in your system, or you use FIDO2-compatible security key, you can use it to automatically unlock your volume instead of using a password or a keyfile. |
||
+ | |||
+ | Set |
||
+ | * for TPM2 chip: {{ic|1=rd.luks.options=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=tpm2-device=auto}} |
||
+ | * for FIDO2 key: {{ic|1=rd.luks.options=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX''=fido2-device=auto}} |
||
+ | in addition to {{ic|rd.luks.uuid}} or {{ic|rd.luks.name}} |
||
+ | |||
+ | Alternatively, {{ic|/etc/crypttab.initramfs}} can be used which avoids the need to specify any kernel options. |
||
+ | |||
+ | {{hc|/etc/crypttab.initramfs|2= |
||
+ | root UUID=''XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'' none tpm2-device=auto |
||
+ | }} |
||
+ | |||
+ | {{Note|Remember to [[regenerate the initramfs]] after making any changes to {{ic|/etc/crypttab.initramfs}}.}} |
||
+ | |||
+ | Here the encrypted volume is mounted under the name {{ic|root}} (appearing in {{ic|/dev/mapper/root}}), mounted via the UUID of the storage device, with no password, and retrieving the key from the TPM2 device. |
||
+ | |||
+ | Note that {{ic|none}} must be provided in the password field order for the TPM2 device to be used, otherwise the value given will be used as a password or key, and if it does not work it will ask you to type in the passkey during boot without attempting to load the key from the TPM2 device. |
||
+ | |||
+ | If specifying the device via UUID as shown above, ensure it is that of the underlying (encrypted) storage device, not the UUID of the decrypted volume that is specified elsewhere as the root filesystem. |
||
+ | |||
+ | ===== rd.luks.data ===== |
||
+ | |||
+ | When using a detached LUKS header, specify the block device with the encrypted data. Must be used together with {{ic|rd.luks.options}} to specify the header file location. |
||
+ | |||
+ | See [[dm-crypt/Specialties#Encrypted system using a detached LUKS header]] for details and instructions. |
||
== mkinitcpio == |
== mkinitcpio == |
2023年9月4日 (月) 10:12時点における版
目次
初期ユーザ空間でロックを解除する
暗号化されているルートボリュームを起動するには、初期ユーザ空間でそのボリュームのロックを解除するために必要なツールが initramfs に含まれている必要があります。ロックを解除するべきボリュームは、たいていカーネルパラメータで渡されます。
以下のセクションでは、mkinitcpio の設定方法と、必要なカーネルパラメータのリストを載せています。
mkinitcpio
場合にもよりますが、以下の mkinitcpio フックの一部は有効化しておく必要があります:
busybox | systemd | ユースケース |
---|---|---|
encrypt
|
sd-encrypt
|
ルートパーティションが暗号化されている場合や、何らかの暗号化されているパーティションがルートパーティションのマウントよりも前に必要になる場合に必要です。その他の場合においては必要ありません。/etc/crypttab などのシステム初期化スクリプトが、ルート以外のパーティションのロックを解除してくれるからです。このフックは udev や systemd フックよりも後に配置しなければなりません。
|
keyboard
|
初期ユーザ空間でキーボードを動作させるために必要です。 | |
keymap
|
sd-vconsole
|
暗号化パスワードの入力において US キーマップ以外のサポートを提供します。このフックは、encrypt フックよりも前に配置しなければなりません。さもないと、暗号化パスワードの入力にデフォルトの US キーマップしか使えません。キーマップは /etc/vconsole.conf で設定してください (Linux コンソール/キーボード設定#永続的な設定 を参照してください)。
|
consolefont
|
初期ユーザ空間で代替のコンソールフォントをロードします。フォントは /etc/vconsole.conf で設定してください (Linux コンソール/キーボード設定#永続的な設定 を参照してください)。
|
必要なその他のフックは、システムのインストールに関するその他のマニュアルから明らかなはずです。
例
encrypt
フックを使用する典型的な /etc/mkinitcpio.conf
の設定としては、以下のようになります:
/etc/mkinitcpio.conf
... HOOKS=(base udev autodetect modconf kms keyboard keymap consolefont block encrypt lvm2 filesystems fsck) ...
sd-encrypt
フックを使用する、systemd ベースの initramfs の設定は:
/etc/mkinitcpio.conf
... HOOKS=(base systemd autodetect modconf kms keyboard sd-vconsole block sd-encrypt lvm2 filesystems fsck) ...
カーネルパラメータ
必要なカーネルパラメータは、encrypt
フックと sd-encrypt
フックのどちらを使うかによります。root
と resume
は両方において同じように指定します。
root
root=
パラメータでは、実際の (暗号化の解除された) ルートファイルシステムの device
を指定します:
root=device
- ルートファイルシステムが、暗号化の解除されたデバイスファイル上に直接フォーマットされている場合、このパラメータの引数は
/dev/mapper/dmname
になります。 - 最初に LVM がアクティブ化されていて、そこに暗号化されている論理ルートボリュームが存在している場合、引数は上記の形式と同じになります。
- ルートファイルシステムが、完全に暗号化されている LVM の論理ボリューム内に存在している場合、デバイスマッパーは一般に
root=/dev/volumegroup/logicalvolume
となります。
resume
resume=device
device
は、suspend to disk (ハイバネーション) で使用される、暗号化の解除された (スワップ) ファイルシステムのデバイスファイルです。スワップが個別のパーティション上にある場合は、/dev/mapper/swap
という形式になります。dm-crypt/スワップの暗号化 も参照してください。
encrypt フックを使う
cryptdevice
このパラメータでは、コールドブート時に暗号化済みルートファイルシステムを含むデバイスを指定します。これは、encrypt
フックによってパースされ、どのデバイスに暗号化されているシステムが含まれているかを特定します:
cryptdevice=device:dmname:options
device
は、暗号化されたデバイスのバッキングデバイスへのパスです。永続的なブロックデバイスの命名を使うことを強く推奨します。dmname
は復号後にデバイスに与えられる device-mapper の名前です。/dev/mapper/dmname
として使用できるようになります。options
(オプション) は、コンマで区切られたオプションです (TRIM サポートなど用)。オプションが必要ないのであれば、このパラメータは省略してください (cryptdevice=device:dmname
)。- LVM に暗号化されたルートが含まれる場合、最初に LVM が有効になって暗号化されたルートの論理ボリュームを含むボリュームグループが device として使用できるようになります。それからボリュームグループがルートにマッピングされます。パラメータは
cryptdevice=/dev/vgname/lvname:dmname
という形式になります。
cryptkey
このパラメータはキーファイルの場所を指定します。encrypt
フックがそのキーファイルを読み込んで cryptdevice
のロックを解除するために必要です。(鍵がデフォルトの場所にある場合を除き (以下を参照)) キーファイルが特定のデバイスにファイルとして存在するか、特定の場所から始まるビットストリームであるか、initramfs にファイルとして存在するかによって、3つのパラメータセットを持つことができます。
デバイス内のファイルの場合、形式は以下のようになります:
cryptkey=device:fstype:path
device
: キーが存在する raw ブロックデバイス。永続的なブロックデバイスの命名を使うことを強く推奨します。fstype
:device
のファイルシステムのタイプ (auto を指定することも可)。path
: デバイス内のキーファイルの絶対パス。
例: cryptkey=LABEL=usbstick:vfat:/secretkey
デバイス上のビットストリームの場合、キーの場所は次のように指定されます:
For a bitstream on a device the key's location is specified with the following:
cryptkey=device:offset:size
ここで、オフセットとサイズはバイト単位です。例えば、cryptkey=UUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ:0:512
は、デバイスの先頭にある 512 バイトのキーファイルを読み込みます。
Initramfs 内に含められているファイルの場合、形式は次のようになります[1]:
cryptkey=rootfs:path
例: cryptkey=rootfs:/secretkey
また、cryptkey
が指定されない場合、デフォルトで (initramfs 内の) /crypto_keyfile.bin
が指定されたものとみなされることに注意してください。[2]
dm-crypt/デバイスの暗号化#キーファイル も参照してください。
crypto
これは、dm-crypt プレーンモードのオプションを encrypt フックに渡すための固有のパラメータです。
以下の形式を取ります:
crypto=hash:cipher:keysize:offset:skip
引数は、cryptsetup のオプションと直接関連します。Dm-crypt/デバイスの暗号化#plain モードの暗号化オプション を参照してください。
plain のデフォルトオプションのみで暗号化されたディスクの場合、crypto
引数を指定しなければなりませんが、各エントリは空白のままにすることができます:
crypto=::::
引数の具体的な例は以下の通りです:
crypto=sha512:twofish-xts-plain64:512:0:
systemd-cryptsetup-generator を使う
systemd-cryptsetup-generator is a systemd unit generator that reads a subset of kernel parameters, and /etc/crypttab
, for the purpose of unlocking encrypted devices. See the systemd-cryptsetup-generator(8) man page for more details about it and all options it supports.
systemd-cryptsetup-generator is run during the initramfs stage when using the sd-encrypt
mkinitcpio hook or the systemd
dracut module.
In what follows, we describe some of the kernel parameters that systemd-cryptsetup-generator interprets.
rd.luks.uuid
rd.luks.uuid=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
Specify the UUID of the device to be decrypted on boot with this flag.
By default, the mapped device will be located at /dev/mapper/luks-XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX
where XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX is the UUID of the LUKS partition.
rd.luks.name
rd.luks.name=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=name
Specify the name of the mapped device after the LUKS partition is open, where XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX is the UUID of the LUKS partition. This is equivalent to the second parameter of encrypt
's cryptdevice
.
For example, specifying rd.luks.name=12345678-9abc-def0-1234-56789abcdef0=root
causes the unlocked LUKS device with UUID 12345678-9ABC-DEF0-1234-56789ABCDEF0
to be located at /dev/mapper/root
.
rd.luks.key
Specify the location of a password file used to decrypt the device specified by its UUID. There is no default location like there is with the encrypt
hook parameter cryptkey
.
If the keyfile is included in the initramfs:
rd.luks.key=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=/path/to/keyfile
or
rd.luks.key=/path/to/keyfile
If the keyfile is on another device:
rd.luks.key=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=/path/to/keyfile:UUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ
Replace UUID=ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ
with the identifier of the device on which the keyfile is located.
rd.luks.options
rd.luks.options=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=options
or
rd.luks.options=options
Set options for the device specified by it UUID or, if not specified, for all UUIDs not specified elsewhere (e.g., crypttab).
This parameter is the analogue of crypttab's options field. The format is the same—options are separated by commas, options with values are specified using option=value
. This is roughly equivalent to the third parameter of encrypt
's cryptdevice
.
For example:
rd.luks.options=timeout=10s,discard,password-echo=no,tries=1
タイムアウト
There are two options that affect the timeout for entering the password during boot:
rd.luks.options=timeout=mytimeout
specifies the timeout for querying for a passwordrootflags=x-systemd.device-timeout=mytimeout
specifies how long systemd should wait for the rootfs device to show up before giving up (defaults to 90 seconds)
If you want to disable the timeout altogether, then set both timeouts to zero:
rd.luks.options=timeout=0 rootflags=x-systemd.device-timeout=0
Password echo
When the user is typing the password, systemd-cryptsetup by default outputs asterisks (*
) for each typed character. This is unlike the encrypt
hook, which does not output anything. To silence the output, set the password-echo=no
option:
rd.luks.options=password-echo=no
Trusted Platform Module と FIDO2 鍵
If a TPM2 chip is available in your system, or you use FIDO2-compatible security key, you can use it to automatically unlock your volume instead of using a password or a keyfile.
Set
- for TPM2 chip:
rd.luks.options=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=tpm2-device=auto
- for FIDO2 key:
rd.luks.options=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX=fido2-device=auto
in addition to rd.luks.uuid
or rd.luks.name
Alternatively, /etc/crypttab.initramfs
can be used which avoids the need to specify any kernel options.
/etc/crypttab.initramfs
root UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX none tpm2-device=auto
Here the encrypted volume is mounted under the name root
(appearing in /dev/mapper/root
), mounted via the UUID of the storage device, with no password, and retrieving the key from the TPM2 device.
Note that none
must be provided in the password field order for the TPM2 device to be used, otherwise the value given will be used as a password or key, and if it does not work it will ask you to type in the passkey during boot without attempting to load the key from the TPM2 device.
If specifying the device via UUID as shown above, ensure it is that of the underlying (encrypted) storage device, not the UUID of the decrypted volume that is specified elsewhere as the root filesystem.
rd.luks.data
When using a detached LUKS header, specify the block device with the encrypted data. Must be used together with rd.luks.options
to specify the header file location.
See dm-crypt/Specialties#Encrypted system using a detached LUKS header for details and instructions.
mkinitcpio
システムの暗号化をする場合、mkinitcpio を正しく設定した後に initial ramdisk を再生成する必要があります。特にシナリオによっては、以下のフックを有効しなくてはなりません:
encrypt
: root パーティションや、root よりも前にマウントする必要があるパーティションを暗号化する場合に必ず必要。他の場合は必要ありません。/etc/crypttab
などのシステム初期化スクリプトが暗号化されたパーティションの鍵を解除してくれます。encrypt
フックを使用する場合、udev
フックよりも後に記述する必要があります。sd-encrypt
: systemd 版のencrypt
フックでencrypt
フックの代わりに使うことができます。必ずsystemd
フックと一緒に使用する必要があります。keymap
: 英語以外のキーマップで暗号化パスワードを入力できるようになります。encrypt
フックより前に記述してください。キーマップの設定は/etc/vconsole.conf
で行います。詳しくはキーマップ#永続的な設定を参照。keyboard
: 初期ユーザー空間で USB キーボードを使えるようにするために必須です。
他のフックについてはここでは触れません。
サンプル
encrypt
フックを使用する /etc/mkinitcpio.conf
の設定例:
/etc/mkinitcpio.conf
... HOOKS="base udev autodetect keyboard keymap consolefont modconf block encrypt lvm2 filesystems fsck" ...
sd-encrypt
フックを使用する systemd ベースの initramfs の設定:
/etc/mkinitcpio.conf
... HOOKS="base systemd autodetect keyboard sd-vconsole modconf block sd-encrypt sd-lvm2 filesystems fsck" ...
ブートローダー
暗号化された root パーティションを起動できるようにするには、以下のカーネルパラメータのサブセットを設定する必要があります: 設定する方法はカーネルパラメータの使用しているブートローダーの手順を見て下さい。例えば GRUB を使用しているならブート設定を生成する前に /etc/default/grub
にパラメータを追加するのが良いでしょう。
必要なカーネルパラメータは encrypt
フックと sd-encrypt
フックのどちらを使用するかによって変わります。
encrypt フックを使う
cryptdevice
このパラメータはコールドブート時に暗号化された root が含まれたデバイスのロックを解除するためにパスフレーズを要求するシステムプロンプトを作成します。どのデバイスに暗号化されたシステムが含まれているのか確認するために encrypt
フックによってパースされます:
cryptdevice=device:dmname
device
は暗号化されたデバイスのパスです。永続的なブロックデバイスの命名を使うことを推奨します。dmname
は復号化後にデバイスに与えられる device-mapper の名前です。/dev/mapper/dmname
として使用できるようになります。- LVM に 暗号化されたルートが含まれる場合、最初に LVM が有効になって暗号化されたルートの論理ボリュームを含むボリュームグループがデバイスとして使用できるようになります。それからボリュームグループがルートにマッピングされます。パラメータは
cryptdevice=/dev/vgname/lvname:dmname
という形式になります。
root
root=
パラメータは実際の (暗号化を解除した後の) root ファイルシステムの device
を指定します:
root=device
- ファイルシステムが復号化されたデバイスファイル上に直接フォーマットされている場合、
/dev/mapper/dmname
となります。 - LVM を先に有効にして暗号化した論理ルートボリュームを含めている場合も、上記と同じになります。
- root ファイルシステムが完全に暗号化された LVM の論理ボリュームに含まれている場合、device mapper は
root=/dev/mapper/volumegroup-logicalvolume
となります。
resume
resume=device
device
は suspend2disk のために使われる復号化された (スワップ) ファイルシステムのデバイスファイルです。スワップが別のパーティション上にある場合、/dev/mapper/swap
という形式になります。Dm-crypt/スワップの暗号化を参照。
cryptkey
このパラメータはキーファイルの場所を指定し、encrypt
フックでキーファイルを読み込んで cryptdevice
のロックを解除するために必要です。(鍵がデフォルトの場所にある場合を除き、以下を参照) キーファイルが特定のデバイスにファイルとして存在するか、特定の場所から始まるビットストリームであるか、initramfsにファイルとして存在するかによって、3つのパラメータセットを持つことができます。
デバイス内のファイルの場合、フォーマットは以下のようになります。
cryptkey=device:fstype:path
device
キーが存在する raw ブロックデバイス。fstype
device
(または auto)のファイルシステムタイプ。path
デバイス内のキーファイルの絶対パス。
例: cryptkey=/dev/usbstick:vfat:/secretkey
デバイス上のビットストリームの場合、キーの場所は次のように指定されます。
cryptkey=device:offset:size
ここで、オフセットはバイト単位で、サイズはビット単位です。例: cryptkey=/dev/sdZ:0:512
は、デバイスの先頭から512ビットのキーファイルを読み込みます。
initramfs の中のファイル included の場合、フォーマットは [3] です。
cryptkey=rootfs:path
例: cryptkey=rootfs:/secretkey
また、cryptkey
が指定されていない場合、デフォルトは /crypto_keyfile.bin
であることに注意してください。(initramfs内)[4]
crypto
このパラメーターは、"dm-crypt" プレーンモードオプションを "encrypt" フックに渡すために固有です。
以下の形式をとります。
crypto=<hash>:<cipher>:<keysize>:<offset>:<skip>
引数は cryptsetup のオプションと直接関連します。Dm-crypt/デバイスの暗号化#plain モードの暗号化オプションを見て下さい。
plain デフォルトオプションのみで暗号化されたディスクの場合、 crypto
引数を指定する必要がありますが、各エントリは空白のままにすることができます。
crypto=::::
引数の具体例は次のとおりです。
crypto=sha512:twofish-xts-plain64:512:0:
sd-encrypt フックを使う
以下の luks
は全て rd.luks
に置き換えられます。luks
パラメータはメインシステムと initrd の両方には反映されます。rd.luks
パラメータは initrd にだけ反映されます。他のオプションなど詳細については systemd-cryptsetup-generator(8) を参照してください。
luks.uuid
luks.uuid=UUID
このフラグで、起動時に復号化するデバイスの UUID を指定します。UUID が /etc/crypttab
にある場合、そこに記載されているオプションが使用されます。
luks.name
luks.name=UUID=name
LUKS パーティションを開いた後のマッピングされたデバイスの名前を指定します。例えば、UUID=cryptroot
と指定すると、アンロックされたデバイスは /dev/mapper/cryptroot
に配置されます。これを指定しない場合、マップされたデバイスは /dev/mapper/luks-UUID
に位置し、 UUID は LUKS パーティションの UUID になります。
これは encrypt
の cryptdevice
の第2パラメータと同じです。
luks.options
luks.options=UUID=options
または:
luks.options=options
UUID
の後に記載されているデバイス、または指定されていない場合は、他の場所で指定されていないすべての UUID (例: crypttab) に対してオプションを指定します。
これは、encrypt
の cryptdevice
の第3パラメータとほぼ同じです。
crypttab のオプションと同様の形式に従い、オプションはカンマで区切り、値を持つオプションは option=value
を使って指定します。
例:
luks.options=timeout=10s,swap,cipher=aes-cbc-essiv:sha256,size=256
luks.key
luks.key=mykeyfile
luks.UUID
で指定したデバイスを復号化するのに使用するパスワードファイルの場所を指定します。encrypt
フックのパラメータのようにデフォルトの場所というものは存在しません。
crypttab
/etc/crypttab
(encrypted device table) ファイルにはシステムの起動時にロックを解除する暗号化デバイスのリストを記述します。fstab と似ています。crypttab ファイルを使うことで暗号化したスワップデバイスやセカンダリファイルシステムを自動でマウントすることが可能です。
crypttab
は fstab よりも前に読み込まれるので、ファイルシステムの中身がマウントされる前に dm-crypt コンテナのロックを解除できます。ただし crypttab が読み込まれるのはシステムが起動した後なので、root を暗号化する場合に、mkinitcpio フックやブートローダーのオプションでロックを解除するのを代替することはできません。ブート時の crypttab の処理は systemd-cryptsetup-generator
によって自動的に行われるため、特に有効化する必要はありません。
詳しくは crypttab(5) を見てください。デバイスの UUID を使って設定する方法は#起動時にマウントセクションを見てください。
/etc/crypttab
# Example crypttab file. Fields are: name, underlying device, passphrase, cryptsetup options. # Mount /dev/lvm/swap re-encrypting it with a fresh key each reboot swap /dev/lvm/swap /dev/urandom swap,cipher=aes-xts-plain64,size=256 # Mount /dev/lvm/tmp as /dev/mapper/tmp using plain dm-crypt with a random passphrase, making its contents unrecoverable after it is dismounted. tmp /dev/lvm/tmp /dev/urandom tmp,cipher=aes-xts-plain64,size=256 # Mount /dev/lvm/home as /dev/mapper/home using LUKS, and prompt for the passphrase at boot time. home /dev/lvm/home # Mount /dev/sdb1 as /dev/mapper/backup using LUKS, with a passphrase stored in a file. backup /dev/sdb1 /home/alice/backup.key
起動時にマウント
起動時に暗号化されたドライブをマウントしたい場合、デバイスの UUID を /etc/crypttab
に入力してください。UUID は lsblk -f
コマンドで確認して以下のように crypttab
に追加します:
/etc/crypttab
externaldrive UUID=2f9a8428-ac69-478a-88a2-4aa458565431 none luks,timeout=180
最初のパラメータは、暗号化されたドライブに使用するデバイスマッパーの好みの名前です。オプション none
は起動中にパーティションのロックを解除するためのパスフレーズを入力するプロンプトを表示します。timeout
オプションは、ブート時に復号化パスワードを入力するタイムアウトを秒単位で定義します。
none
の代わりに keyfile を設定し参照することも可能です。この結果、起動中にキーファイルにアクセスできる場合は、自動的にロックが解除されます。LUKS は複数のキーを持つオプションを提供しているので、選択したオプションは後で変更することも可能です。
以下のように /etc/crypttab
で定義したデバイスマッパー名を /etc/fstab
で使用します。
/etc/fstab
/dev/mapper/externaldrive /mnt/backup ext4 defaults,errors=remount-ro 0 2
のように記述します。
/dev/mapper/externaldrive
はすでにユニークなパーティションマッピングの結果なので、UUID を指定する必要はない。いずれにせよ、ファイルシステムを持つマッパーは、それが暗号化されているパーティションとは異なる UUID を持つことになります。
スタックされたブロックデバイスのマウント
また、systemd ジェネレータは、起動時にスタックされたブロックデバイスを自動的に処理します。
例えば、RAID セットアップを作成し、その上で cryptsetup を使い、暗号化されたブロックデバイス内にそれぞれのファイルシステムを持つ LVM 論理ボリュームを作成することが可能です。
$ lsblk -f
─sdXX linux_raid_member │ └─md0 crypto_LUKS │ └─cryptedbackup LVM2_member │ └─vgraid-lvraid ext4 /mnt/backup └─sdYY linux_raid_member └─md0 crypto_LUKS └─cryptedbackup LVM2_member └─vgraid-lvraid ext4 /mnt/backup
はパスフレーズを要求し、ブート時に自動的にマウントします。
正しい対応する crypttab (例えば crypto_LUKS
デバイスの UUID) と fstab (/dev/mapper/vgraid-lvraid
) エントリを指定すれば、/etc/crypttab
処理は非ルートマウントにのみ適用するので、 mkinitcpio フック/設定を追加する必要がありません。例外として、mdadm_udev
フックがすでに 使われている場合(例:ルートデバイス用)です。この場合、正しい root raid が最初に選ばれるように /etc/madm.conf
と initramfs を更新する必要があります。
トラブルシューティング
システムがブート時に固まる/パスワードプロンプトが表示されない
Plymouth を使用する場合、適切なモジュール (Plymouth#mkinitcpio を参照) を使用するか、Plymouth を無効化してください。正しく設定しないと Plymouth によってパスワードプロンプトが隠れてしまい、システムを起動できなくなります。
キーボードやファイルシステム上のキーファイルをロック解除に利用できない
キーボードや、initramfs の生成時に存在しないファイルシステム上のキーファイルを使って LUKS デバイスのロックを解除する場合、対応するモジュールを mkinitcpio の MODULES
配列に追加する必要があるかもしれません。この作業は、キーボードが USB ハブ経由で接続されている場合にも必要かもしれません。この問題に関する詳細は mkinitcpio#MODULES を参照してください。追加するべきキーボードやファイルシステムのモジュール名を探し当てる方法については mkinitcpio/Initramfs の最小化#モジュールの選別 を参照してください
一般に、initramfs の生成時に PC に接続されていないキーボードに関しては、autodetect
フックより前に keyboard
を配置する必要があります。さもないと、現在接続されているハードウェアに必要なモジュールしか initramfs に追加されません。mkinitcpio#通常のフック を参照してください。