「Dracut」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎設定: 情報を更新)
(同期)
 
(3人の利用者による、間の17版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:initramfs]]
+
[[Category:Initramfs]]
 
[[en:Dracut]]
 
[[en:Dracut]]
 
[[pt:Dracut]]
 
[[pt:Dracut]]
 
{{Related articles start}}
 
{{Related articles start}}
  +
{{Related|booster}}
 
{{Related|mkinitcpio}}
 
{{Related|mkinitcpio}}
  +
{{Related|Unified カーネルイメージ}}
 
{{Related articles end}}
 
{{Related articles end}}
   
[https://dracut.wiki.kernel.org/ dracut] はカーネルによって使用される初期イメージを生成し、ルートファイルシステムにアクセスするのに必要なブロックデバイスモジュール (IDE, SCSI, RAID など) をプリロードします。{{Pkg|linux}} のインストール時に [[Mkinitcpio|mkinitcpio]] と dracut のどちらを使うか選択できます。dracut は Fedora, RHEL, Gentoo, Debian などのディストリビューションで使われています。
+
[https://github.com/dracutdevs/dracut/wiki dracut] はカーネルによって使用される初期イメージを生成し、ルートファイルシステムにアクセスするのに必要なブロックデバイスモジュール (IDESCSI、[[RAID]] など) をプリロードします。{{Pkg|linux}} のインストール時に [[mkinitcpio]] と ''dracut'' のどちらを使うか選択できます。''dracut'' は FedoraRHELGentooDebian などのディストリビューションで使われています。Arch はデフォルトで [[mkinitcpio]] を使用します。
   
dracut の詳しいプロジェクト説明 [https://mirrors.edge.kernel.org/pub/linux/utils/boot/dracut/dracut.html カーネルドキュメント] から確認できます。
+
''dracut'' のプロジェクトドキュメントは[https://github.com/dracutdevs/dracut/wiki こちら]で読むことができます。
   
 
== インストール ==
 
== インストール ==
   
dracut は {{Pkg|dracut}} パッケージ[[インストール]]できます。最新の開発バージョンの場合は {{AUR|dracut-git}}
+
{{Pkg|dracut}} パッケージ[[インストール]]してください。最新の開発バージョンの場合は {{AUR|dracut-git}} をインストールしてください。
   
{{Tip|dracut が動作することが確認できたのであれば、{{Pkg|mkinitcpio}} は削除することができます。}}
+
{{Tip|''dracut'' が動作することが確認できたのであれば、{{Pkg|mkinitcpio}} は[[アンインストール]]できます。}}
   
 
== 使用方法 ==
 
== 使用方法 ==
   
  +
{{ic|dracut}} は使いやすく、[[dm-crypt/システム全体の暗号化#LVM on LUKS|LVM on LUKS]] のような非標準的なセットアップを使用する場合でも、通常はユーザー設定を必要としません。
{{Note|
 
* これらのコマンドで作成されたファイルには、インストールされている [[マイクロコード]] イメージがすべて埋め込まれます。
 
* {{Bug|59841}} のため、ホストオンリーモードでは、システムで必要とされるものだけでなく、全ての Intel マイクロコードを initramfs に含めます。[https://github.com/dracutdevs/dracut/commit/d613d88dd272cde8b69445bd69d64f99aac5b94b]
 
}}
 
   
  +
実行中のカーネルの initramfs を生成するには:
''dracut'' は使いやすく、[[dm-crypt/システム全体の暗号化#LVM on LUKS|LVM on LUKS]] のような非標準の設定を使う場合でも、通常、ユーザーの設定は不要です。
 
   
  +
# dracut --hostonly --no-hostonly-cmdline --add-confdir no-network /boot/initramfs-linux.img
実行中のカーネルの initramfs を生成するには。
 
   
  +
hostonly モードを永続的に有効にするには (コマンドラインに含める必要がないように) dracut 設定に以下を追加します。
# dracut --hostonly --no-hostonly-cmdline /boot/initramfs-linux.img
 
   
  +
{{hc|/etc/dracut.conf.d/hostonly.conf|2=
フォールバック initramfs を生成するために実行します。
 
  +
hostonly="yes"
  +
}}
  +
  +
{{Note|場合によっては、特にシステムを初めてインストールする場合、上記のコマンドは機能しません。次のコマンドを使用してください。
  +
# dracut --regenerate-all
  +
}}
  +
  +
フォールバック initramfs を生成するには、以下を実行します。
   
 
# dracut /boot/initramfs-linux-fallback.img
 
# dracut /boot/initramfs-linux-fallback.img
   
{{ic|/boot/initramfs-linux.img}} は出力イメージファイルを指します。非正規カーネルを使用している場合は、ファイル名変更を検討してください。えば、{{Pkg|linux-lts}} カーネルの場合、出力ファイルの名前は {{ic|/boot/initramfs-linux-lts.img}} にするべきでかし [[ブートローダー]] 設定同じファイル名を使用していれば、これらのファイルに好きな名前を付けることができます。
+
{{ic|/boot/initramfs-linux.img}} は出力イメージファイルを指します。別のカーネルを使用している場合は、ファイル名変更することを検討してください。たとえば、{{Pkg|linux-lts}} カーネルの場合、出力ファイルは {{ic|/boot/initramfs-linux-lts.img}} という名前にする必要がありま。ただ[[ブートローダー]] 設定同じファイル名を使用する限り、これらのファイルに好きな名前を付けることができます。
   
  +
{{Note|これらのコマンドで作成されたファイルには、インストールされている[[マイクロコード]]イメージが埋め込まれています。}}
==== 追加フラグ ====
 
   
  +
=== 追加オプション ===
{{ic|--hostonly}} フラグはローカルホスト環境を起動するのに必要なファイルのみ含んだイメージを生成します。フラグを付けない場合はより多くのファイルを含む汎用イメージが生成されます。このフラグを使うことで生成イメージの容量を減らすことができますが、他のコンピュータでイメージを使用したり別のルートファイルシステムに切り替えることができなくなります。その場合は新しいイメージの生成が必要です。
 
   
{{ic|--force}} フラグはイメージファイルが既に存在する場合に上書きします。
+
{{ic|--force}} フラグはイメージファイルが既に存在する場合に上書きします。
  +
  +
{{ic|--kver}} オプションは、使用するカーネルを指定します。このオプションの引数は、{{ic|/usr/lib/modules}} にあるディレクトリの名前と一致する必要があります。
   
 
{{man|8|dracut}} には他のフラグの説明が載っています。
 
{{man|8|dracut}} には他のフラグの説明が載っています。
46行目: 55行目:
 
== 詳細設定 ==
 
== 詳細設定 ==
   
  +
初期 RAM ディスクフェーズ中の様々なタスクの実行方法には、2つの異なるアプローチがあることに注意することが重要です。
{{ic|dracut}} は、コマンドラインで引数を直接渡すことで構成できます ({{man|8|dracut|OPTIONS}} を参照) 特定のフラグセットを使用して {{ic|dracut}} を常に実行する場合は、指定した設定を {{ic|.conf}} の {{ic|/etc/dracut.conf.d}} ファイルに保存できます。}}
 
  +
例えば:
 
  +
; ''シェル (bash/busybox/dash) ベース''の初期 RAM ディスク: init スクリプトが開始され、次に初期 RAM ディスクのファイルシステムをスキャンして実行される dracut スクリプトを検索します。
  +
  +
; ''systemd ベース(デフォルト)''の初期 RAM ディスク: systemd は初期 RAM ディスクフェーズの開始時にすでに開始されています。実行されるタスクは、通常の systemd ユニットファイルによって決定されます。[https://www.freedesktop.org/software/systemd/man/latest/bootup.html systemdブートアッププロセス]を参照してください。
  +
  +
具体的なバリアントは、systemd dracut モジュールの有無によって決定されます。詳細については、[[#dracut モジュール]]を参照してください。
  +
  +
{{ic|dracut}} は、コマンドラインで直接引数を渡すことによって構成できます ({{man|8|dracut|OPTIONS}} を参照) 特定のフラグのセットを使用して常に {{ic|dracut}} を実行する場合は、{{ic|/etc/dracut.conf.d/}} に{{ic|.conf}} ファイルに指定された設定を保存できます。例:
   
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
53行目: 69行目:
 
compress="lz4"
 
compress="lz4"
 
add_drivers+=" i915 "
 
add_drivers+=" i915 "
omit_dracutmodules+=" network iscsi "
+
omit_dracutmodules+=" systemd network "
 
}}
 
}}
   
{{man|5|dracut.conf}} でより多くの設定オプションを見ることができます。各オプションの完全な説明は、{{man|8|dracut}} で見つけることができます。以下では、いくつかの一般的なオプションについて説明します。
+
{{man|5|dracut.conf}} でより多くの設定オプションを確認できます。各オプションのより詳細な説明は、{{man|8|dracut}} にあります。以下では、いくつかの一般的なオプションについて説明します。
   
 
=== Dracut モジュール ===
 
=== Dracut モジュール ===
   
''dracut'' は initramfs を構築するためにモジュール式を採用しています ({{man|7|dracut.modules}} を参照) 全ての ''dracut'' の組み込みモジュールは {{ic|/lib/dracut/modules.d}} にあり、 {{ic|dracut --list-modules}} で一覧を見ることができます。追加モジュールは例えば {{aur|dracut-sshd-git}} のような外部パッケージから提供されます。''dracut'' の組み込みモジュールには、名前は自明であっても残念ながら文書がありません
+
''dracut'' はinitramfs を構築するためにモジュール式のアプローチを採用しています ({{man|7|dracut.modules}} を参照) ''dracut'' の組み込みモジュールはすべて {{ic|/lib/dracut/modules.d}} にあり、{{ic|dracut --list-modules}} で一覧表示できます。追加モジュールは{{aur|dracut-sshd-git}} などの外部パッケージによって提供できます。残念ながら、''dracut'' の組み込みモジュールにはドキュメントがありませんがその名前はそれ体で説明できる場合がありま
   
一部のモジュールはデフォルトで有効/無効になっており、{{ic|--add}}/{{ic|--omit}} コマンドライン引数または {{ic|1= add_dracutmodules+=""}}/{{ic|1= omit_dracutmodules+=""}} 永続的な設定エントリ行で有効/無効を切り替えることができるようになっています。
+
一部のモジュールはデフォルトでアクティブ/非アクティブであり、{{ic|--add}}/{{ic|--omit}} コマンドライン引数または {{ic|1= add_dracutmodules+=""}}/{{ic|1= omit_dracutmodules+=""}} 永続設定エントリ行を使用してアクティブ化/非アクティブ化できます。
   
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
 
# ...
 
# ...
add_dracutmodules+=" <dracut modules to activate> "
+
add_dracutmodules+=" ''dracut modules to activate'' "
omit_dracutmodules+=" <dracut modules to deactivate> "
+
omit_dracutmodules+=" ''dracut modules to deactivate'' "
 
# ...
 
# ...
 
}}
 
}}
  +
  +
次の表に、dracut モジュール、必要なパッケージ(''dracut'' のオプションの依存関係)およびモジュールの説明を示します。
  +
  +
ほとんどの dracut モジュールは、他の dracut モジュールに依存しています。例として、bluetooth dracut モジュールは dbus dracut モジュールに依存しています。以下の表は、直接的な dracut モジュールの依存関係のみを示しています。つまり、特定の dracut モジュールの {{ic|module-setup.sh}} にリストされている、特定のモジュールに必要なパッケージを示しています。
  +
  +
追加の dracut モジュールのドキュメントについては、[https://github.com/dracut-ng/dracut-ng/wiki/modules アップストリームの dracut wiki] を参照してください。
  +
  +
{| class="wikitable"
  +
! dracut モジュール
  +
! 必要なパッケージ
  +
! 説明
  +
|-
  +
| bluetooth
  +
| {{Pkg|bluez}}
  +
| [[Bluetooth]] (keyboard)
  +
|-
  +
| btrfs
  +
| {{Pkg|btrfs-progs}}
  +
| ブロックデバイスで [[btrfs]] をスキャンします
  +
|-
  +
| busybox
  +
| {{Pkg|busybox}}
  +
| [[BusyBox]] (自己責任で) の使用を許可します
  +
|-
  +
| crypt
  +
| {{Pkg|cryptsetup}}
  +
| 暗号化された [[dm-crypt]] ファイルシステムのサポート
  +
|-
  +
| dash
  +
| {{Pkg|dash}}
  +
| [[dash]] (自己責任で) の使用を許可します
  +
|-
  +
| dmraid
  +
| {{Pkg|dmraid}}, {{Pkg|multipath-tools}}
  +
| DMRAID Dracut モジュールサポート
  +
|-
  +
| multipath
  +
| {{Pkg|multipath-tools}}
  +
| MultiPath Dracut モジュールサポート
  +
|-
  +
| dmsquash-live-ntfs
  +
| {{Pkg|fuse3}}, {{Pkg|ntfs-3g}}
  +
| ライブ [[NTFS]]
  +
|-
  +
| lvm
  +
| {{Pkg|lvm2}}
  +
| [[LVM]] のサポート
  +
|-
  +
| mdraid
  +
| {{Pkg|mdadm}}
  +
| ソフトウェア [[RAID]] デバイスとも呼ばれるMDデバイスをサポートします
  +
|-
  +
| memstrack
  +
| {{AUR|memstrack}}
  +
| memstrack をサポート
  +
|-
  +
| nvdimm
  +
| {{Pkg|ndctl}}
  +
| NVDIMM をサポート
  +
|-
  +
| plymouth
  +
| {{Pkg|plymouth}}
  +
| [[Plymouth]] ブートスプラッシュ
  +
|-
  +
| rescue
  +
|
  +
| 救助モード用のさまざまなユーティリティ (Ping、SSH、VI、FSCK などなど) が含まれています。
  +
|-
  +
| resume
  +
|
  +
| initramfs が低電力状態から再開できるようにします
  +
|-
  +
| rngd
  +
|
  +
| 早期ブートでランダムジェネレーターサービスを開始します
  +
|-
  +
| syslog
  +
| {{AUR|rsyslog}}
  +
| [[rsyslog]] でロギングを有効にする
  +
|-
  +
| squash
  +
| {{Pkg|squashfs-tools}}
  +
| squashed initramfs を構築するためのサポート
  +
|-
  +
| tpm2-tss
  +
| {{Pkg|tpm2-tools}}
  +
| [[Trusted Platform Module]]
  +
|-
  +
| base
  +
|
  +
| 必要なユーティリティを備えたベースモジュール
  +
|-
  +
| bash
  +
| {{Pkg|bash}}
  +
| Bash が複数存在する場合、Bash を優先的に使用
  +
|-
  +
| biosdevname
  +
| {{AUR|biosdevname}}
  +
| BIOS に基づいたネットワークデバイス名を使用
  +
|-
  +
| caps
  +
|
  +
| init 実行前にケーパビリティを削減可能
  +
|-
  +
| convertfs
  +
|
  +
| / を /usr に統合 (次回起動時に実行)
  +
|-
  +
| crypt-gpg
  +
| {{Pkg|gnupg}}
  +
| GPG を使用した暗号化・SmartCard のサポート (GPG キーが必要な場合あり)
  +
|-
  +
| crypt-loop
  +
|
  +
| 暗号化されたループバックデバイスのサポート (対称鍵)
  +
|-
  +
| dbus
  +
|
  +
| dbus-broker または dbus-daemon の仮想パッケージ
  +
|-
  +
| dbus-broker
  +
| {{Pkg|dbus-broker}}
  +
| {{Pkg|dbus-broker}} を dbus サービスプロバイダとして使用
  +
|-
  +
| dbus-daemon
  +
| {{Pkg|dbus}}
  +
| {{Pkg|dbus}} を dbus サービスプロバイダとして使用
  +
|-
  +
| debug
  +
|
  +
| デバッグ機能を有効化
  +
|-
  +
| dm
  +
|
  +
| device-mapper のサポートを追加
  +
|-
  +
| dmsquash-live-autooverlay
  +
|
  +
| ルートファイルシステムの親ブロックデバイスの空き領域に overlayfs 用パーティションを作成
  +
|-
  +
| dracut-systemd
  +
|
  +
| 基本的な systemd 用 dracut モジュール
  +
|-
  +
| drm
  +
|
  +
| DRM (Direct Rendering Manager) サポートのカーネルモジュールを含む
  +
|-
  +
| ecryptfs
  +
|
  +
| ecryptfs ファイルシステムのサポートを追加
  +
|-
  +
| fido2
  +
|
  +
| FIDO2 セキュリティトークンを使用して暗号化ファイルシステムを解読可能
  +
|-
  +
| fips
  +
|
  +
| FIPS セキュリティ標準を適用
  +
|-
  +
| fs-lib
  +
|
  +
| fsck.* や mount などのファイルシステムツールのライブラリ
  +
|-
  +
| fstab-sys
  +
|
  +
| rootfs より前に任意のパーティションをマウント
  +
|-
  +
| i18n
  +
|
  +
| キーマップ、コンソールフォントなどを含む
  +
|-
  +
| img-lib
  +
|
  +
| イメージの展開ツールを含むライブラリ
  +
|-
  +
| integrity
  +
|
  +
| 拡張検証モジュール (EVM) のサポートを追加
  +
|-
  +
| kernel-modules
  +
|
  +
| ルートファイルシステムおよびブート時に必要なデバイスのカーネルモジュール
  +
|-
  +
| kernel-modules-extra
  +
|
  +
| 追加のカーネルモジュール (out-of-tree)
  +
|-
  +
| lunmask
  +
|
  +
| 必要な LUN デバイスのみを選択してマスク
  +
|-
  +
| lvmmerge
  +
|
  +
| LVM スナップショットをマージ
  +
|-
  +
| lvmthinpool-monitor
  +
|
  +
| LVM thin pool を監視
  +
|-
  +
| masterkey
  +
|
  +
| 他の鍵の解読用マスターキーと keyutils を含む
  +
|-
  +
| modsign
  +
|
  +
| 署名付きカーネルモジュールのサポートを追加
  +
|-
  +
| overlayfs
  +
|
  +
| OverlayFS のカーネルモジュール
  +
|-
  +
| pcsc
  +
|
  +
| PCSC スマートカードのサポート
  +
|-
  +
| pkcs11
  +
|
  +
| PKCS#11 ライブラリを含む
  +
|-
  +
| pollcdrom
  +
|
  +
| CD-ROM ポーリングを有効化
  +
|-
  +
| qemu
  +
|
  +
| QEMU 環境用のカーネルモジュールを含む
  +
|-
  +
| rescue
  +
|
  +
| ping、ssh、vi、fsck.* などのレスキュー用ユーティリティ
  +
|-
  +
| rootfs-block
  +
|
  +
| ルートファイルシステムを含むブロックデバイスのマウント処理
  +
|-
  +
| securityfs
  +
|
  +
| securityfs をブート初期にマウント
  +
|-
  +
| selinux
  +
|
  +
| SELinux ポリシーのロードを処理
  +
|-
  +
| shutdown
  +
|
  +
| シャットダウン時に実行されるフックを設定
  +
|-
  +
| systemd
  +
|
  +
| 早期 init システムとして systemd を使用
  +
|-
  +
| terminfo
  +
|
  +
| terminfo ファイルを含む
  +
|-
  +
| udev-rules
  +
|
  +
| udev と基本ルールのセット
  +
|-
  +
| uefi-lib
  +
|
  +
| UEFI ツールを含むライブラリ
  +
|-
  +
| usrmount
  +
|
  +
| /usr のマウントを処理
  +
|-
  +
| virtfs
  +
|
  +
| 仮想ファイルシステム (9p) のサポート
  +
|-
  +
| virtiofs
  +
|
  +
| virtiofs ファイルシステムのサポート
  +
|-
  +
| warpclock
  +
|
  +
| adjtime が LOCAL に設定されている場合にシステム時間をリセット
  +
|-
  +
| watchdog
  +
|
  +
| watchdog デバイス管理を含む (systemd 非使用時のみ動作)
  +
|-
  +
| watchdog-modules
  +
|
  +
| 起動時にロードされる watchdog 用カーネルモジュール
  +
|}
  +
  +
これは、[[ネットワーク設定#IPアドレス|IPアドレス]] が初期ブート時に利用可能になることが想定される場合に使用される Dracut モジュールについての説明です。
  +
  +
{| class="wikitable"
  +
! ネットワーキング dracut モジュール
  +
! 必要なパッケージ
  +
! 説明
  +
|-
  +
| cifs
  +
| {{Pkg|cifs-utils}}
  +
| [[Samba]] のサポート
  +
|-
  +
| nbd
  +
| {{Pkg|nbd}}
  +
| ネットワークブロックデバイスのサポート
  +
|-
  +
| network-manager
  +
| {{Pkg|networkmanager}}
  +
| [[NetworkManager]] のサポート
  +
|-
  +
| nfs
  +
| {{Pkg|nfs-utils}}
  +
| [[NFS]] のサポート (NFSv3 および NFSv4)
  +
|-
  +
| nvmf
  +
| {{Pkg|nvme-cli}}, {{Pkg|jq}}
  +
| NVMe over Fibre Channel および NVMe-over-Fabrics のサポート
  +
|-
  +
| iscsi
  +
| {{Pkg|open-iscsi}}
  +
| [[ISCSI]] のサポート
  +
|-
  +
| ssh-client
  +
| {{Pkg|openssh}}
  +
| SSH および SCP のインストール (設定ファイルや指定された鍵も含む)
  +
|-
  +
| network-legacy
  +
| {{Pkg|dhclient}}, {{Pkg|iproute2}}, {{Pkg|iputils}}
  +
| レガシーな[[ネットワーク]]のサポート
  +
|-
  +
| connman
  +
| {{Pkg|connman}}
  +
| [[ConnMan]] ネットワークのサポート
  +
|-
  +
| kernel-network-modules
  +
|
  +
| ネットワークデバイス用のカーネルモジュールを含み、ロードする
  +
|-
  +
| livenet
  +
|
  +
| SquashFS イメージのライブアップデートを取得
  +
|-
  +
| network
  +
|
  +
| ネットワークサービスプロバイダーの仮想モジュール
  +
|-
  +
| url-lib
  +
|
  +
| curl および SSL 証明書を含むライブラリ
  +
|-
  +
| qemu-net
  +
|
  +
| QEMU 環境向けネットワークカーネルモジュールを含む
  +
|-
  +
| systemd-network-management
  +
|
  +
| systemd のネットワーク管理を追加 (systemd-networkd, systemd-resolved などのネットワーク関連モジュールを含む)
  +
|-
  +
| systemd-networkd
  +
|
  +
| [[Systemd-networkd]]
  +
|-
  +
| net-lib
  +
|
  +
| ''ip'' を含むネットワークライブラリ
  +
|}
   
 
==== TPM2 ====
 
==== TPM2 ====
   
[[Trusted Platform Module#systemd-cryptenroll|systemd-cryptenroll]] を介して TPM2 を使用して ''systemd'' による ''luks2'' 暗号化ボリュームロック解除用するには、{{Pkg|tpm2-tools}} パッケージをインストールします。{{ic|tpm2-tss}} ''dracut'' モジュールを有効ます
+
[[Trusted Platform Module#systemd-cryptenroll|systemd-cryptenroll]] を介して TPM2 ''luks2'' 暗号化ボリュームをアンロックする ''systemd'' の機能使用するには、{{Pkg|tpm2-tools}} パッケージをインストールし、かつ {{ic|tpm2-tss}} ''dracut'' モジュールを有効てください
   
=== 初期のカーネルモジュールの読み込み ===
+
=== カーネルモジュールの早期ロード ===
   
Dracut は、{{ic|--force_drivers}} コマンドまたは {{ic|1= force_drivers+=""}} 設定エントリ使用て、(initramfs の段階で{{ic|modprobe}} を介し) 初期ロードを有効にします。
+
Dracut は、{{ic|--force_drivers}} 引数または {{ic|1= force_drivers+=""}} 設定エントリで早期ロード有効化ます (initramfs の段階で {{ic|modprobe}} によってロードされます)例えば:
例えば:
 
   
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
 
{{hc|/etc/dracut.conf.d/myflags.conf|2=
88行目: 467行目:
 
=== カーネルコマンドラインオプション ===
 
=== カーネルコマンドラインオプション ===
   
カーネルコマンドラインオプションは、{{ic|/etc/dracut.conf.d/}} の ''.conf'' ファイルに配置き、{{ic|1=kernel_cmdline=}} フラグを介して設定できます。Dracut は自動的にこのファイルを読み込み、{{ic|01-default.conf}} ファイルを作成し、initramfs ディレクトリ {{ic|/etc/cmdline.d/}} 内に配置します。たとえば、カーネルコマンドラインオプションファイルは次のようになります
+
カーネルコマンドラインオプションは、{{ic|/etc/dracut.conf.d/}} の ''.conf'' ファイルで {{ic|1=kernel_cmdline=}} フラグ設定できます。Dracut は自動的にこのファイルを読み込み、{{ic|01-default.conf}} ファイルを作成し、initramfs ディレクトリ {{ic|/etc/cmdline.d/}} 内に配置します。えば、カーネルコマンドラインオプションファイルは次のようになります:
   
 
{{hc|/etc/dracut.conf.d/cmdline.conf|2=
 
{{hc|/etc/dracut.conf.d/cmdline.conf|2=
96行目: 475行目:
 
==== 雑記 ====
 
==== 雑記 ====
   
{{ic|dracut}} ルートブロックデバイスを指定する必はありません。{{man|7|dracut.cmdline}} から:
+
{{ic|dracut}} ルートブロックデバイスを指定することは須ではありません。{{man|7|dracut.cmdline}} によると:
   
: カーネル使用るルート デバイスは、通常どおり、カーネルコマンドラインのブート構成ファイルで指定されます。
+
: カーネルによって使用されるルートブロックデバイスは、通常り、ブート設定ファイル内でカーネルコマンドラインによって指定されます。
   
ただし、一部のパラメータを早期に設定すると便利な場合があり、追加のコマンドラインパラメーターのプロンプトなど追加機能を有効にすることができます。すべてのオプションについては、{{man|7|dracut.cmdline}} を参照してください。設定オプションの例を次に示します
+
しかし、一部のパラメータを早期に設定しておくと便利な場合があり、追加のコマンドラインパラメーターのプロンプトなどといった追加機能を有効にすることができます。すべてのオプションについては、{{man|7|dracut.cmdline}} を参照してください。設定オプションの例を次に示します:
   
* スワップパーティションからの再開: {{ic|1=resume=UUID=80895b78-7312-45bc-afe5-58eb4b579422}}
+
* スワップパーティションを使ってハイバネートから復帰する: {{ic|1=resume=UUID=80895b78-7312-45bc-afe5-58eb4b579422}}
  +
* 追加のカーネルコマンドラインパラメータを入力するためのプロンプトを表示する: {{ic|1=rd.cmdline=ask}} {{Warning|プロンプトが表示される前にキーボードが初期化されていないと、{{ic|1=rd.cmdline=ask}} は問題を発生させる可能性があり、そうなると、ハードリセットしなくてはならなくなります。[https://github.com/dracutdevs/dracut/issues/728 dracut issue 728] を見てください}}
* 追加のカーネルコマンドラインパラメータを要求する: {{ic|1=rd.cmdline=ask}}
 
* ''quiet'' が設定されている場合でも情報出力を印刷する: {{ic|1=rd.info}}
+
* {{ic|quiet}} が設定されている場合でも情報出力する: {{ic|1=rd.info}}
   
=== Unified カーネルイメージ ===
+
=== ユニファイドカーネルイメージ ===
   
''dracut'' は、{{ic|--uefi}} コマンドラインオプションまたは {{ic|1=uefi="yes"}} 設定オプションを使用して [[Unified カーネルイメージ]] を生成できます。
+
''dracut'' は、{{ic|--uefi}} コマンドラインオプションまたは {{ic|1=uefi="yes"}} 設定オプションを使用して [[Unified カーネルイメージ]]を生成できます。
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
116行目: 495行目:
 
生成された initramfs イメージの情報をページャを使って表示するには:
 
生成された initramfs イメージの情報をページャを使って表示するには:
   
$ lsinitrd <path to initramfs image> | less
+
# lsinitrd ''/path/to/initramfs_or_uefi_image'' | less
   
上記のコマンドはイメージ生成時に dracut に指定された引数や dracut モジュールのリスト、含まれているファイルのリストを表示します。
+
上記のコマンドはイメージ生成時に {{ic|dracut}} に指定された引数や {{ic|dracut}} モジュールのリスト、含まれているファイルのリストを表示します。
   
 
=== 圧縮プログラムの変更 ===
 
=== 圧縮プログラムの変更 ===
124行目: 503行目:
 
使用する圧縮プログラムを変更して、生成イメージの圧縮時間を減らすことができます。
 
使用する圧縮プログラムを変更して、生成イメージの圧縮時間を減らすことができます。
   
  +
{{Warning|使用する圧縮アルゴリズムがカーネルでサポートされていることを確認してください。さもないと、ブートできなくなってしまいます。また、使用する圧縮プログラムのパッケージをインストールしておく必要があります。}}
{{Warning|
 
* カーネルで使用する圧縮方法のサポートがコンパイル時に組み込まれているかどうか確認してください (組み込まれていない場合、起動できなくなります)。また、圧縮プログラムのパッケージをインストールする必要があります。
 
* バージョン 5.9 より前の Linux カーネルは zstd 圧縮 ををサポートしていません。 {{Pkg|linux-zen}} はバージョン 5.8 以降でサポートしています
 
}}
 
   
以下の行のどれかを dracut の[[#設定|設定]]に追加してください (2つ以上追加してはいけません):
+
以下の行のどれかを [[#詳細設定|dracut の設定ファイル]]に追加してください (2つ以上追加してはいけません):
   
  +
compress="cat"
 
compress="gzip"
 
compress="gzip"
 
compress="bzip2"
 
compress="bzip2"
143行目: 520行目:
 
公式でサポートされていない圧縮プログラムを使うこともできます:
 
公式でサポートされていない圧縮プログラムを使うこともできます:
   
compress="<program>"
+
compress="''program''"
  +
  +
=== パフォーマンスに関する考慮事項 ===
  +
  +
ブートと initramfs 作成のパフォーマンスを最適化するためのいくつかの考慮事項:
  +
  +
* 最速の圧縮方式を理解し、設定する: カーネルモジュールがすでに圧縮されている場合、initramfs作成時に再圧縮する必要はないかもしれない。
  +
  +
* initramfs に systemd を含めることの影響を理解する: 遅くなる場合は省略し、速くなる場合は含める。
  +
  +
* コピーオンライトファイルシステムを使用している場合は、dracut-cpio の使用を検討する: 適用可能性については、{{ic|--enhanced-cpio}} オプションを参照。
  +
  +
* initramfs に含めるカーネルモジュールと dracut モジュールの数を最小限に抑える: 例:{{Pkg|nfs-utils}}がインストールされている(ただしブートには不要)場合、nfs dracutモジュールを明示的に省略する必要がある。そうしないと、デフォルト構成で生成されたinitramfsでネットワークブートが有効になる - https://github.com/dracut-ng/dracut-ng/pull/297 を参照。
  +
  +
* bash の代わりに busybox の使用を検討する:
  +
  +
* hostonly を検討する:
   
 
=== カーネルのアップグレード時に新しい initramfs を生成 ===
 
=== カーネルのアップグレード時に新しい initramfs を生成 ===
   
カーネルをアップグレードするたびに、新しい initramfs イメージを自動的に生成することが可能です。ここでは、デフォルトの {{Pkg|linux}} カーネルについて説明しますが、他のカーネル用のフックを追加するのも簡単でしょう
+
カーネルをアップグレードするたびに、新しい initramfs イメージを自動的に生成することが可能です。ここでは、デフォルトの {{Pkg|linux}} カーネルについて説明しますが、他のカーネル用のフックを追加するのも簡単なはず
   
{{Tip|{{AUR|dracut-hook}} パッケージは以下のようなフックとスクリプトを含んでいます。EFI 実行ファイルである initramfs イメージ (例:{{ic|''esp''/EFI/Linux/linux-''kernel''-''machine_id''-''build_id''.efi}}) が欲しい場合は、代わりに {{AUR|dracut-hook-uefi}} が必要かもれません。このディレクトリにある EFI バイナリは [[systemd-boot]] によって自動的に検出されるので、 {{ic|/boot/loader/loader.conf}} にエントリを書く必要はありません。}}
+
{{Tip|{{AUR|dracut-hook}} パッケージは以下のようなフックとスクリプトを含んでいます。EFI 実行ファイルである initramfs イメージ (つまり {{ic|''esp''/EFI/Linux/linux-''kernel''-''machine_id''-''build_id''.efi}}) が欲しい場合は、代わりに {{AUR|dracut-uefi-hook}} か {{AUR|dracut-hook-uefi}} をインストールしたほう良いでょう。このディレクトリにある EFI バイナリは [[systemd-boot]] によって自動的に検出されるので、{{ic|/boot/loader/loader.conf}} にエントリを書く必要はありません。}}
   
カーネルバージョンを調べるコマンドはやや複雑なので、[[pacman フック]] の中では単独では動きません。そのため、システム上の任意の場所にスクリプトを作成します。この例では {{ic|/usr/local/bin/}} に作成します。
+
カーネルバージョンを調べるコマンドはやや複雑なので、[[pacman フック]]の中では単独では動きません。そのため、システム上の任意の場所にスクリプトを作成します。この例では {{ic|/usr/local/bin/}} に作成します。
   
このスクリプトは、新しい {{ic|vmlinuz}} カーネルファイルを {{ic|/boot/}} にコピーします。これは、カーネルパッケージが {{ic|/boot/}} にファイルを配置しなくなったためです。[https://lists.archlinux.org/pipermail/arch-general/2019-October/047056.html]
+
このスクリプトは、新しい {{ic|vmlinuz}} カーネルファイルを {{ic|/boot/}} にコピーします。これは、カーネルパッケージが {{ic|/boot/}} にファイルを配置しなくなったためです。[https://lists.archlinux.org/archives/list/arch-general@lists.archlinux.org/message/ZSO3ZLU2ATKBRLZBPOE3EHR6GS63RO3P/]
   
 
{{hc|/usr/local/bin/dracut-install.sh|<nowiki>
 
{{hc|/usr/local/bin/dracut-install.sh|<nowiki>
184行目: 577行目:
 
</nowiki>}}
 
</nowiki>}}
   
スクリプトを [[ヘルプ:読み方#実行可能属性の付与|実行可能属性の付与]] する必要があります。フラグを追加したり削除したりしたい場合は、[[dracut#設定]] に追加する必要があります。
+
スクリプトを[[実行可能属性|実行可能にする]]必要があります。フラグを追加したり削除したりしたい場合は、[[#詳細設定|dracut の設定ファイル]]に追加する必要があります。
   
のステップ [[pacman フック]] を作成します
+
に、[[pacman フック]]を作成します:
   
 
{{hc|/etc/pacman.d/hooks/90-dracut-install.hook|<nowiki>
 
{{hc|/etc/pacman.d/hooks/90-dracut-install.hook|<nowiki>
216行目: 609行目:
 
</nowiki>}}
 
</nowiki>}}
   
{{Pkg|mkinitcpio}} を削除するか以下のコマンド、[[mkinitcpio]] が initramfs イメージを作成したり削除するのも止める必要があります
+
{{Pkg|mkinitcpio}} を削除するか以下のコマンドを使って、[[mkinitcpio]] が initramfs イメージを作成したり削除するのも止める必要があります:
   
 
# ln -sf /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook
 
# ln -sf /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook
 
# ln -sf /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook
 
# ln -sf /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook
  +
  +
=== Bluetooth キーボードのサポート ===
  +
  +
Dracut は、Bluetooth キーボードが検出されると自動的に Bluetooth モジュールを有効にします。ただし、これには dracut が hostonly モードである必要があります。これはデフォルトではありません。
  +
  +
=== Limine ブートローダーのサポート ===
  +
  +
{{AUR|limine-dracut-support}} パッケージは、[[Limine]] ブートローダーでのカーネルとブートエントリのインストールと削除を自動化するために、dracut と pacman フックを備えた [https://gitlab.com/Zesko/limine-entry-tool limine-entry-tool] を利用します。詳細については、[[Limine#ブートエントリの自動化]] を参照してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
   
=== ハイバネーション ===
+
=== ハイバネー ===
   
休止状態からの再開機能しない場合 {{ic|resume}} モジュールを含めるように dracut [[#Configuration|設定ファイル追加]] する必要があります:
+
ハイバネートからの復帰うまくいかない場合、{{ic|resume}} モジュールをイメージに含めるように {{ic|dracut}} を設定する必要がある場合があります。以下を[[#Dracut モジュール|設定ファイル追加する]]必要があります:
   
 
{{hc|/etc/dracut.conf.d/resume-from-hibernate.conf|2=
 
{{hc|/etc/dracut.conf.d/resume-from-hibernate.conf|2=
add_dracutmodules+="resume"
+
add_dracutmodules+=" resume "
 
}}
 
}}
   
=== LVM / software RAID / LUKS ===
+
=== LVM / ソフトウェア RAID / LUKS ===
   
カーネルに LVM / software RAID / LUKS ブロックの自動検出とマウントに問題がある場合。次のカーネルコマンドライン オプションを使用してinitramfs の生成を再試します
+
カーネルに LVM / ソフトウェア RAID / LUKS ブロックの自動検出とマウントに問題がある場合、以下のカーネルコマンドラインオプションを使用して initramfs の生成を再試してみることができます:
   
 
rd.auto rd.lvm=1 rd.dm=1 rd.md=1 rd.luks=1
 
rd.auto rd.lvm=1 rd.dm=1 rd.md=1 rd.luks=1
   
=== "brltty" の停止ジョブが実行中です ===
+
=== A stop job is running for "brltty" ===
   
システムが {{ic|brllty}} を待機中、起動に問題があか、シャットダウンプロセスが非常に長い場合、dracut 設定次の行を追加します。
+
ブートの問題が発生する場合や、システムが {{ic|brllty}} の終了を待機せいでシャットダウン非常に長い時間が掛かる場合、以下を dracut 設定ファイルに追加してください:
   
 
omit_dracutmodules+=" brltty "
 
omit_dracutmodules+=" brltty "
   
 
あるいは、{{Pkg|brltty}} が必要ない場合はアンインストールしてください。
 
あるいは、{{Pkg|brltty}} が必要ない場合はアンインストールしてください。
  +
  +
=== No usable keyslot is available ===
  +
  +
Cannot use whirlpool hash for keyslot encryption.
  +
Keyslot open failed.
  +
No usable keyslot is available.
  +
  +
上記のようなメッセージが表示されてブートに失敗する場合、大抵、{{ic|add_dracutmodules}} に {{ic|crypt}} モジュールを追加するだけで解決します。しかし、このモジュールを追加した後もメッセージが表示され続ける場合、以下のように設定を変更する必要がある場合があります:
  +
  +
install_items+=" /usr/lib/ossl-modules/legacy.so "
  +
  +
これは、[[OpenSSL]] が whirlpool ハッシュ関数を非推奨にして、この関数を上記のライブラリに移動したせいです。Arch を使用する場合、dracut は自動的にこのライブラリを initramfs にインストールしません。
   
 
== 参照 ==
 
== 参照 ==
   
 
* [[Wikipedia:dracut (software)]]
 
* [[Wikipedia:dracut (software)]]
* [https://wiki.gentoo.org/wiki/Dracut Gentoo:Dracut]
+
* [[Gentoo:Dracut]]
  +
  +
{{TranslationStatus|dracut|2023-08-03|783287}}

2025年2月20日 (木) 03:47時点における最新版

関連記事

dracut はカーネルによって使用される初期イメージを生成し、ルートファイルシステムにアクセスするのに必要なブロックデバイスモジュール (IDE、SCSI、RAID など) をプリロードします。linux のインストール時に mkinitcpiodracut のどちらを使うか選択できます。dracut は Fedora、RHEL、Gentoo、Debian などのディストリビューションで使われています。Arch はデフォルトで mkinitcpio を使用します。

dracut のプロジェクトドキュメントはこちらで読むことができます。

インストール

dracut パッケージをインストールしてください。最新の開発バージョンの場合は dracut-gitAUR をインストールしてください。

ヒント: dracut が動作することが確認できたのであれば、mkinitcpioアンインストールできます。

使用方法

dracut は使いやすく、LVM on LUKS のような非標準的なセットアップを使用する場合でも、通常はユーザー設定を必要としません。

実行中のカーネルの initramfs を生成するには:

# dracut --hostonly --no-hostonly-cmdline --add-confdir no-network /boot/initramfs-linux.img

hostonly モードを永続的に有効にするには (コマンドラインに含める必要がないように) dracut 設定に以下を追加します。

/etc/dracut.conf.d/hostonly.conf
hostonly="yes"
ノート: 場合によっては、特にシステムを初めてインストールする場合、上記のコマンドは機能しません。次のコマンドを使用してください。
# dracut --regenerate-all

フォールバック initramfs を生成するには、以下を実行します。

# dracut /boot/initramfs-linux-fallback.img

/boot/initramfs-linux.img は、出力イメージファイルを指します。別のカーネルを使用している場合は、ファイル名を変更することを検討してください。たとえば、linux-lts カーネルの場合、出力ファイルは /boot/initramfs-linux-lts.img という名前にする必要があります。ただし、ブートローダー 設定で同じファイル名を使用する限り、これらのファイルには好きな名前を付けることができます。

ノート: これらのコマンドで作成されたファイルには、インストールされているマイクロコードイメージが埋め込まれています。

追加オプション

--force フラグは、イメージファイルが既に存在する場合に上書きします。

--kver オプションは、使用するカーネルを指定します。このオプションの引数は、/usr/lib/modules にあるディレクトリの名前と一致する必要があります。

dracut(8) には他のフラグの説明が載っています。

詳細設定

初期 RAM ディスクフェーズ中の様々なタスクの実行方法には、2つの異なるアプローチがあることに注意することが重要です。

シェル (bash/busybox/dash) ベースの初期 RAM ディスク
init スクリプトが開始され、次に初期 RAM ディスクのファイルシステムをスキャンして実行される dracut スクリプトを検索します。
systemd ベース(デフォルト)の初期 RAM ディスク
systemd は初期 RAM ディスクフェーズの開始時にすでに開始されています。実行されるタスクは、通常の systemd ユニットファイルによって決定されます。systemdブートアッププロセスを参照してください。

具体的なバリアントは、systemd dracut モジュールの有無によって決定されます。詳細については、#dracut モジュールを参照してください。

dracut は、コマンドラインで直接引数を渡すことによって構成できます (dracut(8) § OPTIONS を参照) 特定のフラグのセットを使用して常に dracut を実行する場合は、/etc/dracut.conf.d/.conf ファイルに指定された設定を保存できます。例:

/etc/dracut.conf.d/myflags.conf
hostonly="yes"
compress="lz4"
add_drivers+=" i915 "
omit_dracutmodules+=" systemd network "

dracut.conf(5) でより多くの設定オプションを確認できます。各オプションのより詳細な説明は、dracut(8) にあります。以下では、いくつかの一般的なオプションについて説明します。

Dracut モジュール

dracut は、initramfs を構築するためにモジュール式のアプローチを採用しています (dracut.modules(7) を参照) dracut の組み込みモジュールはすべて /lib/dracut/modules.d にあり、dracut --list-modules で一覧表示できます。追加のモジュールは、dracut-sshd-gitAUR などの外部パッケージによって提供できます。残念ながら、dracut の組み込みモジュールにはドキュメントがありませんが、その名前はそれ自体で説明できる場合があります。

一部のモジュールはデフォルトでアクティブ/非アクティブであり、--add/--omit コマンドライン引数または add_dracutmodules+=""/omit_dracutmodules+="" 永続設定エントリ行を使用してアクティブ化/非アクティブ化できます。

/etc/dracut.conf.d/myflags.conf
# ...
add_dracutmodules+=" dracut modules to activate "
omit_dracutmodules+=" dracut modules to deactivate "
# ...

次の表に、dracut モジュール、必要なパッケージ(dracut のオプションの依存関係)およびモジュールの説明を示します。

ほとんどの dracut モジュールは、他の dracut モジュールに依存しています。例として、bluetooth dracut モジュールは dbus dracut モジュールに依存しています。以下の表は、直接的な dracut モジュールの依存関係のみを示しています。つまり、特定の dracut モジュールの module-setup.sh にリストされている、特定のモジュールに必要なパッケージを示しています。

追加の dracut モジュールのドキュメントについては、アップストリームの dracut wiki を参照してください。

dracut モジュール 必要なパッケージ 説明
bluetooth bluez Bluetooth (keyboard)
btrfs btrfs-progs ブロックデバイスで btrfs をスキャンします
busybox busybox BusyBox (自己責任で) の使用を許可します
crypt cryptsetup 暗号化された dm-crypt ファイルシステムのサポート
dash dash dash (自己責任で) の使用を許可します
dmraid dmraid, multipath-tools DMRAID Dracut モジュールサポート
multipath multipath-tools MultiPath Dracut モジュールサポート
dmsquash-live-ntfs fuse3, ntfs-3g ライブ NTFS
lvm lvm2 LVM のサポート
mdraid mdadm ソフトウェア RAID デバイスとも呼ばれるMDデバイスをサポートします
memstrack memstrackAUR memstrack をサポート
nvdimm ndctl NVDIMM をサポート
plymouth plymouth Plymouth ブートスプラッシュ
rescue 救助モード用のさまざまなユーティリティ (Ping、SSH、VI、FSCK などなど) が含まれています。
resume initramfs が低電力状態から再開できるようにします
rngd 早期ブートでランダムジェネレーターサービスを開始します
syslog rsyslogAUR rsyslog でロギングを有効にする
squash squashfs-tools squashed initramfs を構築するためのサポート
tpm2-tss tpm2-tools Trusted Platform Module
base 必要なユーティリティを備えたベースモジュール
bash bash Bash が複数存在する場合、Bash を優先的に使用
biosdevname biosdevnameAUR BIOS に基づいたネットワークデバイス名を使用
caps init 実行前にケーパビリティを削減可能
convertfs / を /usr に統合 (次回起動時に実行)
crypt-gpg gnupg GPG を使用した暗号化・SmartCard のサポート (GPG キーが必要な場合あり)
crypt-loop 暗号化されたループバックデバイスのサポート (対称鍵)
dbus dbus-broker または dbus-daemon の仮想パッケージ
dbus-broker dbus-broker dbus-broker を dbus サービスプロバイダとして使用
dbus-daemon dbus dbus を dbus サービスプロバイダとして使用
debug デバッグ機能を有効化
dm device-mapper のサポートを追加
dmsquash-live-autooverlay ルートファイルシステムの親ブロックデバイスの空き領域に overlayfs 用パーティションを作成
dracut-systemd 基本的な systemd 用 dracut モジュール
drm DRM (Direct Rendering Manager) サポートのカーネルモジュールを含む
ecryptfs ecryptfs ファイルシステムのサポートを追加
fido2 FIDO2 セキュリティトークンを使用して暗号化ファイルシステムを解読可能
fips FIPS セキュリティ標準を適用
fs-lib fsck.* や mount などのファイルシステムツールのライブラリ
fstab-sys rootfs より前に任意のパーティションをマウント
i18n キーマップ、コンソールフォントなどを含む
img-lib イメージの展開ツールを含むライブラリ
integrity 拡張検証モジュール (EVM) のサポートを追加
kernel-modules ルートファイルシステムおよびブート時に必要なデバイスのカーネルモジュール
kernel-modules-extra 追加のカーネルモジュール (out-of-tree)
lunmask 必要な LUN デバイスのみを選択してマスク
lvmmerge LVM スナップショットをマージ
lvmthinpool-monitor LVM thin pool を監視
masterkey 他の鍵の解読用マスターキーと keyutils を含む
modsign 署名付きカーネルモジュールのサポートを追加
overlayfs OverlayFS のカーネルモジュール
pcsc PCSC スマートカードのサポート
pkcs11 PKCS#11 ライブラリを含む
pollcdrom CD-ROM ポーリングを有効化
qemu QEMU 環境用のカーネルモジュールを含む
rescue ping、ssh、vi、fsck.* などのレスキュー用ユーティリティ
rootfs-block ルートファイルシステムを含むブロックデバイスのマウント処理
securityfs securityfs をブート初期にマウント
selinux SELinux ポリシーのロードを処理
shutdown シャットダウン時に実行されるフックを設定
systemd 早期 init システムとして systemd を使用
terminfo terminfo ファイルを含む
udev-rules udev と基本ルールのセット
uefi-lib UEFI ツールを含むライブラリ
usrmount /usr のマウントを処理
virtfs 仮想ファイルシステム (9p) のサポート
virtiofs virtiofs ファイルシステムのサポート
warpclock adjtime が LOCAL に設定されている場合にシステム時間をリセット
watchdog watchdog デバイス管理を含む (systemd 非使用時のみ動作)
watchdog-modules 起動時にロードされる watchdog 用カーネルモジュール

これは、IPアドレス が初期ブート時に利用可能になることが想定される場合に使用される Dracut モジュールについての説明です。

ネットワーキング dracut モジュール 必要なパッケージ 説明
cifs cifs-utils Samba のサポート
nbd nbd ネットワークブロックデバイスのサポート
network-manager networkmanager NetworkManager のサポート
nfs nfs-utils NFS のサポート (NFSv3 および NFSv4)
nvmf nvme-cli, jq NVMe over Fibre Channel および NVMe-over-Fabrics のサポート
iscsi open-iscsi ISCSI のサポート
ssh-client openssh SSH および SCP のインストール (設定ファイルや指定された鍵も含む)
network-legacy dhclient, iproute2, iputils レガシーなネットワークのサポート
connman connman ConnMan ネットワークのサポート
kernel-network-modules ネットワークデバイス用のカーネルモジュールを含み、ロードする
livenet SquashFS イメージのライブアップデートを取得
network ネットワークサービスプロバイダーの仮想モジュール
url-lib curl および SSL 証明書を含むライブラリ
qemu-net QEMU 環境向けネットワークカーネルモジュールを含む
systemd-network-management systemd のネットワーク管理を追加 (systemd-networkd, systemd-resolved などのネットワーク関連モジュールを含む)
systemd-networkd Systemd-networkd
net-lib ip を含むネットワークライブラリ

TPM2

systemd-cryptenroll を介して TPM2 で luks2 暗号化ボリュームをアンロックする systemd の機能を使用するには、tpm2-tools パッケージをインストールし、かつ tpm2-tss dracut モジュールを有効化してください。

カーネルモジュールの早期ロード

Dracut では、--force_drivers 引数または force_drivers+="" 設定エントリで早期ロードを有効化します (initramfs の段階で modprobe によってロードされます)。例えば:

/etc/dracut.conf.d/myflags.conf
# ...
force_drivers+=" nvidia nvidia_modeset nvidia_uvm nvidia_drm "
# ...

カーネルコマンドラインオプション

カーネルコマンドラインオプションは、/etc/dracut.conf.d/.conf ファイルで kernel_cmdline= フラグで設定できます。Dracut は自動的にこのファイルを読み込み、01-default.conf ファイルを作成し、initramfs ディレクトリ /etc/cmdline.d/ 内に配置します。例えば、カーネルコマンドラインオプションのファイルは次のようになります:

/etc/dracut.conf.d/cmdline.conf
kernel_cmdline="rd.luks.uuid=luks-f6c738f3-ee64-4633-b6b0-eceddb1bb010 rd.lvm.lv=arch/root  rd.lvm.lv=arch/swap  root=/dev/arch/root rootfstype=ext4 rootflags=rw,relatime"

雑記

dracut でルートブロックデバイスを指定することは必須ではありません。dracut.cmdline(7) によると:

カーネルによって使用されるルートブロックデバイスは、通常通り、ブート設定ファイル内でカーネルコマンドラインによって指定されます。

しかし、一部のパラメータを早期に設定しておくと便利な場合があり、追加のコマンドラインパラメーターのプロンプトなどといった追加機能を有効にすることができます。すべてのオプションについては、dracut.cmdline(7) を参照してください。設定オプションの例を次に示します:

  • スワップパーティションを使ってハイバネートから復帰する: resume=UUID=80895b78-7312-45bc-afe5-58eb4b579422
  • 追加のカーネルコマンドラインパラメータを入力するためのプロンプトを表示する: rd.cmdline=ask
    警告: プロンプトが表示される前にキーボードが初期化されていないと、rd.cmdline=ask は問題を発生させる可能性があり、そうなると、ハードリセットしなくてはならなくなります。dracut issue 728 を見てください
  • quiet が設定されている場合でも情報を出力する: rd.info

ユニファイドカーネルイメージ

dracut は、--uefi コマンドラインオプションまたは uefi="yes" 設定オプションを使用して Unified カーネルイメージを生成できます。

ヒントとテクニック

生成されたイメージの情報を表示

生成された initramfs イメージの情報をページャを使って表示するには:

# lsinitrd /path/to/initramfs_or_uefi_image | less

上記のコマンドはイメージ生成時に dracut に指定された引数や dracut モジュールのリスト、含まれているファイルのリストを表示します。

圧縮プログラムの変更

使用する圧縮プログラムを変更して、生成イメージの圧縮時間を減らすことができます。

警告: 使用する圧縮アルゴリズムがカーネルでサポートされていることを確認してください。さもないと、ブートできなくなってしまいます。また、使用する圧縮プログラムのパッケージをインストールしておく必要があります。

以下の行のどれかを dracut の設定ファイルに追加してください (2つ以上追加してはいけません):

compress="cat"
compress="gzip"
compress="bzip2"
compress="lzma"
compress="xz"
compress="lzo"
compress="lz4"
compress="zstd"

gzip がデフォルトで使用される圧縮プログラムです。compress="cat" は、圧縮なしで initramfs を作成します。

公式でサポートされていない圧縮プログラムを使うこともできます:

compress="program"

パフォーマンスに関する考慮事項

ブートと initramfs 作成のパフォーマンスを最適化するためのいくつかの考慮事項:

  • 最速の圧縮方式を理解し、設定する: カーネルモジュールがすでに圧縮されている場合、initramfs作成時に再圧縮する必要はないかもしれない。
  • initramfs に systemd を含めることの影響を理解する: 遅くなる場合は省略し、速くなる場合は含める。
  • コピーオンライトファイルシステムを使用している場合は、dracut-cpio の使用を検討する: 適用可能性については、--enhanced-cpio オプションを参照。
  • initramfs に含めるカーネルモジュールと dracut モジュールの数を最小限に抑える: 例:nfs-utilsがインストールされている(ただしブートには不要)場合、nfs dracutモジュールを明示的に省略する必要がある。そうしないと、デフォルト構成で生成されたinitramfsでネットワークブートが有効になる - https://github.com/dracut-ng/dracut-ng/pull/297 を参照。
  • bash の代わりに busybox の使用を検討する:
  • hostonly を検討する:

カーネルのアップグレード時に新しい initramfs を生成

カーネルをアップグレードするたびに、新しい initramfs イメージを自動的に生成することが可能です。ここでは、デフォルトの linux カーネルについて説明しますが、他のカーネル用のフックを追加するのも簡単なはずです。

ヒント: dracut-hookAUR パッケージは以下のようなフックとスクリプトを含んでいます。EFI 実行ファイルである initramfs イメージ (つまり esp/EFI/Linux/linux-kernel-machine_id-build_id.efi) が欲しい場合は、代わりに dracut-uefi-hookAURdracut-hook-uefiAUR をインストールしたほうが良いでしょう。このディレクトリにある EFI バイナリは systemd-boot によって自動的に検出されるので、/boot/loader/loader.conf にエントリを書く必要はありません。

カーネルバージョンを調べるコマンドはやや複雑なので、pacman フックの中では単独では動きません。そのため、システム上の任意の場所にスクリプトを作成します。この例では /usr/local/bin/ に作成します。

このスクリプトは、新しい vmlinuz カーネルファイルを /boot/ にコピーします。これは、カーネルパッケージが /boot/ にファイルを配置しなくなったためです。[1]

/usr/local/bin/dracut-install.sh
#!/usr/bin/env bash

args=('--force' '--no-hostonly-cmdline')

while read -r line; do
	if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
		read -r pkgbase < "/${line}"
		kver="${line#'usr/lib/modules/'}"
		kver="${kver%'/pkgbase'}"

		install -Dm0644 "/${line%'/pkgbase'}/vmlinuz" "/boot/vmlinuz-${pkgbase}"
		dracut "${args[@]}" --hostonly "/boot/initramfs-${pkgbase}.img" --kver "$kver"
		dracut "${args[@]}" --no-hostonly "/boot/initramfs-${pkgbase}-fallback.img" --kver "$kver"
	fi
done
/usr/local/bin/dracut-remove.sh
#!/usr/bin/env bash

while read -r line; do
	if [[ "$line" == 'usr/lib/modules/'+([^/])'/pkgbase' ]]; then
		read -r pkgbase < "/${line}"
		rm -f "/boot/vmlinuz-${pkgbase}" "/boot/initramfs-${pkgbase}.img" "/boot/initramfs-${pkgbase}-fallback.img"
	fi
done

スクリプトを実行可能にする必要があります。フラグを追加したり削除したりしたい場合は、dracut の設定ファイルに追加する必要があります。

次に、pacman フックを作成します:

/etc/pacman.d/hooks/90-dracut-install.hook
[Trigger]
Type = Path
Operation = Install
Operation = Upgrade
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Updating linux initcpios (with dracut!)...
When = PostTransaction
Exec = /usr/local/bin/dracut-install.sh
Depends = dracut
NeedsTargets
/etc/pacman.d/hooks/60-dracut-remove.hook
[Trigger]
Type = Path
Operation = Remove
Target = usr/lib/modules/*/pkgbase

[Action]
Description = Removing linux initcpios...
When = PreTransaction
Exec = /usr/local/bin/dracut-remove.sh
NeedsTargets

mkinitcpio を削除するか以下のコマンドを使って、mkinitcpio が initramfs イメージを作成したり削除するのも止める必要があります:

# ln -sf /dev/null /etc/pacman.d/hooks/90-mkinitcpio-install.hook
# ln -sf /dev/null /etc/pacman.d/hooks/60-mkinitcpio-remove.hook

Bluetooth キーボードのサポート

Dracut は、Bluetooth キーボードが検出されると自動的に Bluetooth モジュールを有効にします。ただし、これには dracut が hostonly モードである必要があります。これはデフォルトではありません。

Limine ブートローダーのサポート

limine-dracut-supportAUR パッケージは、Limine ブートローダーでのカーネルとブートエントリのインストールと削除を自動化するために、dracut と pacman フックを備えた limine-entry-tool を利用します。詳細については、Limine#ブートエントリの自動化 を参照してください。

トラブルシューティング

ハイバネート

ハイバネートからの復帰がうまくいかない場合、resume モジュールをイメージに含めるように dracut を設定する必要がある場合があります。以下を設定ファイルに追加する必要があります:

/etc/dracut.conf.d/resume-from-hibernate.conf
add_dracutmodules+=" resume "

LVM / ソフトウェア RAID / LUKS

カーネルに LVM / ソフトウェア RAID / LUKS ブロックの自動検出とマウントに問題がある場合、以下のカーネルコマンドラインオプションを使用して initramfs の生成を再度試してみることができます:

rd.auto rd.lvm=1 rd.dm=1 rd.md=1 rd.luks=1

A stop job is running for "brltty"

ブートの問題が発生する場合や、システムが brllty の終了を待機するせいでシャットダウンに非常に長い時間が掛かる場合、以下を dracut の設定ファイルに追加してください:

omit_dracutmodules+=" brltty "

あるいは、brltty が必要ない場合はアンインストールしてください。

No usable keyslot is available

Cannot use whirlpool hash for keyslot encryption. 
Keyslot open failed. 
No usable keyslot is available.

上記のようなメッセージが表示されてブートに失敗する場合、大抵、add_dracutmodulescrypt モジュールを追加するだけで解決します。しかし、このモジュールを追加した後もメッセージが表示され続ける場合、以下のように設定を変更する必要がある場合があります:

install_items+=" /usr/lib/ossl-modules/legacy.so "

これは、OpenSSL が whirlpool ハッシュ関数を非推奨にして、この関数を上記のライブラリに移動したせいです。Arch を使用する場合、dracut は自動的にこのライブラリを initramfs にインストールしません。

参照

翻訳ステータス: このページは en:dracut の翻訳バージョンです。最後の翻訳日は 2023-08-03 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。