(Translated by https://www.hiragana.jp/)
ブート - Wikipedia コンテンツにスキップ

ブート

出典しゅってん: フリー百科ひゃっか事典じてん『ウィキペディア(Wikipedia)』
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 CardLoad TapeLoad 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]

集積しゅうせき回路かいろによるROMの時代じだい

[編集へんしゅう]

以上いじょうべたようなふる時代じだいにおいて、電源でんげん投入とうにゅう直後ちょくご機能きのうがあれこれと話題わだいになったことには、いくつかの原因げんいんがある。

ふるいコンピュータは、

  • メモリ空間くうかんせまいことがおおく、その空間くうかんすこしでも自由じゆう使つかえるしゅ記憶きおくのRAMにてたい
  • ROMにあたる記憶きおく装置そうち特殊とくしゅ装置そうちであったりして容量ようりょうすくなく、またしゅ記憶きおく同様どうようしができるものではなかった

ひとし理由りゆうから、この過程かてい技巧ぎこうてきなブートシーケンスにせざるをえなかったのである。

集積しゅうせき回路かいろによるROM具体ぐたいてきにはマスクROMPROMEPROMフラッシュメモリ時代じだいになると、以上いじょうのような制限せいげんはかなり緩和かんわされ、ファームウェアとしてメモリ空間くうかん一部いちぶにブートプログラムを存在そんざいさせ、電源でんげん投入とうにゅうやリセット、プロセッサはたんにそのアドレスから実行じっこうはじめればよい、というようになった。その結果けっか一般いっぱんてきなユーザのブート関心事かんしんじは、ハードディスクじょうのファイルシステムにある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 650DEC PDP-5PDP-8初期しょきPDP-11Altair 8800 などの初期しょきのマイクロコンピュータなどがスイッチを使つかっていた。フロントパネルのスイッチぐん直接ちょくせつCPUに命令めいれいれつわたすのにも使つかわれた。たとえば、PDP-1 はハードウェアにローダーをんでいて、オペレータが "load" ボタンをすだけでかみテープリーダからプログラムをメモリにロードすることができる。このかみテープリーダにはブートローダーが格納かくのうされており、それを実行じっこうするとブートローダーまたはオペレーティングシステムを外部がいぶストレージ媒体ばいたいかみテープ、パンチカード、ディスク装置そうちなど)からロードする。

ブートローダの擬似ぎじコード以下いかの8命令めいれい単純たんじゅんできる。

  1. P レジスタに 9 をセット
  2. かみテープ読取よみと装置そうち準備じゅんびができているかチェック
  3. もし準備じゅんびできていなかったら、2 へジャンプ
  4. かみテープ読取よみと装置そうちからアキュムレータに 1バイト
  5. テープが終了しゅうりょうしたら 9 へジャンプ
  6. アキュムレータの内容ないようを P レジスタがすアドレスに
  7. P レジスタに 1 を加算かさん
  8. 2 へジャンプ

つぎれいは 1970年代ねんだいのニコレット・インストゥルメントしゃ[NB 3]のミニコンピュータにもとづいている。ローダがかみテープからぎゃく順番じゅんばんまれることに注意ちゅうい

  1. P レジスタに 106 をセットする
  2. かみテープ読取よみと装置そうち準備じゅんびができているかチェック
  3. もし準備じゅんびできていなかったら、2 へジャンプ
  4. かみテープ読取よみと装置そうちからアキュムレータに 1バイト
  5. アキュムレータの内容ないようを P レジスタがすアドレスに
  6. P レジスタから 1 を減算げんざん
  7. 2 へジャンプ

ローダのながさは、ちょうど最後さいごに 7 番地ばんち上書うわがきするながさになっている。6 番地ばんち命令めいれい実行じっこうしたのち、7 番地ばんちからローダを実行じっこうはじめる。ローダはオペレーティングシステムがいてあるもっとながいテープがかみテープ読取よみと装置そうちにセットされるのをつ。ブートローダとローダのちがいはかみテープ読取よみと装置そうちがエラーを発生はっせいしたときに対処たいしょできるかどうかである。当時とうじのハードウェア(たとえばASR-33)ではかみテープ読取よみと装置そうち頻繁ひんぱんにエラーをこした。

一部いちぶシステムは人間にんげんのオペレータか周辺しゅうへん機器ききからのブート信号しんごうけて、固定こていちいさな命令めいれいれつをロードしてメモリじょう特定とくていのアドレスに配置はいちし、1つのCPUを初期しょきしてその位置いちから実行じっこう開始かいしさせる。その命令めいれいれつ一般いっぱんなんらかの周辺しゅうへん機器きき(オペレータがスイッチ操作そうさ機器きき指定していする場合ばあいもある)からの入力にゅうりょく操作そうさ開始かいしするものである。のシステムは、周辺しゅうへん機器ききまたはチャネル・コントローラ直接ちょくせつハードウェアコマンドれつおくり、単純たんじゅん入力にゅうりょく操作そうさたとえば、システムデバイスの0ばんセクタをリードし、メモリの1000番地ばんちにリード結果けっかく)を実施じっしさせ、ちいさなブートよう命令めいれいれつをメモリじょうにロードさせる。そしてI/O完了かんりょうらせる信号しんごう契機けいきとして、CPUにその命令めいれいれつ実行じっこうさせることになる。

マイコンとばれた時代じだい初期しょきのパーソナルコンピュータ、だいたい16ビット時代じだい初期しょきころまでのマシンでは、フロッピーディスク標準ひょうじゅん装備そうびでなかったこともあり、最初さいしょからメモリ空間くうかんにROMとしてプログラムが展開てんかいされて存在そんざいし、ほとんどにおいてはBASIC(ROM BASIC)を起動きどうするというものがもっぱらで、外部がいぶ記憶きおく装置そうちからシステムをむブートシーケンスは存在そんざいしなかった。クリーンコンピュータ標榜ひょうぼうしたシャープ一部いちぶのパソコンのように例外れいがいもある。

最近さいきんのコンピュータではブート処理しょりCPUがROMないのソフトウェア(たとえば、BIOSEFI)を既定きていのアドレスから実行じっこうすることで開始かいしされる(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には保護ほごがないので、ハイジャックというほど大袈裟おおげさなものでもない)。

一般いっぱんてきいちブートローダーとしては、以下いかのものがある。

ブートローダ

[編集へんしゅう]

ブートローダがちいさなプログラムは、オペレーティングシステムではなくブートローダであることがおおい。BOOTMGRNTLDRSYSLINUXGRUBなどがある。ブートローダは実際じっさいのオペレーティングシステム (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)などが存在そんざいする。

PC互換ごかんのブートデバイス

[編集へんしゅう]
Windows To Go 対応たいおうのブート可能かのうなフラッシュドライブ。Live USB一種いっしゅ

ブートデバイス英語えいごばんとはオペレーティングシステムをロードするまえ初期しょきしなければならないデバイス(周辺しゅうへん機器きき)のことである。これにはひとつの入力にゅうりょく機器ききキーボード)、ひとつの出力しゅつりょく機器ききディスプレイ)、初期しょきプログラムロードよう機器ききフロッピーディスクドライブハードディスクドライブCD-ROMUSBメモリなど)がある。初期しょきプログラムロード (IPL = Initial Program Load) よう機器ききとは、オペレーティングシステムを格納かくのうし、ブート処理しょりでOSをロードするのに使つかわれる機器ききであり、ほかにも単独たんどく動作どうさするユーティリティ(たとえば、memtest86+)やブートローダが格納かくのうされている。ふるいシステムではこれはフロッピーかハードディスクと限定げんていされていた。

最近さいきんのPCのBIOS様々さまざまなデバイスからのブートをサポートしており、ローカルのハードディスク(あるいはディスクじょうパーティション)、光学こうがくドライブUSBデバイス(フラッシュドライブ、ハードディスクドライブ、光学こうがくディスクドライブなど)、フラッシュメモリカード、ネットワークカード(PXE使用しよう)などがある。ふるいPCではフロッピーディスクドライブZIPドライブLS-120ドライブなどに限定げんていされていた。

一般いっぱんにユーザーがBIOSでブートじゅん設定せっていすることができる。1番目ばんめをDVDドライブ、2番目ばんめをハードディスクと設定せっていした場合ばあい、BIOSはまずDVDドライブからのブートをこころみる。そしてDVDがセットされていないなどの理由りゆうでブートに失敗しっぱいするとローカルなハードディスクからのブートをこころみる。DVDにLinuxLive CDれておけば、ハードディスクにLinuxをインストールしなくともLinuxを起動きどうすることができる。これがマルチブートいちれいであり、ユーザーはPOST実行じっこうにどちらのOSを起動きどうするかを選択せんたくできる。この場合ばあいは、電源でんげん投入とうにゅうに(あるいはリセットに)CDをれておくかかで起動きどうするOSを選択せんたくしているが、一般いっぱんてきにはキーボードを使つかってBIOSブートメニューを表示ひょうじさせて選択せんたくする(一般いっぱんF11 または ESC押下おうか)。

IBM PC互換ごかんのブート手順てじゅん

[編集へんしゅう]

電源でんげん投入とうにゅう直後ちょくご、ないしリセットにより、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はだいブートローダをロードして制御せいぎょわたす。だいブートローダは(おおくの場合ばあいユーザーに入力にゅうりょくしてもらって)パーティションを選択せんたくして、そのブートセクタをロードする。パーティションのブートセクタは一般いっぱんにオペレーティングシステムのカーネルをロードする。

一部いちぶシステム(とく最近さいきんMacintoshMicrosoft 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であれば、複数ふくすうのデバイスからのブートを試行しこうすることもできる。また、UARTSPIUSBなどから診断しんだんプログラムやブートローダをロードすることもできる。不揮発ふきはつせいメモリじょうのブートソフトウェアがなんらかの原因げんいん消去しょうきょされてしまった場合ばあいなども、この機能きのう使つかって復旧ふっきゅうすることができ、製造せいぞう直後ちょくご不揮発ふきはつせいメモリにプログラムを格納かくのうするのにも使つかえる。
  • 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 では、ブート処理しょりちゅう解決かいけつできないエラーが発生はっせいすると、いわゆるブルースクリーン状態じょうたいになる。

脚注きゃくちゅう

[編集へんしゅう]

注釈ちゅうしゃく

[編集へんしゅう]
  1. ^ EDSACの場合ばあいはロータリースイッチなどによるハードウェアから仕掛しかけからロードされた。
  2. ^ ハインラインはぐん時代じだい無線むせんあつかっているので、そちらからこのかたりった可能かのうせいがある。なお、邦題ほうだいもん」は、The Time Gate改題かいだいされて収録しゅうろくされた作品さくひんしゅうがあり、そちらからったものとおもわれる。
  3. ^ えい: Nicolet Instrument Corporation
  4. ^ MBRに仕様しようにもよるが、アクティブなパーティションはプライマリパーティションである必要ひつようはない。しかし、いずれにしてもブートセクタに適切てきせつなコードがあることは必須ひっすである。
  5. ^ インテルばんMacintoshでは、ふるいBIOSとの互換ごかんモードをファームウェアでサポートしている。
  6. ^ 一部いちぶ制御せいぎょユニットには8だいのデバイスしか接続せつぞくしないが、16だい以上いじょう接続せつぞくするものもある。実際じっさい、3830 DASD コントローラはオプションで32だいのドライブをアドレッシングする。

出典しゅってん

[編集へんしゅう]
  1. ^ pull oneself up by one's bootstraps Wiktionary
  2. ^ Phrase Finder”. phrases.org.uk. 2012ねん4がつ7にち閲覧えつらん
  3. ^ パラメトロン計算けいさん: Illiacのブートストラップ
  4. ^ Buchholz, Werner (1953). “The System Design of the IBM Type 701 Computer”. Proceedings of the I.R.E. 41 (10): 1273. 
  5. ^ Bootstrap”. Dictionary.com. 2012ねん4がつ7にち閲覧えつらん
  6. ^ Bootstrap”. TheFreeDictionary.com. 2012ねん4がつ7にち閲覧えつらん
  7. ^ Oxford English Dictionary. Oxford University 
  8. ^ PDP-11 Peripherals Handbook, DEC, 1975, p.4-25
  9. ^ M792-YB bootstrap diode matrix ROMカードの写真しゃしん
  10. ^ From Gutenberg to the Internet, Jeremy M. Norman, 2005, page 436, ISBN 0-930405-87-0
  11. ^ Van Vleck, Tom. “Glossary of Multics acronyms and terms”. 2010ねん1がつ18にち閲覧えつらん
  12. ^ Bensoussan, A. (1967-06-30). “BC.4.01 System Initialization and Bootload”. Multics System Programmer's Manual. http://www.multicians.org/mspmtoc.html 
  13. ^ 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 
  14. ^ 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にち閲覧えつらん 
  15. ^ Ciaramella, Alberto. "Device for automatically loading the central memory of electronic processors." U.S. Patent No. 4,117,974. 3 Oct. 1978.
  16. ^ File:Apple_1_Advertisement_Oct_1976.jpg Apple Ad, Interface Age, October 1976
  17. ^ Tint”. coreboot. 20 November 2010閲覧えつらん
  18. ^ FAQ - Why do we need coreboot?”. coreboot. 2010ねん11月20にち閲覧えつらん
  19. ^ Google tech talks - coreboot (aka LinuxBIOS): The Free/Open-Source x86 Firmware”. YouTube. 2012ねん4がつ7にち閲覧えつらん
  20. ^ Intel Platform Innovation Framework for EFI”. Intel. 2008ねん1がつ7にち閲覧えつらん
  21. ^ OpenBIOS”. 2012ねん4がつ7にち閲覧えつらん
  22. ^ a b z/Architecture Principles of Operation. IBM. pp. Chapter 17. http://publibz.boulder.ibm.com/epubs/pdf/a2278324.pdf 2007ねん4がつ14にち閲覧えつらん 
  23. ^ Brown, Eric (2008ねん10がつ2にち). “MontaVista Linux drives Dell's quick-boot feature”. linuxdevices.com. 2012ねん9がつ7にち時点じてんオリジナルよりアーカイブ。2010ねん11月20にち閲覧えつらん
  24. ^ Larabel, Michael (June 14, 2008). “SplashTop Linux On HP, Dell Notebooks?”. Phoronix. 2010ねん11月20にち閲覧えつらん
  25. ^ Voodoo Envy's Instant-On IOS (powered by Splashtop)”. YouTube. 2010ねん11月20にち閲覧えつらん
  26. ^ Voodoo Envy 133 Laptop vs MacBook Air”. gadgets-reviews.com (July 29, 2008). 2010ねん11月20にち閲覧えつらん
  27. ^ Voodoopc homepage”. 2010ねん11月20にち閲覧えつらん
  28. ^ Brown, Eric (2008ねん10がつ3にち). “5-second Linux boots on low-powered hardware”. 2013ねん1がつ28にち時点じてんオリジナルよりアーカイブ。2010ねん11月20にち閲覧えつらん
  29. ^ Latitude ON”. YouTube. 2010ねん11月20にち閲覧えつらん
  30. ^ Brown, Eric (2008ねん11月7にち). “Linux boots in 2.97 seconds”. linuxdevices.com. 2012ねん9がつ14にち時点じてんオリジナルよりアーカイブ。2010ねん11月20にち閲覧えつらん

関連かんれん項目こうもく

[編集へんしゅう]

外部がいぶリンク

[編集へんしゅう]