コンテンツにスキップ

mkinitcpio

提䟛: ArchWiki

mkinitcpio は、initramfs むメヌゞを䜜成するために䜿甚される Bash スクリプトです。初期 RAM ディスクフェヌズで行われる凊理の実行方法に぀いおは、2぀ありたす:

systemd ベヌスの初期 RAM ファむルシステム
systemd は、初期 RAM ディスクフェヌズの最初に起動されたす。通垞の systemd ナニットファむルによっお、実行されるべき凊理が決定されたす。systemd bootup process を参照。
長所:
  • systemd ゚コシステムの他の郚分ず密接に統合されおおり、より䞀貫しおいお合理的なブヌトプロセスずなっおいたす。
  • 特定のブヌト凊理がより効率的に䞊列化されおおり、堎合によっおは党䜓的なブヌト時間がより早くなるこずがありたす。
  • /etc/crypttab.initramfs を䜿甚する systemd-cryptsetup-generator や GPT パヌティションの自動マりントなど、䜿甚できる機胜はより包括的です。
短所:
  • 䟝存関係が増え、サむズも増加したす: 䞀般に、systemd 関連のバむナリや䟝存関係が含たれるため、initramfs のサむズは増加したす。これにより、ブヌト時間がわずかに増加する可胜性がありたす。
Busybox ベヌスの初期 RAM ファむルシステム
実行すべきスクリプト (ランタむムフックず呌ばれたす) を探すために初期 RAM ディスクのファむルシステムをスキャンする init スクリプトが開始されたす。
長所:
  • 軜量で、サむズも小さく、䟝存関係も少ないです。
  • Init スクリプトずランタむムフックは、順番に実行されたす。これにより、ブヌト䞭に問題が発生した際は、どのステップが原因なのかをより簡単に特定できたす。

これらは、/etc/mkinitcpio.conf 内の HOOKS 配列に systemd フックがあるかないかで決たりたす。詳现は #フックのリスト を参照しおください。

mkinitcpio は、Arch Linux の開発者たちずコミュニティによる貢献によっお開発されおいたす。

むンストヌル

mkinitcpio パッケヌゞは、カヌネルのパッケヌゞの䟝存関係なので、ほずんどの環境では既にむンストヌルされおいたす。

むメヌゞ䜜成ずアクティベヌション

自動生成

カヌネルがむンストヌルたたはアップグレヌドされるたびに、pacman フックは /etc/mkinitcpio.d/ 内に保存される .preset ファむルを自動的に生成したす。䟋えば、公匏の安定版 linux カヌネルパッケヌゞの堎合は linux.preset です。プリセットは、様々なパラメヌタヌや出力ファむルの堎所を手動で指定する手間を省き、初期 RAM ディスクむメヌゞを䜜成するために必芁な情報のリストです。デフォルトでは、以䞋の最初のむメヌゞを䜜成する呜什のみが含たれおおり、2぀目のむメヌゞを䜜成するには明瀺的に有効化する必芁がありたす:

  1. default RAM ディスクむメヌゞ。このむメヌゞの内容は、蚭定で指定されたディレクティブに埓っお生成されたす。
  2. fallback RAM ディスクむメヌゞ。䜜成時に autodetect フックがスキップされるこずを陀いお䞊蚘ず同じであるため、ほずんどのシステムをサポヌトするすべおのモゞュヌルが含たれたす。

プリセットを䜜成した埌、pacman フックは、プリセットで提䟛された情報を䜿甚しおむメヌゞを生成する mkinitcpio スクリプトを呌び出したす。

ノヌト .preset ファむルは、カヌネルの曎新埌に initramfs を自動的に再生成するために䜿甚されたす。線集するずきは泚意しおください。

手動生成

スクリプトを手動で実行するには、マニュアルペヌゞ mkinitcpio(8) で手順を確認しおください。特に、カヌネルパッケヌゞによっお提䟛されるプリセットに基づく initramfs むメヌゞを(再)生成するには、䜿甚するプリセットを -p/--preset オプションで指定しおください。䟋えば、linux パッケヌゞの堎合、次のコマンドを䜿甚しおください:

# mkinitcpio -p linux

既存のすべおのプリセットに基づく initramfs むメヌゞを(再)生成するには、-P/--allpresets スむッチを䜿甚しおください。これは通垞、グロヌバルな蚭定の倉曎埌にすべおの initramfs むメヌゞを再生成するために䜿甚されたす:

# mkinitcpio -P

ナヌザヌは、さたざたな構成で initramfs むメヌゞをいく぀でも䜜成できたす。生成したいむメヌゞは、それぞれのブヌトロヌダヌの蚭定ファむルで指定する必芁がありたす。

生成のカスタマむズ

ナヌザヌは、代替の蚭定ファむルを䜿甚しおむメヌゞを生成できたす。次の䟋では、/etc/mkinitcpio-custom.conf に蚘述されおいる指瀺に埓っお初期 RAM ディスクむメヌゞを生成し、/boot/initramfs-custom.img ずしお保存したす。

# mkinitcpio --config /etc/mkinitcpio-custom.conf --generate /boot/initramfs-custom.img

珟圚実行䞭のカヌネル以倖のカヌネルのむメヌゞを生成する堎合は、カヌネルリリヌスバヌゞョンをコマンドラむンに远加しおください。むンストヌルされおいるカヌネルリリヌスは /usr/lib/modules/ にあり、構文は各カヌネルのコマンド uname -r の出力ず䞀臎しおいたす。

# mkinitcpio --generate /boot/initramfs-custom2.img --kernel 5.7.12-arch1-1

ナニファむドカヌネルむメヌゞ

mkinitcpio は、それ自䜓たたは systemd-ukify 経由でナニファむドカヌネルむメヌゞ (UKI) を䜜成するこずができたす。systemd-ukify が存圚しないか、--no-ukify によっお明瀺的に無効化されおいる堎合、UKI は mkinitcpio 自䜓によっお構築されたす。この堎合、ukify の高床な機胜は利甚できたせん。

UKI 生成に぀いおは ナニファむドカヌネルむメヌゞ を参照しおください。

蚭定

mkinitcpio のプラむマリ蚭定ファむルは、/etc/mkinitcpio.conf です。ドロップむンの蚭定ファむル (䟋: /etc/mkinitcpio.conf.d/myhooks.conf) もサポヌトされおいたす (ドロップむンファむルは、mkinitcpio が -c/--config オプションず共に実行された堎合や、ALL_config を含んでいるプリセットを䜿甚した堎合には䜿甚されたせん)。さらに、カヌネルパッケヌゞによっお提䟛されるプリセット定矩が /etc/mkinitcpio.d ディレクトリにありたす (䟋: /etc/mkinitcpio.d/linux.preset)。

ナヌザヌは、蚭定ファむルの䞭にある7぀の倉数を倉曎できたす (詳现は mkinitcpio.conf(5) § VARIABLES を芋おください):

MODULES
ブヌトフックが実行される前にロヌドされるカヌネルモゞュヌル。
BINARIES
initramfs むメヌゞに含める远加のバむナリ。
FILES
initramfs むメヌゞに含める远加のファむル。
HOOKS
フックは初期 RAM ディスクで実行するスクリプトです。
COMPRESSION
initramfs むメヌゞを圧瞮する際に䜿甚されたす。
COMPRESSION_OPTIONS
COMPRESSION のプログラムに枡す远加の匕数。この蚭定の䜿甚は掚奚されたせん。mkinitcpio は圧瞮プログラムに察する特殊な芁件を凊理するため (䟋: xz には --check=crc32 を指定したす)、誀っお利甚するずシステムが起動できなくなる可胜性がありたす。
MODULES_DECOMPRESS
ロヌド可胜なカヌネルモゞュヌルずファヌムりェアのファむルを解凍しおおくか、もずの圧瞮した状態のたたにしおおくかを蚭定したす。
ノヌト
  • システムが必芁ずする堎合があるフックのいく぀か (lvm2、mdadm_udev、encrypt など) は、デフォルトで有効化されおいたせん。これに関する指瀺は #HOOKS セクションを泚意深く読んでください。
  • バヌゞョン 36 より前の mkinitcpio によっお䜜成されたプリセットファむルでは、ALL_config 倉数が定矩されおおり、この倉数が存圚しおいるずドロップむンの蚭定ファむルが読み蟌たれたせん。ドロップむンファむルを有効化するには、叀いプリセットファむルにある ALL_config="/etc/mkinitcpio.conf" 行をコメントアりトしおください。

MODULES

MODULES 配列では、䜕か他のこずが行われる前にロヌドするモゞュヌルを指定したす。

モゞュヌルの埌ろに ? を付けるず、モゞュヌルが芋぀からなかったずきでも゚ラヌを投げたせん。これは、フックや蚭定ファむルにリストアップされたモゞュヌルを含んでコンパむルするカスタムカヌネルで有益かもしれたせん。

ノヌト
  • Out-of-tree のファむルシステムを初期ナヌザヌ空間でマりントする぀もりであるならば (䟋えば、そのようなファむルシステムをルヌトファむルシステムずしおを䜿甚する堎合)、そのファむルシステムのモゞュヌル (zfs など) を MODULES 配列に远加しおおかなければなりたせん。
  • encrypt や sd-encrypt を䜿甚し、か぀ mkinitcpio が実行されるシステムず生成されたむメヌゞが䜿甚されるシステムが異なる堎合、システムの起動䞭に LUKS デバむスをアンロックするために必芁なキヌボヌドモゞュヌルやファむルシステムを MODULES 配列に远加する必芁がありたす。䟋えば、䜿甚するキヌファむルが ext2 ファむルシステム䞊にあるが、mkinitcpio が実行されたずきには ext2 ファむルシステムがマりントされおいなかった堎合、ext2 を远加しおください。詳现は Dm-crypt/システム蚭定#cryptkey を芋おください。
  • LUKS デバむスをアンロックするために USB 3 ハブのキヌボヌドを䜿いたい堎合、usbhid xhci_hcd を远加しおください。䞀郚のノヌト PC では、搭茉されおいるキヌボヌドを䜿甚するために i2c_hid_acpi モゞュヌルが必芁です。
  • ドッキングステヌションに接続されおいるディスプレむを䜿甚する堎合、initrd の出力を芋えるようにするためにあなたのグラフィックカヌドのモゞュヌルを远加する必芁があるかもしれたせん (䟋: ほずんどの Intel カヌドでは i915)。

BINARIES ず FILES

以䞋のオプションを䜿っおむメヌゞにファむルを远加するこずができたす。BINARIES ず FILES はフックが実行される前に远加され、フックによっお䜿甚/提䟛されるファむルを䞊曞きするこずがありたす。BINARIES は暙準の PATH に自動で配眮され、䟝存関係がパヌスされたす。぀たり必芁なラむブラリも党お远加されたす。FILES はそのたたの状態で远加されたす。䟋:

FILES=(/etc/modprobe.d/modprobe.conf)
BINARIES=(kexec)

BINARIES ず FILES は䞡方ずも Bash 配列です。なので、スペヌスで区切るこずで耇数の゚ントリを远加するこずができたす。

HOOKS

HOOKS 配列は、蚭定ファむルの䞭で最も重芁な蚭定です。フックずは、initramfs むメヌゞに䜕を远加するかが蚘述されおいる小さなスクリプトです。䞀郚のフックには、通称ランタむムフックずいうものが付いおおり、これはデヌモンを起動したり、スタックドブロックデバむスをアセンブルしたりずいったスタヌトアップ機胜を提䟛しおいたす。

フックは名前で指定し、蚭定ファむル内の HOOKS 配列に蚘述した通りの順番で実行されたす。自分が䜕をしおいるのか理解しおいない限り、フックのリストの掚奚される順番に埓うのが良いです。

ほずんどのシンプルな単䞀ディスク環境では、デフォルトの HOOKS 蚭定で十分なはずです。ルヌトファむルシステムが、LVM、RAID、dm-crypt などずいった、スタックドデバむスベヌスであったり、耇数のデバむスにたたがる堎合は、関連する wiki ペヌゞを芋お必芁な蚭定を調べお䞋さい。

ビルドフック

ビルドフック (むンストヌルフックずも) ずは、mkinitcpio の実行䞭に bash シェルによっお source されるシェルスクリプトファむルであり、通垞、build ず help ずいう2぀の関数を含んでいたす。build 関数には、initramfs むメヌゞに远加すべきモゞュヌル、バむナリ、その他のファむルが蚘述されおいたす。これらのアむテムの远加を甚意にする API (mkinitcpio(8) にドキュメント化されおいたす) が存圚しおいたす。help 関数は、そのフックの機胜ず䜿甚方法の短い説明文を出力したす。

すべおのフックを䞀芧するには:

$ mkinitcpio -L

特定のフックのヘルプを出力するには mkinitcpio の -H/--hookhelp オプションを䜿っお䞋さい、䟋えば:

$ mkinitcpio -H udev

ビルドフックは /usr/lib/initcpio/install/ にあり、カスタムのビルドフックは /etc/initcpio/install/ に眮くこずができたす。

ランタむムフック

HOOKS にあるビルドフックには、同じ名前のランタむムフックが付属しおいる堎合がありたす。ランタむムフックずは、initramfs フェヌズで busybox の ash シェルによっお source されるシェルスクリプトです。これは、デヌモンの起動、スタックドブロックデバむスのアセンブルずいった、スタヌトアップ凊理を担いたす。ビルドフックは、add_runscript を呌び出すこずで、察応するランタむムフックをむンストヌルしたす。ランタむムフックには、耇数の機胜が含たれおいるこずがありたす:

ランタむムフックは /usr/lib/initcpio/hooks/ にありたす。カスタムランタむムフックは /etc/initcpio/hooks/ に配眮したす。党おのランタむムフックには同じ名前のビルドフックが存圚しおいる必芁があり、そのビルドフックは add_runscript をコヌルしおランタむムフックをむメヌゞに远加したす。これらのファむルは初期ナヌザ空間で busybox の ash シェルによっお実行されたす。cleanup フックを陀いお党おのフックは HOOKS 蚭定の順番で実行されたす。ランタむムフックには耇数の関数を含めるこずができたす:

run_earlyhook: API ファむルシステムがマりントされカヌネルコマンドラむンがパヌスされたずきに、この名前の関数が実行されたす。䞀般的に udev など初期ナヌザ空間が始たったずきに必芁になる远加のデヌモンはこの関数に眮きたす。

run_hook: 初期のフックの埌すぐに、この名前の関数が実行されたす。䞀番䞀般的なフックポむントで、スタックブロックデバむスのアセンブリなどのオペレヌションはここで行なっお䞋さい。

run_latehook: root デバむスがマりントされた埌、この名前の関数が実行されたす。root デバむスの埌のセットアップや /usr など他のファむルシステムのマりントなどに控えめに䜿われたす。

run_cleanuphook: できる限り最埌に、この名前の関数が実行されたす。蚭定ファむルの HOOKS の順番ずは逆に実行されたす。これらのフックは初期のフックによっお起動したデヌモンのシャットダりンなど、最埌のクリヌンアップに䜿われたす。

run_cleanuphook を陀き、これらの関数は、HOOKS 配列に蚘述された、察応するビルドフックず同じ順番で実行されたす。ランタむムフックは /usr/lib/initcpio/hooks/ に配眮されおおり、カスタムのランタむムフックは /etc/initcpio/hooks/ に眮くこずができたす。

ノヌト ランタむムフックは busybox init でのみ䜿甚されたす。systemd ベヌスの initramfs (HOOKS 配列に systemd が存圚する堎合) では、ランタむムフックは実行されず、代わりに systemd ナニットが䜿甚されたす。

ポストフック

ポストフックずは、眲名などずいった远加の凊理を行うために、むメヌゞが (再) 生成された埌に実行されるシェルスクリプトです。

スクリプトには、以䞋の匕数が以䞋の順番で枡されたす:

  1. 䜿甚されたカヌネル (䞀郚の状況では空になる堎合がありたす)
  2. 生成された initramfs むメヌゞ
  3. (オプション) 生成されたナニファむドカヌネルむメヌゞ

さらに、以䞋の環境倉数も蚭定されたす:

KERNELVERSION: カヌネルの完党なバヌゞョン KERNELDESTINATION: カヌネルが起動されるために配眮されるべきデフォルトの堎所。

ポストフックは、/usr/lib/initcpio/post/ (パッケヌゞによっお提䟛されおいるフック) ず /etc/initcpio/post/ (カスタムのフック) に眮かれたす。

フックのリスト

以䞋は、フックず、それらがむメヌゞの䜜成ずランタむムに䞎える圱響をたずめた衚です。

busybox init systemd init ビルドフック ランタむムフック (busybox init のみ)
base 任意 党おの初期ディレクトリをセットアップし、基本のナヌティリティずラむブラリをむンストヌルしたす。systemd フックを䜿甚しおいない堎合にこのフックは重芁な busybox init を提䟛するので、䜕をしようずしおいるか理解しおいない限りはこのフックを垞に1番最初に眮いおください。

systemd フックを䜿甚する際は、このフックは busybox のリカバリシェルを提䟛するだけなので、任意です。シェルを䜿甚するには、base を有効化するこずに加え、SYSTEMD_SULOGIN_FORCE=1 をカヌネルパラメヌタに远加する必芁がありたす。

–
udev systemd むメヌゞに udevd, udevadm, そしお udev ルヌルの小さなサブセットを远加したす。 udev デヌモンを起動しお、カヌネルからの uevent を凊理したす; デバむスノヌドを䜜成したす。ブヌトプロセスの単玔化ずしお、必芁なモゞュヌルを明瀺的に指定する必芁をなくすため、udev フックの䜿甚が掚奚されおいたす。
usr /usr の分割パヌティションのサポヌトを远加したす。詳现は #/usr を別のパヌティションに分割する を芋おください。 本物のルヌトファむルシステムがマりントされた埌に /usr パヌティションをマりントしたす。
resume ハむバネヌトむメヌゞにカヌネルのコンパむル時デフォルト以倖の圧瞮アルゎリズムを䜿甚する際に埩垰できるようにするために、lzo ず lz4 カヌネルモゞュヌルを (initramfs に) 远加したす。HibernateLocation UEFI 倉数で指定されたハむバネヌトむメヌゞから埩垰できるようにするために systemd-hibernate-resume(8) バむナリを远加したす。 "ハむバネヌト" (suspend to disk) 状態からの埩垰を詊みたす。詳しい蚭定方法は ハむバネヌト を芋おください。
btrfs – Btrfs を有効にしお、Btrfs でフォヌマットされた耇数のデバむスを䜿甚するために必芁なモゞュヌルを蚭定したす。このフックを䜿うには、btrfs-progs をむンストヌルする必芁がありたす。単䞀のデバむスで Btrfs を䜿うだけならこのフックは䞍芁であり、filesystems フックで十分です。 udev フックが存圚しないずきに btrfs device scan を実行しおマルチデバむスの Btrfs root ファむルシステムを構築したす。このフックを䜿うには btrfs-progs パッケヌゞが必芁です。
autodetect sysfs のスキャンによっおモゞュヌルのホワむトリストを䜜成しお initramfs を小さくしたす。含たれおいるモゞュヌルが正しく、欠けおいるものがないか確認しおください。自動怜知の利点を掻かすためにこのフックは他の subsystem フックより前に実行しおください。'autodetect' より前に眮かれたフックは完党にむンストヌルされたす。 –
microcode Intel 及び AMD プロセッサ向けのマむクロコヌド早期アップデヌトファむルを未圧瞮 initramfs むメヌゞの先頭に埋め蟌みたす。これは、利甚可胜であれば /usr/lib/firmware/amd-ucode/ ず /usr/lib/firmware/intel-ucode/ にあるマむクロコヌドファむルを䜿甚したす。これらのファむルが利甚できない堎合は、/boot/amd-ucode.img ず /boot/intel-ucode.img を展開しお䜿甚したす。

autodetect フックがこのフックより前に実行される堎合、むメヌゞをビルドする際に䜿甚したシステムに搭茉されおいるプロセッサ向けのマむクロコヌドの早期アップデヌトファむルのみが远加されたす。

このフックは、非掚奚ずなっおいる --microcode フラグず、プリセットファむルの microcode オプションの機胜を眮き換えるものです。たた、このフックによっお、メむンの initramfs むメヌゞにマむクロコヌドのアップデヌトが埋め蟌たれるようになるため、マむクロコヌドを読み蟌む initrd 行をブヌトロヌダヌの蚭定に远加する必芁が無くなりたす。

–
modconf /etc/modprobe.d/ ず /usr/lib/modprobe.d/ から modprobe 蚭定ファむルをロヌドしたす。 –
kms KMS の早期開始 を提䟛する GPU モゞュヌルを远加したす。加えお、䞀郚のノヌト PC の LCD パネルに組み蟌たれおいるプラむバシヌスクリヌンに必芁なモゞュヌルも远加したす。 –
keyboard キヌボヌドデバむスに必芁なモゞュヌルを远加したす。あなたが USB キヌボヌドを䜿っおいお、それを初期ナヌザ空間で䜿う必芁があるずき (暗号化のパスフレヌズを入力したりむンタラクティブシェルを䜿う堎合) はこのフックを䜿っお䞋さい。副䜜甚ずしおキヌボヌド以倖の入力デバむス甚のモゞュヌルが远加されるこずがありたすが、困るこずはないはずです。
ノヌト 異なるハヌドりェア構成で起動されるシステム(たずえば、倖郚キヌボヌドず内郚キヌボヌドを備えたラップトップたたは ヘッドレスシステム) の堎合、起動時にキヌボヌドを利甚できるようにするために (䟋えば、encrypt フックが䜿甚されおいる堎合に暗号化枈みデバむスをアンロックするために)、このフックを autodetect の前に配眮する必芁がありたす。
–
keymap sd-vconsole /etc/vconsole.conf から initramfs に、指定したコン゜ヌルキヌマップを远加したす。システム暗号化を䜿甚する堎合 (特にフルディスク暗号化) 、encrypt フックよりも前に远加するようにしおください。 初期ナヌザ空間で /etc/vconsole.conf から指定されたキヌマップをロヌドしたす。
consolefont /etc/vconsole.conf から initramfs に、指定したコン゜ヌルフォントを远加したす。 初期ナヌザ空間で /etc/vconsole.conf から指定されたコン゜ヌルフォントをロヌドしたす。
block ブロックデバむスのモゞュヌルを远加したす。autodetect フックがこのフックより前に実行される堎合、このフックはシステム䞊で䜿甚されおいるブロックデバむスのモゞュヌルのみを远加したす。䟋倖は ahci、sd_mod、usb_storage、uas、mmc_block、nvme、virtio_scsi、virtio_blk モゞュヌルで、これらは無条件に必ず远加されたす。 –
net 未実装 ネットワヌクデバむスに必芁なモゞュヌルを远加したす。このフックを䜿うには mkinitcpio-nfs-utils をむンストヌルしなければなりたせん。詳现は #net を䜿う を芋おください。 NFS の root ファむルシステムの管理を提䟛したす。
dmraid ? fakeRAID root デバむスのサポヌトを提䟛したす。これを䜿うには dmraid をむンストヌルする必芁がありたす。コントロヌラがサポヌトしおいる堎合、fakeRAID では mdadm_udev フックず䞀緒に mdadm を䜿うこずが掚奚されたす。詳现は #RAID を䜿う を芋おください。 dmraid を䜿甚しお fakeRAID ブロックデバむスを怜玢・構築したす。
mdadm_udev udev を䜿っお RAID アレむの構築をサポヌトしたす。このフックを䜿うには mdadm をむンストヌルする必芁がありたす。詳现は RAID#mkinitcpio を蚭定する を芋おください。 –
encrypt sd-encrypt dm_crypt カヌネルモゞュヌルず cryptsetup ツヌルをむメヌゞに远加したす。これを䜿うには cryptsetup をむンストヌルする必芁がありたす。
ノヌト 暗号化されたデバむスを起動時にアンロックするための keyboard フックの泚意曞きや、ファむルをアンロックする際はファむルシステムに぀いおの #MODULES にある泚意曞きを芋おください。
暗号化された root パヌティションを怜知しおアンロックしたす。蚭定に぀いおは #ランタむムのカスタマむズ を芋お䞋さい。

sd-encrypt に぀いおは Dm-crypt/システム蚭定#sd-encrypt フックを䜿うを芋おください。

lvm2 device mapper カヌネルモゞュヌルず lvm ツヌルをむメヌゞに远加したす。これを䜿うには lvm2 をむンストヌルする必芁がありたす。ルヌトファむルシステムを LVM 䞊に眮いおいる堎合、このフックは必須です。 –
filesystems むメヌゞに必芁なファむルシステムモゞュヌルを含めたす。ファむルシステムモゞュヌルを MODULES で指定しおいない限りこのフックが必芁になりたす。 –
fsck fsck バむナリずファむルシステム固有のヘルパヌを远加し、マりント前にルヌドデバむスに察しお fsck を実行できるようにしたす。autodetect フックの埌ろにこのフックを远加した堎合、root ファむルシステムのヘルパヌだけが远加されたす。このフックの䜿甚は匷く掚奚されおおり、/usr パヌティションを分割する堎合は必須です。このフックを含める堎合、初期ナヌザ空間でキヌボヌドが動䜜するこずを保蚌するために必芁なモゞュヌルも远加するこずを匷く掚奚したす。

このフックを䜿甚するには、カヌネルコマンドラむンにパラメヌタ rw を蚭定する必芁がありたす (議論)。詳现は fsck#ブヌト時のチェック を芋おください。

–
acpi_override /usr/initcpio/acpi_override/ ず /etc/initcpio/acpi_override/ ディレクトリ内にある ACPI Machine Language (.aml) ファむルを未圧瞮早期 initramfs むメヌゞに远加したす。そうするこずで、カヌネルがブヌトの非垞に早い段階で ACPI テヌブル (䟋えば DSDT) をオヌバヌラむドできるようにしたす。[1] –
ノヌト パッケヌゞがカスタムのフックを提䟛しおいるこずがあるため、この衚は完党ではありたせん。

COMPRESSION

カヌネルは、initramfs の圧瞮にいく぀かの圢匏をサポヌトしおいたす: gzip、bzip2、lzma (xz)、xz、lzo (lzop)、lz4、zstd。mkinitcpio はデフォルトで zstd 圧瞮むメヌゞを䜿甚したす。mkinitcpio は デフォルトで、カヌネル 5.9 及びそれ以降に察しおは zstd 圧瞮を、5.9 より前のカヌネルバヌゞョンに察しおは gzip を䜿甚したす。

提䟛されおいる mkinitcpio.conf には、さたざたな COMPRESSION オプションがコメントアりトされおいたす。別の圧瞮方法に切り替える堎合は、コメントを解陀し、察応する圧瞮ナヌティリティがむンストヌルされおいるこずを確認しおください。䜕も指定しない堎合は、デフォルトのメ゜ッドが䜿甚されたす。非圧瞮むメヌゞを䜜成する堎合は、蚭定ファむルで COMPRESSION=cat を指定するか、コマンドラむンで -z cat を䜿甚したす。

ヒント
  • lz4 ず xz 圧瞮ナヌティリティはデフォルトでマルチスレッド化されおおり、zstd はマルチスレッドモヌドで実行されたす (-T0 オプションが䜿甚され、怜出されたコアず同じ数のスレッドを䜜成しようず詊みたす)。
  • lz4 は、高圧瞮モヌド (-9) のむメヌゞの圧瞮率は通垞玄2.5で、最速の解凍速床を達成しおいたす。zstd は、マルチスレッド圧瞮ず、オプションによる幅広い圧瞮レベルにより、倚甚途の゜リュヌションを提䟛したす - zstd(1) § Operation Modifiers を参照。xz は、その高圧瞮プリセット (-9) で玄5の瞮小率により最小サむズを実珟したすが、その代償ずしお展開速床がかなり遅くなりたす。

COMPRESSION_OPTIONS

COMPRESSION で指定したプログラムに枡す远加のフラグを蚘述したす、䟋:

COMPRESSION_OPTIONS=(-9)

このオプションは空のたたにしおおくこずができたす。mkinitcpio は、サポヌトされおいる圧瞮メ゜ッドに、機胜するむメヌゞを生成するために必須なフラグを枡すこずを保蚌しおいたす。

譊告 このオプションを間違っお䜿甚するず、カヌネルが生成されたむメヌゞを解凍できない堎合、システムが起動䞍胜になる堎合がありたす。

デフォルトの zstd 圧瞮では、カスタムカヌネルのスペヌスを節玄するために (特にデュアルブヌト環境で、EFI システムパヌティションを /boot ずしお䜿甚する堎合)、--long オプションは非垞に効果的です。ただし、RAM の限られたシステムは、このオプションをした堎合に initramfs を解凍できない堎合がありたす。たた、-v オプションは、initramfs の生成䞭に詳现を芋たい堎合に必芁になるかもしれたせん。䟋:

COMPRESSION="zstd"
COMPRESSION_OPTIONS=(-v -5 --long)

xz で圧瞮レベル -9e を䜿甚し、ロヌダブルなカヌネルモゞュヌルずファヌムりェアを解凍しおおくこずで、圧瞮速床が最も遅くなりたすが、圧瞮率を最倧に高めるこずができたす:

COMPRESSION="xz"
COMPRESSION_OPTIONS=(-9e)
MODULES_DECOMPRESS="yes"

MODULES_DECOMPRESS

MODULES_DECOMPRESS は、initramfs の䜜成時にカヌネルモゞュヌルずファヌムりェアのファむルを解凍しおおくかを決めたす。デフォルトは no です。

Arch ではカヌネルモゞュヌルず linux-firmware を zstd でレベル 19 で圧瞮しおいたす。Initramfs でより高い圧瞮率を䜿甚する堎合、MODULES_DECOMPRESS="yes" を蚭定するこずで、initramfs のサむズをさらに小さくするこずができたす。しかし、カヌネルが個々のモゞュヌルずファヌムりェアをロヌド時に解凍する堎合よりも、initramfs むメヌゞ党䜓を解凍するのにより倚くの時間が掛かるようになるため、ブヌトの初期段階で RAM ず CPU の䜿甚率を増加させ、RAM 容量が限られおいお CPU の性胜が䜎いシステムで悪圱響を及がしたす。

ヒント Initramfs の生成プロセスの終わりあたりになるず、二重圧瞮を防ぐために、残りの .bz2、.gz、.lz4、.lzma、.lzo、.xz、.zst ファむルは党お未圧瞮早期 initramfs むメヌゞに移動されたす。

ランタむムのカスタマむズ

ランタむム蚭定オプションはカヌネルコマンドラむンを通しお init や特定のフックに枡すこずができたす。カヌネルコマンドラむンパラメヌタはブヌトロヌダによっお䞎えられるこずがほずんどです。䞋で曞かれおいるオプションをカヌネルコマンドラむンに远加するこずでデフォルトの挙動を倉えるこずができたす。詳しくは カヌネルパラメヌタ や Arch ブヌトプロセス を芋お䞋さい。

base フックの init

root=
カヌネルコマンドラむンで指定する䞀番重芁なパラメヌタであり、どのデバむスを root デバむスずしおマりントするかを決めたす。mkinitcpio は柔軟に様々な圢匏を䜿うこずができるようになっおいたす。圢匏の䟋は 氞続的なブロックデバむスの呜名#カヌネルパラメヌタ を芋おください。
ノヌト 以䞋のブヌトパラメヌタヌは initramfs 環境における init のデフォルトの挙動を倉曎したす。詳しくは /usr/lib/initcpio/init を参照。systemd フックが䜿われおいる堎合 base フックの init は眮き換わるため機胜したせん。
break
break や break=premount が指定された堎合、(フックをロヌドした埌、root ファむルシステムをマりントする前に) init はブヌトプロセスを停止しおトラブルシュヌティングに䜿うこずができるむンタラクティブシェルを起動したす。break=postmount ず指定するこずで root がマりントされた埌にこのシェルを起動するこずもできたす。シェルを終了するず通垞通りに起動が行われたす。
disablehooks=
disablehooks=hook1[,hook2,...] を远加するず実行時にフックを無効化したす。䟋:
disablehooks=resume
earlymodules=
earlymodules=mod1[,mod2,...] ずいう颚に先にロヌドするモゞュヌルを指定するこずでモゞュヌルがロヌドされる順番を倉曎するこずができたす (䟋えば、耇数のネットワヌクむンタヌフェむスの順番を適切に確定したいずきなどに䜿いたす)。

他のパラメヌタに぀いおは ブヌトデバッグ や mkinitcpio(8) を芋お䞋さい。

RAID を䜿う

RAID#mkinitcpio の蚭定 を芋おください。

net を䜿う

ノヌト NFSv4 はただサポヌトされおいたせん FS#28287。

必芁なパッケヌゞ

net は mkinitcpio-nfs-utils パッケヌゞを必芁ずしたす。

カヌネルパラメヌタ

公匏のカヌネルドキュメントに包括的で最新の情報が茉っおいたす。

ip=

このパラメヌタはカヌネルに、デバむスの IP アドレスの蚭定方法ず、IP ルヌティングテヌブルの蚭定方法を指定したす。コロンで区切った9぀たでの匕数を指定できたす: ip=<client-ip>:<server-ip>:<gw-ip>:<netmask>:<hostname>:<device>:<autoconf>:<dns0-ip>:<dns1-ip>:<ntp0-ip>。

カヌネルコマンドラむンにこのパラメヌタが存圚しなかった堎合、党おのフィヌルドが空ずされお、カヌネルドキュメントに曞かれおいるデフォルト蚭定が適甚されたす。䞀般的にはカヌネルは自動蚭定を䜿っお党おを蚭定しようずしたす。

<autoconf> パラメヌタは ip パラメヌタの唯䞀の倀ずしお指定できたす (前の党おの : 文字を排陀)。倀が ip=off や ip=none の堎合、自動蚭定は行われたせん。そうでないなら、自動的に蚭定されたす。最も䞀般的な䜿い方は ip=dhcp です。

パラメヌタの説明は、カヌネルドキュメントを参照しおください。

䟋:

ip=127.0.0.1:::::lo:none  --> ルヌプバックむンタヌフェむスを有効化。
ip=192.168.1.1:::::eth2:none --> 静的 eth2 むンタヌフェむスを有効化。
ip=:::::eth0:dhcp --> eth0 構成に察しお dhcp プロトコルを有効化。
ノヌト <device> パラメヌタにはカヌネルのデバむス名を䜿甚しおください (䟋: eth0)、氞続的な名前のデバむス名 (䟋: enp2s0) では動䜜したせん。詳现は ネットワヌク蚭定#ネットワヌクむンタヌフェむス を芋おください。

BOOTIF=

耇数のネットワヌクカヌドを䜿っおいるずきは、このパラメヌタに起動するむンタヌフェむスの MAC アドレスを含めるこずができたす。むンタヌフェむスの数字が倉わっおしたったり、pxelinux の IPAPPEND 2 や IPAPPEND 3 オプションを䜿うずきに䟿利です。指定しなかった堎合、eth0 が䜿われたす。

䟋:

BOOTIF=01-A1-B2-C3-D4-E5-F6  # 先頭の "01-" ず倧文字に泚意

nfsroot=

nfsroot パラメヌタがコマンドラむンで指定されなかった堎合、デフォルトで /tftpboot/%s が䜿われたす。

nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]

パラメヌタの説明を芋るには mkinitcpio -H net を実行しおください。

LVM を䜿う

root デバむスを LVM 䞊に眮く堎合は、LVM に Arch Linux をむンストヌルする#mkinitcpio フックを远加する を芋おください。

暗号化されたルヌトを䜿う

root を暗号化しおいる堎合、どのフックを含めるべきかに関する詳现な情報は Dm-crypt/システム蚭定#mkinitcpio を芋お䞋さい。

/usr を別のパヌティションに分割する

/usr のパヌティションを別にする堎合、以䞋を行う必芁がありたす:

  • 起動時にこのパヌティションのチェックを実行するために、fsck フックを远加しお、/etc/fstab で /usr の passno を 2 にする。起動時に /usr を fsck したい堎合は必須です (これはすべおのナヌザに掚奚されたす)。このフックが存圚しないず、/usr は氞遠に fsck されたせん。
  • systemd フックを䜿っおいない堎合、usr フックを远加する。ルヌトがマりントされた埌に /usr パヌティションがマりントされるようになりたす。

ヒントずテクニック

フォヌルバック initramfs の生成

フォヌルバック initramfs の生成は、デフォルトで無効化されおいたす。有効化するには:

  • /etc/mkinitcpio.d/ 内のそれぞれの .preset ファむルを修正する
    • PRESETS=('default') を無効化し、代わりに PRESETS=('default' 'fallback') を有効化する
    • fallback_image="/boot/initramfs-linux-fallback.img" を有効化する
    • fallback_options="--skiphooks autodetect" を有効化する
  • initramfs を再生成する
  • ブヌトロヌダヌの蚭定を曎新する
ノヌト フォヌルバック initramfs が無いず、デフォルトの initramfs でシステムの起動が倱敗した堎合に、システムを起動するためのもう䞀぀の手段が倱われるこずになりたす。システムリカバリのための起動可胜むンストヌルメディアを䜜成しおおいおください。

トラブルシュヌティング

むメヌゞの展開

initramfs むメヌゞの䞭に䜕が入っおいるか気になるずきは、むメヌゞを展開しお䞭に入っおいるファむルを調べるこずができたす。

initramfs むメヌゞは SVR4 CPIO アヌカむブであり、find ず bsdcpio コマンドによっお生成されおいたす。たた、任意で、カヌネルが察応した圧瞮方法によっお圧瞮されおいたす。圧瞮方法に぀いお詳しくは #COMPRESSION を芋お䞋さい。

mkinitcpio パッケヌゞには lsinitcpio(1) ずいうナヌティリティが含たれおおり initramfs むメヌゞの䞭身を䞀芧・展開するこずができたす。

むメヌゞ内のファむルを䞀芧するには:

# lsinitcpio /boot/initramfs-linux.img

カレントディレクトリにファむルを党お展開するには:

# lsinitcpio --extract /boot/initramfs-linux.img

むメヌゞの重芁なパヌツに぀いお読みやすいリストを取埗するこずもできたす (カヌネルバヌゞョン、初期 CPIO の存圚、含たれおいるモゞュヌルやバむナリなど):

# lsinitcpio --analyze /boot/initramfs-linux.img

展開しお修正を加えたむメヌゞの再圧瞮

/usr/bin/mkinitcpio スクリプトの build_image 関数を以䞋のパラメヌタで実行しおください:

build_image 出力ファむル 圧瞮方匏

build_image 関数の内容で新しいスクリプトを䜜成するこずでこれを実行できたす。 これはカレントディレクトリ内の内容を 出力ファむル ずいうファむルに圧瞮したす。

譊告 䞊曞きするたえに自動生成された /boot/initramfs-linux.img の名前を倉曎するこずで、簡単に元に戻すこずができるようになりたす。䜕か問題が発生しお起動できなくなった堎合、fallback むメヌゞやブヌト CD で起動しお、mkinitcpio を実行しお元のむメヌゞに戻しおください。あるいは、自分で修正しおむメヌゞを再圧瞮しおください。

マりントされおいるのに "/dev must be mounted" ず衚瀺される

/dev がマりントされおいるかどうか確認するために mkinitcpio は /dev/fd/ が存圚するかどうかを確かめたす。問題がないようでしたら、手動で䜜成するこずができたす:

# ln -s /proc/self/fd /dev/

(圓然 /proc のマりントも必芁です。mkinitcpio によっお次にチェックされたす。)

Possibly missing firmware for module XXXX

カヌネルのアップデヌト埌に initramfs を再生成する際、以䞋のような譊告が衚瀺されるこずがありたす:

==> WARNING: Possibly missing firmware for module: 'module_name'

default initramfs むメヌゞを生成するずきに同じようなメッセヌゞが衚瀺される堎合、譊告メッセヌゞが蚀っおいる通り、远加のファヌムりェアをむンストヌルする必芁があるかもしれたせん。ほずんどの䞀般的なファヌムりェアファむルは linux-firmware パッケヌゞをむンストヌルするこずで入手できたす。ファヌムりェアを提䟛する他のパッケヌゞに぀いおは、以䞋の衚を芋るか、公匏リポゞトリや AUR でモゞュヌル名を怜玢しおみおください。

メッセヌゞが fallback initramfs むメヌゞの生成時にのみ衚瀺される堎合は、以䞋の2぀の遞択肢がありたす:

  • 圱響を受けるハヌドりェアを䜿甚しないこずがわかっおいる堎合は、譊告を安党に無芖できたす。
  • 譊告を抑制したい堎合、䞍足しおいるファヌムりェアをむンストヌルできたす。メタパッケヌゞ mkinitcpio-firmwareAUR には、ほどんどのオプションのファヌムりェアが含たれおいたす。あるいは、手動で必芁なパッケヌゞをむンストヌルしおください:
モゞュヌル パッケヌゞ
aic94xx aic94xx-firmwareAUR
ast ast-firmwareAUR
bfa linux-firmware-qlogic
bnx2x linux-firmware-broadcom
liquidio linux-firmware-liquidio
mlxsw_spectrum linux-firmware-mellanox
nfp linux-firmware-nfp
qat_420xx linux-firmware-intel
qed linux-firmware-qlogic
qla1280 linux-firmware-qlogic
qla2xxx linux-firmware-qlogic
wd719x wd719x-firmwareAUR
xhci_pci
xhci_pci_renesas
upd72020x-fwAUR
  • 譊告を取り陀きたいが、必芁ないファヌムりェアパッケヌゞのためにシステムの空き領域を無駄にしたくない堎合、フォヌルバック initramfs の生成を無効化するこずができたす。

利甚できないファヌムりェアに関しおは、ダミヌのファむルを䜜成するこずで譊告を消すこずができたす。䟋えば:

# echo 'Silence the "Possibly missing firmware for module" message' \
    | tee /usr/lib/firmware/qat_6xxx{,_mmp}.bin >/dev/null

No PS/2 controller found

䞀郚のマザヌボヌドで (ほずんどの堎合、叀いもの。しかし、䞀郚の新しいものでも起こりたす)、i8042 コントロヌラが自動怜出できたせん。皀なケヌスですが、キヌボヌドが䜿えなくなっおしたうこずがありたす。この状況を事前に察知するこずができたす。PS/2 ポヌトがあり、i8042: PNP: No PS/2 controller found. Probing ports directly ずいうメッセヌゞが衚瀺される堎合、MODULES 配列に atkbd を远加しおください。[2]

あるマシンでは起動できるが他のマシンでは起動できない

mkinitcpio の autodetect フックは /sys をスキャンしお、ロヌドされおいるカヌネルモゞュヌルを確認しお䞍芁なカヌネルモゞュヌルを排陀したす。/boot ディレクトリを他のマシンに移動しお、初期ナヌザヌ空間でブヌトが倱敗する堎合、カヌネルモゞュヌルが存圚しないために新しいハヌドりェアが怜出されおいないのが原因かもしれたせん。USB 2.0 ず 3.0 では必芁なカヌネルモゞュヌルが異なるので泚意しおください。

修正するには、ブヌトロヌダヌから fallback むメヌゞを遞択しおください (fallback は autodetect によるフィルタリングがされおいたせん) 起動したら、新しいマシンで mkinitcpio を実行しお適切なモゞュヌルでむメヌゞを再生成しおください。fallback むメヌゞで起動できない堎合、Arch Linux のラむブ CD/USB で起動しお、chroot し、新しいマシンで mkinitcpio を実行しお䞋さい。それでも駄目な堎合、initramfs にモゞュヌルを手動で远加したす。

コン゜ヌルにアクセスできない、ルヌトアカりントがロックされおいる

systemd フックは、(initramfs の) ルヌトアカりントを無効化したす。緊急シェルを有効化するには、䞀時的に SYSTEMD_SULOGIN_FORCE=1 をカヌネルパラメヌタに远加しおください。

あるいは、initcpio-hook-shadowcopyAUR を䜿う方法もありたす。このパッケヌゞをむンストヌルし、/etc/mkinitcpio.conf の systemd フックの埌に shadowcopy フックを远加し、mkinitcpio -P で initramfs を再生成しおください。ドキュメントは GitHub リポゞトリにありたす。

参照

翻蚳ステヌタス: このペヌゞは en:mkinitcpio の翻蚳バヌゞョンです。最埌の翻蚳日は 2026-05-03 です。もし英語版に 倉曎 があれば、翻蚳の同期を手䌝うこずができたす。