Tuesday, April 17, 2012

技術的な詳細


7.3.1 恐怖の 1024 シリンダ制限と BIOS LBA の作用

起動プロセスの最初の部分は、すべて BIOS によって実現されています。 (BIOS とは、コンピュータのためのスタートアップコードを提供する、 システムマザーボードに載っているソフトウェアチップのことです)。 そのため、この最初のプロセスは BIOS インタフェースによって制限を受けます。

このプロセスの間、ハードディスクを読み込むために使用された BIOS インタフェース (INT 13H、Subfunction 2) は、 シリンダ番号へ 10 ビット、ヘッド番号へ 8 ビット、 セクタ番号へ 6 ビット割り当てます。 これがこのインタフェースを使う場合 (例 … ハードディスクの MBR から呼び出されるブートマネージャや、 起動セクタから呼び出される OS ローダーなど) に次のような制限を与えるのです:

さて、容量の大きなハードディスクには多くのシリンダがありますが、 ヘッドは多数ありません。 そのため、大容量のハードディスクにおいては、 シリンダ数が 1024 を越えます。 このことや BIOS インタフェースを考慮すると、 ハードディスクのどこからでも起動できるとは限らないのです。 すべての起動可能なパーティションの起動セクタから呼び出されるブートマネージャや OS ローダーは 1024 シリンダより下のシリンダに存在しなければなりません。 実際に、お使いのハードディスクが典型的なものでヘッドが 16 であれば、 次のようになります:

1024 シリンダ/ディスク × 16 ヘッド/ディスク × 63 セクタ/(シリンダ - ヘッド) × 512 バイト/セクタ

これが、よく言われる 528MB 制限です。


インストールとパーティションのWindows XPへの方法

ここが BIOS LBA (Logical Block Addressing) が入ってくるところです。 BIOS LBA はシリンダを再定義することにより、 BIOS API を呼び出すコードが BIOS インタフェース経由で 1024 シリンダ より上の物理シリンダにアクセスするようにします。 つまり、BIOS を通して見る場合に、実際より少ないシリンダ数、 多いヘッド数として扱われるようにシリンダ数、 ヘッド数を再マップしてくれるのです。 言い替えれば、シリンダ数とヘッド数のバランスを変更することで、 ハードディスクが相対的にヘッドが少なく、 シリンダが多くなるということを利用することにより、 双方の数が上記に述べられている制限 (1024 シリンダ、256 ヘッド) を越えないと言うことになります。

BIOS LBA を用いることで、 ハードディスク容量の制限が仮想的になくなりました (まぁ、8GB まで上がったと言うところでしょうか)。 LBA BIOS を使用している場合は、FreeBSD または 他の OS をどこにでも載せることができ、 1024 のシリンダ制限に引っかかることもありません。

1.6GB Western Digital を再度例として考えてみましょう。 物理的なジオメトリは、次のとおりです:

(3148 シリンダ、16 ヘッド、63 セクタ/トラック、512 バイト/セクタ)

しかしながら、BIOS LBA は次のように再マッピングを行います:

(787 シリンダ、64 ヘッド、63 セクタ/トラック、512 バイト/セクタ)


どのようにPocket PCのポッドキャスト

実際には同じサイズのディスクなのですが、 シリンダとヘッドの計算は BIOS API の範囲内で行われます (偶然にも、私のハードディスクの一つには、 Linux と FreeBSD が物理的なシリンダ 1024 番目より上に載っています。 これらのOS が問題なく起動するのも、BIOS LBA のおかげなのです)。

7.3.2 ブートマネージャとディスクの割り当て

ブートマネージャのインストール時、 他に気をつけねばいけないことは、 ブートマネージャ用として領域を割り当てることです。 1 つ、あるいは複数の OS の再インストールを余儀なくされたくないなら、 一番気にしなくてはいけないトピックです。

(MBR のある) マスターブートセクタ、 パーティション起動セクタ、起動プロセス についての Section 7.2 の説明を読んだ後は、 自分のハードディスクのどこに、 この気のきくブートマネージャが存在するのか気になるところですね。 それはと言いますと、いくつかのブートマネージャは、 パーティションテーブルの隣の、マスターブートセクタ (シリンダ 0、ヘッド 0、セクタ 1) に納まり切る程に小さいのです。 ブートマネージャによってはもう少し容量が必要なものもあり、 その領域は一般には空いているため、 シリンダ 0 ヘッド 0 セクタ 1 にあるマスターブートセクタを 越えたいくつかのセクタにまで自身を拡張しています。


缶treiber

ありがたいことに (FreeBSD を含む) OS のいくつかは、 必要ならばマスターブートセクタの直後、 シリンダ 0、ヘッド 0、セクタ 2 からパーティションを 起動することができます。 実際に、先頭に空きのある、あるいは全体が空のディスクで FreeBSD の sysinstall を実行すると、デフォルトではその場所から FreeBSD パーティションが始まります (少なくとも私が行った時はそうでした)。 そして、MBR の後にあるいくつかのセクタを消費するような ブートマネージャをインストールする場合、 最初のパーティションのデータの先頭が上書きされます。 FreeBSD の場合は、ディスクラベルが上書きされ、 FreeBSD が起動できなくなります。


このような問題を避ける簡単な方法としては (また、後で異なるブートマネージャを試す柔軟性を持たすためにも)、 パーティションを切る時に、 ハードディスクの最初のトラックを割り当てないまま まるまる残しておくことです。 つまり、シリンダ 0、ヘッド 0、セクタ 2 からシリンダ 0、 ヘッド 0、セクタ 63 までを空けておき、 パーティションをシリンダ 0、ヘッド 1、セクタ 1 から開始するということです。 更に良いことに、ハードディスクの先頭に DOS パーティションを 作成する際、DOS はデフォルトでこの場所を空けておきます (これがブートマネージャのいくつかはその場所が空きだと 仮定するという理由です)。 というわけで、ディスクの先頭に DOS パーティションを作成することで この問題を避けることができるのです。 私はこのやり方が好みで、自分で 1MB の DOS パーティションを先頭に 作成します。そうすると、パーティションを切り直す時、 DOS のドライブ名をずらすことも必要ないのです。

参考として、次のブートマネージャはコードとデータを 記録する際にマスターブートセクタを使用します:

  • OS-BS 1.35

  • Boot Easy

  • LILO

次のブートマネージャはマスターブートセクタの後にある セクタをいくつか使用します:

7.3.3 マシンが起動しない場合はどうするか?

ブートマネージャをインストールした際に、 MBR が起動しない状態にしてしまうことがあります。 あまりないことですが、既にインストールしたブートマネージャが ある状態で FDISK してしまうと起こることがあります。


ハードディスクに起動可能な DOS パーティションがある場合、 DOS フロッピーから起動します。次を実行します:

オリジナルに戻すには、シンプルな DOS の起動コードを システムに戻します。そうすると、ハードディスクから DOS (DOS に限る) を起動することができます。 もう一つの手としては、起動可能なフロッピーを使って、 ブートマネージャのインストールプログラムを再度実行します。



These are our most popular posts:

Linux On Libretto L5-2

初期状態に戻せるように、HDDからMBR(マスター・ブート・レコード)とリカバリ用領域の 隠しパーティションをバックアップする。 ... 私自身は、HDDを本体から外し、変換 アダプタを使ってデスクトップ機につないで、Linuxでイメージをダンプするという方法を とった。 read more

Mac OS X でのディスクのフォーマットとパーティションの作成

Mac OS X でのディスクのフォーマットとパーティションの作成. ... Safari の Coockie を 個別に削除する方法| Safari と ... ハードウェアの TIPS ... 私も中古やバルクなどの ハードディスクを買うが、ほとんどがWindows用にフォーマットされていて、この場合は、 フォーマットしないでインス トールしようとしても、そもそもインストール自体ができない。 read more

【TestDisk】について

ハードディスク上に点々と散在する残骸から、パーティションの位置・サイズ・種類などを 拾い出す能力は、フリーソフトでありながら、市販の ... また【KNOPPIX】にもLinux版が 入っています。 .... CHSとは、HDDのセクタの位置を、Cylinder/Head/Sector の3つの 物理的構造を使ってあらわす方法です。 .... 私のHDDは市販ソフトでパーティションを 広げたりくっつけたり、OSを入れ変えたり、今まで色々なことをしているので候補が多い です ... read more

GRUB 起動ディスク

しかし、Vine3.xでは起動ディスクの作成は省略されているので、初めてLinux を起動 する方法に困ることになります。 ... フォーマット済みのFD をドライブに入れて、Floppy drive の欄を確認し、Write ボタンで書き込みます。 ... では次に、ハードディスクの パーティション情報を表示させてみます。 ... 但し、メニュー登録の操作は、ファイル システムの関係上Linux 上でしか行えませんので、注意してください(Windows 上で 行うツールもある ... read more

Related Posts



0 comments:

Post a Comment