レンタルサーバ + Webシステム開発 = E-business

■レンタルサーバご利用参考資料
サーバご利用の参考にJF Project によるJF (Japanese FAQ)を掲載しています。

Linux JF(Japanese FAQ)Project.
JF は, Linux に関する解説文書・FAQ などを作成・収集・配布するプロジェクトです.

グリーンネット・トップページへ戻る


一覧に戻る
  Lilo mini-Howto
  Cameron Spitzer (cls@truffula.sj.ca.us), Alessandro Rubini
  (rubini@linux.it).
  v2.02, 16 August 1998
  中谷千絵 (jeanne@mbox.kyoto-inet.or.jp), 早川仁
  (cz8cb01@linux.or.jp).
  v2.02j, 1999年 9月12日

  LILO とは、x86 アーキテクチャの Linux で最も良く使われている Linux
  Loader の事です。私(原文の著者)は大文字表記があまり好みではないた
  め、ここでは LILO ではなく Lilo と呼ぶことにします。このドキュメントで
  はいくつかの典型的な Lilo インストレーションについて説明しており、Lilo
  ユーザーズガイドの補足となることを意図しています。読者の(設定)が多少
  違うものだとしても、サンプルは参考になると思いますし、またよけいな手間
  を省ける事でしょう。Lilo 自体のドキュメントは非常に良いものですから、
  詳細を知りたい方は /usr/doc/lilo* を参照してください。
  ______________________________________________________________________

  目次

  1. イントロダクション
  2. 予備知識と一般的なインストール方法
     2.1 Lilo はどこにインストールするべきでしょうか?
     2.2 IDE ハードディスクをどのように設定すべきでしょうか?
     2.3 ブート時に対話的に操作するには?
     2.4 Lilo をアンインストールするには?

  3. シンプルな設定
     3.1 大きなカーネルを扱うには
     3.2 その他の情報源

  4. bios= を使用して、インストールした hdc を hda としてブートさせる
  5. BIOS からルートパーティションが見えないときに Lilo を使用する
  6. BIOS が扱えない大容量ディスクをアクセス
  7. Rescue フロッピーからの起動
  8. 翻訳について

  ______________________________________________________________________

  1.  イントロダクション

  Lilo ソース内のドキュメント(/usr/doc/lilo-バージョン)は非常に詳しいも
  のですが、多くの Linux ユーザーは自分自身の /etc/lilo.conf ファイルを
  作成する際にいくつかのトラブルを経験しています。このドキュメント
  は、Lilo をうまく使いこなすためのコツを短時間で得られるようにサンプル
  として 5 種類のパターンを示し、それぞれについて必要最小限の解説を加え
  るという方針で書かれています。

  o  最初の例は、古典的な ``Linux と他の OS'' のインストールです。

  o  次の例は、どのようにして Lilo を /dev/hdcとして接続されているハード
     ディスクにインストールし、/dev/hda としてブートさせるかについてで
     す。これは普通、現在稼働中のシステムに新しく Linux 用のドライブを追
     加する時に必要となります。また(使用している BIOS が新しい物である
     場合)どうやってSCSI ドライブからブートするかについても説明していま
     す。

  o  3 番目の例では、BIOS からアクセスできないルートパーティションから
     Linux システムを起動する方法について説明しています。

  o  その次の例は、BIOS や DOS から簡単にアクセスできない大容量ディスク
     へのアクセスについてです(この例は多少内容が古いです)。
  o  最後の例では、他の OS をインストールすることによって損傷を受けた
     ディスクの復旧方法について説明しています(訳注:つまり Windows95な
     どの OS をインストールすることによって HDD 先頭の MBR やパーティ
     ション先頭のブートセクタを壊してしまった場合です)。

  最後の 3 つの例はこのドキュメントのオリジナルの著者である
  Cameron(cls@truffula.sj.ca.us) により書かれたものです。ドキュメントの
  現在のメンテナンス者である Alessandro(rubini@linux.it) は Linux 以外の
  OS を使用していないため、それらの例の内容のチェックや更新をする事がで
  きません。言うまでもありませんが、どのようなフィードバックも歓迎しま
  す。

  2.  予備知識と一般的なインストール方法

  Lilo がシステムを起動する場合 BIOS コールを使用してディスク(IDEドライ
  ブ、フロッピー、その他)から Linux カーネルを読み込みます。つまりカー
  ネルは BIOS からアクセスできる場所に存在している必要があります。

  Lilo はブート時にファイルシステム上のデータを読み込むことはできません
  から、/etc/lilo.conf に記述したパス名はインストール時(/sbin/lilo を実
  行する時)に解読され、各ファイルがディスク上のどのセクタを占めているの
  かという情報に変換されます。「インストール時」には、カーネルを読み込む
  際に必要となるファイルがディスク上でそれぞれどのセクタに存在しているの
  かを示すテーブルがプログラム (訳注: /sbin/lilo) によって構築されます。
  ですから、これらのファイルすべてが BIOSからアクセスできるパーティショ
  ンに存在している必要があります(ファイルは通常 /boot ディレクトリに置
  かれます。つまり BIOS からアクセスできる必要があるのは、Linuxシステム
  のルートパーティションだけです)。

  BIOS に関するもう一つの注意点としては Lilo の設定を変更する度に(訳
  注: /etc/lilo.conf を変更した時)、/sbin/lilo を実行して再インストー
  ルする必要があります。またカーネルを再コンパイルして古いカーネルイメー
  ジを上書きした場合は常にLilo を再インストールしなければなりません。

  (訳注:再インストールしなかった場合、マシンを再起動すると Linuxが起動
  せずにフリーズするかもしれません。Lilo が OS 起動時に使用する情報は
  /sbin/liloコマンド実行時に設定されますが、カーネルを上書きした場合には
  この情報が違う物になってしまうからです)

  2.1.  Lilo はどこにインストールするべきでしょうか?

  /etc/lilo.conf の boot= パラメーターは、プライマリーブートローダーをど
  こに置くべきかを Liloに指定するものです。通常はマスターブートレコード
  (MBR)(/dev/hda)か Linux のルートパーティション(通常は/dev/hda1 か
  /dev/hda2)のどちらでも指定できます。

  (訳注:Linux のルートパーティションを指定する場合は、MBR に Lilo以外
  のブートローダー(OS/2、Windows NT、extipl やシステムコマンダーなど)
  がインストールされている必要があります。つまり、MBRのローダーからルー
  トパーティションのローダー(Lilo)をブートし、そこから Linux が起動さ
  れます)

  他の OS がハードディスクにインストールされている場合、MBRではなくルー
  トパーティションに Lilo を入れた方が良いでしょう。その場合そのパーティ
  ションに、fdisk の``a''コマンドかcfdisk の``b'' コマンドを使用し
  て``bootable''(起動可能)マークを付ける必要があります。マスターブート
  セクタを上書きしないほうが、もし必要になった場合、より簡単に Linux と
  Lilo をアンインストールできることでしょう。

  2.2.  IDE ハードディスクをどのように設定すべきでしょうか?

  私自身は BIOS の LBA や LARGE の設定はしていません(Linuxしか走らせて
  いませんから)。これらは PCの世界での設計の欠陥を取り繕うためのみっと
  もないその場しのぎです。この理由により、カーネルは 1024 シリンダ以内に
  存在する必要がありますが、パーティションを分割してルートパーティション
  を小さい物にする限りこれは問題にはなりません(どちらにせよ読者はそうす
  るはずでしょうが)。

  すでにハードディスクに他の OS がインストールされている場合、その OS が
  もう起動しなくなってしまうかもしれませんから BIOS のセッティングを変え
  られないでしょう。最近のディストリビューション全ての Lilo は LBA と
  LARGE のディスク設定を取り扱うことができます。

  /etc/lilo.conf の "linear" キーワードはジオメトリー問題に対処するのに
  役立つと言うことを覚えておいてください。これは Liloにリニアセクタアド
  レスをセクタ/ヘッド/シリンダ(CHS)指定の代わりに使用することを指示し
  ます。3Dアドレス(CHS アドレス)への変換処理は実行時に先送りされます
  が、その代わりにこの設定によってジオメトリー問題に、より柔軟に対応する
  ことができます。

  (訳注:LILO ver 20 および 21 では linear を指定された場合であっても
  lilo は内部で CHS アドレスを使っています。指定しない場合との違いは単に
  起動時にマップファイルに記録された 3D アドレスを BIOS から取得したジオ
  メトリー情報を用いて別な 3D アドレスに変換するかどうか、のはずです。

  もし linear オプションを付けることによって /sbin/lilo が /boot/map
  ファイルに 32bit な linear address を記録するのなら、/boot/map ファイ
  ルのサイズが linear オプションを付けない場合よりもかなり大きくなるはず
  ですが (カーネルのセクタ位置情報が 24bit から 32bit に増えるため)、
  (試してみればすぐにわかりますが)実際にはすくなくとも lilo ver.21 で
  は /sbin/lilo に -l オプションを付けても付けなくても生成される map
  ファイル(標準では /boot/map) のサイズは同じです。

  このへんは lilo のソースにある first.S や second.S を読めばすぐにわか
  ると思います。map ファイルを読む処理は linear option の有無によらず、
  まったく同じですから。違いは map ファイルから読んだデータを処理する部
  分だけです)

  1 つ以上のハードディスクを持っていて、それらのうちいくつかは Linuxだけ
  で使用していて、なおかつブートプロセスに関係がない(ブートプロセスで使
  用していない/必要がない)場合 BIOSに、それらのディスクが接続されてい
  ないと設定することができます。これによりシステムはより早く起動しま
  す。Linux は即座にすべてのディスクを自動認識します。私は自分のコンピュ
  ーターのディスクをよく交換しますが、BIOS の設定には触れません。

  2.3.  ブート時に対話的に操作するには?

  Lilo のプロンプトが現れたときに  キーを押すことによって、選択可能
  なリストを表示します。Lilo が対話的(interactive)に操作できるように設定
  されていない場合、``LILO'' メッセージが表示されるまで 
  を押し続けてください。

  Linux カーネルのブートを選択した場合、コマンドライン引数を選択したシス
  テムの名前の後ろに追加することができます。カーネルには多くのコマンドラ
  イン引数がありますが、すべての引数は Paul Gortmaker の ``BootPrompt-
  HOWTO'' (訳注:日本語訳は堀江誠一氏です。 http://www.linux.or.jp/JF
  から入手できます)に記述されていますからそれらをここで記述しようとはし
  ませんが、いくつかのコマンドライン引数は非常に重要なため、ここで説明す
  る価値があるでしょう。

  o  root= lilo.conf に設定されたものとは別のパーティションを root (パー
     ティション) としてマウントすることをカーネルに指示します。例えば私
     のシステムは最小限の物のみをインストールした小さな Linux パーティ
     ションがありますから、ミスによってルートパーティションを消してし
     まった後でもシステムをブートすることができます。

  o  init= バージョン 1.3.43 以降のLinux カーネルは、 /sbin/init の代わ
     りにコマンドラインで指定された別のコマンドを実行できます。ブート中
     に何か問題の起こった場合、init=/bin/sh を指定することによって裸の
     (bare) システムにアクセスすることができます。シェルプロンプトが表示
     されたら、まずディスクをマウントする必要があるでしょう。 ``mount -w
     -n -o remount /; mount -a'' を試してみてください。また、コンピュー
     ターの電源を切る前には ``umount -a'' を忘れずに実行してください。

  o  数字 カーネルのコマンドラインに数字を指定することによって、 init に
     どの ラン・レベル で実行するのかを指定することができます(デフォル
     トは通常 3 もしくは 2 で、ディストリビューションによります)。詳し
     く知りたいときは、init, /etc/inittab や /etc/rc*.d のドキュメントを
     参照してください。

  2.4.  Lilo をアンインストールするには?

  Lilo がブートセクタを上書きする際には、/boot/boot.xxyy としてバック
  アップを作成します。xxyy はデバイスのメジャー/マイナー番号を 16 進数
  で表したものです。ディスク/パーティションのメジャー/マイナー番号は
  ``ls -l /dev/device'' を実行することで見られます。例えば、/dev/hda (メ
  ジャー 3 番、マイナー 0 番)の最初のセクタは /boot/boot.0300 に保存され
  痔/dev/fd0 の場合は /boot/boot.0200、/dev/sdb3 (メジャー 8 番、マイナ
  ー 19 番) は /boot/boot.0813 を作成します。(訳注: 16 進数ですから、
  10 進数の 19 は 16 進数の 13 になります)

  すでにファイルが存在していた場合 Lilo はファイルを作成しようとはしませ
  ん。ですから Lilo を再インストールする際に(例えばカーネルの再コンパイ
  ル後)、ファイルのバックアップを取ることを気にする必要はありません。
  /boot/ に存在するブートセクタのバックアップファイルは、常に Lilo のイ
  ンストール前のスナップショットです。

  Lilo をアンインストールする必要がある場合(例えば不幸にも Linux をアン
  インストールしなければならない時)、必要な作業は単にオリジナルのブート
  セクターをリストアすることだけです。Lilo が /dev/hda にインストールさ
  れているなら単に``dd if=/boot/boot.0300 of=/dev/hda bs=446 count=1''
  を実行するだけです。

  (私自身は ``cat /boot/boot.0300 > /dev/hda'' を実行するだけですが、こ
  れは安全ではありません。オリジナルのパーティションテーブルを(その後に
  変更したかもしれないのに)リストアしてしまうからです)

  このコマンドは DOS のコマンドプロンプトから``fdisk /mbr''を実行するこ
  とよりも簡単ですこの操作によって、Linux 以外の OS をまったく使わずに
  (起動さえすることなく) ディスクから Linux をきれいさっぱり消してしまう
  ことができますLilo を取り除いたあとに Linux の fdisk を実行して、すべ
  ての Linux パーティションを削除することを忘れないでください(DOS の
  fdisk は DOS 以外のパーティションを消すことはできません) 。

  Lilo を(訳注:MBR にではなく)ルートパーティションにインストールして
  いた場合(例えば /dev/hda2)は、Lilo をアンインストールするために必要な
  ことは特にありません。単に Linux の fdisk を実行し、Linux パーティショ
  ンをパーティションテーブルから取り除くだけです。また DOS パーティショ
  ンをブート可能(bootable)にする必要もあるでしょう。

  3.  シンプルな設定

  多くの Lilo では次のような設定ファイルを使用します。

  boot = /dev/hda   # もしくはあなたの環境でのルートパーティション
  delay = 100        # ディレイ(遅延)10 秒です(これぐらい余裕があれば、引数入力などができるでしょう)
  vga = 0           # 省略可能。 "vga=1" を指定すると 80x50 文字表示になります
  #linear           # ジオメトリーに問題があった場合、"linear" を試してみてください

  image = /boot/vmlinux  # zImage ファイル
    root = /dev/hda1     # ルートパーティション
    label = Linux        # 適当な名前でも構いません
    read-only            # ルートパーティションを read-only でマウント

  other = /dev/hda4   # DOS パーティションがある場合
    table = /dev/hda  # 現在のパーティションテーブル
    label = dos       # もしくはその他の素敵な :-) 名前

  必要に応じて、複数の``image''や``other''セクションを指定することができ
  ます。複数のカーネルイメージを lilo.conf に指定することは珍しくありま
  せん。少なくとも開発版のカーネルを追っかけている時はそうです。

  3.1.  大きなカーネルを扱うには

  カーネルを``zImage''でコンパイルした際に、サイズが 512KB 以上になって
  しまった場合(2.1 以降の新しいカーネルなどでは普通のことです)、代わり
  に ``make bzImage''を使用して``big zImage''なカーネルをビルドする必要
  があります。大きな(bzImageな)カーネルイメージをブートする為に特に必
  要なことはありませんが、バージョン 18 以上の Lilo が必要です。インスト
  ールされている物が古い場合、Lilo パッケージをアップグレードすべきで
  す。

  3.2.  その他の情報源

  Lilo のドキュメントの他にも、いくつかの役立つ mini-howto があります。
  それらのうち、なんちゃら OS 用のドキュメントは ``Linux+なんちゃら OS''
  といった名前になっています。これは Linux と他の OS との同居について
  扱っています。また``Multiboot-with-LILO'' では Windows ファミリーの OS
  と Linux を同居させる方法について説明しています。

  (訳注:例えば Windows95 との同居について説明しているドキュメントは
  "Linux+Win95" という名前になっています)

  4.  bios= を使用して、インストールした hdc を hda としてブートさせる

  Lilo を使って、あるディスクからカーネルイメージのマップを作成し、そし
  てそのカーネルイメージを別のディスクから取得するよう BIOS に指示する、
  ということが可能です。例えば私がよくやることは Linux を hdc に接続した
  ディスク(IDE のセカンダリーコントローラーのマスター)にインストールし
  て、そのディスクを別なコンピュータのプライマリー IDE コントローラに接
  続し、単独で動作するシステムとして起動させることです。インストール用フ
  ロッピーを小さなパーティションにコピーしたので、他の作業をするために自
  分のシステムを使いながら、chroot を仮想コンソールで実行してhdc へのイ
  ンストール作業を実行できます。

  私が Lilo をインストールするために使用している lilo.conf ファイルはこ
  のようになっています。

  # このファイルを使うには /dev/hdc が存在するシステム上である必要があります。
  boot = /dev/hdc   # hdc の MBR を上書き
  disk = /dev/hdc   # hdc がどのように見えるかを指定
     bios = 0x80    # BIOS はこのドライブを 1 番目のドライブとして扱う
  delay = 0
  vga = 0

  image = /boot/vmlinux  # これ(カーネルイメージ)は /dev/hdc1 上にありますが
    root = /dev/hda1     # ブート時に hda1 が root デバイスになります
    label = Linux
    read-only

  この設定ファイルは /dev/hdc1 の Lilo コマンドで読みこむ必要がありま
  す。Lilo は、ブートセクタ (/dev/hdc) に書き込まれる Lilo のマップ
  /boot 内のファイルを参照しなければなりません。それらのファイルはこの
  ディスクがスタンドアローンシステムとしてブートされた時には hda にある
  ものとしてアクセスされます。

  私はこの設定ファイルを /mnt/etc/lilo.conf.hdc という名前にしていま
  す。/mnt は hdc がインストール中にマウントされている場所です。Lilo を
  インストールする場合には ``cd /mnt; chroot . sbin/lilo -C
  /etc/lilo.conf.hdc'' を実行します。これが魔法のように見えるのであれ
  ば、chroot の man page を参照してください。

  lilo.conf の ``bios='' パラメーターは Lilo に、BIOS がデバイスとして何
  を使うのかを指定します。BIOS コールはフロッピーディスクとハードディス
  クを番号で識別します。0x00 と 0x01 はフロッピードライブを、0x80 以降の
  番号(古い BIOS では2つのディスクのみアクセス可能)はハードディスクと
  して認識します。つまり先のサンプルの ``bios = 0x80'' は、``/dev/hdc''
  には ``BIOS コールの 0x80 を使用する''ということです。

  この Lilo パラメーターは他の状況でも便利です。例えば BIOS が IDE ディ
  スクの代わりに SCSI ディスクからブートできる場合です。IDE と SCSI デバ
  イスの両方がある場合、Lilo は 0x80 がどちらを指しているかわからない
  (ユーザーが BIOS 設定メニュー内でどちらからブートするかを選択できるた
  め)し、 Linux が動作している間には BIOS にアクセスする事はできませ
  ん。

  デフォルトでは Lilo は、BIOS によって IDE ドライブが始めにマップされる
  と仮定していますが、/etc/lilo.conf に次のような指定をすることによって
  変更することができます。

  disk = /dev/sda
    bios = 0x80

  5.  BIOS からルートパーティションが見えないときに Lilo を使用する

  私は 2 台の IDE ドライブと 1 台の SCSI ドライブを持っていますが、SCSI
  は BIOS から見えません。Lilo は BIOS コールを使用するので BIOS から認
  識するドライブしか見えません。私の馬鹿 AMI BIOS は "A:" か "C:" からし
  かブートしようとしませんが、ルートファイルシステムは SCSI ドライブのパ
  ーティション上にあります。

  解決策としては、カーネル、マップファイル、及びチェインローダーを 1 番
  目の IDE の Linux パーティションに入れることです。カーネルをルートパー
  ティションに置く必要はないことを覚えておいてください。

  1 番目の IDE の 2 番目のパーティション(/dev/hda2、システムをブートす
  るのに使われる Linux パーティション)は /u2 にマウントされています。こ
  れが使用した /etc/lilo.conf です。

  #
  #  Lilo を 1 番目の IDE の MBR にインストール
  boot = /dev/hda
  #
  # /sbin/lilo(インストーラー)が Lilo ブートレコードを
  # 次のファイルから MBR の場所へコピー
  install = /u2/etc/lilo/boot.b
  #
  #  詳細な(verbose) ブートメニューを書きました。Lilo はここから探します
  message = /u2/etc/lilo/message
  #
  #  インストーラーは次のファイルを作成します。
  #  これはブートローダーに、カーネルのあるブロックの場所を指示します
  map = /u2/etc/lilo/map
  compact
  prompt
  #
  #  10 秒待ち、デフォルトとして 1.2.1 カーネルをブートします。
  timeout = 100
  #
  #  cp -p /usr/src/linux/arch/i386/boot/zImage /u2/z1.2.1 を
  #  実行することによってカーネルは BIOS から見える場所に置かれます
  image = /u2/z1.2.1
          label = 1.2.1
  #
  #  Lilo はカーネルに、SCSI ディスクの 1 番目のパーティションを
  #  ルートパーティションとしてマウントするように指示します
          root = /dev/sda1
  #
  #  このパーティションは /etc/rc.d/rc.S スクリプトによって、
  #  チェックされて再マウントされます
          read-only
  #
  #  作成したカーネルが動作しない場合に備え、古い Slackware カーネルを
  #  置いておきます。実際、過去に必要になったことがあります
  image = /u2/z1.0.9
          label = 1.0.9
          root = /dev/sda1
          read-only
  #
  #  DR-DOS 6 パーティションです
  other = /dev/hda1
          loader=/u2/etc/lilo/chain.b
          label = dos
          alias = m

  6.  BIOS が扱えない大容量ディスクをアクセス

  私のオフィスのシステムには 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.

  7.  Rescue フロッピーからの起動

  次に Windows 95 を私のオフィスのシステムにインストールしました。これは
  Lilo MBR をぶち壊してしまい、Linux パーティションだけを残しました。カ
  ーネルをフロッピーから読み込むのは時間が掛かるので、Lilo が使えるよう
  な設定をしたフロッピーを作って IDE からカーネルをブートできるようにし
  ました。

  Lilo フロッピーはこのようにして作りました。

    fdformat /dev/fd0H1440      #  新しいディスクにトラックを作成
    mkfs -t minix /dev/fd0 1440 #  minix タイプのファイルシステムを作成
    mount /dev/fd0 /mnt         #  標準的なマウントポイント /mnt にマウント
    cp -p /boot/chain.b /mnt    #  チェインローダーを上書き
    lilo -C /etc/lilo.flop      #  Lilo と map をディスク上にインストール
    umount /mnt

  Lilo が map ファイルを正しく書き込むためには、ディスクがインストーラー
  を実行する時にはマウントされている必要があるということに気を付けてくだ
  さい。

  /etc/lilo.flop は次のようになっています。これは最後の /etc/lilo.conf
  とほとんど同じ物です。

  #  ハードディスクからカーネルをブートできるフロッピーを作成
  boot = /dev/fd0
  map = /mnt/lilo-map
  delay = 100
  ramdisk = 0
  timeout = 100
  prompt
  disk = /dev/hda     # 1 GB IDE では BIOS は始めの 500MB のみ認識
     bios=0x80
     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 = /mnt/chain.b

  最終的にオフィスのシステムで MS-DOS 6.2 が必要となりましたが、一番目の
  ドライブには触りたくありませんでした。SCSI コントローラーとドライブを
  追加して、msdos fs(ファイルシステム)を Linux の mkdosfs で作成しまし
  た。 Windows 95 からは "D:" として見えます。当然 MSDOS は D: からブー
  トしませんが、Lilo があれば問題ではありません。二番目の例の lilo.conf
  に次の行を追加しました。

  other = /dev/sda1
    label = d6.2
    table = /dev/sda
    loader = /boot/any_d.b

  この修正により MS-DOS 6.2 は動き、また自分自身を C: に、Windows 95 を
  D: にあると認識します。

  8.  翻訳について

  当文書は中谷千絵さんの翻訳した 1996/08/27 版を、早川が最新版
  (1998/08/16)の LDP で更新したものです。

  翻訳(特に訳注)の際には「夜のお菓子」で有名な佐野武俊さんに多くの助言
  を頂きました。ありがとうございます。

  日本語訳:中谷千絵  (1996/08/27)
  日本語訳:早川 仁   (1999/09/12)

一覧に戻る
グリーンネット・トップページへ戻る

http://www.green.ne.jp/