『ファームウェア』という言葉を聞いたことがあるでしょうか?ファームウェアとは、電子機器に組み込まれたハードウェアの基本的な制御を行うプログラムです。『ハードウェア化されたソフトウェア』と説明されることが多いのは、あらかじめ基盤上に実装されたROMなどの記憶域に保存されていて、ハードウェアが動作するのに必要不可欠な役割を果たしているから。『ハードウェア寄りのソフトウェア』という意味合いですね。ルータやプリンタといった電子機器にも、ファームウェアは搭載されています。BIOSは、PCのマザーボード上の不揮発性メモリ(ROMやフラッシュなど、電源を落としてもデータが消えないメモリ)に保存されたプログラム。System(基本入出力システム)と名付けられ、略してBIOS(バイオス)と呼ばれています。BIOSPCの電源を入れた後、最初に起動するのはOSではありません。そもそもOSは、ハードディスク(HD)のほか、フロッピーディスク(FD)や光学式メディア、フラッシュなどから起動されるプログラムです。一般的にはハードディスクからの起動が多いので、ここではOSがHDにインストールされていることを例に考えますが、HDが使える状態にならないとOSは起動できない。OSをHDDにインストールしているということは、OSのプログラムをHDかに保存しているということです。OSはデータをファイルとして管理していて、プログラムとは実行形式のファイルです。誰かがHDにアクセスして、データを読み込まないことには、OSは起動できません。他のメディアからOSを起動する場合も、同様です。PCの電源を入れた直後、マザーボードのROMに保存されたBIOSが実行されます。ハードディスクにOSをインストールしている場合は、BIOSが起動して、HDDにアクセス、OSの起動プログラムを実行してくれます。実際には、『BIOS』と総称されるプログラムの役割は1つではありません。BIOSも時代とともに多機能化していますが、基本的な役割として、『POST』、『ハードウェアの初期化』、『ブートストラップ』、『CMOSメニュー』を例に挙げます。Test:ハードウェアの自己診断プログラムです。ハードウェアのエラーが検出されると、『ピー、ピー、ピー』とか、『ピーピピ』といった電子音を鳴らして、ユーザーに異常を知らせます。【ハードウェアの初期化】マザーボード上のデバイスや、インターフェースを使える状態にします。CPU、メモリ、HDD、光学式ドライブ、インターフェースなど、内部デバイスを検出します。ハードウェアもデータをやり取りするときに、メモリ空間を利用するので、デバイスが使用するメモリ領域を割り当てたり、CPUがそれぞれのデバイスやインターフェースを識別できるようにI/Oアドレスという番号を割り振ったり、ハードウェアが動作するために必要不可欠な設定を行っています。【ブートストラップ】たとえば、HDDにOSをインストールしているのなら、BIOSがHDDの先頭領域にアクセス、HDDに格納されたブートストラップコードを実行して、OSへの制御を橋渡しします。ブートストラップコードが実行されると、OSの起動に必要なプログラムが次々に読み込まれ、OSが起動することになります。BIOSのなかに保存されています。ユーザーが設定変更した値そのものは、チップ内部にあるCMOSメモリに保存されるため、CMOSメニューとも呼ばれます。CMOSメモリは揮発性のメモリなので、電源供給が止まると、内容が保持されません。そのため、マザーボード上にはCMOSバッテリと呼ばれる丸電池が搭載され、CMOSメモリの内容を保持しています。現在のBIOSは、複数の電源管理の仕組みや、CPUやグラフィックをはじめ、さまざまなデバイスの省電力機能設定、RAID、ネットワークブートといった、さまざまな機能もサポートしていますので、ハードウェアの設定をBIOSレベルで変更したいという場面には、CMOSメニューを利用して設定変更します。OSはBIOSを認識してハードウェアを知るOSはBIOS(ハードウェア)とアプリケーションを制御しているBIOSは、ハードウェアをするために必要不可欠な制御を行うプログラムです。表現されることが多いですね。そのため、OSよりも、ハードウェアの近くで制御を行っているBIOSの説明でも、『ハードウェアの低レベル制御をするためのプログラム』といった表現も、よく使われています。OSがハードウェアを認識するということは、ハードウェアの情報を持っているBIOSを認識し、BIOSからハードウェアの情報を貰っています。逆に、OS上から、ハードウェアの設定を変更したら、BIOSにも、その内容が反映されるようになっています。そのため、OSはインストールされる時点で、そのマシンのBIOSを検出し、OSがそのBIOSと連携できるようにインストールされています。トラブルを避けたいのなら、やっちゃいけません。前起きしたうえで、邪道について書きたいと思います。あるPCで使っていたOSインストール済みのハードディスクを、別のPCに付け替えた場合、問題なくOSが起動する場合も、そうでない場合もあります。PCと、新しいPCのBIOS仕様に大差ない場合は、OSとBIOSの連携に支障がないので、ハードディスクを付け替えるだけでも、OSが問題なく起動する。PCと、新しいPCのBIOS仕様が異なっていると、OSが起動しなかったり、動作が不安定になったりします。BIOSのミスマッチたとえば、Windows2000が使われていた頃、もともとWindowsNTが使われていたマシンをWindows2000にアップグレードして、そのハードディスクを新しいマシンに接続したら、OSが起動しないと嘆く人が珍しくありませんでした。これは、前のマシンのBIOSと、新しいマシンのBIOSを、気にしていないユーザーの失敗談です。前回も触れましたが、WindowsNTというOSはソフトウェア電源に対応したOSではありません。NTで使われていたマシンは、ハードウェア電源のマシンです。このマシンにWindows2000をインストールしたら、OSはソフトウェア電源に対応していないBIOSを検出して、そのBIOSに合せてインストールされることになります。ハードウェア電源用のBIOS上にインストールされたOSのハードディスクを、ソフトウェア電源のマシンに接続しても、そのハードディスクのOSは、うまく起動しません。新しいPCとはBIOSの中身が違ってしまっていて、OSの起動に支障をきたしたのです。BIOSさん、さようなら。UEFIさん、こんにちは。7のメイン機(自作)がクラッシュしてしまいました。してマザボをオシャカにしてしまったかは、後日、保守メンテナンスの項目に書こうと思っていますが、マザーボードとCPUは新規に購入、あとのデバイスは使いまわすことにしました。それで、新しいマシンを組み、Windows7がインストールされたハードディスクを、そのまま、接続したわけです。結果、OSが起動しませんでした。いうのも、新しく組んだメイン機は、前世代のメイン機とBIOSの仕様が違い、新しいマシンのほうは、従来からのBIOSがUEFI(EFI)に変わっていたためです。CMOSメニューから、起動設定をBIOS互換モードに変えたら起動しましたが、そのまま、使い続けても動作が不安定になるリスクを背負うだけですから、OSはクリーンインストールしました。ういわけで、次回は、BIOSに取って代わった新たなファームウェアUEFI(EFI)について書きたいと思います。『BIOS/UEFI(EFI)』って何だ?関連コンテンツよろしくお願いします(*^_^*)訪問ありがとうございます。