私のオフィスのシステムには 1GB の IDE ドライブがありますが、BIOS からは
最初の 504MB しか見えません。(ここでは MB = 1000 バイトではなく、1024
バイトとします)ですから、MS-DOS を 350MB パーティション
/dev/hda1
に、Linux のルートを 120MB パーティション
/dev/hda2
に置いています。
(訳注:バイト数を表現する際には、K = 1024(つまり 1KB = 1024)という決 まりがありますが、M = 1024KB という決まりはありません。ですから各 HDD メー カーは M = 1000KB として HDD の容量を表しています。ちなみに、k と小文字 で記述した場合 k = 1000 となります)
買ってきたばかりのドライブでは、MS-DOS は自分自身を正常にインストールす ることができませんでした。Novell DOS 7 にも同じ問題がありました。さらに 幸運な事に、"IBM の選定先" は "OnTrack" ディスクをドライブのパッケージの 中に入れ忘れていました。ドライブには "OnTrack Disk Manager" という製品が 付属しているはずでした。MS-DOS しか持っていない場合、それを使う必要があ るでしょう。
(訳注:おそらくドライブが IBM 製で、IBM がパッケージングを発注している 会社/工場がマニュアルを入れ忘れたということでしょう)
そこで、パーティションテーブルを Linux から作りましたが、MS-DOS 6.2 は
/dev/hda1
にインストールする時に ``this release of MS-DOS is
for new installations. Your computer already has MS-DOS so you need to
get an upgrade release from your dealer.'' というメッセージが表示されま
した。ですが、このディスクは新品でした。
(訳注:エラーメッセージをあえて訳すとすると、``このリリースの MS-DOS は 新規インストール用です。コンピューターにはすでに MS-DOS がインストールさ れています。アップグレード版を入手する必要があります。''でしょうか。日本 語版 MS-DOS を持っていないので、確認はできませんが。ご存じの方は翻訳者 (cz8cb01@linux.or.jp)までご一報を :-))
なんてこった。それから Linux の fdisk を再び実行して作成したパーティショ ン 1 を削除しました。これで MS-DOS 6.2 が満足したのか、いま削除したのと まったく同じパーティション 1 を作成すると、そこにインストールできました。 MS-DOS 6.2 はそのドライブの MBR に書き込みましたが、ブートすることはでき ませんでした。
幸い、Slackware のカーネルがフロッピー(Slackware インストールプログラム
の "setup" で作られたもの)にあったので、Linux をブートして Lilo で
MS-DOS の壊れた MBR を上書きしました。これはうまくいきました。これが使
用した /etc/lilo.conf
です。
boot = /dev/hda map = /lilo-map delay = 100 ramdisk = 0 # Slackware カーネルのラムディスクをオフ timeout = 100 prompt disk = /dev/hda # BIOS は始めの 500MB のみ認識 bios = 0x80 # 1 番目の IDE を指定 sectors = 63 # ドライブのマニュアルからこの数値を調べてください heads = 16 cylinders = 2100 image = /vmlinuz append = "hd=2100,16,63" root = /dev/hda2 label = linux read-only vga = extended other = /dev/hda1 label = msdos table = /dev/hda loader = /boot/chain.b
これらのシステムをインストールした後、zImage, boot.b, map, chain.b およ
び メッセージファイルのあるパーティションが msdos fs(ファイルシステム)
を、"stackered" や "doublespaced" されていない限り、使用できることを確認
しました(訳注:"stackered" は Stacker、"doublespaced" は Double Space
で圧縮されているファイルシステムの事でしょう。懐かしいですね(笑))。こ
れで、DOS パーティションを /dev/hda1
500MB に作成することができ
ました。
私は "OnTrack" がパーティションテーブルを先頭からではなく数十バイト先か ら書いてしまうことを知っていました。この問題は Linux の IDE ドライバをハッ クすることで対処できますが、コンパイル済みの Slackware カーネルではイン ストールすることはできませんでした。最終的に、IBM は "OnTrack" ディスク を送ってきました。OnTrack のテクニカルサポートに電話したところ、Linux は BIOS を使わないから欠陥品だと言われました。このフロッピーディスクは誰 かにあげてしまいました。
(訳注:いつから実装されたのかは知りませんが、現在では Linux の標準カー ネルに DiskManager や EZ Drive に対応するコードが含まれているはずです。 drivers/block/genhd.c を見るといいでしょう。たしか 2.0.27 あたりには既に あったはず。ソースコード中のコメントにはこのように書かれています。DM6 は Ontrack DiskManager 6 の意味だと思う)
if (SYS_IND(p) == EZD_PARTITION) { /* * The remainder of the disk must be accessed using * a translated geometry that reduces the number of * apparent cylinders to less than 1024 if possible. * * ide_xlate_1024() will take care of the necessary * adjustments to fool fdisk/LILO and partition check. */ (中略) } else if (SYS_IND(p) == DM6_PARTITION) { /* * Everything on the disk is offset by 63 sectors, * including a "new" MBR with its own partition table, * and the remainder of the disk must be accessed using * a translated geometry that reduces the number of * apparent cylinders to less than 1024 if possible. * * ide_xlate_1024() will take care of the necessary * adjustments to fool fdisk/LILO and partition check.