ブートローダ
【英】:boot loader
ブートとは、コンピュータなどでOSなどの基本ソフトウェアを起動することを意味する俗語。ブートローダとは、このときに、OS本体や「OSをロードするためのソフトウェア」をメモリに読み込むための小さなソフトウェアを言う。なお、同じような言葉にIPL(Initial Program Loader)がある。どちらかというとIPLのほうが正式な呼び方で、ブートローダは、コンピュータを起動することを「Boot」と俗称したことから、作られた言葉である。
また、ソフトウェアがソフトウェアを読み込んで、起動することを「ブーツのつまみ革を持って宙に浮く」、あるいは「自力で前進する」ことを意味する英語の熟語「lift (raise) oneself by bootstrap up」あるいは「bootstrap oneself」と関連させて、IPLのことをブートストラップローダーと呼ぶこともあった。ブートローダはこれが短くなったものという説もある。
ブート
(ブートローダ から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/02/17 10:25 UTC 版)
ブート(英: boot)またはブートストラップ(英: bootstrap)は、コンピュータシステムの電源投入時、あるいはシステムのリセット後、モニタやOSなどなんらかの基本的なシステムソフトウェアを主記憶に展開し、ユーザプログラムを実行できるようにするまでの処理の流れをいう。ブートローダ(英: boot loader)は、以上のプロセスで使われるローダ、すなわち不揮発性の補助記憶にある目的のプログラムを読み出し、揮発性の主記憶に書き込むプログラムのことである。
注釈
- ^ 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
- ^ Dunten, S. D.; T. H. Van Vleck (1968-05-03). “BV.1.01 BOS Bootload: boot”. Multics System Programmer's Manual
- ^ Thompson, Ken; Dennis Ritchie (1971-11-03). The Unix Programmer's Manual (1st edition ed.). オリジナルの2015年2月3日時点におけるアーカイブ。 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. 2010年11月20日閲覧。
- ^ “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 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 (2008年6月14日). “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 (2008年7月29日). 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日閲覧。
ブートローダ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/06/04 22:50 UTC 版)
多くのコンピュータシステムでは、メインメモリ上の実行コードだけを実行できる。しかし、最近のオペレーティングシステムはハードディスクドライブやLive CD、フラッシュメモリ(USBメモリなど)に格納されている。つまり、コンピュータの電源を入れた直後、メモリ上にはオペレーティングシステムは存在しない。コンピュータのハードウェアだけではオペレーティングシステムがやっているような複雑なことはできないので、ディスクから任意のプログラムをロードするというようなことはできない。ここで『オペレーティングシステムをメモリにロードするためには、オペレーティングシステムがメモリに存在していなければならない』というジレンマが生じる。 このパラドックスの解決法は、ブートローダ(またはブートストラップローダ)と呼ばれるROM上にある特殊な小さいプログラムを使うことである。このプログラムはオペレーティングシステムの全ての機能を持っているわけではないが、オペレーティングシステムをロードして起動するための別のプログラムをロードするには十分な機能を持っている。多段階のブートローダがよく使われ、ある小さなプログラムから別の小さなプログラムを呼び出すということを繰り返して、最終的にオペレーティングシステムが起動される。 初期のプログラム可能なコンピュータは、トグルスイッチがフロントパネルに並んでいて、それを操作することによってブートローダをプログラム格納域に置いてから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年代のニコレット・インストゥルメント社のミニコンピュータに基づいている。二次ローダが紙テープから逆の順番に読み込まれることに注意。 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には保護がないので、ハイジャックというほど大袈裟なものでもない)。 一般的な一次ブートローダーとしては、以下のものがある。 BIOS EFI OpenBIOS(英語版) OpenBoot
※この「ブートローダ」の解説は、「ブート」の解説の一部です。
「ブートローダ」を含む「ブート」の記事については、「ブート」の概要を参照ください。
- ブートローダのページへのリンク