名 前
initrd − ブ ー ト ロ ー ダ ー に よ っ て 初 期 化 さ れ た RAM デ ィ ス ク
設 定
/dev/initrd
は 、 メ ジ ャ ー
番 号 1、 マ イ ナ
ー 番 号 250 が 割 り
当 て ら れ た 読
み 込 み 専 用 の
ブ ロ ッ ク デ バ
イ ス で あ る 。
普 通 、 /dev/initrd の
所 有 者 は root.disk
で あ り 、 モ ー
ド は 400 (root の み が
読 み 出 し 可 能 )
で あ る 。 も し
、 Linux シ ス テ ム に
作 成 済 の /dev/initrd
フ ァ イ ル が な
か っ た 場 合 、
以 下 の コ マ ン
ド で 作 成 す る
こ と が で き る :
mknod −m 400 /dev/initrd b 1 250
chown root:disk /dev/initrd ま た 、
/dev/initrd を 使 用 す
る た め に は 、
"RAM disk" と "Initial RAM disk"
の 両 方 の 機 能
が Linux カ ー ネ ル に
直 接 組 み 込 ま
れ て い な け れ
ば な ら な い (例
え ば 、 カ ー ネ
ル の コ ン パ イ
ル 時 の 設 定 で
CONFIG_BLK_DEV_RAM=y か つ
CONFIG_BLK_DEV_INITRD=y と す る
)。 /dev/initrd を 使 用
す る 場 合 に は
、 RAM デ ィ ス ク ド
ラ イ バ を モ ジ
ュ ー ル と し て
ロ ー ド す る こ
と は で き な い
。
説 明
/dev/initrd
ス ペ シ ャ ル フ
ァ イ ル は 読 み
込 み 専 用 の ブ
ロ ッ ク デ バ イ
ス で あ る 。 こ
の デ バ イ ス は
カ ー ネ ル が 起
動 さ れ る 前 に
ブ ー ト ロ ー ダ
ー (boot loader) に よ っ て
初 期 化 (例 え ば
、 ロ ー ド ) さ れ
る RAM デ ィ ス ク で
あ る 。 そ の 後
、 カ ー ネ ル は
/dev/initrd の 内 容 を
二 段 階 の シ ス
テ ム 起 動 (two−phase system
boot−up) で 利 用 す る
こ と が で き る
。 最 初 の ブ ー
ト ア ッ プ 段 階 (first
boot−up phase) で は 、 カ
ー ネ ル は (例 え
ば 、 ブ ー ト ロ
ー ダ ー に よ っ
て 初 期 化 さ れ
た RAM disk で あ る )
/dev/initrd の 内 容 を
初 期 ル ー ト フ
ァ イ ル シ ス テ
ム (root file−system) と し て
マ ウ ン ト し て
起 動 す る 。 第
二 段 階 で は 初
期 ル ー ト デ バ
イ ス に 含 ま れ
て い る も の か
ら 、 追 加 の ド
ラ イ バ や そ の
他 の モ ジ ュ ー
ル が ロ ー ド さ
れ る 。 追 加 の
モ ジ ュ ー ル が
ロ ー ド さ れ た
後 、 新 し い ル
ー ト フ ァ イ ル
シ ス テ ム (す な
わ ち 、 通 常 時
の ル ー ト フ ァ
イ ル シ ス テ ム )
が 別 の デ バ イ
ス か ら マ ウ ン
ト さ れ る 。 ブ
ー ト ア ッ プ 作
業
initrd を 利 用 し た
時 は 、 シ ス テ
ム は 次 の よ う
に ブ ー ト す る :
1. ブ ー ト ロ ー ダ ー は カ ー ネ ル プ ロ グ ラ ム と
/dev/initrd の 内 容 を メ モ リ ー に
ロ ー ド す る 。
2. カ ー ネ ル 起 動 時 、 カ ー ネ ル は
/dev/initrd デ バ イ ス の 内 容 を 展 開
(uncompress) し 、 /dev/ram0 に コ ピ ー す る 。 さ ら に 、 /dev/initrd の 使 っ て い た メ モ リ ー を 解 放 す る 。
3. カ ー ネ ル は
/dev/ram0 デ バ イ ス を 初 期 の ル ー ト フ ァ イ ル シ ス テ ム と し て 読
み 書 き 可 能 な 形 式 で マ ウ ン ト す る 。
4. 指 示 さ れ た ル ー ト フ ァ イ ル シ ス テ ム が 初 期 ル ー ト フ ァ イ ル シ ス テ ム
(例 え ば
/dev/ram0) と 同 一 の 場 合 は 、 カ ー ネ ル は 普 通 の ブ ー ト シ ー ケ ン ス の た め の 最 後 の ス テ ッ プ を 省 略 す る 。
5.
/linuxrc と い う 実 行 可 能 な フ ァ イ ル が 初 期 ル ー ト フ ァ イ ル シ ス テ ム に 存 在 す れ ば 、 /linuxrc を UID 0 (す な わ ち 、 root) の 権 限 で 実 行 す る 。 (/linuxrc フ ァ イ ル は 実 行 可 能 パ ー ミ ッ シ ョ ン が 与 え ら れ て い な け れ ば な ら な い 。 /linuxrc は 正 当 な 実 行 フ ァ イ ル で あ れ ば よ く 、 シ ェ ル ス ク リ プ ト で も 構 わ な い 。 )
6.
/linuxrc が 実 行 さ れ な い 、 ま た は 、 /linuxrc の 実 行 が 終 了 し た 時 は 、 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム が マ ウ ン ト さ れ る 。 (/linuxrc を 終 了 し た 時 、 何 ら か の フ ァ イ ル シ ス テ ム が 初 期 ル ー ト フ ァ イ ル シ ス テ ム 上 に マ ウ ン ト さ れ て い る 場 合 の カ ー ネ ル の 動 作 は 決 め ら れ て い な い (不 定 で あ る )。 現 在 の カ ー ネ ル が ど の よ う に 動 作 す る か は 、 「 注 意 」 の セ ク シ ョ ン を 参 照 の こ と 。 )
7.
通 常 時 ル ー ト フ ァ イ ル シ ス テ ム に デ ィ レ ク ト リ /initrd が あ れ ば 、 /dev/ram0 デ バ イ ス は / か ら /initrd に 移 動 さ れ る 。 /initrd デ ィ レ ク ト リ が 存 在 し な い 場 合 は 、 /dev/ram0 は ア ン マ ウ ン ト さ れ る 。 (/ が /initrd に 移 動 さ れ た 場 合 に は 、 /dev/ram0 は ア ン マ ウ ン ト さ れ ず 、 そ の 結 果 、 /dev/ram0 で 走 り 始 め た プ ロ セ ス は そ の ま ま 残 る 事 が で き る 。 も し 、 /initrd デ ィ レ ク ト リ が 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム に 存 在 せ ず 、 /linuxrc が 終 了 し た 時 に /dev/ram0 上 で 実 行 さ れ た 、 な ん ら か の プ ロ セ ス が 走 り 続 け て い た 場 合 の カ ー ネ ル の 動 作 は 決 め ら れ て い な い (不 定 で あ る )。 現 在 の カ ー ネ ル が 、 こ の 時 ど の よ う な 動 作 を す る か に つ い て は 、 「 注 意 」 を 参 照 の こ と 。 )
8.
普 通 の ブ ー ト シ ー ケ ン ス (例 え ば 、 /sbin/init の 起 動 ) が 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム 上 で 行 わ れ る 。 オ プ シ ョ ン
initrd を 用
い る 場 合 に 、
カ ー ネ ル の ブ
ー ト ア ッ プ 操
作 に 影 響 を 与
え る ブ ー ト ロ
ー ダ ー オ プ シ
ョ ン は 次 の よ
う な も の が あ
る 、
initrd=filename
/dev/initrd の 内 容 と し て ロ ー ド す る フ ァ イ ル を 指 定 す る 。 LOADLIN で は 、 こ れ は コ マ ン ド ラ イ ン オ プ シ ョ ン で あ る 。 LILO で は 、 LILO の 設 定 フ ァ イ ル /etc/lilo.config 内 で コ マ ン ド と し て 使 用 し な け れ ば な ら な い 。 こ の オ プ シ ョ ン で 指 定 さ れ る フ ァ イ ル は 、 多 く の 場 合 gzip 圧 縮 さ れ た フ ァ イ ル シ ス テ ム イ メ ー ジ で あ る 。
noinitrd こ
の 起 動 オ プ シ
ョ ン は 二 段 階
の 起 動 操 作 を
無 効 に す る 。
カ ー ネ ル は
/dev/initrd が 初 期 化
さ れ て い な い
場 合 と 同 様 の
、 通 常 の ブ ー
ト ア ッ プ 動 作
を 行 う 。 こ の
オ プ シ ョ ン を
用 い る と 、 ブ
ー ト ロ ー ダ ー
に よ っ て メ モ
リ ー 上 に ロ ー
ド さ れ た /dev/initrd
の 内 容 は そ の
ま ま 保 存 さ れ
る 。 つ ま り 、
こ の オ プ シ ョ
ン を 用 い る こ
と に よ っ て 、
/dev/initrd の 内 容 を
(ブ ー ト 以 外 の
目 的 に ) 利 用 す
る こ と が 可 能
に な る 。 ま た
、 そ の 内 容 は
フ ァ イ ル シ ス
テ ム イ メ ー ジ
に 限 定 さ れ な
い 。 し か し 、
/dev/initrd デ バ イ ス
は 読 み だ し の
み 可 能 で あ り
、 シ ス テ ム の
起 動 後 1 度 し か
読 み 出 す 事 が
で き な い 。
root=device−name 通 常 時
ル ー ト フ ァ イ
ル シ ス テ ム と
し て 使 わ れ る
デ バ イ ス を 指
定 す る 。 LOADLIN で
は 、 こ れ は コ
マ ン ド ラ イ ン
オ プ シ ョ ン で
あ る 。 LILO で は
コ マ ン ド ラ イ
ン オ プ シ ョ ン
、 ま た は 、 LILO
の 設 定 フ ァ イ
ル で あ る /etc/lilo.config
の オ プ シ ョ ン
ラ イ ン と し て
使 用 す る 。 こ
の オ プ シ ョ ン
で 指 定 さ れ る
デ バ イ ス は 、
適 切 な ル ー ト
フ ァ イ ル シ ス
テ ム と し て マ
ウ ン ト 可 能 な
デ バ イ ス で な
け れ ば な ら な
い 。 通 常 時 ル
ー ト フ ァ イ ル
シ ス テ ム の 変
更 デ フ ォ ル ト
で は 、 カ ー ネ
ル の 設 定 (例 え
ば 、 rdev(8) を 用 い
て カ ー ネ ル フ
ァ イ ル 内 に セ
ッ ト さ れ た も
の 、 ま た は 、
コ ン パ イ ル 時
に カ ー ネ ル フ
ァ イ ル 内 に 埋
め 込 ま れ た も
の )、 ま た は 、
ブ ー ト ロ ー ダ
ー の オ プ シ ョ
ン 設 定 に よ っ
て 指 定 さ れ た
も の が 通 常 時
ル ー ト フ ァ イ
ル シ ス テ ム と
し て 使 わ れ る
。 NFS マ ウ ン ト さ
れ た 通 常 時 ル
ー ト フ ァ イ ル
シ ス テ ム を 利
用 す る 場 合 、
nfs_root_name と nfs_root_addrs ブ
ー ト オ プ シ ョ
ン を 使 っ て NFS の
設 定 を 与 え な
け れ ば な ら な
い 。 NFS マ ウ ン ト
さ れ た ル ー ト
(フ ァ イ ル シ ス
テ ム ) に つ い て
の よ り 詳 し い
情 報 は 、 カ ー
ネ ル の ド キ ュ
メ ン ト フ ァ イ
ル Documentation/filesystems/nfsroot.txt
を 参 照 の こ と
。 ル ー ト フ ァ
イ ル シ ス テ ム
の 設 定 に つ い
て の よ り 詳 し
い 情 報 は 、 LILO
と LOADLIN の ド キ ュ
メ ン ト も 参 照
の こ と 。 ま た
、 /linuxrc を 用 い る
事 に よ っ て も
通 常 時 ル ー ト
フ ァ イ ル シ ス
テ ム デ バ イ ス
を 変 更 す る こ
と が で き る 。
/linuxrc を 用 い て 、
通 常 時 ル ー ト
デ バ イ ス を 変
更 す る た め に
は 、 /proc が マ ウ
ン ト さ れ て い
な け れ ば な ら
な い 。 /proc を マ
ウ ン ト し た 後
で 、 /linuxrc は proc フ
ァ イ ル
/proc/sys/kernel/real−root−dev,
/proc/sys/kernel/nfs−root−name,
/proc/sys/kernel/nfs−root−addrs に
書 き 込 み を 行
い 、 通 常 時 ル
ー ト デ バ イ ス
を 変 更 す る 。 (NFS
で は な い ) 物 理
的 な ル ー ト デ
バ イ ス の 場 合
、 /linuxrc が 新 し い
ル ー ト フ ァ イ
ル シ ス テ ム の
デ バ イ ス 番 号
を /proc/sys/kernel/real−root−dev
に 書 き 込 む こ
と で 、 ル ー ト
デ バ イ ス が 変
更 さ れ る 。 NFS ル
ー ト フ ァ イ ル
シ ス テ ム の 場
合 、 /linuxrc が NFS の
設 定 を
/proc/sys/kernel/nfs−root−name と
/proc/sys/kernel/nfs−root−addrs に
書 き 込 み 、 そ
れ か ら
/proc/sys/kernel/real−root−dev に
(疑 似 NFS デ バ イ ス
ナ ン バ ー で あ
る ) 0xff を 書 き 込 む
こ と で 、 ル ー
ト デ バ イ ス が
変 更 さ れ る 。
例 え ば 、 次 の
シ ェ ル コ マ ン
ド ラ イ ン に よ
り 、 通 常 時 ル
ー ト デ バ イ ス
を /dev/hdb1 に 変 更
で き る だ ろ う :
echo 0x365 >/proc/sys/kernel/real−root−dev ま た 、 NFS の 場 合 、 次 の よ う な シ ェ ル コ マ ン ド ラ イ ン に よ り 、 193.8.232.2 と い う IP ア ド レ ス を 持 つ "idefix" と い う 名 前 の シ ス テ ム の 、 通 常 時 ル ー ト デ バ イ ス と し て 、 ロ ー カ ル ネ ッ ト ワ ー ク の 193.8.232.2 と い う IP ア ド レ ス を 持 つ NFS サ ー バ の NFS デ ィ レ ク ト リ /var/nfsroot を マ ウ ン ト す る よ う に 変 更 で き る :
echo
/var/nfsroot >/proc/sys/kernel/nfs−root−name
echo 193.8.232.2:193.8.232.7::255.255.255.0:idefix \ >
/proc/sys/kernel/nfs−root−addrs
echo 255 >/proc/sys/kernel/real−root−dev
注 意 : ル ー ト
フ ァ イ ル シ ス
テ ム を 変 更 す
る た め に
/proc/sys/kernel/real−root−dev を
使 う の は 以 前
の 方 法 で あ る
。 ル ー ト フ ァ
イ ル シ ス テ ム
を 変 更 す る 新
し い 方 法 に つ
い て の 情 報 は
、 Linux カ ー ネ ル ソ
ー ス に 含 ま れ
る Documentation/initrd.txt フ ァ
イ ル や 、 pivot_root(2)
や pivot_root(8) を 参 照
し て ほ し い 。
使 い 方
initrd が 実 装 さ れ
た 主 な 目 的 は
、 シ ス テ ム イ
ン ス ト ー ル 時
に 、 モ ジ ュ ー
ル 化 さ れ た カ
ー ネ ル の 設 定
を 可 能 に す る
こ と で あ っ た
。 次 の よ う な
流 れ の シ ス テ
ム イ ン ス ト ー
ル が 可 能 に な
る :
1. ロ ー ダ ー プ ロ グ ラ ム は 、 フ ロ ッ ピ ー や そ の 他 の メ デ ィ ア か ら 、 最 小 限 の カ ー ネ ル
(例 え ば 、 /dev/ram, /dev/initrd, ext2 フ ァ イ ル シ ス テ ム の み の サ ポ ー ト し た カ ー ネ ル ) を ブ ー ト し 、 gzip 圧 縮 さ れ た 初 期 フ ァ イ ル シ ス テ ム イ メ ー ジ を /dev/initrd に ロ ー ド す る 。
2. 実 行 フ ァ イ ル
/linuxrc は 、 (1) 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム の マ ウ ン ト
に 何 が 必 要 か (す な わ ち 、 デ バ イ ス タ イ プ 、 デ バ イ ス ド ラ イ バ 、 フ ァ イ ル シ ス テ ム )、 (2) 配 布 メ デ ィ ア に 何 が 必 要 か (例 え ば 、 CD−ROM, ネ ッ ト ワ ー ク 、 テ ー プ な ど ) を 決 定 す る 。 決 定 は 、 ユ ー ザ ー へ の 問 い 合 わ せ 、 自 動 検 出 、 あ る い は そ の 両 者 の 方 法 を 組 み 合 わ せ て 行 わ れ る 。
3. 実 行 フ ァ イ ル
/linuxrc は 、 初 期 ル ー ト フ ァ イ ル シ ス テ ム か ら 必 要 な モ
ジ ュ ー ル を ロ ー ド す る 。
4. 実 行 フ ァ イ ル
/linuxrc は 、 ル ー ト フ ァ イ ル シ ス テ ム を 作 成 し 、 配 置 す る
(こ の 段 階 で は 、 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム は 完 全 な シ ス テ ム で あ る 必 要 は な い )。
5. 実 行 フ ァ イ ル
/linuxrc は 、 /proc/sys/kernel/real−root−dev を 設 定 し 、
/proc、 マ ウ ン ト さ れ て い る 通 常 時 フ ァ イ ル シ ス テ ム 及 び そ の 他 の フ ァ イ ル シ ス テ ム を ア ン マ ウ ン ト し 、 実 行 を 終 了 す る 。
6. 次 に 、 カ ー ネ ル は 、 通 常 時 ル ー ト フ ァ イ ル シ ス テ ム を マ ウ ン ト す る 。
7. こ の 段 階 で 、 フ ァ イ ル シ ス テ ム は 全 く 変 更 が 行 わ れ て い な い 状 態 で 、 ア ク セ ス で き る 状 態 に な る 。 ま た 、 ブ ー ト ロ ー ダ ー を イ ン ス ト ー ル す る こ と が で き る 。
8. ブ ー ト ロ ー ダ ー を 設 定 し 、 シ ス テ ム 起 動 時 に 使 用 さ れ る カ ー ネ ル モ ジ ュ ー ル の セ ッ ト を 含 ん だ フ ァ イ ル シ ス テ ム を
/dev/initrd に ロ ー ド す る (例 え ば 、 /dev/ram0 デ バ イ ス の 内 容 を 修 正 し 、 ア ン マ ウ ン ト す る 。 最 後 に 、 /dev/ram0 の イ メ ー ジ を フ ァ イ ル に 書 き 出 す )。
9. こ れ で 、 シ ス テ ム が ブ ー ト 可 能 に な る 。 こ の 後 、 さ ら に そ の 他 の イ ン ス ト ー ル の 作 業 を 実 行 で き る 。 上 記 の 動 作 で の
/dev/initrd の 役 割 の キ ー ポ イ ン ト は 、 初 期 カ ー ネ ル の 選 択 や 大 き な ジ ェ ネ リ ッ ク カ ー ネ ル 、 カ ー ネ ル の 再 構 築 な し に 、 通 常 の シ ス テ ム 操 作 で 再 利 用 可 能 な 設 定 デ ー タ を 利 用 す る こ と に あ る 。
2 番 目 の ケ ー ス は 、 一 つ の 管 理 上 の ネ ッ ト ワ ー ク に お い て 、 異 な る 設 定 の ハ ー ド ウ ェ ア の シ ス テ ム 上 で Linux を 動 作 さ せ る た め の イ ン ス ト ー ル を 行 う 場 合 で あ る 。 こ の よ う な ケ ー ス の 場 合 、 ご く 小 数 の カ ー ネ ル の セ ッ ト (理 想 的 に は た っ た 一 つ の カ ー ネ ル ) の み を 利 用 し 、 シ ス テ ム 固 有 の 設 定 情 報 は 可 能 な 限 り 小 さ く す る こ と が 望 ま し い で あ ろ う 。 こ の 場 合 、 全 て の 必 要 な モ ジ ュ ー ル が 入 っ た 共 通 フ ァ イ ル を 作 成 す る 。 そ し て 、 /linuxrc フ ァ イ ル 、 ま た は 、 /linuxrc か ら 実 行 さ れ る フ ァ イ ル の み を 異 な っ た も の に し て お く 。
3 番 目 の ケ ー ス は 、 よ り 便 利 な 復 旧 用 デ ィ ス ク を 作 る 場 合 で あ る 。 ル ー ト フ ァ イ ル シ ス テ ム の パ ー テ ィ シ ョ ン の 位 置 と い っ た 情 報 は ブ ー ト 時 に 必 要 な い た め 、 /dev/initrd か ら ロ ー ド さ れ た シ ス テ ム は 、 必 要 な 正 常 性 チ ェ ッ ク を 行 っ た 後 で 、 ユ ー ザ ー へ の 問 い 合 わ せ や 自 動 検 出 (も し く は そ の 両 方 ) を 行 う こ と が で き る よ う に な る 。
(他 に も た く さ ん 例 が あ る だ ろ う が ) 最 後 の 例 と し て は 、 initrd を 利 用 す る と 、 CD−ROM 上 の Linux デ ィ ス ト リ ビ ュ ー シ ョ ン を よ り 簡 単 に CD−ROM か ら イ ン ス ト ー ル す る こ と が で き る だ ろ う 。 デ ィ ス ト リ ビ ュ ー シ ョ ン は 、 LOADLIN を 使 っ て 、 フ ロ ッ ピ ー を 全 く 利 用 せ ず に CD−ROM か ら /dev/initrd を 直 接 ロ ー ド す る こ と が で き る 。 ま た 、 LILO ブ ー ト フ ロ ッ ピ ー を 使 っ て ブ ー ト を 行 い 、 /dev/initrd を 通 し て CD−ROM か ら よ り 大 き な RAM デ ィ ス ク を 起 動 す る こ と も で き る 。
フ ァ イ ル
/dev/initrd
/dev/ram0
/linuxrc
/initrd
注 意
1. 現 在 の カ ー ネ ル で は 、
/dev/ram0 が / か ら /initrd に 移 動 さ れ た 際
に 、 移 動 時 に マ ウ ン ト さ れ て い た フ ァ イ ル シ ス テ ム は 、 そ の 後 も 継 続 的 に ア ク セ ス 可 能 で あ る 。 し か し 、 /proc/mounts の エ ン ト リ ー は 更 新 さ れ な い 。
2. 現 在 の カ ー ネ ル で は 、 デ ィ レ ク ト リ
/initrd が 存 在 し な い 場 合 、
/dev/ram0 を 何 ら か の プ ロ セ ス が 利 用 し て い た り 、 何 ら か の フ ァ イ ル シ ス テ ム が /dev/ram0 上 に マ ウ ン ト さ れ て い る と 、 /dev/ram0 は 完 全 に は ア ン マ ウ ン ト 「 さ れ な い 」 。 /dev/ram0 が 、 完 全 に ア ン マ ウ ン ト 「 さ れ な け れ ば 」 、 /dev/ram0 は メ モ リ ー 上 に 残 っ て し ま う は ず で あ る 。
3.
/dev/initrd の 利 用 者 は 、 上 記 の 注 意 事 項 で 述 べ た 動 作 に 依 存 し な い よ う に す べ き で あ る 。 こ れ ら の 動 作 は Linux カ ー ネ ル の 将 来 の バ ー ジ ョ ン で は 変 更 さ れ る か も し れ な い か ら だ 。
関 連 項 目
chown(1), mknod(1), ram(4), freeramdisk(8), rdev(8)
Linux カ ー ネ ル ソ ー ス の initrd.txt、 LILO の ド キ ュ メ ン ト 、 LOADLIN の ド キ ュ メ ン ト 、 SYSLINUX の ド キ ュ メ ン ト
こ の 文 書 に つ い て
こ の man ペ ー ジ は Linux man−pages プ ロ ジ ェ ク ト の リ リ ー ス 3.79 の 一 部 で あ る 。 プ ロ ジ ェ ク ト の 説 明 と バ グ 報 告 に 関 す る 情 報 は http://www.kernel.org/doc/man−pages/ に 書 か れ て い る 。