.\" This man-page is Copyright (C) 1997 John S. Kallal .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and author(s) of this work. .\" %%%LICENSE_END .\" .\" If the you wish to distribute versions of this work under other .\" conditions than the above, please contact the author(s) at the following .\" for permission: .\" .\" John S. Kallal - .\" email: .\" mail: 518 Kerfoot Farm RD, Wilmington, DE 19803-2444, USA .\" phone: (302)654-5478 .\" .\" $Id: initrd.4,v 0.9 1997/11/07 05:05:32 kallal Exp kallal $ .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 1997,1998 .\" ISHIKAWA Mutsumi, all rights reserved. .\" Translated 1997-12-15, ISHIKAWA Mutsumi .\" Modified 1998-02-09, ISHIKAWA Mutsumi .\" Updated & Modified 2005-10-08, Akihiro MOTOKI .\" .TH INITRD 4 " 2019\-03\-06" Linux "Linux Programmer's Manual" .SH 名前 initrd \- ブートローダーによって初期化された RAM ディスク .SH 設定 \fI/dev/initrd\fP は、メジャー番号 1、マイナー番号 250 が割り当てられた 読み込み専用のブロックデバイスである。 普通、 \fI/dev/initrd\fP の所有者は root:disk であり、モードは 400 (root のみが読み出し可能) である。 もし、Linux システムに作成済の \fI/dev/initrd\fP ファイルがなかった場合、以下のコマンドで作成することができる: .PP .in +4n .EX mknod \-m 400 /dev/initrd b 1 250 chown root:disk /dev/initrd .EE .in .PP .\" .\" .\" また、 \fI/dev/initrd\fP を使用するためには、 "RAM disk" と "Initial RAM disk" の両方の機能が Linux カーネルに直接組み込まれていなければならない (例えば、カーネルのコンパイル時の設定で \fBCONFIG_BLK_DEV_RAM=y\fP かつ \fBCONFIG_BLK_DEV_INITRD=y\fP とする)。 \fI/dev/initrd\fP を使用する場合には、RAM ディスクドライバをモジュールとして ロードすることはできない。 .SH 説明 \fI/dev/initrd\fP スペシャルファイルは読み込み専用のブロックデバイスである。 このデバイスはカーネルが起動される前にブートローダー (boot loader) によって初期化 (例えば、ロード) される RAM ディスクである。 その後、カーネルは \fI/dev/initrd\fP の内容を二段階のシステム起動 (two\-phase system boot\-up) で利用することができる。 .PP .\" .\" .\" 最初のブートアップ段階 (first boot\-up phase) では、カーネルは (例えば、ブートローダーによって初期化された RAM disk である) \fI/dev/initrd\fP の内容を初期ルートファイルシステム (root file\-system) としてマウント して起動する。 第二段階では初期ルートデバイスに含まれているものから、追加のドライ バやその他のモジュールがロードされる。 追加のモジュールがロードされた後、新しいルートファイルシステム (すなわち、通常時のルートファイルシステム) が別のデバイスからマウントされる。 .SS ブートアップ作業 \fBinitrd\fP を利用した時は、システムは次のようにブートする: .IP 1. 3 ブートローダーはカーネルプログラムと \fI/dev/initrd\fP の内容をメモリーにロードする。 .IP 2. カーネル起動時、カーネルは \fI/dev/initrd\fP デバイスの内容を展開 (uncompress) し、 \fI/dev/ram0\fP にコピーする。さらに、 \fI/dev/initrd\fP の使っていたメモリーを解放する。 .IP 3. カーネルは \fI/dev/ram0\fP デバイスを初期のルートファイルシステムとして読み書き可能な形式でマウン トする。 .IP 4. 指示されたルートファイルシステムが初期ルートファイルシステム (例えば \fI/dev/ram0\fP) と同一の場合は、カーネルは普通のブートシーケンスのための最後のステップを 省略する。 .IP 5. \fI/linuxrc\fP という実行可能なファイルが初期ルートファイルシステムに存在すれば、 \fI/linuxrc\fP を UID 0 (すなわち、root) の権限で実行する。 (\fI/linuxrc\fP ファイルは実行可能パーミッションが与えられていなければならない。 \fI/linuxrc\fP は正当な実行ファイルであればよく、シェルスクリプトでも構わない。) .IP 6. \fI/linuxrc\fP が実行されない、または、 \fI/linuxrc\fP の実行が終了した時は、通常時ルートファイルシステムがマウントされる。 (\fI/linuxrc\fP を終了した時、何らかのファイルシステムが初期ルートファイルシステム上に マウントされている場合のカーネルの動作は \fB決められていない (不定である)\fP。 現在のカーネルがどのように動作するかは、 「注意」のセクションを参照のこと。) .IP 7. 通常時ルートファイルシステムに ディレクトリ \fI/initrd\fP があれば、 \fI/dev/ram0\fP デバイスは \fI/\fP から \fI/initrd\fP に移動される。 \fI/initrd\fP ディレクトリが存在しない場合は、 \fI/dev/ram0\fP はアンマウントされる。 (\fI/\fP が \fI/initrd\fP に移動された場合には、 \fI/dev/ram0\fP はアンマウントされず、その結果、 \fI/dev/ram0\fP で走り始めたプロセスはそのまま残る事ができる。 もし、 \fI/initrd\fP ディレクトリが通常時ルートファイルシステムに存在せず、 \fI/linuxrc\fP が終了した時に \fI/dev/ram0\fP 上で実行された、なんらかのプロセスが走り続けていた場合の カーネルの動作は \fB決められていない (不定である)\fP。 現在のカーネルが、この時どのような動作をするかについては、 「注意」を参照のこと。) .IP 8. .\" .\" .\" 普通のブートシーケンス (例えば、 \fI/sbin/init\fP の起動) が通常時ルートファイルシステム上で行われる。 .SS オプション \fBinitrd\fP を用いる場合に、カーネルのブートアップ操作に影響を与える ブートローダーオプションは次のようなものがある、 .TP \fBinitrd=\fP\fIfilename\fP \fI/dev/initrd\fP の内容としてロードするファイルを指定する。 \fBLOADLIN\fP では、これはコマンドラインオプションである。 \fBLILO\fP では、 \fBLILO\fP の設定ファイル \fI/etc/lilo.config\fP 内でコマンドとして使用しなければならない。 このオプションで指定されるファイルは、多くの場合 gzip 圧縮された ファイルシステムイメージである。 .TP \fBnoinitrd\fP この起動オプションは二段階の起動操作を無効にする。 カーネルは \fI/dev/initrd\fP が初期化されていない場合と同様の、通常のブートアップ動作を行う。 このオプションを用いると、ブートローダーによってメモリー上にロードされた \fI/dev/initrd\fP の内容はそのまま保存される。 つまり、このオプションを用いることによって、 \fI/dev/initrd\fP の内容を (ブート以外の目的に) 利用することが可能になる。また、その内容は ファイルシステムイメージに限定されない。 しかし、 \fI/dev/initrd\fP デバイスは読みだしのみ可能であり、システムの起動後 1 度しか読み出す事 ができない。 .TP \fBroot=\fP\fIdevice\-name\fP .\" .\" .\" 通常時ルートファイルシステムとして使われるデバイスを指定する。 \fBLOADLIN\fP では、これはコマンドラインオプションである。 \fBLILO\fP ではコマンドラインオプション、または、 \fBLILO\fP の設定ファイルである \fI/etc/lilo.config\fP のオプションラインとして使用する。 このオプションで指定されるデバイスは、適切なルートファイルシステムとし てマウント可能なデバイスでなければならない。 .SS 通常時ルートファイルシステムの変更 .\" commit dc7a08166f3a5f23e79e839a8a88849bd3397c32 デフォルトでは、カーネルの設定 (例えば、 \fBrdev\fP(8) を用いてカーネルファイル内にセットされたもの、または、コンパイル時にカー ネルファイル内に埋め込まれたもの)、 または、ブートローダーのオプション設定によって指定されたものが通常時ルー トファイルシステムとして使われる。 NFS マウントされた通常時ルートファイルシステムを利用する場合、 \fBnfs_root_name\fP と \fBnfs_root_addrs\fP ブートオプションを使って NFS の設定を与えなければならない。 NFS マウントされたルート (ファイルシステム) についての より詳しい情報は、カーネルのドキュメントファイル \fIDocumentation/filesystems/nfs/nfsroot.txt\fP (Linux 2.6.33 より前は \fIDocumentation/filesystems/nfsroot.txt\fP) を参照のこと。 ルートファイルシステムの設定についてのより詳しい情報は、 \fBLILO\fP と \fBLOADLIN\fP のドキュメントも参照のこと。 .PP また、 \fI/linuxrc\fP を用いる事によっても通常時ルートファイルシステムデバイスを変更すること ができる。 \fI/linuxrc\fP を用いて、通常時ルートデバイスを変更するためには、 \fI/proc\fP がマウントされていなければならない。 \fI/proc\fP をマウントした後で、 \fI/linuxrc\fP は proc ファイル \fI/proc/sys/kernel/real\-root\-dev\fP, \fI/proc/sys/kernel/nfs\-root\-name\fP, \fI/proc/sys/kernel/nfs\-root\-addrs\fP に書き込みを行い、通常時ルートデバイスを変更する。 (NFS ではない) 物理的なルートデバイスの場合、 \fI/linuxrc\fP が新しいルートファイルシステムのデバイス番号を \fI/proc/sys/kernel/real\-root\-dev\fP に書き込むことで、ルートデバイスが変更される。 NFS ルートファイルシステムの場合、 \fI/linuxrc\fP が NFS の設定を \fI/proc/sys/kernel/nfs\-root\-name\fP と \fI/proc/sys/kernel/nfs\-root\-addrs\fP に書き込み、それから \fI/proc/sys/kernel/real\-root\-dev\fP に (疑似 NFS デバイスナンバーである) 0xff を書き込むことで、 ルートデバイスが変更される。 例えば、次のシェルコマンドラインにより、通常時ルートデバイスを \fI/dev/hdb1\fP に変更できるだろう: .PP .in +4n .EX echo 0x365 >/proc/sys/kernel/real\-root\-dev .EE .in .PP また、NFS の場合、次のようなシェルコマンドラインにより、 193.8.232.2 という IP アドレスを持つ "idefix" という名前の システムの、通常時ルートデバイスとして、 ローカルネットワークの 193.8.232.2 という IP アドレスを持つ NFS サーバの NFS ディレクトリ \fI/var/nfsroot\fP をマウントするように変更できる: .PP .in +4n .EX echo /var/nfsroot >/proc/sys/kernel/nfs\-root\-name echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \e >/proc/sys/kernel/nfs\-root\-addrs echo 255 >/proc/sys/kernel/real\-root\-dev .EE .in .PP .\" commit 9d85025b0418163fae079c9ba8f8445212de8568 .\" FIXME . Should this manual page describe the pivot_root mechanism? .\" .\" .\" \fB注意\fP: ルートファイルシステムを変更するために \fI/proc/sys/kernel/real\-root\-dev\fP を使うのは以前の方法である。 ルートファイルシステムを変更する新しい方法についての情報は、 Linux カーネルソースに含まれる \fIDocumentation/admin\-guide/initrd.rst\fP (Linux 4.10 より前は \fIDocumentation/initrd.txt\fP) ファイルを参照のこと。また、 \fBpivot_root\fP(2) や \fBpivot_root\fP(8) も参照のこと。 .SS 使い方 \fBinitrd\fP が実装された主な目的は、システムインストール時に、モジュール化されたカー ネルの設定を可能にすることであった。 .PP 次のような流れのシステムインストールが可能になる: .IP 1. 3 ローダープログラムは、フロッピーやその他のメディアから、 最小限のカーネル (例えば、 \fI/dev/ram\fP, \fI/dev/initrd\fP, ext2 ファイルシステムのみのサポートしたカーネル) をブートし、 gzip 圧縮された初期ファイルシステムイメージを \fI/dev/initrd\fP にロードする。 .IP 2. 実行ファイル \fI/linuxrc\fP は、(1) 通常時ルートファイルシステムのマウントに何が必要か (すなわち、デバイスタイプ、デバイスドライバ、ファイルシステム)、 (2) 配布メディアに何が必要か (例えば、CD\-ROM, ネットワーク、テープなど) を決定する。決定は、ユーザーへの問い合わせ、自動検出、あるいはその両者の 方法を組み合わせて行われる。 .IP 3. 実行ファイル \fI/linuxrc\fP は、初期ルートファイルシステムから必要なモジュールをロードする。 .IP 4. 実行ファイル \fI/linuxrc\fP は、ルートファイルシステムを作成し、配置する (この段階では、通常時ルー トファイルシステムは完全なシステムである必要はない)。 .IP 5. 実行ファイル \fI/linuxrc\fP は、 \fI/proc/sys/kernel/real\-root\-dev\fP を設定し、 \fI/proc\fP、通常の root ファイルシステム、マウントされているその他のファイルシステムをアンマウントし、実行を終了する。 .IP 6. 次に、カーネルは、通常時ルートファイルシステムをマウントする。 .IP 7. この段階で、ファイルシステムは全く変更が行われていない状態で、 アクセスできる状態になる。 また、ブートローダーをインストールすることができる。 .IP 8. ブートローダーを設定し、システム起動時に使用されるカーネルモジュールのセッ トを含んだファイルシステムを \fI/dev/initrd\fP にロードする (例えば、 \fI/dev/ram0\fP デバイスの内容を修正し、アンマウントする。最後に、 \fI/dev/ram0\fP のイメージをファイルに書き出す)。 .IP 9. これで、システムがブート可能になる。この後、さらにその他のインストール の作業を実行できる。 .PP 上記の動作での \fI/dev/initrd\fP の役割のキーポイントは、初期カーネルの選択や大きなジェネリックカーネル、 カーネルの再構築なしに、通常のシステム操作で再利用可能な設定データを利 用することにある。 .PP 2 番目のケースは、一つの管理上のネットワークにおいて、異なる設定のハー ドウェアのシステム上で Linux を動作させるためのインストールを行う場合 である。 このようなケースの場合、ごく小数のカーネルのセット (理想的にはたった一 つのカーネル) のみを利用し、システム固有の設定情報は可能な限り小さくす ることが望ましいであろう。 この場合、全ての必要なモジュールが入った共通ファイルを作成する。 そして、 \fI/linuxrc\fP ファイル、または、 \fI/linuxrc\fP から実行されるファイルのみを異なったものにしておく。 .PP 3 番目のケースは、より便利な復旧用ディスクを作る場合である。 ルートファイルシステムのパーティションの位置といった情報は ブート時に必要ないため、 \fI/dev/initrd\fP からロードされたシステムは、 必要な正常性チェックを行った後で、ユーザーへの問い合わせや自動検出 (もしくはその両方) を行うことができるようになる。 .PP .\" .\" .\" (他にもたくさん例があるだろうが) 最後の例としては、 \fBinitrd\fP を利用すると、CD\-ROM 上の Linux ディストリビューションを より簡単に CD\-ROM からインストールすることができるだろう。 ディストリビューションは、 \fBLOADLIN\fP を使って、フロッピーを全く利用せずに CD\-ROM から \fI/dev/initrd\fP を直接ロードすることができる。 また、 \fBLILO\fP ブートフロッピーを使ってブートを行い、 \fI/dev/initrd\fP を通して CD\-ROM からより大きな RAM ディスクを起動することもできる。 .SH ファイル \fI/dev/initrd\fP .br \fI/dev/ram0\fP .br \fI/linuxrc\fP .br .\" .\" .\" \fI/initrd\fP .SH 注意 .IP 1. 3 現在のカーネルでは、 \fI/dev/ram0\fP が \fI/\fP から \fI/initrd\fP に移動された際に、移動時にマウントされていたファイルシステムは、 その後も継続的にアクセス可能である。しかし、 \fI/proc/mounts\fP のエントリーは更新されない。 .IP 2. 現在のカーネルでは、ディレクトリ \fI/initrd\fP が存在しない場合、 \fI/dev/ram0\fP を何らかのプロセスが利用していたり、何らかのファイルシステムが \fI/dev/ram0\fP 上にマウントされていると、 \fI/dev/ram0\fP は完全にはアンマウント「されない」。 \fI/dev/ram0\fP が、完全にアンマウント「されなければ」、 \fI/dev/ram0\fP はメモリー上に残ってしまうはずである。 .IP 3. .\" .\" .\" .\" .SH AUTHORS .\" The kernel code for device .\" .BR initrd .\" was written by Werner Almesberger and .\" Hans Lermen . .\" The code for .\" .BR initrd .\" was added to the baseline Linux kernel in development version 1.3.73. \fI/dev/initrd\fP の利用者は、上記の注意事項で述べた動作に依存しないようにすべきである。 これらの動作は Linux カーネルの将来のバージョンでは変更される かもしれないからだ。 .SH 関連項目 \fBchown\fP(1), \fBmknod\fP(1), \fBram\fP(4), \fBfreeramdisk\fP(8), \fBrdev\fP(8) .PP .\" commit 9d85025b0418163fae079c9ba8f8445212de8568 Linux カーネルソースの \fIDocumentation/admin\-guide/initrd.rst\fP (Linux 4.10 より前では \fIDocumentation/initrd.txt\fP)、 LILO のドキュメント、LOADLIN のドキュメント、SYSLINUX のドキュメント .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。