全 OS 制覇のための理想郷を実現すべく、とりあえず 20GB HDD を買いました。 Seagate の Barracuda ATA (7200rpm) というハードディスクで 19,800円でした。 1GB あたり 1,000円とはびっくりです。昔、初めて買ったのが 200MB で 42,000円 だったから 1GB に換算すると 210,000円ということで、コストパフ ォーマンスはなんと 210倍にもなったのかと感慨ひとしきり。
さてこの 20GB もある大きなカマス(Barracuda は、カマスという魚のことです)を どう料理すべきか、OS の鉄人ミチバは考えるのであった。やっぱり 3枚におろす べきなのか、それではちょっと少な過ぎるよーな、う〜む何枚がいいのだろー? てな具合に、包丁を握る前によく考えて方針を決めておく必要があります。
8.4GB(または7.8GB) 以上の領域に置かれた OS は起動できないと言われています。 その詳しい理由については分かりやすく解説したものがあるので参考文献に譲り、 ここでは数値の表現と対策について考えてみます。
後述しますが重要なのはシリンダ数です。物理的なシリンダ数でなくマザーボード の BIOS 設定画面で表示される値です。これが 1024 未満なら何も問題はないので すが、そうでない場合は 1024 シリンダ以後に置かれた OS (正確には OS を起動 するために必要な部分) は起動できない、という制限があります。
これを先頭からのバイト数に換算すると
1024シリンダ×255ヘッド×63セクタ×512バイト=8,422,686,720
となり 8.4GB 以上の OS は起動不可ということです。これは一般的に
「8.4GB の壁」とか「8.4GB の起動限界」などと呼ばれています。
この計算は 1KB=1000, 1MB=1000KB, 1GB=1000MB というハードディスク業界専用
(?)の容量表示の方法によるものですが、正確には 1KB=1024, 1MB=1024KB,
1GB=1024MB で計算すると
8,422,686,720÷1024÷1024÷1024=7.84GB
であり「7.8GB の壁」と言う人もいます。本当は(情報処理技術者試験的には)
7.8GB が正解です。ハードディスクを商売にしている会社が少しでもサイズを多く
見せようと思って故意にこういうセコいことをやっているんですね。
IBM が 2進法を知らないなんてーことは、ありえないもんね (^_^)
Linux 自体は、一旦起動してしまえばマザーボード上の BIOS は一切使用せず自前 のデバイスドライバを使ってディスクにアクセスするので、こういう変な制限とは 本来無関係なのですが、起動時すなわち Linux が動く前はどうしても BIOS のお 世話になって起こしてもらうしかありません。
このドキュメントでは EIDE(単にIDE ともいいます) のハードディスクを使った例 を紹介しますが、前記のように BIOS の世話にならざるを得ないのでマザーボード が 8.4GB 以上を認識しないと話になりません。少し前のマザーボードだと 8.4GB 超をサポートしていないので要注意です。私の例でいうと下記のようになりました。
(1) 20GB と正しく認識するマザーボードの BIOS 表示:
2,494シリンダ×255ヘッド×63セクタ×512バイト=20,513,848,320
(2) 8.4GB しか認識しない古いマザーボードでの BIOS 表示:
1,027シリンダ×255ヘッド×63セクタ×512バイト= 8,447,362,560
(3) この古いマザーボードで Linux の fdisk の表示:
39,761シリンダ× 16ヘッド×63セクタ×512バイト=20,520,493,060
「8.4GB のブート限界」というのは (1) のように BIOS は 8.4GB 以上を認識する が、OS をブートできるのは 1023 シリンダ以下の部分のみということです。 対策としては OS の起動に必要な部分だけを 1023 シリンダ以内に集めて配置すれ ば良いのです。 (2) のように BIOS が 8.4GB しか認識しないのは、それ以前の問題です。但し、 望みはある(場合もある)ので最後まで希望は捨てないようにしましょう(後述)。
新たにインストールする未知の OS に必要な容量はどのくらい取っておけばよい のか難しいところです。もちろん、その OS の使い方にも大きく依存します。 例えばマルチメディア系のデータを扱うならそれだけで 5GB 必要かもしれません。 ここでは、なるべく多くの OS を評価することを主目的としますが、単に OS を インストールしただけでアプリが入らないようでは実用的ではありません。 このバランスを考えて、1 つのOS につき 2〜3GB とします。これぐらい用意して おけばたぶん普通の用途では問題ないでしょう。
次に考慮すべきことは、パーティションはいくつまで切ることができるのかという ことです。 御承知のように(御承知でないバーイは、参考文献をご覧ください) Linux の fdisk を使うと最大 3 つの基本パーティションと 1 つの拡張パーティションを作 り、拡張パーティションの中に複数の論理パーティション(論理ドライブとも言う) を作ることができます。
では、ここで問題。論理パーティションは最大何個まで作れるのでしょう? これって結構基本的なことだと思うのですが、以外と知らないですよね。 今まで 3GB かそこらのハードディスクしか扱ってなかった時は、全部で 7〜8個も あれば充分間に合っていて、そんなこと知る必要もありませんでしたから。 答は Linux JF プロジェクトの Linux Partition HOWTO というドキュメントで 見つけました。以下にこのドキュメントから引用します。
==== ここから ===========
論理パーティションの数は無制限です:それぞれの論理パーティションは次の論理
パーティションへのポインタを持っています。そのため論理的にはパーティション
エントリの無限のつながりを持つことができます。
(省略)
Linux では、ドライブ一台に対して扱うことのできるパーティションの数に制限が
あります。 Linux で使える基本パーティションは4つまで(論理パーティションを
使うのなら 3つまで)、SCSI ディスクでは基本、論理あわせて最大 15 のパーティ
ションを使えます(IDE ディスクではあわせて63)。
==== ここまで ===========
まとめると、論理的には無制限だけど Linux では IDE の場合、基本と論理の合計
で 63 パーティションまでということです。しかし、例えば
$ ls /dev/hda*
を実行すると hda1 〜 hda16 の16個のデバイスファイルしか表示されません。
もしかしたら MAKEDEV コマンドを使ってこれを増やすことができるのかもしれませ
んが、よく分からないのでここでは取り合えず最大 16個ということにしておきます。
どなたか、このあたりのことがわかる方いらっしゃいましたら教えて下さい。
複数の OS を切替えてブートするもの、即ちブートマネージャには以下のような ものがあります。この他にもあるかもしれません。大きくは、市販の製品、OS に 付属のもの、フリーソフトに分類できます。なおブートマネージャ以外にブート ローダ、ブートセレクタという呼び方もありますが使い分けがよく分からないの で、ここではブートマネージャと呼ぶことにします。
このように色々なものがありますが、何を選べばよいでしょう? まずはフリーであること。私は上記の市販製品を使ったことがありませんが、た ぶん色々便利な機能があって、GUI で分かり易く使い易い、サポートがあるなど お金を払うだけのメリットが得られるのだろうと想像します。 ここで「市販製品を使って見事マルチブートに成功しました」では、このドキュ メントの存在価値そのものが無いわけです。成功して当然ですからね。
大切なことは論理パーティションの OS が起動できること、またできれば 2台目 以降のハードディスクにある OS も起動できるとベターです。
これらの条件を満たすものはいくつかありますが、ここでは Linux ユーザとして 最も一般的な LILO を使うことにします。GAG は、ドキュメントを翻訳しただけで まだ使ってません。悪しからず。面白そうなので、その内試してみます。
ここまでの条件を簡単にまとめてみます。