この項目 こうもく では、コンピュータの動作 どうさ について説明 せつめい しています。インドの悪霊 あくりょう については「ブータ 」を、ブート盤 ばん については「海賊 かいぞく 盤 ばん 」をご覧 らん ください。
Windows XP をブート中 ちゅう のインターネット 公衆 こうしゅう 電話 でんわ
ブート (英 えい : boot )またはブートストラップ (英 えい : bootstrap )は、コンピュータ システムの電源 でんげん 投入 とうにゅう 時 じ 、あるいはシステムのリセット 後 ご 、モニタ やOS などなんらかの基本 きほん 的 てき なシステムソフトウェア を主 しゅ 記憶 きおく に展開 てんかい し、ユーザプログラムを実行 じっこう できるようにするまでの処理 しょり の流 なが れをいう。ブートローダ (英 えい : boot loader )は、以上 いじょう のプロセスで使 つか われるローダ、すなわち不揮発 ふきはつ 性 せい の補助 ほじょ 記憶 きおく にある目的 もくてき のプログラムを読 よ み出 だ し、揮発 きはつ 性 せい の主 しゅ 記憶 きおく に書 か き込 こ むプログラムのことである。
電源 でんげん 投入 とうにゅう 時 じ のブートのことを「コールドブート」、リセットされたことによるブートを「ウォームブート」という。ウォームブートでは、コールドブートにおける最初 さいしょ のほうの手続 てつづ きのいくつかが必要 ひつよう 無 な い場合 ばあい もあり、そういった手続 てつづ きを省略 しょうりゃく することもある。
ブートストラップ またはブートストラップローダ (英 えい : bootstrap loader )という名前 なまえ は、ブーツ を履 は くことはまずどんな仕事 しごと のはじめにもやる事 こと で、さらにブーツのつまみ革 かわ (英 えい : strap )を自分 じぶん で引 ひ っ張 ぱ って自分 じぶん を持 も ち上 あ げようとするイメージから来 き ている[1] 。つまり、コンピュータはプログラムをロードしないと動作 どうさ できないが、プログラムをロードするプログラムはどうロードするのだ? というパラドックスに着目 ちゃくもく した呼称 こしょう である[2] 。
初期 しょき の電子 でんし 計算 けいさん 機 き のひとつであるENIAC は、いわゆるノイマン型 がた コンピュータではなく、プログラムはパッチボードを利用 りよう した配線 はいせん によっておこなわれ、また解決 かいけつ したい問題 もんだい の計算 けいさん 式 しき の初期 しょき 値 ち などを最初 さいしょ から設定 せってい して計算 けいさん を行 おこな うような計算 けいさん 機 き であった。
ノイマン型 がた として実用 じつよう 的 てき に稼働 かどう したとされる初期 しょき のコンピュータのEDSAC (1949年 ねん 稼働 かどう )では、イニシャルオーダ (英 えい : initial orders ) と呼 よ ばれたプログラムが、ロータリースイッチで実現 じつげん された一種 いっしゅ のROMからハードウェア的 てき に主 しゅ 記憶 きおく に書 か き込 こ まれる。イニシャルオーダは非常 ひじょう に技巧 ぎこう 的 てき なわずか数 すう 十 じゅう 語 ご のコードで単純 たんじゅん ながらアセンブラ的 てき 機能 きのう を実現 じつげん しており、紙 かみ テープを読 よ み込 こ んでそれを機械 きかい 語 ご に変換 へんかん し主 しゅ 記憶 きおく の残 のこ りの部分 ぶぶん に書 か き込 こ む(英語 えいご 版 ばん WikipediaのEDSAC#System_software を参照 さんしょう )。EDSACのプログラム技法 ぎほう は成 なり 書 しょ 「The Preparation of Programs for an Electronic Digital Computer 」として広 ひろ まり、パラメトロン コンピュータPC-1他 た のイニシャルオーダ (イニシャルインプットルーチンとも) がEDSACのイニシャルオーダの影響 えいきょう を受 う けて作成 さくせい された。
EDSACの技法 ぎほう は成 なり 書 しょ として公刊 こうかん されたため、同様 どうよう のローダーがこの時代 じだい の多 おお くのコンピュータで開発 かいはつ ・使用 しよう されたが、そのローダをどうロードするか、という点 てん では各種 かくしゅ の手法 しゅほう があった[NB 1] 。当時 とうじ はそれらのうちの1つの手法 しゅほう を「ブートストラップ方式 ほうしき 」と呼 よ んでいた。ILLIAC I の方式 ほうしき がブートストラップである。[3]
1950年代 ねんだい の IBM 701 以降 いこう [4] 、何 なん らかのブート処理 しょり でプログラムやOSを主 おも 記憶 きおく にロードするようになった。IBM のメインフレーム ではこれを "Initial Program Load" と称 しょう している。Load Card 、Load Tape 、Load Drum などと表示 ひょうじ されたボタンを押下 おうか するとハードウェアの論理 ろんり 回路 かいろ が対応 たいおう する周辺 しゅうへん 機器 きき からブートプログラムを読 よ み込 こ み、それを実行 じっこう する。するとブートプログラムがより大 おお きなプログラムを自動的 じどうてき にロードする[5] [6] 。「ブート」という言葉 ことば は1958年 ねん からこの意味 いみ で使 つか われている[7] 。
言葉 ことば の歴史 れきし としては、自分 じぶん 自身 じしん で自分 じぶん のための土台 どだい を用意 ようい する、といったような意味 いみ では、電子 でんし 回路 かいろ の分野 ぶんや にもブートストラップという手法 しゅほう がある。またロバート・A・ハインライン の1941年 ねん の中篇 ちゅうへん SFの題 だい By His Bootstraps [NB 2] も、そのような意味 いみ でブートストラップという語 かたり を使 つか っている。
DEC PDP-8 以降 いこう のミニコンピュータ では、フロントパネルにあるスイッチ群 ぐん を操作 そうさ して短 みじか いプログラムを入力 にゅうりょく する方法 ほうほう が採用 さいよう された。初期 しょき のミニコンピュータは磁気 じき コアメモリ を使 つか っており、電源 でんげん を切 き っても情報 じょうほう は失 うしな われない。従 したが ってブートローダーは消去 しょうきょ されない限 かぎ りメモリ上 じょう に存在 そんざい し続 つづ けるが、バグ のあるプログラムを実行 じっこう して全 ぜん メモリの内容 ないよう を上書 うわが きしてしまうこともある。PDP-11 でも同様 どうよう の手法 しゅほう を採用 さいよう したが、後 のち にDECはオプションで32ワード(64バイト)のブートプログラムを格納 かくのう したROMを追加 ついか できるようにした。このROMは集積 しゅうせき 回路 かいろ ではなく、M792というUnibus 用 よう カードであり、32×16のダイオード アレイで回路 かいろ を構成 こうせい している。ダイオードが通電 つうでん する部分 ぶぶん のビットは1になり、通電 つうでん しないようダイオードを除 のぞ くと対応 たいおう するビットが0になる。DECは様々 さまざま な周辺 しゅうへん 機器 きき からのブートに対応 たいおう するため、同様 どうよう のカードを BM792-Yx シリーズとして販売 はんばい した[8] [9] 。
集積 しゅうせき 回路 かいろ のROMが登場 とうじょう する以前 いぜん [ 編集 へんしゅう ]
IBM 701 (1952–1956) には "load" ボタンがあり、それによってパンチカード、磁気 じき テープ、磁気 じき ドラム装置 そうち のいずれかから先頭 せんとう の36ビット ワード を読 よ み込 こ む。そのうち先頭 せんとう の18ビットは命令 めいれい として実行 じっこう され、通常 つうじょう はメモリに追加 ついか のワード群 ぐん を読 よ み込 こ む命令 めいれい になっている[10] 。IBM 1401 (1958) では同様 どうよう にパンチカード リーダーからプログラムをロードする。80文字 もじ が格納 かくのう されたパンチカードの内容 ないよう は 001 から 080 番地 ばんち のメモリに読 よ み込 こ まれ、001番地 ばんち から命令 めいれい として実行 じっこう 開始 かいし する。命令 めいれい は通常 つうじょう いつも同 おな じで、この先頭 せんとう 80文字 もじ 分 ぶん の情報 じょうほう をアセンブリエリアに転送 てんそう し、2枚 まい 目 め 以降 いこう のパンチカードの内容 ないよう を読 よ み込 こ んでプログラムを構成 こうせい する。アセンブリエリアに転送 てんそう し終 お わると、080 番地 ばんち の命令 めいれい へジャンプし、そこにある命令 めいれい (カードを読 よ み込 こ む命令 めいれい )を実行 じっこう することで、次 つぎ のパンチカードを読 よ み込 こ み、その情報 じょうほう を処理 しょり する。つまり、パンチカード1枚 まい ずつが次 つぎ のパンチカードをブートストラップする形 かたち になっている。
CDC 6600 (1964) には144個 こ のトグルスイッチを備 そな えた dead start と呼 よ ばれるパネルがある。このパネルで12ワードの情報 じょうほう を0番 ばん の周辺 しゅうへん プロセッサ (PP0) のメモリに転送 てんそう する。それを命令 めいれい 列 れつ として実行 じっこう することでPP0は自身 じしん のメモリに必要 ひつよう なコードをロードし、他 た のPPを初期 しょき 化 か する。
GE 645 (1965) には "BOOT" ボタンがある[11] 。
Multics (1967) にはブートコマンドがあった[12] [13] 。
UNIX では、The Unix Programmer's Manual 第 だい 1版 はん (1971年 ねん 11月3日 にち )に "boot" への言及 げんきゅう がある[14] 。
1975年 ねん 、CSELT (英語 えいご 版 ばん ) の研究 けんきゅう 者 しゃ であるアルベルト・チャラメッラ (英語 えいご 版 ばん ) は、電話 でんわ 交換 こうかん 機 き のコンピュータをブートするデバイスの特許 とっきょ を取得 しゅとく した。ブートローダは、現代 げんだい のROMメモリに常駐 じょうちゅう し、ブートプロセスはシングルボタン押下 おうか で起動 きどう した。デバイスは、アドオン(例 れい PDP-11用 よう )などの任意 にんい の種類 しゅるい のコンピュータに適 てき していた。[15]
以上 いじょう で述 の べたような古 ふる い時代 じだい において、電源 でんげん 投入 とうにゅう 直後 ちょくご の機能 きのう があれこれと話題 わだい になったことには、いくつかの原因 げんいん がある。
古 ふる いコンピュータは、
メモリ空間 くうかん が狭 せま いことが多 おお く、その空間 くうかん を少 すこ しでも自由 じゆう に使 つか える主 しゅ 記憶 きおく のRAMに当 あ てたい
ROMにあたる記憶 きおく 装置 そうち が特殊 とくしゅ な装置 そうち であったりして容量 ようりょう も少 すく なく、また主 しゅ 記憶 きおく と同様 どうよう に読 よ み出 だ しができるものではなかった
等 ひとし の理由 りゆう から、この過程 かてい を技巧 ぎこう 的 てき なブートシーケンスにせざるをえなかったのである。
集積 しゅうせき 回路 かいろ によるROM 、具体 ぐたい 的 てき にはマスクROM 、PROM 、EPROM 、フラッシュメモリ の時代 じだい になると、以上 いじょう のような制限 せいげん はかなり緩和 かんわ され、ファームウェア としてメモリ空間 くうかん の一部 いちぶ にブートプログラムを存在 そんざい させ、電源 でんげん 投入 とうにゅう 後 ご やリセット後 ご 、プロセッサは単 たん にそのアドレスから実行 じっこう を始 はじ めればよい、というようになった。その結果 けっか 、一般 いっぱん 的 てき なユーザのブート時 じ の関心事 かんしんじ は、ハードディスク上 じょう のファイルシステムにあるOSを、どうロードして実行 じっこう するか、というような点 てん に移 うつ った。組込 くみこ みシステム やゲーム機 き などでは、最初 さいしょ からROMに実行 じっこう イメージを展開 てんかい しておき、ブートしたらそのまま目的 もくてき のシステムが実行 じっこう される、というような形態 けいたい もある。
Apple の最初 さいしょ のコンピュータ Apple I (1976) にはPROMチップが搭載 とうさい されていたため、フロントパネルが不要 ふよう になった。当時 とうじ の広告 こうこく では "No More Switches, No More Lights ... the firmware in PROMS enables you to enter, display and debug programs (all in hex) from the keyboard."(スイッチはいらない、ライトもいらない…PROM内 ない のファームウェアで、キーボードからプログラムを入力 にゅうりょく し、表示 ひょうじ し、デバッグできる)と宣伝 せんでん している[16] 。これはそれ以前 いぜん の Altair 8800 などに対比 たいひ してアピールしているのである。
Atari ST などのホームコンピュータ は、電源 でんげん を入 い れるとROM 上 うえ のOSがすぐさま起動 きどう する。そのため、二 に 次 じ 記憶 きおく 装置 そうち からOSをロードする機能 きのう が省 はぶ かれている。システムのカスタマイズやアクセサリ、サポートソフトウェアなどはフロッピードライブからブート時 じ に自動的 じどうてき にロードされる。電源 でんげん 投入 とうにゅう から一定 いってい 時間 じかん フロッピーがセットされない場合 ばあい やフロッピー内 ない に追加 ついか コンポーネントが見 み つからない場合 ばあい 、それらのロード処理 しょり はタイムアウトする。これによりブランクディスク挿入 そうにゅう を防 ふせ ぐ。
多 おお くのコンピュータ システムでは、メインメモリ上 じょう の実行 じっこう コードだけを実行 じっこう できる。しかし、最近 さいきん のオペレーティングシステムはハードディスクドライブ やLive CD 、フラッシュメモリ (USBメモリ など)に格納 かくのう されている。つまり、コンピュータの電源 でんげん を入 い れた直後 ちょくご 、メモリ上 じょう にはオペレーティングシステムは存在 そんざい しない。コンピュータのハードウェア だけではオペレーティングシステムがやっているような複雑 ふくざつ なことはできないので、ディスクから任意 にんい のプログラムをロードするというようなことはできない。ここで『オペレーティングシステムをメモリにロードするためには、オペレーティングシステムがメモリに存在 そんざい していなければならない』というジレンマ が生 しょう じる。
このパラドックスの解決 かいけつ 法 ほう は、ブートローダ (またはブートストラップローダ )と呼 よ ばれるROM上 じょう にある特殊 とくしゅ な小 ちい さいプログラム を使 つか うことである。このプログラムはオペレーティングシステムの全 すべ ての機能 きのう を持 も っているわけではないが、オペレーティングシステムをロードして起動 きどう するための別 べつ のプログラムをロードするには十分 じゅうぶん な機能 きのう を持 も っている。多 た 段階 だんかい のブートローダがよく使 つか われ、ある小 ちい さなプログラムから別 べつ の小 ちい さなプログラムを呼 よ び出 だ すということを繰 く り返 かえ して、最終 さいしゅう 的 てき にオペレーティングシステムが起動 きどう される。
PDP-8/E のフロントパネル。ブートストラップのロードに使用 しよう するスイッチ群 ぐん がある。
初期 しょき のプログラム可能 かのう なコンピュータは、トグルスイッチ がフロントパネルに並 なら んでいて、それを操作 そうさ することによってブートローダをプログラム格納域 かくのういき に置 お いてからCPU を起動 きどう するようになっていた。そうするとCPUはブートローダを実行 じっこう して、オペレーティングシステムを外部 がいぶ 記憶 きおく メディア(例 たと えば紙 かみ テープ あるいは磁気 じき ディスク装置 そうち )からロードすることができた。例 たと えば、IBM 650 、DEC PDP-5 、PDP-8 、初期 しょき のPDP-11 、Altair 8800 などの初期 しょき のマイクロコンピュータなどがスイッチを使 つか っていた。フロントパネルのスイッチ群 ぐん は直接 ちょくせつ CPUに命令 めいれい 列 れつ を渡 わた すのにも使 つか われた。例 たと えば、PDP-1 はハードウェアにローダーを組 く み込 こ んでいて、オペレータが "load" ボタンを押 お すだけで紙 かみ テープリーダからプログラムをメモリにロードすることができる。この紙 かみ テープリーダにはブートローダーが格納 かくのう されており、それを実行 じっこう すると二 に 次 じ ブートローダーまたはオペレーティングシステムを外部 がいぶ ストレージ媒体 ばいたい (紙 かみ テープ、パンチカード、ディスク装置 そうち など)からロードする。
ブートローダの擬似 ぎじ コード は以下 いか の8個 こ の命令 めいれい に単純 たんじゅん 化 か できる。
P レジスタに 9 をセット
紙 かみ テープ読取 よみと 装置 そうち の準備 じゅんび ができているかチェック
もし準備 じゅんび できていなかったら、2 へジャンプ
紙 かみ テープ読取 よみと 装置 そうち からアキュムレータに 1バイト読 よ み込 こ む
テープが終了 しゅうりょう したら 9 へジャンプ
アキュムレータの内容 ないよう を P レジスタが指 さ すアドレスに書 か き込 こ む
P レジスタに 1 を加算 かさん
2 へジャンプ
次 つぎ の例 れい は 1970年代 ねんだい のニコレット・インストゥルメント社 しゃ [NB 3] のミニコンピュータに基 もと づいている。二 に 次 じ ローダが紙 かみ テープから逆 ぎゃく の順番 じゅんばん に読 よ み込 こ まれることに注意 ちゅうい 。
P レジスタに 106 をセットする
紙 かみ テープ読取 よみと 装置 そうち の準備 じゅんび ができているかチェック
もし準備 じゅんび できていなかったら、2 へジャンプ
紙 かみ テープ読取 よみと 装置 そうち からアキュムレータに 1バイト読 よ み込 こ む
アキュムレータの内容 ないよう を P レジスタが指 さ すアドレスに書 か き込 こ む
P レジスタから 1 を減算 げんざん
2 へジャンプ
二 に 次 じ ローダの長 なが さは、ちょうど最後 さいご に 7 番地 ばんち を上書 うわが きする長 なが さになっている。6 番地 ばんち の命令 めいれい を実行 じっこう した後 のち 、7 番地 ばんち から二 に 次 じ ローダを実行 じっこう し始 はじ める。二 に 次 じ ローダはオペレーティングシステムが書 か いてあるもっと長 なが いテープが紙 かみ テープ読取 よみと 装置 そうち にセットされるのを待 ま つ。ブートローダと二 に 次 じ ローダの違 ちが いは紙 かみ テープ読取 よみと 装置 そうち がエラーを発生 はっせい したときに対処 たいしょ できるかどうかである。当時 とうじ のハードウェア(例 たと えばASR-33 )では紙 かみ テープ読取 よみと 装置 そうち は頻繁 ひんぱん にエラーを起 お こした。
一部 いちぶ システムは人間 にんげん のオペレータか周辺 しゅうへん 機器 きき からのブート信号 しんごう を受 う けて、固定 こてい の小 ちい さな命令 めいれい 列 れつ をロードしてメモリ上 じょう の特定 とくてい のアドレスに配置 はいち し、1つのCPUを初期 しょき 化 か してその位置 いち から実行 じっこう を開始 かいし させる。その命令 めいれい 列 れつ は一般 いっぱん に何 なん らかの周辺 しゅうへん 機器 きき (オペレータがスイッチ操作 そうさ で機器 きき を指定 してい する場合 ばあい もある)からの入力 にゅうりょく 操作 そうさ を開始 かいし するものである。他 た のシステムは、周辺 しゅうへん 機器 きき またはチャネル・コントローラ に直接 ちょくせつ ハードウェアコマンド列 れつ を送 おく り、単純 たんじゅん な入力 にゅうりょく 操作 そうさ (例 たと えば、システムデバイスの0番 ばん セクタをリードし、メモリの1000番地 ばんち にリード結果 けっか を置 お く)を実施 じっし させ、小 ちい さなブート用 よう 命令 めいれい 列 れつ をメモリ上 じょう にロードさせる。そしてI/O完了 かんりょう を知 し らせる信号 しんごう を契機 けいき として、CPUにその命令 めいれい 列 れつ を実行 じっこう させることになる。
マイコンと呼 よ ばれた時代 じだい の初期 しょき のパーソナルコンピュータ、だいたい16ビット時代 じだい の初期 しょき の頃 ころ までのマシンでは、フロッピーディスク が標準 ひょうじゅん の装備 そうび でなかったこともあり、最初 さいしょ からメモリ空間 くうかん にROMとしてプログラムが展開 てんかい されて存在 そんざい し、ほとんどにおいてはBASIC(ROM BASIC)を起動 きどう するというものがもっぱらで、外部 がいぶ 記憶 きおく 装置 そうち からシステムを読 よ み込 こ むブートシーケンスは存在 そんざい しなかった。クリーンコンピュータ を標榜 ひょうぼう したシャープ の一部 いちぶ のパソコンのように例外 れいがい もある。
最近 さいきん のコンピュータではブート処理 しょり はCPU がROM内 ない のソフトウェア(例 たと えば、BIOS やEFI )を既定 きてい のアドレスから実行 じっこう することで開始 かいし される(CPUはリセットされると外部 がいぶ からの助 たす け無 な しにこのソフトウェア実行 じっこう をするよう設計 せっけい されている)。そのソフトウェアはブートに使用 しよう できる各種 かくしゅ デバイスを探 さが し、最 もっと も優先 ゆうせん 順位 じゅんい の高 たか いデバイスの特殊 とくしゅ な領域 りょういき (一般 いっぱん にはブートセクタ )から小 ちい さなプログラムを読 よ み込 こ む。
ブートローダには特有 とくゆう の制限 せいげん 、特 とく にそのサイズの制限 せいげん がある。例 たと えば IBM PC や互換 ごかん 機 き では、一 いち 次 じ ブートローダは必 かなら ず446バイト (Windows NT では、ディスクシグニチャがオフセット440の位置 いち にあるため、440バイト)でマスターブートレコード になければならず、その後 ご に64バイトのパーティションテーブルが続 つづ き、最後 さいご が 0xAA55 という値 ね で終 お わっていなければならない(BIOS はその値 ね を見 み て正 ただ しいブートローダであると判断 はんだん する)。
1995年 ねん 以前 いぜん の Macintosh などでは、OS とハードウェアが非常 ひじょう に密接 みっせつ に関連 かんれん しており、標準 ひょうじゅん のOS以外 いがい でブートすることができない。そのような場合 ばあい 、一般 いっぱん にとられる解決 かいけつ 策 さく としては、標準 ひょうじゅん OSに属 ぞく するプログラムとしてブートローダを設計 せっけい し、それがシステムをハイジャックして別 べつ のOSをロードする。これは例 たと えばアップルがA/UX というUnix系 けい のOSのブートに使 つか った技法 ぎほう で、それを流用 りゅうよう して各種 かくしゅ フリーウェアのOSや BeOS Personal Edition 5 などがブート可能 かのう となっていた。90年代 ねんだい によく使 つか われていたMS-DOS環境 かんきょう からLinuxを起動 きどう するloadlin(w:Loadlin )も同様 どうよう のものである(もっともMS-DOSには保護 ほご がないので、ハイジャックというほど大袈裟 おおげさ なものでもない)。
一般 いっぱん 的 てき な一 いち 次 じ ブートローダーとしては、以下 いか のものがある。
ブートローダが読 よ み込 こ む小 ちい さなプログラムは、オペレーティングシステムではなく二 に 次 じ ブートローダであることが多 おお い。BOOTMGR 、NTLDR 、SYSLINUX 、GRUB などがある。二 に 次 じ ブートローダは実際 じっさい のオペレーティングシステム (OS) をロードすることができ、最後 さいご にOSを実行 じっこう する。OSは初期 しょき 化 か 処理 しょり を行 おこな い、デバイスドライバ をロードし、OSの通常 つうじょう の処理 しょり に必要 ひつよう とされる他 ほか のプログラムをロードする。
GNU GRUB 、Windowsの BOOTMGR、Windows NT/2000/XP の NTLDR といったブートローダーは、マルチブート 設定 せってい が可能 かのう である。この場合 ばあい 異 こと なるOSを指定 してい することもできるし、同 おな じOSの異 こと なるバージョンを指定 してい することもできるし、単 たん に異 こと なるオプションを指定 してい することもでき(例 たと えば、セーフモード で起動 きどう するなど)、OSではなく独立 どくりつ して動作 どうさ するプログラムを指定 してい することもできる(メモリテスタ Memtest86 、ゲームなど[17] )。ブートローダーに別 べつ のブートローダーをロードさせることもできる。例 たと えば、GRUBがBOOTMGRをロードすることも可能 かのう である。一般 いっぱん にデフォルト設定 せってい があり、ある時間 じかん 内 ない にユーザーが選択 せんたく しなければデフォルト状態 じょうたい でブートを行 おこな う。
なお、Windows 9x系 けい ではMS-DOS が二 に 次 じ ブートローダのような役割 やくわり を果 は たしている。ただし、MS-DOSを単体 たんたい で起動 きどう することもできる。
ブート処理 しょり はコンピュータがユーザとやりとりできるようになった時点 じてん で完了 かんりょう したと見 み なされる。あるいは、オペレーティングシステム が普通 ふつう のアプリケーションを実行 じっこう できるようになった時点 じてん で完了 かんりょう と見 み なすこともできる。典型 てんけい 的 てき なPC のブートは約 やく 1 分 ふん ほどかかる。そのうち、15秒 びょう ほどが Power On Self Test (POST) が費 つい やす時間 じかん で、残 のこ りはオペレーティングシステムのロードにかかる時間 じかん である。OSロード後 ご の経過 けいか 時間 じかん はシステム内 ない のコアを同時 どうじ に起動 きどう することで3秒 びょう 程度 ていど にまで短縮 たんしゅく 可能 かのう で、例 たと えばcoreboot でそのようなブートが可能 かのう である[18] [19] 。一方 いっぽう 、大 おお きなサーバでのブートは全 すべ てのサービス起動 きどう まで何 なん 分 ふん かかかる。
多 おお くの組 く み込 こ みシステム ではほとんど即座 そくざ にブートが完了 かんりょう しなければならない。たとえば、テレビが映 うつ るまでに1分 ふん かかったのでは使 つか い物 もの にならない。そのため、オペレーティングシステム全体 ぜんたい を ROM やフラッシュメモリ に格納 かくのう して、直接 ちょくせつ 実行 じっこう できるようにしている。ただし、ROMやフラッシュメモリはRAMに比 くら べると、2007年 ねん 現在 げんざい の水準 すいじゅん では1000倍 ばい と桁違 けたちが いに遅 おそ い為 ため 、複 ふく 合 ごう 機 き など高機能 こうきのう な機器 きき ではROMの内容 ないよう をRAMに書 か き出 だ して実行 じっこう している。VxWorks などではROM上 じょう の直接 ちょくせつ 実行 じっこう 形式 けいしき で用意 ようい されたブートストラップローダーがROM上 じょう の圧縮 あっしゅく されたプログラム本体 ほんたい をRAMに展開 てんかい して本体 ほんたい プログラムが起動 きどう するという実装 じっそう がとられている。
組 く み込 こ みシステムでは、製造 せいぞう 工程 こうてい や保守 ほしゅ 工程 こうてい でプログラムを変更 へんこう するためにフラッシュブートローダが必須 ひっす である。フラッシュブートローダはフラッシュメモリ内 ない にあり、リセット後 ご に最初 さいしょ に実行 じっこう されるアプリケーションである。フラッシュブートローダを出荷 しゅっか 製品 せいひん に入 い れておくと、アプリケーションの更新 こうしん ・修正 しゅうせい 、設定 せってい の変更 へんこう が容易 ようい に行 おこな える。CAN ベースのフラッシュブートローダが一般 いっぱん 的 てき であり、診断 しんだん プロトコルを使 つか って通信 つうしん ・ダウンロードを行 おこな う。
多 おお くのコンピュータはコンピュータネットワーク 経由 けいゆ でブートを行 おこな う機能 きのう を持 も っている。この場合 ばあい 、二 に 次 じ ブートローダ はサーバ のディスクに格納 かくのう されており、それを TFTP のような単純 たんじゅん なプロトコルでクライアントに転送 てんそう する。内蔵 ないぞう ディスクを持 も たないシンクライアント は、ネットワークブートによって起動 きどう される。
実装 じっそう としてはPreboot Execution Environment (PXE)などが存在 そんざい する。
Windows To Go 対応 たいおう のブート可能 かのう なフラッシュドライブ。Live USB の一種 いっしゅ
ブートデバイス (英語 えいご 版 ばん ) とはオペレーティングシステムをロードする前 まえ に初期 しょき 化 か しなければならないデバイス(周辺 しゅうへん 機器 きき )のことである。これには一 ひと つの入力 にゅうりょく 機器 きき (キーボード )、ひとつの出力 しゅつりょく 機器 きき (ディスプレイ )、初期 しょき プログラムロード用 よう 機器 きき (フロッピーディスクドライブ 、ハードディスクドライブ 、CD-ROM 、USBメモリ など)がある。初期 しょき プログラムロード (IPL = Initial Program Load) 用 よう 機器 きき とは、オペレーティングシステムを格納 かくのう し、ブート処理 しょり でOSをロードするのに使 つか われる機器 きき であり、他 ほか にも単独 たんどく 動作 どうさ するユーティリティ(例 たと えば、memtest86+)やブートローダが格納 かくのう されている。古 ふる いシステムではこれはフロッピーかハードディスクと限定 げんてい されていた。
最近 さいきん のPCのBIOS は様々 さまざま なデバイスからのブートをサポートしており、ローカルのハードディスク(あるいはディスク上 じょう のパーティション )、光学 こうがく ドライブ 、USB デバイス(フラッシュドライブ、ハードディスクドライブ、光学 こうがく ディスクドライブなど)、フラッシュメモリカード、ネットワークカード(PXE を使用 しよう )などがある。古 ふる いPCではフロッピーディスクドライブ 、ZIPドライブ 、LS-120 ドライブなどに限定 げんてい されていた。
一般 いっぱん にユーザーがBIOSでブート順 じゅん を設定 せってい することができる。1番目 ばんめ をDVDドライブ、2番目 ばんめ をハードディスクと設定 せってい した場合 ばあい 、BIOSはまずDVDドライブからのブートを試 こころ みる。そしてDVDがセットされていないなどの理由 りゆう でブートに失敗 しっぱい するとローカルなハードディスクからのブートを試 こころ みる。DVDにLinux の Live CD を入 い れておけば、ハードディスクにLinuxをインストールしなくともLinuxを起動 きどう することができる。これがマルチブート の一 いち 例 れい であり、ユーザーはPOST実行 じっこう 後 ご にどちらのOSを起動 きどう するかを選択 せんたく できる。この場合 ばあい は、電源 でんげん 投入 とうにゅう 時 じ に(あるいはリセット時 じ に)CDを入 い れておくか否 ひ かで起動 きどう するOSを選択 せんたく しているが、一般 いっぱん 的 てき にはキーボードを使 つか ってBIOSブートメニューを表示 ひょうじ させて選択 せんたく する(一般 いっぱん に F11
または ESC
を押下 おうか )。
電源 でんげん 投入 とうにゅう 直後 ちょくご 、ないしリセットにより、x86 は、まずBIOS の存在 そんざい する 0xFFFF0 番地 ばんち のメモリにある命令 めいれい を実行 じっこう する(ここはx86を使用 しよう するどんなコンピュータでも同 おな じである)。このメモリ位置 いち は(リアルモード での)システムメモリのほぼ最 さい 後尾 こうび にあたる。そこにはBIOSの初期 しょき プログラムの位置 いち へのジャンプ命令 めいれい が含 ふく まれていて、BIOSに制御 せいぎょ が渡 わた る。BIOS初期 しょき プログラムは Power On Self Test (POST ) を実行 じっこう して必要 ひつよう な機器 きき が正常 せいじょう に動作 どうさ するかをチェックする。また、同時 どうじ にそれら周辺 しゅうへん 機器 きき の初期 しょき 化 か も行 おこな う。次 つぎ にBIOSは事前 じぜん に設定 せってい されたデバイスリストを順 じゅん にあたって、ブート可能 かのう な周辺 しゅうへん 機器 きき を探 さが す。ブート可能 かのう デバイスとは、読 よ み込 こ みが可能 かのう で、第 だい 1セクタの最 さい 後尾 こうび に 0xAA55 というワード (ブートシグニチャ)があるデバイスである。
FreeBSD の boot0 MBR の十 じゅう 六 ろく 進 しん ダンプ
そのようなデバイスが見 み つからない場合 ばあい 、エラーが発生 はっせい してブート処理 しょり は停止 ていし する。BIOSがブート可能 かのう デバイスを発見 はっけん すると、そのブートセクタ を 0x7C00 というアドレス(Segment :Offset 形式 けいしき では 0000:7C00 だが、一部 いちぶ のBIOSでは 07C0:0000 を使用 しよう )にロードして実行 じっこう する。ハードディスクドライブの場合 ばあい 、ブートセクタはマスターブートレコード (MBR) と呼 よ ばれ、その内容 ないよう はオペレーティングシステム には依存 いぞん しない。MBRのコードはパーティション テーブルを調 しら べてアクティブなパーティションを探 さが す[NB 4] 。それが見 み つかったら、MBRのコードはパーティションのブートセクタ をロードして実行 じっこう する。ブートセクタはオペレーティングシステムに依存 いぞん することが多 おお いが、その機能 きのう はカーネル をロードして実行 じっこう することである。カーネルはさらに初期 しょき 化 か 処理 しょり を続行 ぞっこう する。アクティブなパーティションがなかったり、アクティブなパーティションのブートセクタが不正 ふせい だった場合 ばあい 、MBRは第 だい 二 に ブートローダをロードして制御 せいぎょ を渡 わた す。第 だい 二 に ブートローダは(多 おお くの場合 ばあい ユーザーに入力 にゅうりょく してもらって)パーティションを選択 せんたく して、そのブートセクタをロードする。パーティションのブートセクタは一般 いっぱん にオペレーティングシステムのカーネルをロードする。
一部 いちぶ システム(特 とく に最近 さいきん のMacintosh や Microsoft Windows )はインテル のEFI を採用 さいよう している。EFI 準拠 じゅんきょ のファームウェアを持 も つ比較的 ひかくてき 新 あたら しいシステムでは、MBR か GPT のあるドライブからブートでき、標準 ひょうじゅん のMBRブートローダを使 つか わない。また、coreboot もシステムマネジメントモード を使 つか った過剰 かじょう に複雑 ふくざつ なファームウェア/BIOSを使 つか わずにブート可能 かのう である。古 ふる い16ビットBIOSインタフェースは一部 いちぶ のx86用 よう OS(Windows 3.1/95/98など)で必要 ひつよう とされていただけだが、そういった古 ふる いBIOSシステムをサポートするためブートローダーは16ビットサポートを続 つづ けていることが多 おお い[20] [NB 5] [21] 。
BIOSとは異 こと なり、UEFI(CSM経由 けいゆ のレガシー ブートではない)はブートセクタに依存 いぞん せず、UEFI はブートローダー(USBフラッシュドライブ またはEFIシステムパーティション 内 うち のEFIファイル)を直接 ちょくせつ 読 よ み込 こ み、OSカーネルはブートローダーによってロードされる。
多 おお くのPCはBIOS チップを搭載 とうさい していれば、BIOSチップメーカー名 めい 、著作 ちょさく 権 けん 、そのチップのIDなどを起動 きどう 時 じ に表示 ひょうじ する。同時 どうじ に利用 りよう 可能 かのう なメモリ容量 ようりょう など、そのコンピュータに関 かん する情報 じょうほう も表示 ひょうじ する。
他 た のプロセッサは異 こと なるブートモードを持 も つ。
CPU やマイクロコントローラ のブート方法 ほうほう として以下 いか のような技法 ぎほう がある。
TI OMAP や一部 いちぶ のDSPは、ブートROMを内蔵 ないぞう しており、単独 たんどく で洗練 せんれん されたブートシーケンスを実行 じっこう でき、NANDフラッシュ、SD、MMCカードなど各種 かくしゅ ソースからブートプログラムをロードできる。各種 かくしゅ デバイスへの対応 たいおう を回路 かいろ で実現 じつげん するのは困難 こんなん であり、その代 か わりにブートROMを集積 しゅうせき している。ブートROMであれば、複数 ふくすう のデバイスからのブートを試行 しこう することもできる。また、UART 、SPI 、USB などから診断 しんだん プログラムやブートローダをロードすることもできる。不揮発 ふきはつ 性 せい メモリ上 じょう のブートソフトウェアが何 なん らかの原因 げんいん で消去 しょうきょ されてしまった場合 ばあい なども、この機能 きのう を使 つか って復旧 ふっきゅう することができ、製造 せいぞう 直後 ちょくご に不揮発 ふきはつ 性 せい メモリにプログラムを格納 かくのう するのにも使 つか える。
JTAG などのハードウェアデバッグ用 よう インタフェースを使 つか ってシステムの制御 せいぎょ を獲得 かくとく することもできる。そのようなインタフェースを使 つか ってブートローダーを不揮発 ふきはつ 性 せい メモリ(フラッシュなど)に書 か き込 こ むことができる。また、デバッグ用 よう インタフェースを使 つか ってRAMに診断 しんだん コードやブートコードをアップロードすることもでき、アップロードしたコードをプロセッサに実行 じっこう させることができる。ブートROMを集積 しゅうせき していないプロセッサで、不揮発 ふきはつ 性 せい メモリの内容 ないよう が消去 しょうきょ された場合 ばあい 、これを使 つか って復旧 ふっきゅう を図 はか る。
一部 いちぶ のマイクロコントローラはブート可能 かのう な不揮発 ふきはつ 性 せい メモリにブートコードを書 か き込 こ むことができる単純 たんじゅん なプロトコルのインタフェースを用意 ようい している。製造 せいぞう 時 じ にそのようなインタフェースを使 つか ってブートコードを不揮発 ふきはつ 性 せい メモリに書 か き込 こ む。システムをリセットすると、マイクロコントローラが自動的 じどうてき に不揮発 ふきはつ 性 せい メモリ上 じょう のプログラムを実行 じっこう 開始 かいし する。例 たと えば Atmel AVR などがこの方式 ほうしき である。この際 さい のインタフェースはハードウェアで実装 じっそう されていることが多 おお い。ブートROMを持 も つプロセッサの場合 ばあい 、ブートROM上 じょう のソフトウェアでGPIO ピンをそのようなインタフェースに使 つか うこともできる。
多 おお くのデジタルシグナルプロセッサ (DSP) には以下 いか のようなブートモードがある。
シリアルモードブート
パラレルモードブート(HPIブートなど)
DSPはマイクロプロセッサ やマイクロコントローラが別 べつ に存在 そんざい するシステム設計 せっけい ということが多 おお く、それらがシステム全体 ぜんたい の動作 どうさ 、割 わ り込 こ み処理 しょり 、外部 がいぶ イベント処理 しょり 、ユーザインタフェースなどを担当 たんとう しており、DSPは信号 しんごう 処理 しょり だけを扱 あつか う。その場合 ばあい DSPは別 べつ のプロセッサからブートすることができ、そのプロセッサを「ホストプロセッサ」とも呼 よ ぶ。ホストプロセッサは「マスター」とも呼 よ ばれる。DSPは自前 じまえ のブート用 よう メモリを持 も たないことが多 おお く、必要 ひつよう なコードをホストプロセッサから供給 きょうきゅう してもらう必要 ひつよう がある。携帯 けいたい 電話 でんわ 、モデム、オーディオプレイヤー、ビデオプレイヤーなどがそのような構成 こうせい を採用 さいよう していることが多 おお い。
FPGA チップは、電源 でんげん を入 い れるとその回路 かいろ 構成 こうせい 情報 じょうほう を外部 がいぶ EEPROM からロードする。
IBM の Initial Program Load[ 編集 へんしゅう ]
IBM ではブート処理 しょり を IPL (Initial Program Load) と呼 よ ぶ。System/360 の設計 せっけい に由来 ゆらい する用語 ようご であり、今 いま でも使 つか われている[22] 。System/360の場合 ばあい 、オペレータが16進 しん 3桁 けた のデバイスアドレス (CUu; C=I/O Channel address, U=Control unit address, u=Device address[NB 6] ) を指定 してい し、LOAD ボタンを押下 おうか する。System/370 と以降 いこう のシステムでは、スイッチ群 ぐん とLOADボタンの代 か わりに、グラフィックス・コンソール上 じょう の選択 せんたく エリアを使用 しよう する。グラフィックス・コンソールとしては IBM 2250 (英語 えいご 版 ばん ) 系 けい と IBM 3270 系 けい がある。例 たと えば System/370 Model 158 では、"07X" とキーボードから入力 にゅうりょく すると入力 にゅうりょく エリアにキー入力 にゅうりょく したデバイスアドレスからのIPLが実行 じっこう される。Amdahl 470V/6 などは16進 しん 4桁 けた でデバイスアドレスを指定 してい する。
System/360 の IPL はオペレータ指定 してい のデバイスか事前 じぜん 定義 ていぎ されたデバイスのゼロ番地 ばんち の位置 いち から24バイトをロードする。そのうち2番目 ばんめ と3番目 ばんめ の8バイトグループがチャネルコマンドワード(CCW)として解釈 かいしゃく され、さらに続 つづ けてスタートアッププログラムがロードされる。I/Oチャネルコマンドが完了 かんりょう すると、1番目 ばんめ の8バイトグループをステータスレジスタ(PSW)にロードし、指定 してい された位置 いち からスタートアッププログラムの実行 じっこう を開始 かいし する[22] 。System/360 やその後継 こうけい のシステムでは、IPL はハードウェア機能 きのう であり、システム上 じょう で動作 どうさ するプログラムではない。事前 じぜん に定義 ていぎ されたI/Oチャネルコマンドが起動 きどう され、デバイスを直接 ちょくせつ 選択 せんたく し、スタートアッププログラムをメモリ上 じょう にロードする。同 おな じプロシージャがディスク装置 そうち だけでなく、テープドライブ やカードリーダなどからもスタートアッププログラムをロードする。
指定 してい されたデバイスは実際 じっさい のオペレーティングシステムを主 しゅ たるストレージからロードする専用 せんよう プログラムを格納 かくのう していなければならない。これを "IPL Text" と呼 よ び、ディスクにこれを置 お くには DASDI (Direct Access Storage Device Initialization) プログラムかそれと等価 とうか なプログラムをOS上 じょう で実行 じっこう する。なお、IPL対応 たいおう の磁気 じき テープやカードデッキは "IPL Text" が存在 そんざい する状態 じょうたい で配布 はいふ されている。
バロース B1700 (英語 えいご 版 ばん ) では、ブートストラップROMもハードウェアIPLも持 も たない。その代 か わり、システムをリセットすると、フロントパネルに装着 そうちゃく されたテープから機械 きかい 語 ご を読 よ み込 こ んで、これがRAM上 じょう のブートローダとなる。この方式 ほうしき では、装着 そうちゃく するテープを診断 しんだん プログラムに代 か えれば、通常 つうじょう のOSも立 た ち上 あ げられないほどの障害 しょうがい が発生 はっせい している状況 じょうきょう でシステムの診断 しんだん が可能 かのう となる。
Linux (例 たと えばSplashtop など)をOSとして採用 さいよう している各種 かくしゅ 機器 きき にはクイックブートと呼 よ ばれる素早 すばや い起動 きどう が可能 かのう なものもある[23] [24] [25] [26] [27] [28] [29] [30] 。
Windows では、ブート処理 しょり 中 ちゅう に解決 かいけつ できないエラーが発生 はっせい すると、いわゆるブルースクリーン 状態 じょうたい になる。
^ EDSACの場合 ばあい はロータリースイッチなどによるハードウェアから成 な る仕掛 しか けからロードされた。
^ ハインラインは軍 ぐん 時代 じだい に無線 むせん を扱 あつか っているので、そちらからこの語 かたり を採 と った可能 かのう 性 せい がある。なお、邦題 ほうだい 「時 じ の門 もん 」は、The Time Gate と改題 かいだい されて収録 しゅうろく された作品 さくひん 集 しゅう があり、そちらから採 と ったものと思 おも われる。
^ 英 えい : Nicolet Instrument Corporation
^ MBRに仕様 しよう にもよるが、アクティブなパーティションはプライマリパーティションである必要 ひつよう はない。しかし、いずれにしてもブートセクタに適切 てきせつ なコードがあることは必須 ひっす である。
^ インテル版 ばん Macintosh では、古 ふる いBIOSとの互換 ごかん モードをファームウェアでサポートしている。
^ 一部 いちぶ 制御 せいぎょ ユニットには8台 だい のデバイスしか接続 せつぞく しないが、16台 だい 以上 いじょう を接続 せつぞく するものもある。実際 じっさい 、3830 DASD コントローラはオプションで32台 だい のドライブをアドレッシングする。
^ pull oneself up by one's bootstraps Wiktionary
^ “Phrase Finder ”. phrases.org.uk. 2012年 ねん 4月 がつ 7日 にち 閲覧 えつらん 。
^ パラメトロン計算 けいさん 機 き : Illiacのブートストラップ
^ Buchholz, Werner (1953). “The System Design of the IBM Type 701 Computer”. Proceedings of the I.R.E. 41 (10): 1273.
^ “Bootstrap ”. Dictionary.com. 2012年 ねん 4月 がつ 7日 にち 閲覧 えつらん 。
^ “Bootstrap ”. TheFreeDictionary.com. 2012年 ねん 4月 がつ 7日 にち 閲覧 えつらん 。
^ Oxford English Dictionary . Oxford University
^ PDP-11 Peripherals Handbook, DEC, 1975, p.4-25
^ M792-YB bootstrap diode matrix ROMカードの写真 しゃしん
^ From Gutenberg to the Internet , Jeremy M. Norman, 2005, page 436, ISBN 0-930405-87-0
^ Van Vleck, Tom. “Glossary of Multics acronyms and terms ”. 2010年 ねん 1月 がつ 18日 にち 閲覧 えつらん 。
^ Bensoussan, A. (1967-06-30). “BC.4.01 System Initialization and Bootload” . Multics System Programmer's Manual . http://www.multicians.org/mspmtoc.html
^ Dunten, S. D.; T. H. Van Vleck (1968-05-03). “BV.1.01 BOS Bootload: boot” . Multics System Programmer's Manual . http://www.multicians.org/mspmtoc.html
^ Thompson, Ken ; Dennis Ritchie (1971-11-03). The Unix Programmer's Manual (1st edition ed.). オリジナル の2015年 ねん 2月 がつ 3日 にち 時点 じてん におけるアーカイブ。. https://web.archive.org/web/20150203070922/http://www.cs.bell-labs.com/who/dmr/1stEdman.html 2008年 ねん 1月 がつ 7日 にち 閲覧 えつらん 。
^ Ciaramella, Alberto. "Device for automatically loading the central memory of electronic processors." U.S. Patent No. 4,117,974. 3 Oct. 1978.
^ File:Apple_1_Advertisement_Oct_1976.jpg Apple Ad, Interface Age, October 1976
^ “Tint ”. coreboot. 20 November 2010 閲覧 えつらん 。
^ “FAQ - Why do we need coreboot? ”. coreboot . 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ “Google tech talks - coreboot (aka LinuxBIOS): The Free/Open-Source x86 Firmware ”. YouTube . 2012年 ねん 4月 がつ 7日 にち 閲覧 えつらん 。
^ “Intel Platform Innovation Framework for EFI ”. Intel. 2008年 ねん 1月 がつ 7日 にち 閲覧 えつらん 。
^ “OpenBIOS ”. 2012年 ねん 4月 がつ 7日 にち 閲覧 えつらん 。
^ a b z/Architecture Principles of Operation . IBM . pp. Chapter 17. http://publibz.boulder.ibm.com/epubs/pdf/a2278324.pdf 2007年 ねん 4月 がつ 14日 にち 閲覧 えつらん 。
^ Brown, Eric (2008年 ねん 10月 がつ 2日 にち ). “MontaVista Linux drives Dell's quick-boot feature ”. linuxdevices.com. 2012年 ねん 9月 がつ 7日 にち 時点 じてん のオリジナル よりアーカイブ。2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ Larabel, Michael (June 14, 2008). “SplashTop Linux On HP, Dell Notebooks? ”. Phoronix. 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ “Voodoo Envy's Instant-On IOS (powered by Splashtop) ”. YouTube. 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ “Voodoo Envy 133 Laptop vs MacBook Air ”. gadgets-reviews.com (July 29, 2008). 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ “Voodoopc homepage ”. 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ Brown, Eric (2008年 ねん 10月 がつ 3日 にち ). “5-second Linux boots on low-powered hardware ”. 2013年 ねん 1月 がつ 28日 にち 時点 じてん のオリジナル よりアーカイブ。2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ “Latitude ON ”. YouTube. 2010年 ねん 11月20日 にち 閲覧 えつらん 。
^ Brown, Eric (2008年 ねん 11月7日 にち ). “Linux boots in 2.97 seconds ”. linuxdevices.com. 2012年 ねん 9月 がつ 14日 にち 時点 じてん のオリジナル よりアーカイブ。2010年 ねん 11月20日 にち 閲覧 えつらん 。
ウィキメディア・コモンズには、
ブート に
関連 かんれん する
メディア および
カテゴリ があります。