特集
ウワサその01 CPU編 1/4
ウワサその01 CPU編 2/4
ウワサその01 CPU編 3/4
ウワサその01 CPU編 4/4
オマケ検証 メモリ編
ウワサその02 ビデオカード編 1/2
ウワサその02 ビデオカード編 2/2
ウワサその03 HDD耐衝撃編
ウワサその04 HDD振動設置場所編
ウワサその05 HDD安全神話編
ウワサその06 HDD高速運用編
ウワサその07 電源編 1/2
ウワサその07 電源編 2/2
ウワサその08 グリス編
ウワサその09 サウンドカード編
ウワサその10 セキュリティ編
ウワサその11 アンチウイルス編
ウワサその12 Mac編 1/3
ウワサその12 Mac編 2/3
ウワサその12 Mac編 3/3
オマケ検証
その他の特集(2011年)
激突!Bulldozer vs. Sandy Bridge
達人に学ぶPCパーツ使いこなし術
超本命パーツ35傑
独占!PCパーツなんでもランキング
PCパーツセレクション300
Sandy Bridge 自作超大全
PC自作スタートアップ講座2011
Sandy Bridge再始動
“後乗せサクサク”アップグレード術
震撼性能! Sandy Bridgeに死角なし!!
PCパーツ100選2011
マザーボード100選2011
過去のその他の特集(2010年)
過去のその他の特集(2009年)
過去のその他の特集(2008年)
過去のその他の特集(2007年)
過去のその他の特集(2006年)
読者プレゼント
プレゼント申し込みへ
ユーザー登録からアンケートページへ進んでください。
CLUB IMPRESS会員登録
プレゼントの対象は「最新号購入者」のみとなります。
アンケートにお答え頂くにはCLUB IMPRESSへの登録が必要です
PC自作 ウワサの検証 完全版
ウワサその12 Mac編
検証人:塩田紳二
Intel Macが採用している新しいシステムファームウェア「EFI」というものについて、調査してみよう。
image
次世代BIOS「EFI」の仕組を探る
 Intel製CPUを搭載したMacは、PC/ATをベースにした現在のPCと、CPU、チップセットをはじめとした多くのパーツが共通している。しかし、システムの起動にBIOSではなくEFI(Extensible Firmware Interface)を採用する点が大きく異なる。

 EFIは、現在のBIOSに代わる新しいファームウェアとして設計され、すでにItanium(IA-64)のシステムで採用されている。また、次期WindowsであるWindows Vista 64bit版では、EFIを採用したシステムへの対応も予定されている。
EFIとは?
 EFIは、BIOSに代わる新しいシステムファームウェアとして設計されたもの。現在のBIOSは、IBM PCが開発されたときに作られたものがベースで、多少の拡張はあったものの、基本的には最初のBIOSと互換性を保っている。BIOSは、Basic Input/Output Systemの略で、本来は、OS登場以前に、アプリケーションに対してコンピュータの基本的な入出力ルーチンを提供するために作られたものだ。

 IBM PCは、その当初こそROMを用いてOSとなるBASICを搭載していたが、その後、一般的には外部記憶装置からOSを読み込んで起動するようになった。このときに、OSの起動プログラムを読み込んで必要なメッセージを表示させたり、キーボードなどから読み取りなどを行なったりするプログラムとして搭載されたのがROM-BIOS。起動時のシステムテスト(POST)や各種基本ハードウェア(チップセット)の初期化や設定といった処理もになっている。

 BIOSはROMとして固定されているため、とくに起動にかかわる新しいハードウェアデバイス(バスや外部記憶装置など)への対応が難しい。さらに長期間使われ続ける間にも互換性を維持し続けたため内部がかなり複雑化している。また、リアルモードで実行されるため、1MB以下のいわゆるコンベンショナル領域のみにメモリ割り当てが限定され、サイズを増やすことも不可能な状態なのだ。

 EFI(図1)では、こうした問題を考慮し、最初から32bitモードで起動するよう設計されている。またハードウェアは、原則としてデバイスドライバを介して制御するようになり、かつHDD上にEFI専用のパーティションも作成可能になっている。いわば、EFIとはMS-DOSに近いミニOSのような構造と言えよう。

 実際、Intelが公開しているツールには、「EFI Shell」と呼ばれるコマンドラインインターフェースのシェルプログラムが含まれており、コマンドなどを介した作業が可能だ。こうした構造となっているEFIでは、従来のBIOSの存在を前提として動作するOS向けにBIOSエミュレーションを行なうようなプログラムを開発することもできる。ちなみにi945/955以降のチップセットを採用するIntel製のマザーボードは、すでにEFIを採用し、BIOSをエミュレーションしている。
image
GPT(GUID Partition Table)フォーマット
 HDDの容量が増大すると、Big Drivesと呼ばれる問題(実際の容量以下しか認識されない)が発生することがある。通常、OSが起動する際に、ローダーと呼ばれるプログラムが動作して環境を整えた上で、OS自体が起動を開始する。OSが動き出せば、デバイスドライバを介して、どのようなハードウェアもアクセスできるが、その前段階にあるローダーでは、BIOSの提供するサービスに頼らねばハードウェアにアクセスできない。ここで、BIOSがいくつまでのセクタを扱えるかといった問題が発生する。Big Drivesは、BIOSが本来、ヘッド、シリンダ、セクタの三つのパラメータでHDD上の位置を指定していたために起きるが、これまでの問題は、BIOSの全面的な改修が不可能なこともあって、場当たり的な拡張しか行なえなかった。

 もう一つ、BIOSに起因するHDD関連の問題にパーティションがある。BIOSはHDDの先頭にあるMBR(Master Boot Record)と呼ばれる領域から、最初にIPLプログラムというものを読み込んで実行する。このIPLプログラムが、各パーティションからOS起動用のローダーを必要に応じて読み込むことで、その後、OSが起動する仕組となっている。こうした関係であるため、BIOSはパーティションやMBRを管理できるようになっている必要がある。基本領域は四つまでというパーティションの制限は、BIOSが読み込むMBR上のパーティションテーブルに四つしかエントリーがなく、拡張できないのが理由なのだ。それ以上にしたければ、基本パーティションのうち一つを拡張パーティションとし、内部を論理パーティションに分割する必要がある。

 こうした問題を解決するため、EFIでは、GUID Partition Table(GPT)と呼ばれる新しいパーティションテーブル構造(と言うかHDDの基本的なフォーマット)を定めている(図2)。従来のパーティションテーブル(俗にMBRフォーマットなどと呼ぶ)との互換性を保つため、先頭部分にはMBRが置かれているが、その直後にGUID(Global Unique ID。重複しないように割り当てた128bitのID)でパーティションタイプを表現するテーブルが並ぶ。このGPTは、HDDの最後にも同じものが書き込まれ、ディスクエラーに備えている。GPT自体は、エラーチェックが可能なようにMBR直後のGPTヘッダ部分にCRC(Cyclic Redundancy Check)値が書き込まれており、整合性をチェックできる。

 各エントリーは128byte(512byteの1セクタに4エントリー格納できる)で、パーティションのタイプ(GUID)、固有GUID、開始、終了位置を表わすLBA(Logical Block Addressing)、属性などが記述してある。

 MBRのパーティションテーブルは、HDD全体が1パーティションとなるよう設定され、パーティションタイプとしてGPTフォーマットを表わす0xEEが設定される。これは、GPTを理解しないHDDユーティリティなどが、未フォーマット状態と誤認するのを防止するためだ。なお、このタイプのHDDをWindowsのディスクユーティリティなどから見ると「GPT保護パーティション」と表示される。
 
image
 
image
Boot Campの動作の仕組
 EFIを採用したシステムでは、EFIの初期化が終わった後、EFIが提供するAPIで動作するブートマネージャ(Windowsなどと同じPEフォーマットを採用)が、各パーティションのブートプログラムを起動、その後OSが立ち上がる仕組だ(図3)。Intel Macの場合、Mac OSのローダープログラムは/System/Library/CoreServices/にある「boot.efi」である。

 Boot Campに含まれるユーティリティの「Boot Campアシスタント」は、パーティションを作成し、Windows XPのインストーラを起動するところまで行なうが、ここでは、GPT形式のHDD内のパーティションに対して、XPがパーティションを認識できるようにMBRにあるパーティションテーブルをセットするのだと思われる。

 Windows XPの起動時には、MBRに書き込まれたIPLプログラムが、システムボリュームのルートにあるNTLDRを起動する。NTLDRは、32bitモードへ移行し、次にWindows XPのカーネルファイルをメモリに読み込んで実行させる。このときには、Windowsの起動ディレクトリの位置が指定されたBoot.iniを参照している。Boot CampでWindows XPをインストールした場合、multi(0)disk(0)rdisk(0)partition(3)\WINDOWSが指定されている。簡単に言えば、最初のHDD内の第3パーティションにある\WINDOWSから起動せよという内容だ。

 NTLDRでは、内部に組み込まれたディスクアクセスドライバを使ってディスクアクセスを行なう。ここを見る限り、NTLDRは、内蔵のIDE/ATAインターフェースを介して起動を行なっている。つまり、Boot Campを使ってNTLDRが実行される時点では、BIOSと同等の環境が提供されていると考えられる。

 実際、Boot Campのインストール前、HDDのMBR領域には何も書き込まれておらず、パーティションテーブル0はHDD全体が0xEE(GPT)であるように設定されていた。Boot Campを使ってWindowsをインストールした後にはIPLが書き込まれ、パーティションテーブル0、1、2は、それぞれ0xEE、0xAF(Mac)、0x07(Windows XP)に変更される。

 Windows XPは、0xEEを「GPT保護パーティション」として認識する。ただし、パーティションの変更などを行なうことはできない(現状、Windows Server 2003とWindows XP x64 EditionだけがGPT形式を扱える)。Windows XPは、Mac OSの領域をほかのOSの領域として認識するため、Boot Campが作成した第3パーティションのみにOSのインストールが可能だ。インストール自体は、XPのインストーラがそのまま実行する。このときはGUIがない状態だが、実際にはWindows XPが起動している。基本的な起動の手順は、通常のXPと同じで、MBRのIPLがNTLDRを起動し、NTLDRがXPのカーネル(NTOSKRNL.EXE)を起動している。

 NTLDR、NTDETECT.COMともに32bitモードで動作するので、BIOSの機能の中でNTLDR/NTDETECT.COMが利用するものは限られており、BIOSすべての機能を実装する必要はない。参照されるメモリ領域を設定し、いくつかのINTベクタを設定するだけでよいはずだ。

 Intel Macでは、EFIからMac OSのブートセレクタが最初に起動される。ここではまだEFIの内部で実行されており、Mac OSパーティションが選択されたとき初めてMac OSのロードが開始される。ブートセレクタでWindows XPパーティションを選択した場合には、一旦BIOS互換環境を作成してからNTLDRを呼び出すのだと思われる。NTLDRが動いてしまえば、内部にあるディスクドライバが動くので、EFIがこれ以上めんどうを見る必要はない。後は、通常と同じようにXPの起動シーケンスが開始される。
rEFItでEFI Shellを起動
 さらにEFIを詳しく追究したい人のためにEFI Shellの動作方法を解説しよう。今回の記事も、この方法でEFI Shellを起動し、さまざまな解析・調査を行なった。

 Mac OSパーティション上のBoot.efiを書き換えるのが一番簡単だが、これではMac OSが起動しなくなる。IntelのWebサイトではEFIのサンプル実装のソースコードを公開しており、これを使ったIntel Mac用のEFI Shell起動ツール「rEFIt」が開発されている。ブートメニューとして起動するほか、EFI Shellの起動もできる。

 インストールもできるが、提供されているCDブート用のISOイメージを用いれば、Mac OSのパーティションに手を付ける必要がないため安心だ。これを挿入して起動時にOptionキーを押し続け、Bootメニューを表示させると、Mac OSやWindowsと並んでrEFItのアイコンが表示される。これを選べば、MS-DOSに似たコマンドラインのインターフェースで操作するEFI Shell環境が表示される。なお、EFIコマンドのリファレンスは、IntelのサイトからダウンロードできるEFIのサンプル実装に含まれているので参照してほしい。
imagerEFItのCDイメージから起動した後のブートセレクタ。Mac/Windowsの起動のほか、EFI Shellのブートメニューがある
image
EFI Shellの起動画面。DOSライクなコマンドラインインターフェースを備える
image
dblkコマンドで内蔵HDDのパーティションテーブルを表示させてみたところ
Back
Page Top
Next

サイト内検索

DOS/V POWER REPORT 最新号

DOS/V POWER REPORT 最新号表紙

DOS/V POWER REPORT
2017年3月号

発売日:1月28日
特別定価:1,080円

書籍(ムック)

自作PCパーツパーフェクトカタログ 2017

発売日:2016/11/29
販売価格:1,850円+税


PC 自作・チューンナップ虎の巻 二〇一七

発売日:2016/10/31
販売価格:1,680円+税


VR2 Vol.1

発売日:2016/9/29
販売価格:1,780円+税


楽しいガジェットを作る いちばんかんたんなラズベリーパイの本

発売日:2016/9/23
販売価格:2,400円+税


NASオールカタログ2016-2017

発売日:2016/6/17
販売価格:1,380円+税


DVDで分かる! 初めてのパソコン自作

発売日:2016/3/29
販売価格:1,480円+税


BIOS/UEFI 完全攻略読本 Skylake&Windows 10 対応版

発売日:2016/3/28
販売価格:2,380円+税


ちょび&姉ちゃんの『アキバでごはん食べたいな。』2

発売日:2015/12/10
販売価格:1,280円+税


髙橋敏也の改造バカ一台&動く改造バカ超大全 風雲編

発売日:2015/06/29
販売価格:2,500円+税


髙橋敏也の改造バカ一台&動く改造バカ超大全 怒濤編

発売日:2015/06/29
販売価格:2,500円+税


わがままDIY 2

発売日:2015/02/27
販売価格:980円+税


ちょび&姉ちゃんの『アキバでごはん食べたいな。』

発売日:2014/12/5
販売価格:1,280円+税


わがままDIY 1

わがままDIY 1

発売日:2011/12/22
販売価格:980円+税

読者プレゼント

アンケートにお答え頂くには「CLUB IMPRESS」への登録が必要です。

本誌最新号・プレゼント申し込み

*プレゼントの対象は「DOS/V POWER REPORT最新号購入者」のみとなります。

ユーザー登録から アンケートページへ進んでください

インプレスの本、雑誌と関連Webサービス