LOADLIN と LOADLINX ユーザーガイド                                94-08-27
(日本語版/95-02-13)

============================================================================
   LOADLIN v1.5 (C) 1994 Hans Lermen (lermen@elserv.ffm.fgan.de)
   (翻訳：こじまみつひろ kojima@komae.denken.or.jp)

   このプログラムは free software です。再配布や修正は Free Software
   Foundation から出されている GNU 一般許諾契約(Gnu General Public
   Licence)のバージョン 2 あるいは(あなたの判断で)より新しいバージョン
   に従います。

   このプログラムは役に立つことを期待して配布していますが、一切の保証
   はありません；購入の可能性や特定の目的に適合するかについての保証も
   ありません。より詳しくや GNU 一般許諾契約をご覧ください。

   GNU 一般許諾契約のコピーはこのプログラムに付いているはずですが、も
   し見付からなければ Free Software Foundation(675 Mass Ave,
   Cambridge, MA 02139, USA.) に連絡してください。

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation, either version 2 of the License or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You may have received a copy of the GNU General Public License
   along with this program; if not, write to the Free Software
   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

============================================================================
      目次
      CONTENTS
      ========

1.    なぜ(LILO ではなく)LOADLIN や BOOTLIN を使うのか？

2.    BOOTLIN があるのになぜ LOADLIN か？

3.    LOADLIN の使い方
3.1.  必要なもの
3.2.  DOS プロンプトからの起動
3.2.1 手早く始めるために
3.2.1 簡単なヘルプ
3.2.3 バッチファイル(LINUX.BAT)からの起動
3.2.4 フロッピーとラムディスク
3.2.5 システムの制約
3.2.6 カーネルへのパッチ？
3.3   CONFIG.SYS からの起動
3.3.1 CONFIG.SYS の例
3.3.2 CONFIG.SYS の文法上の制限

4.    LOADLIN のコマンドラインパラメータ
4.1   コマンドラインの最大長

5.    問題が起れば
5.1.  典型的なトラブルの例その 1
5.2.  典型的なトラブルの例その 2
5.3.  デバイスファイルのマイナーナンバーについての混乱
5.3.1 /dev/xd デバイスファイルのメジャー番号の変更
5.4.  ある種の DOS のメモリマネージャーやデバイスドライバに関する問題
5.4.1 REALBIOS.INT の作り方
5.4.2 REALBIOS.INT の使い方
5.4.3 上位メモリにロードされるデバイスやデータ
5.4.4 V86 モードの検出に関する問題
5.5.  デバッグ情報に関する説明(-v,-t,-d)

6.    UMSDOS システムをブートするためのプリプロセッサ LOADLINX
6.1.  LOADLINX のコマンドライン

7.    コメントやバグレボートの送り先

8.    協力者と謝辞

                         --------- +++  --------

1. なぜ(LILO ではなく) LOADLIN や BOOTLIN を使うのか？
   ===================================================

LOADLIN や BOOTLIN はハードディスクから Linux(0.99.14 以上)をブートす
るためのもっとも安全な方法です。多くの Linux の初心者は、詳しいけれど
長すぎる*) LILO のドキュメントを読むのに耐えきれず、LILO を誤って動か
し、、、バン !! DOS とはさようなら、、、してしまいます。

(FDISK /MBR はディスクを修復するためのスーパーマンではありません)

                              *) この LOADLIN のドキュメントも長すぎる
                                 ますよね！

                         --------- +++  --------

2.    BOOTLIN があるのになぜ LOADLIN か？
      ===================================

BOOTLIN は明確で単純、きわめて効率的です。BOOTLIN のソースコードにある
情報の多くが LOADLIN の基礎になっています。

しかし、LOADLIN ではカーネルに「コマンドライン・パラメーター」を渡すこ
とが可能で、それらのパラメーターによって Linux の振舞い(ルートデバイス、
ビデオモード、ドライバ類、などなど)を設定することができます。また、パ
ラメーターファイル(コマンドラインパラメーターを収めたファイル)を使うこ
とも可能で、DOS の 128 バイトというコマンドラインの制限に悩まされずに
済みます。

Internet 上のどこかに F.Coutant 作の BOOTLIN の新しいバージョンがある
かも知れませんが、私は見つけていません。だから、私は LOADLIN を 0 から
書きはじめ、めったにない状況に対するテストもいろいろやってみました。
LOADLIN は DOSのドライブから UMSDOS ベースのシステムを起動することも可
能です(このためには LOADLINX というプリプロセッサ・ユーティリティを使っ
てください)

ある種のオプション(-v, -t, -d)を使うとデバッグ情報が出力されます。もし
何か問題が起きたときは、その情報を頼りに LOADLIN が実際に何をやってい
るのか確認することができるでしょう。

LOADLIN は VCPI サーバーが存在している場合、仮想 86 モード(EMS ドライ
バを使っている時はこれが普通です)から起動することも可能です。

                         --------- +++  --------

3.    LOADLIN の使い方
     ==================

注意：

LOADLIN はあなたのコンピュータを「論理的に再起動」するプログラムであり、
DOS は Linux で完全に上書きされます。もし DOS に戻りたければ、Linux の 
"reboot" コマンドを使う必要があります。

3.1.  必要なもの
     -----------

1. 386 以上の CPU(当然ですね)
2. 0.99pl14 以上の圧縮された linux のカーネルイメージ
3. 以下を含む LODLIN15 パッケージ

    LOADLIN.EXE
    MANUAL.TXT (このファイル)
    TEST.PAR(パラメーターファイルの例)
    PARAMS.DOC

以下のものは必ずしも必要なわけではありません。

    LOADLINX.EXE
    BIOSINTV.SYS
    REALBIOS.EXE
    BOOTSECT.BIN

3.2.  DOS プロンプトからの起動
      ------------------------

3.2.1 手早く始めるために
      ------------------

これから先、LODLIN15.TGZ を C:\LOADLIN に展開したとして話をすすめます。

バージョン 1.5 になって、1.4 以下のバージョンで必要だった各種の設定は、
ほとんど全ての機種で不要になりました。スペインの天才、Javier Achirica
が新しい方法を考えだして、 Linux のセットアップコードがプロテクトモー
ドへ移行する前に割り込むことが可能になりました。私はこの方法を "Javier
法" と名付け、もし設定が行われなかった場合はこの方法を使うことにしまし
た。

DOS プロンプトから、例えば、こんなふうに入力します：

    C:> CD \LOADLIN
    C:\LOADLIN> LOADLIN zimage /dev/hdb1 ro vga=extended

注意：以前からの LOADLIN ユーザーは -ja オプションを使って 
BIOSINTV/REALBIOS を無効にするか、それらを削除すべきでしょう：

    C:\LOADLIN> LOADLIN zimage -ja /dev/hdb1 ro vga=extended

あるいは、もし DOS のコマンドラインの上限の 128 バイトを越えるようなパ
ラメータを渡す場合は、

    C:\LOADLIN> LOADLIN @params

とします。パラメータファイルの一例が "test.par" です。ぜひ読んでみてく
ださい。現時点では LOADLINX はパラメータファイルをサポートしていません。

[訳注：6.1 章に LOADLINX でパラメータファイルを使う例が出てくるので、
 今のバージョンではサポートしていると思います(私は試していませんが)]

(カーネルソースから抜きだした)より詳細なコマンドラインのパラメーターに
ついては PARAMS.DOC にあります。

3.2.2 簡単なヘルプ
      ------------

   C:\LOADLIN> loadlin <enter>

とすることで、オンライン・ヘルプと設定が示されます。こういう風にしたら、
もう少し使いやすいかも。

   C:\LOADLIN> loadlin | more <enter>

こうすると、このような出力が示されるはずです(私のマシンからのものです)

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      LOADLIN v1.5 (C) 1994 Hans Lermen (lermen@elserv.ffm.fgan.de)

      USAGE:
        LOADLIN @params
        LOADLIN [zimage_file] [options] [boot_params]
          without any params, LOADLIN displays this help message.
          @params:
             params is a DOS file containing all other options
          zimage_file:
             DOS file name of compressed Linux kernel image
          options:
             -v        verbose, show information on params and configuration
             -t        test mode, do all but starting Linux, also sets -v
             -d file   debug mode, same as -t, but duplicates output to "file"
                       (for -v, -t, -d please see 5.5)
             -rb       search for REALBIOS before BIOSINTV
             -rx       don't check REALBIOS' ROM-date
                       (for -rb, -rx please see 5.4.2)
             -ja       use Javier's method, disable BIOSINTV and REALBIOS.
                       (please see 5.4)
             -clone    use alternate CPU-check, assume we have a 486 clone
                       (please see 5.4.4)
             -oldxd    use old /dev/xda,xdb numbering 0xC00,0xC40,
                       newer kernels ( >= 1.1.0 ) have 0xD00,0xD40.
                       (please see 5.3.1)
             -n        no translation for root=...  (goes into command_line)
                       (please see 5.3)
          boot_params:
             root=xxx  filesystem to be mounted by Linux as "/"
                  xxx = hex number (e.g. root=201 for /dev/fd1)
                      = /dev/mmmn (e.g. root=/dev/hda2)
                             mmm = fd,hda,hdb,sda,sdb...
                             n   = 1..10.. decimal
                             n   = 01..0a.. or 0x1..0xa.. or a..f hexnumber
                       (please see 5.3)
             ro        mount "/" readonly
             rw        mount "/" read/write
             ramdisk=x install ramdisk of size x Kbytes.  If also root=/dev/fdx,
                       then LOADLIN prompts for a floppy (copied into ramdisk)
                       (please see 3.2.4)
             vga=xxx   vga mode (e.g. -3..0.., ask, normal, extended)
             (for more boot params see file PARAMS.DOC)

      Your current DOS/CPU configuration is:
        load buffer size:   0x775F0   setup buffer size:   0x1000
        total memory:     0x0FE0000
        CPU is in V86 mode
        BIOSINTV.SYS:   NO
        SetupIntercept: YES, patching setup code
        stat4: VCPI_present, physmap=logmap, all OK for switch to realmode
        input params size 0x0000
        input params:

        LOADLIN started from DOS-prompt

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

注記：(-t のような)LOADLIN 自身のオプションは全て Linux のコマンド
      ライン・パラメーター以前にないといけません。

3.2.3 バッチファイル(LINUX.BAT)からの起動
      -----------------------------------

ほとんどの DOS ユーザーは(SMARTDRV のような)ディスクキャッシュを利用し
ているでしょう。もし、キャッシュプログラムが "write-behind" キャッシュ
を使っていれば、LOADLIN を呼ぶ前にまだ書きこまれていないキャッシュバッ
ファを書きだしておく必要があります。

例：
    C\LOADLIN> smartdrv /C    こうすれば、キャッシュバッファがディ
                              スクに書きこまれ(sync)ます。たいてい、
                              DOS 6.2 では不要のはずですが、やって
                              おいて害にはなりません)
    C\LOADLIN> loadlin ....

これは、以下のようなバッチファイルを作っておくほうがスマートなやり方で
しょう。

   +-------------------- start of LINUX.BAT
   |
   |  SMARTDRV /C
   |  C:\LOADLIN\LOADLIN C:\LOADLIN\ZIMAGE root=/dev/hdb2 ro vga=3
   |
   +-------------------- end of LINUX.BAT

このようなファイルを作っておけば、単に、

   C> linux

とするだけで、自動的に Linux がスタートします。

LINUX.BAT の一例を LOADLIN パッケージに入れておきました。


3.2.4 フロッピーとラムディスク
      ------------------------

もし LOADLIN に root=/dev/fdx というコマンドと共に ramdisk=xxxx という
コマンドを渡せば、LOADLIN はカーネルイメージをメモリにロードし、root
floppy を挿入するように、という旨のメッセージを出して一時停止します。

こうすれば DOS を起動するフロッピー(と LOADLIN の起動)とルートディスク
が同じフロッピードライブを利用することができます。

もちろん、このためにはブート用に 2 枚のフロッピーが必要ですが、Linux 
はどんどん大きくなって、もはやカーネルイメージとルートファイルシステム
を一枚のフロッピーに同居させることは不可能になっています。LOADLIN を使
えば、お手元のディスクドライブの設定が(Linux の各種)ディストリビューショ
ンと違っていても、トリックを使うことなくインストールすることができます。

例：LST 1.07 ディストリビューションは 3.5" フロッピーで配布されていま
すが、手元のドライブ A: は 5.25" です。

Slackware 2.0.0 はさまざまなドライブの設定に対応した大きなディレクトリ
ツリーを持っています。LOADLIN を用いれば、そのうちのイメージディスクと
必要なルートディスクだけで利用できます。

ちなみに：LOADLIN は Slackware と共に配布され、UMSDOS をインストールす
れば自動的に組みこまれます。

3.2.5 システムの制約
      --------------

1. 圧縮されたカーネルイメージをロードするのに十分なメモリ(LOADLIN の開
始位置と 090000h の間に必要です)。

LOADLIN の出力メッセージのうち、"load buffer size" が、あなたのシステ
ムに実際に存在するメモリの大きさを示しています。

セットアップ・プログラムと LOADLIN 自身は 090000h から 09A000h に展開
されるので、640K のベースメモリは必須です。Linux 1.1.43 以後、セットアッ
ププログラムはもはや 2K 以内には収まらなくなったので、サイズも可変にさ
れ、時と共に大きくなっています。現在(1.1.47)では、セットアッププログラ
ムは 5*512 バイト、一方、LOADLIN の持つセットアッププログラム用のバッ
ファは 31*512 バイトですので、まだしばらくの間は大丈夫でしょう。

LOADLIN の "setup buffer size" に示される値が、セットアッププログラム
用のバッファサイズです。

640 K のメモリのうち、上位 20 K バイトが残っていれば、BIOS と上位メモ
リに読みこまれるドライバ用のデータ領域として、多分十分でしょう。

2. DOS プログラムはいわゆるリアルモード(あるいは 386 以上のマシンでは
   仮想 86 モード)でのみ稼働します。

一方、Linux はプロテクトモードで動き、カーネルは特権レベル 0(P0, スー
パーバイザーモード)に入れなくてはなりません。ところが、(DPMI の場合の
ように) V86 モードのサーバーが許可しなければ、V86 モードからプロテクト
モード(P0)へスイッチすることはできません。

このため、

- リアル 86 モードから開始する(EMS ドライバや WINDOWS は使えません)
か
- EMS ドライバで VCPI サーバーを利用する(これでも WINDOWS は使えません)
  必要があります。EMM386 を使っている場合、NOVCI オプションは使わないで
  ください。NOEMS は使っても大丈夫です。

VCPI は P0 モードも利用でき、ほとんどの EMS ドライバでもサポートされて
います(もし EMS が使えるならば)が、MS-WINDOWS の元では利用できません
(MICROSOFT はユーザーが P0 モードを使うことを嫌っています)。

物理メモリと仮想メモリのマッピングも最初の 640K のRAM 領域 では同一で
ある必要があります。普通はそうなっているはずですが、EMS ドライバに以下
のようなオプションを与えることで、強制的にこのように設定することができ
ます。

   EXCLUDE=1000-A000     (386MAX 用)
あるいは
   B=A000                (EMM386.EXE 用。たいていの場合は不要です)

詳しくは EMS ドライバのマニュアルを見てください。でも、もし何か忘れて
いても LOADLIN が指摘してくれるのでご心配なく。

注意：
特に何メガバイトもメモリをつんでいるシステムの場合、プロテクトモードに
移行する前に VCPI サーバーがガーベッジコレクションを始めて、しばらく時
間がかかることもありますが、しんぼう強く待ってやってください。

3. もちろん LOADLIN を Linux の DOSEMU から使うことはできません。例え
実行したところで、幸いなことに DOSEMU 自身が V86 チェック・インストラ
クション(IOPL の変更)のために general protection fault を起して終了し
てしまいます。ですから、ファイルシステムには影響しません。しかし、
Linux の DOSEMU でWINDOWS 3.0 を動かし、その DOS prompt から LOADLIN
を使ったときは(...うぎゃ..)、、DOS-FAT に何が起るかわかりません。

3.2.6 カーネルへのパッチ？
      --------------------

現時点(Linux-1.1.47)では、LOADLIN を使うのに特別なパッチは必要ありませ
ん。LOADLIN-1.5 から、以前には必要だった各種の設定も普通の状況では不要
になるようにしました(3.2.1 と 5.4 を見てください)。

常駐ドライバと V86 モードに関する問題に取りくんできましたが、結局 
Linuxのセットアッププログラムがプロテクトモードに移行する際に何らかの
形で割りこむ形になりました。最近のカーネルを使えば、loadlin の 起動時
にセットアッププログラムのコードを解析して、(割りこむのに)必要な場所を
見つけます。これでも動きますが、きれいな処理とは言えません。最もよい方
法は、Linux のセットアッププログラム自身に割りこみのためのメカニズムを
用意すること、つまり、セットアッププログラムに LOADLIN をサポートして
もらうことです。

LOADLIN/KERNEL ディレクトリに最新の(1.1.47)カーネルの setup.S に対する
パッチがあります。私はこのパッチを Linus に送っており、公式のカーネル
リリースに取りこまれるように希望しています。そうなるまでは、あなた自身
の手でパッチを当ててください。しかし、(LOADLIN 自身が必要な個所を解析
するので)1.1.47 以上のカーネルならば LOADLINでブートしなくなる日まで、
必ずしもパッチを当てる必要はありません。

もう一つ、initmain.dif パッチも便利です。これを当てれば、Linux が実際
に受けとったコマンドライン・パラメータを表示させることができます。

3.3.  CONFIG.SYS からの起動
      ---------------------

DOS のバージョン 6.0 からは MSDOS の起動時に異なる設定で起動することが
可能になりました。これは CONFIG.SYS を解釈する時に行なわれますので、
LOADLIN/LOADLINX/Linux を設定するにも便利です。

たとえ DOS をブートしたとしても、後から DOS のコマンドライン、あるいは
バッチファイルから Linux を起動することも可能です。

3.3.1 CONFIG.SYS の例
      ---------------

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
rem もし BIOSINTV.SYS を使うなら、最初に([MENU] の前)
rem DEVICE=C:\LOADLIN\BIOSINTV.SYS を置いてください。
rem でも、ほとんどの場合、これは不要です。

SWITCHES=/F

[MENU]
menuitem=DOS, DOS boot
menuitem=LINUX_1, LINUX boot (SLS 1.03)
menuitem=LINUX_2, LINUX boot (Slackware, LST)
menuitem=LINUX_3, LINUX boot (UMSDOS, with C: as DBLSPACE'd drive)
menuitem=LINUX_4, LINUX boot from 3.5 inch floppy B:
menuitem=LINUX_5, LINUX boot (Slackware, high partition number)
menuitem=LINUX_6, Create a dump file for bug report

[DOS]
device=c:\dos\himem.sys
device=c:\dos\emm386.exe 2048 ram
DOS=HIGH,UMB
SHELL=C:\COMMAND.COM C:\ /e:1024 /p
...   etc.,  etc.,  etc.

[LINUX_1]
shell=c:\loadlin\loadlin.exe c:\loadlin\zimage vga=ask root=/dev/hdb3

[LINUX_2]
shell=c:\loadlin\loadlin.exe c:\loadlin\zimage vga=-3 root=/dev/hdb2 ro

[LINUX_3]
rem  UMSDOS ファイルシステムは圧縮されていない drive D:(/dev/hdb1)
device=c:\dos\dblspace.sys
rem                     v----- LOADLINX preprocessor を使う 
shell=c:\loadlin\loadlinX.exe d:\linux\zimage.{15 root=D: vga=ask
rem  これは UMSDOS のファイル名---------------^^^      |
rem  これは root=/dev/... と解釈される ----------------+

[LINUX_4]
shell=c:\loadlin\loadlin.exe c:\loadlin\zimage root=/dev/fd1 ramdisk=1440

[LINUX_5]
shell=c:\loadlin\loadlin.exe c:\loadlin\zimage root=/dev/hdb10
rem   注記：パーティションナンバーは 10 進の 10(カーネルが解釈する 16 と
rem   は違います)LOADLIN はこれを Slackware の /dev にある既存のデバイス名、
rem   マイナー番号と衝突しないように翻訳します。

[LINUX_6]
shell=c:\loadlin\loadlin.exe c:\loadlin\zimage -d c:\dump.txt root=/dev/fd1 ramdisk=1440
rem                                            ^^^^^^^^^^^^^^
rem  こうすれば、デバッグ情報がこのファイルに --------^
rem  出力されます。全て通常通りセットアップされますが、Linux はロード
rem  されずに LOADLIN は終了します。
rem  注意：CONFIG.SYS に [MENU] を設定しないかぎり、これは使わないこと。
rem  さもないと、普通にブートするために DOS のシステムフロッピーが必要
rem  になります。

[COMMON]
rem   ここから先にはその他の「一般的な」設定をします。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

3.3.2 CONFIG.SYS の文法上の制限
      -------------------------

1. "shell=" という行にあらわれた全てのパラメータは DOS によって大文字
   に変換されますが、Linux のパラメータは大文字と小文字を区別します。
   LOADLIN は以下のパラメータを小文字にもどします。

    mem=...
    no387
    single
    auto
    debug
    no-hlt
    reserve=...
    hd=...
    xd=...
    bmouse=...
    max_scsi_luns=

以下のパラメーターは、コマンドラインには展開されませんが、数値に変換さ
れて、ブートセクターに渡されます。

    vga=...
    ramdisk=
    ro
    rw

もし -n スイッチがセットされなければ、これは

   root=...

にも適用されます。

2. パラメーターファイルを使えば大文字/小文字の問題は避けることができま
   す。この場合、CONFIG.SYS ラインはこのようになります：

[LINUX]
 shell=c:\loadlin\loadlin.exe @c:\loadlin\params

パラメーターファイルの例が "test.par" ファイルで、詳しくはこれを読んで
みてください。現在は、パラメーターファイルは UMSDOS システム用の 
LOADLINX ではサポートされていません。
[訳注：先にも書きましたが、このあたりは 1.5 以前のバージョンのことで、
       今の 1.5 ではサポートしているようです]

                         --------- +++  --------

4.   LOADLIN のコマンドラインパラメータ
     ==================================

もしパラメータファイルを使うなら(例えば @TEST.PAR)、このファイル名が
LOADLIN のコマンドラインの最初のパラメータでなければなりません。zImage
ファイル名も含む、その他のパラメータはパラメータファイルの中に記される
ことになります。

Linux が起動する時、セットアッププログラム(基本的なハードウェア設定を
チェックして、プロテクトモードに移行する)から runstring が渡されます。
この文字列は、コマンドラインと呼ばれていますが、コンパイル時に埋めこま
れたキーワードと比較されます。あるものは(mem=, root=, ro, rw, no387)カー
ネルの変数を変更し、あるものは(ether=, hd=, sound=)デバイスドライバに
渡され、またあるものは(single, auto)は /etc/init(あるいは/bin/init か
/sbin/init のうち最初に見つかったもの)へ渡されます。

詳細は PARAMS.DOC を見てください。

"keyword=value" の形を取ったあらゆる未知のキーワードは "envp_init" に
置かれ /etc/init へ渡されます。この環境設定のための文字列は各種の rc 
ファイル /etc/rc* (/etc/rc.d/rc.*) でチェックされます。

例えば、rc.local に "set >/etc/boot_env_string" というコマンドを設定す
ると、envp_init の中身がこのファイルに書きだされ、他のプロセスからも使
用可能になります。ただし、このコマンドはファイルシステムが読み書き可能
でマウントされる以前に実行される rc ファイルには記述しないこと！

4.1   コマンドラインの最大長
      ----------------------

DOS のコマンドラインは(プログラム名も含めて) 127 バイトに限られていま
す。パラメータファイル(@param, 3.2.2 参照)を使えば、カーネルへ渡せる文
字列の長さは理論的には 2047 バイトですが、init/main の静的バッファを節
約するために、文字列は一時的な保存場所に置かれ、カーネルによってコピー
されます。このため文字列の最大長はコンパイル時に決められています。

1.0.5 以前のカーネルには、init/main.c に小さな問題がありました。main.c
の静的なバッファが 80 バイトしか用意されてなかったのです。LOADLIN はパ
ラメーターを圧縮しますが、その長さをチェックしていないため、パラメーター
が多すぎると、起動時にカーネルをハングアップさせてしまいます。

Linux 1.0.5 から "command_line[]" は COMMAND_LINE_SIZE の大きさ、すな
わち 256 バイトになりました。コマンドラインのサイズもチェックされてい
ます。もっと大きなサイズが必要ならば、init/main.c の COMMAND_LINE_SIZE
を変更するだけです。

                         --------- +++  --------
5. 問題が起れば
  ==============

私はいくつかのフィードバックを受けて 1.2 を 1.3 にバージョンアップし、
より徹底的なエラーチェック機能を付けました。いくつかのバグも見つかり、
修正しました。しかし、何千もの可能性がありうる PC のハードウェア/ソフ
トウェアの組み合せの元では、完璧にバグを無くすことは不可能でしょう。で
すから、あなたの直面した問題についてぜひとも私にフィードバックしてくだ
さい。

もしバグに気づいたら、それに時間を費すことはせず、私あてに mail してく
ださい！

しかし、問題をレポートしていただく際には詳しい情報が必要です。「私のス
クリーンは真っ青になってしまいますが、何が悪いのでしょう？」だけでは十
分ではありません。

-d か -t オプションを使えば、LOADLIN は私(あなたにも)に有益な情報を示
してくれます。

5.1.  典型的なトラブルの例 その 1
      ---------------------------

    C:\LOADLIN>loadlin zimage /dev/sda1 ro

カーネルはロードされるが(LOADING......)、"unable to read superblock" 
というメッセージと共に"パニック"してしまい、ハードリセットするしかない。

何が問題なのかを確認するために -t オプションを付けてみてください：

    C:\LOADLIN>loadlin zimage -t /dev/sda1 ro
                              --

こうすれば、今までと全く同じ動作をしますが、Linux を実際にはスタートさ
せません。そして、以下のような情報を表示します。

    Your current LINUX kernel boot configuration is:
     image file:       zimage
     kernel size:     0x4D010
     ram disk size:    0x0000
     root device:      0x0342  read only
     VGA mode:         0xFFFF
     command line size 0x001B
     command line:
       /dev/sda1 BOOT_IMAGE=zimage
     ..
     ..
     ..

"root device:" の欄を見てください。/dev/sda1 のデバイスのメジャー、マ
イナー番号とは違っていることがわかります。でも、確かにルートディスクの
パラメータとして "/dev/sda1" を使いました。間違いは明白です。
"/dev/sda1" の前に "root=" を付け忘れていました。(あるいは、rdev を使っ
て zimage ファイルのルートデバイスフラグを変更することも可能です。)

5.2.  典型的なトラブルの例その 2
      ---------------------------

    C:\LOADLIN>loadlin zimage root=/dev/sda1 ro mem=0xFF0000

カーネルはロードする(LOADING....)が、Linux は "<2M RMA system halted"
のメッセージとともに "パニック" して、ハードリセットするしかない。

間違いをチェックするために以下のように入力します。

    C:\LOADLIN>loadlin zimage -d report.dmp root=/dev/sda1 ro mem=0xFF0000
                             -------------
こうすれば、出力を画面(と report.dmp ファイル)に出せます。

        Your current LINUX kernel boot configuration is:
     ..
     ..
     command line:
       BOOT_IMAGE=zimage

        Your current DOS/CPU configuration is:
     ..
     ..
     total memory:     0x01E0000
     ..
     ..

これは LOADLIN のバグかも知れません。なぜなら、"mem=0xFF0000" は 
コマンドラインの "BOOT_IMAGE=zimage" 以前に現われないといけないからで
す。

何が起ったかについて私にメールしてください。メールには "report.dmp" ファ
イルと CONFIG.SYS を含めておいてください。そうしていただければ、どこが
間違っているかをチェックできます。

注意：
ある種の条件下では(Javier 法を使わない場合) INT15 を使えばメモリサイズ
を知ることができます。しかし、これはある種の TSR やドライバ(例えば
HIMEM.SYS)が邪魔をすることもあります。しかし、"mem=0xFF0000" オプショ
ンを使えば、この問題を解決することが可能です。Linux がロードされ、無事
展開されれば、それ以後は DOS (BIOS も)を使う必要は一切ありません。
      
5.3.  デバイスファイルのマイナー番号についての混乱
      --------------------------------------------

以下に示すものはデバイスファイルのマイナー番号についての問題を示すもの
です。

LOADLIN ver 1.2 のころ、こんなバグレポートを受けとりました。

"SHELL=c:\loadlin\loadlin.exe c:\loadlin\zimage root=/dev/hda10"
としたところ、ロードはするが 'unable to read superblock' でパニックす
る。

問題は：

Linus は "/dev/hda" の後に続く数字を16進数と解釈していますが、
Slackware 1.2.x の /dev に付けられたデバイス名は(Slackware 2.0.0 では
変更されています) dev/hda1 .. hda9 .. hda10 .. hda16 になっており、
Linus が考えていたような /dev/hda1 .. hda9 .. hdaa .. hdaf にはなって
いませんでした。

ですから、LOADLIN のバージョン 1.3 以降では、ルートデバイスを LOADLIN 
自身で解釈して、数字でブートセクターに渡すようにしています。私の命名法
は折衷的ですが、混乱を多少とも減らせれば、と思っています。

もし "/dev/hda, hdb, sda ..." の後に続く数字が 0, 0x あるいは a..f で
始まっていれば、それは 16 進数として解釈されます。(例: dev/hdaa
/dev/sda0xE, /dev/hab0c)

もし、1..9 の数字で始まっていれば、10 進数と解釈されます。

もしそれ以外の文字列ならば、そのままコマンドラインに渡されます(より新
しいバージョンのカーネルはもっと違うデバイス名を持っているかも知れませ
んから)

注意： -n オプションをつければこの変換は行なわれません。その場合、
       root=/dev ... の部分はそのままコマンドラインへ渡されます。実際
       には変換とコマンドラインへの展開の双方が行われますが、Linux が 
       LOADLIN の変換を上書きし、LOADLIN は既知のデバイス番号をチェッ
       クする機会を得ます。
       このオプションは将来の Linux の進化をにらんだものです。もし 
       Linus がルートデバイスのリストを増しても、それらの新しいデバイ
       スを LOADLIN をアップデートすることなく使うことができます。

5.3.1 /dev/xd デバイスファイルのメジャー番号の変更
      --------------------------------------------

新しいカーネルでは /dev/xd のメジャー番号を 13 に変えています。ルート
デバイスは LOADLIN の内部で変換されるので、古いカーネルをロードする際
にはトラブルが起きるはずです。このような場合には -oldxd オプションを付
けて、/dev/xd の古いデバイス番号(12)を使うようにします。setup.S へのパッ
チをあてれば、この設定はLOADLIN が自動的にやってくれます。

5.4.  ある種の DOS のメモリマネージャーやデバイスドライバに関する問題
      ---------------------------------------------------------------

LOADLIN がカーネルイメージをロードして、Linux へ制御を渡す前にどちらか
条件が必要です。

a) Linux がプロテクトモードに切り替る寸前にセットアップコードに割りこ
   む(Javier 法を使って)機会があること

b) あるいは割り込みベクター(といくつかの BIOS データ)を "起動時の" 状
   態を模倣するために修正すること

a) のためには 0.99pl14 以上のカーネルが必要です。setup.dif パッチをあ
てる方がいいでしょう(このパッチを Linus に送って公式のカーネルに採用し
てもらうことを希望しています)。まず始めに Javier 法を試してみるべきで
す。この方法はほとんど全てのマシンや設定で動くはずです。この方法を使え
ば、DOS 用にどんな事前の設定も必要ありません。特にもう一度、以前から
LOADLIN の古いバージョンを使っていた人に注意します。

Javier 法を使うためには、設定から BIOSINTV/REALBIOS を外すか LODLIN に 
-ja オプションを付ける必要があります！

Javier 法でうまく行かない場合、b) の方法を試してみてください。b) の方
法を試すには、CONFIG.SYS の最初に次の一行を加えてください。

   DEVICE=C:\LOADLIN\BIOSINTV.SYS

このドライバは、割り込みベクター用にデフォルトの BIOS 値を保存します。
約 700 バイトほどのプログラムなので、コンベンショナルメモリー(low
memory)をほとんど消費しないでしょう。BIOSINTV.SYS はどんなメモリマネー
ジャーを使う場合でも、DOS の上部メモリにロードしてはいけません。

もし、TSR やドライバが INT15 の割り込みを横取りしている場合、Linux に
は誤った利用可能メモリ量が報告されるでしょう。(QEMMのような) DOS のメ
モリマネージャーはいわゆる「ステルス法」を使ったときにこの問題を起しま
す。

もし、このような事態が起れば、LOADLIN のコマンドラインに mem=xxxx と書
いてください。ここで xxxx はメモリの全バイト数です。(注意：マザーボー
ドの BIOS がメモリのうち 128Kb を Shadow RAM に割りあてているかも知れ
ません)

LOADLIN が示す "total memory" の欄が、 Linux から利用できるはずの全メ
モリを示しています。

(BIOSINTV.SYS を使う)私の簡単な方法は、DOS によってほんのわずか変更さ
れた割り込みテーブル(すなわち、本当に元のままのテーブルというわけでは
ありません)を使いますが、ほとんど全ての設定の元で利用可能です。割り込
みベクターからはほぼ独立しているので、BIOS のデータ/スクラッチ・エリア
に変更を加える必要はありません。REALBIOS 法の前に BIOSINTV 法を使って
みるべきでしょう。

(例えば QEMM のような) DOS のメモリマネージャの元で使う場合の問題が報
告されています。そのようなメモリマネージャーは、いくかのベクターをフッ
クするか LOADLIN がリアルモードに再入した時にはもはや使えないデータに
アクセスしたりします。

BIOSINTV 法の選択肢として、バージョン 1.4 からは REALBIOS 法を取り入れ
ました。この方法には次の 3 つが必要です。

REALBIOS.EXE
BOOTSECT.BIN
REALBIOS.INT 

REALBIOS.EXE があなたのマシンに作るファイルが REALBION.INT です。

Alessandro Rubini(rubini@ipvvis.unipv.it)が BOOTSECT.BIN を書きました
(このプログラムには Linus Torvalds の bootsect.S のコードが含まれてい
ます)

彼の方法(linuxEXE パッケージで使われています)は、*本当の*オリジナルな
BIOS の割り込みベクタを最も安全な方法で入手しています。彼の方法に比べ
ると、他の全ての方法はトリッキーです。私は、彼の方法に加えて BIOS の 
data/scratch 領域、PIC-IMR とTOP-ROM を保存するようにしましたが、主要
な部分は Alessandroの方法のままです。

もし、本当にもし、Javier 法でも BIOSINTV 法でもうまく行かなかったとき
の最後の方法として REALBIOS 法を使ってみてください。

しかし注意が必要です：
----------------------
| o REALBIOS 法で作られる C:\REALBIOS.INT ファイルは、それが作られたマシン
|   に固有のもので、C:\ になければいけません。
| o 友達に配布してはいけません("loadlin14.tgz" だけを配布してください)。
| o 友達のマシンからコピーしてもいけません。
| o (NFS などで)共有してはいけません。
| o もしハードウェアを変更したら(アダプタカードや RAM の着脱、IQR や I/Oア
|   ドレスの変更など)があったらもう一度ファイルを作りなおしてください。
| o REALBIOS.INT を作ったマシンでのみ使ってください。
--------------------- 

ところで：多分 PS2 では拡張 BIOS データで問題が起きるはずです。すみませ
んが、この問題については、私にはテストするすべがありません。

5.4.1 REALBIOS.INT の作り方
      ---------------------
- DOS のプロンプトから

    C:> CD \LOADLIN
    C:\LOADLIN> REALBIOS

と入力。

- すると、こんな出力が出ます。

     Generation of the file C:\REALBIOS.INT (for the REALBIOS method)
     consists of TWO steps:

       1. Generating the special boot floppy and booting with it.

       2. Reading the saved interrupt table and BIOS data from the floppy
          and writing it to C:\REALBIOS.INT

     Type 1 or 2, (depending on which step you are in) or any other key
     to cancel:

(訳注：画面に出るのはこのままでしょうが、あえて訳してみます)
--------------------------------------------------------------------------
   (REALBIOS 法のために) C:\REALBIOS.INT を作るためには 2 つのステップ
   が必要です：

     1. 特別なブートフロッピーを作り、それからブートします。

     2. セーブされた割り込みテーブルとフロッピーの BIOS データを読みこ
        み、C:\REALBIOS.INT に書き出します。

   1 か 2 (あなたがいるステップに応じて)を押してください。それ以外のキー
   を押すとキャンセルされます。
--------------------------------------------------------------------------

- まず最初のステップから実行しますので、"1" を押すと、こんな出力が示さ
  れます

     OK, we first generate the floppy !
     Insert an empty but DOS-formatted disk into drive A:
     (no matter what DOS format it is)

     Type C to continue or any other key to cancel

------------------------------------------------------------------------
     OK, まずフロッピーを作ります。
     DOS でフォーマット済みの空のフロッピーを A ドライブに挿入してくだ
     さい(どんな DOS のフォーマットでも構いません)

     C を押すと続けます。その他のキーならキャンセルされます。
------------------------------------------------------------------------

- フロッピーを入れて "C" を押すとこんな出力になります。

     OK, The special boot floppy has been generated.
     Leave it inserted in drive A: and reboot your machine
       But NOTE:
       If you have a disk cache program (like SMARTDRV)
       you may need to flush the write-behind cache first!

----------------------------------------------------------------------
     OK, 特別のブートフロッピーができました。A ドライブに入れたまま、
     マシンをリブートしてください。
     でも注意して： もし(SMARTDRV のような)ディスクキャッシュプログラ
     ムを使っていれば、まず write-behind キャッシュをフラッシュしてく
     ださい。
----------------------------------------------------------------------

- リセットボタンを押すか「三ッ指のあいさつ(CTRL-ALT-DEL)」をして、マシ
  ンをフロッピーからブートします。フロッピーのブートローダーが必要な 
  BIOS の割り込みベクタとデータをフロッピーにセーブします。最後に、
  マシンは次のような出力を示します。

     Interrupt table and BIOS-data saved on floppy.
     Open the floppy door and reboot from your hard drive,
     then run REALBIOS again (step 2).

------------------------------------------------------------------------
    割り込みテーブルと BIOS データをフロッピーにセーブしました。A ドライ
    ブのドアを開けてフロッピーを取り出し、ハードディスクからリブートし
    ます。そして REALBIOS を再実行し、step 2 に進んでください。
------------------------------------------------------------------------

- (フロッピーからブートしてしまうのを避けるために)フロッピードライブの
ドアを開けて、リブートし、もう一度 LOADLIN のディレクトリに入り、

     C:\LOADLIN> REALBIOS

と入力します。

- (ステップ 2 に入っているので)最初の質問には "2" と答えます。すると、
  次のようなメッセージが出力されます。

     OK, we now read the saved interrupt vector from the floppy
     and save it to the file C:\REALBIOS.INT (no way to change the name!)
     Is the floppy (used in step 1) inserted in drive A: ?

     Type Y to continue or any other key to cancel

------------------------------------------------------------------------
     OK, フロッピーにセーブされた割り込みベクタを読みこみ、
     C:\REALBIOS.INT(名前を変えることはできません)にセーブします。
     (step 1 で作成した)フロッピーを A ドライブに入れましたか？
 
     Y で継続、他のキーでキャンセルされます。
-------------------------------------------------------------------------

- 作成したフロッピーディスクを A ドライブに再挿入し、Y を押すと
  C:\REALBIOS.INT がフロッピーのデータから作成されます。もし何か変なこ
  とが起きれば、REALBIOS が教えてくれるはずです。


5.4.2 REALBIOS.INT の使い方
      ---------------------

C:\REALBIOS.INT は他のマシンに移動させられないように"不可視＋システム"
ファイルになっています(DIR コマンドでは見えません)。

LOADLIN は最初に BIOSINTV.SYS を探し、次に REALBIOS.INT を探します。こ
の順は "-rb" オプションで逆にできます。

LOADLIN は REALBIOS.INT に保存された ROM-BIOS-DATE をチェックして、も
し合っていなければ "-t" の冗長(verbose)モードに替ります。ある種の DOS
のメモリマネージャーは、ROM-BIOS のトップページをリマップして
warm-boot に割りこむため、正しい ROM-BIOS-DATE を返さないことがあります。
LOADLIN はリアル・モードへ移行する前にこの日付をチェックするので、起動
に失敗してしまいます。

このような場合、"-rx" オプションを使って日付のチェックをスキップしてく
ださい。

注意：

- C:\REALBIOS.INT は配布されないように HIDDEN+SYSTEM 属性になっていま
  す。もし C: ドライブが圧縮されていても C:\ にないといけません。

- 上で使ったフロッピーは DOS では利用できなくなります。再利用するため
  には、再度フル・フォーマット("クイック"フォーマットではなく)する必要
  があります(ローレベルフォーマットとも言いますね)。

- あらゆる種類のハードウェアを追加したり、外したり、再設定した場合、も
  う一度 REALBIOS を実行する必要があります！(私が Javier 法を好む理由は
  ここにあります)

5.4.3 上位メモリにロードされるドライバやデータ
      -----------------------------------------

バージョン 1.5 になってからは、上位メモリにロードされる DOS ドライバの
問題は最小限になりました(多分、問題は起らないと思います)。でも、
BIOSINTV/REALBIOS 法を使う場合、LOADLIN はバージョン 1.4 と同じ動作を
することに注意してください。そのため、問題が生じることがあるかも知れま
せん。

リアルモードに戻った時には、0A0000h 以上にマッピングされたメモリは見え
なくなります。そのため、BIOSINTV/REALBIOS はどんなデバイスドライバを使っ
ても、決して上位メモリにはロードしないで下さい(DEVICEHIGH=...,
LOADHI..., LH... などを使って)

注意：多くの DOS ドライバ用のインストールプログラム(例えば Ontrack 製
の Drive Rocket Data Accelerator)はドライバを上位メモリにロードするの
がデフォルトになっています。

また、090000h から 09BFFFFh の領域はセットアッププログラムと LOADLIN
 が配置される場所なので、必要なデータを置いてはいけません。これはバー
ジョン 1.5 でも同じですが、もしそのような状況が生じれば警告が発っせら
れます。通常では 640K のベースメモリに残っている上位 20K バイトにBIOS
の残存が 1 K バイトほど残る程度のはずです。

5.4.4 V86 モードの検出に関する問題
      ----------------------------
(Jacek Zapala zapala@if.pw.edu.pl によると) ある種の 486 CPU のクロー
ンでは、CR0 を使って V86 モードを検出する際に問題が起きることがあるそ
うです。これは CPU がリアルモードにありながら、ページングが可能になっ
ている時に起ります。確かにこのような設定も可能ですが、ドキュメントにも
なっていないし、INTEL もサポートしていません。多分、この手法でマザーボー
ドのBIOS をshadow ram にマッピングしているか、何か古くて奇妙な EMM マ
ネージャーを使っているのだと思いますが、その CPU が正確に 486 のクロー
ンではないことを示しているとも言えます。-clone オプションを付ければ、
CR0 チェックをパスして、EMM マネージャーがあれば V86 モードにあると見
なします。もちろん、この種の EMM マネージャーが実際のページングをして
はいけません！

5.5   デバッグ情報(-v,-t,-d)に関する説明
      ---------------------------------- 
-v,-t,-d オプションの情報は、ブートセクターとセットアッププログラムが
ロードされて LODADLIN によって更新された時点で出力されます。出力される
情報は Linux から見えるものですが、-t と -d オプションの場合、zimage 
ファイルはロードされず、linux は起動しません。

説明：

LINUX カーネルのブート時の設定は以下の通りです。

image file:    d:\tmp\1-1-47.0  <- カーネルイメージのファイル名
kernel size:   0x5BFF0          setup size:   0x0A00
               ^                ^- セットアッププログラムのサイズ(バイト)
               |------------------ カーネルサイズ(バイト)

kernel version:   1.1.47 (root@el15) #4 Mon Aug 00:57:07 MET DST 1994
             ^---- これは setup.S にLOADLIN 用パッチを当てた時の
                   み表示されます
ram disk size:    0x0000             <- 0 = none, それ以外は Kbytes での大
                                        きさ
root device:      0x0342  read/write  <- ルートデバイスの MAJOR+MINOR 番号
VGA mode:         0xFFFF              <- startup 時のビデオモード
command line size 0x0011              <- 圧縮されたコマンドラインの大
                                         きさ
command line:                         <- Linux から見えるコマンドライ
  BOOT_IMAGE=zimage                      ンの状態

現在の DOS/CPU の設定は以下の通りです：
load buffer size:   0x775F0   setup buffer size:   0x1000
            ^                   ^-  セットアッププログラムのコードを格
            |                       納するバッファの大きさ(バイト)。
            |                       "setup size" よりも大きくないといけ
            |                       ません。
            ----------------- 展開されたカーネルを格納するバッファ
                              の大きさ(バイト)。"kernel size" よ
                              りも大きくないといけません。

total memory:     0x0FE0000           <- INT15 から計算した Linux から
                                         見える RAM の上限。

CPU is in V86 mode                    <- 仮想 86 モードにいる場合
or
CPU is in REAL mode                   <- リアルモードにいる場合
or
CPU is in undocumented REAL PAGING mode, trying any way
(「CPU はドキュメントにない REAL PAGING モードにあります。とにかくやっ
てみます」)

BIOSINTV.SYS:  YES                 <- $BIOSINT を正しく読みこめた場合
  or
REALBIOS:      YES
  or
REALBIOS:      YES, but ROM-BIOS-DATE differs, must rerun REALBIOS.EXE
 (BIOSINTV.SYS はあるが ROM-BIOS の日付けと異なる。REALBIOS.EXE を再実
  行してください。)

SetupIntercept: NO                        <- LOADLIN-1.4 mode を使う
  or
SetupIntercept: YES, patching setup code  <- Javier 法を使う
  or
SetupIntercept: YES, legal intercept      <- 同上だが、カーネルにパッ
                                             チ済み

ここには、以下の 4 つ可能な状態のうちの 1 つが示される：

 stat1: cpu in real 386 mode(cpu は リアル 386 モードにある)

 stat2: cpu_V86, but no VCPI available (check aborted) 

       (cpu は 仮想 86 モードにあるが VCPI が見つからない(チェック中止))

 stat3: VCPI_present, but physmap != logmap (check aborted)

       (VCPI は見つかったが、仮想マッピングと論理マッピングが一致しな
        い(チェック中止))

 stat4: VCPI_present, physmap=logmap, all OK for switch to realmode

       (VCPI はあり、仮想マッピングと論理マッピングも一致する。リアル
        モードにスィッチするのに問題なし。)


以下に示すものは、DOS のコマンドラインかパラメータファイルについて：

input params size 0x000D              <- DOS のコマンドラインの大きさ
                                         (あるいは圧縮されたパラメータ
                                          ファイルの大きさ)
input params:                         <- DOS コマンドラインの内容
 ..\zimage -t

以下、追加的な情報か警告が続く：

LOADLIN started from DOS-prompt       <- この 2 つのうちどちらか
   "       "     "   CONFIG.SYS       <- (LOADLIN は DOS の環境変数に 
                                         COMSPEC= の行があると仮定)

You are running under MS-WINDOWS      <- もし WINDOWS から動かしていれ
                                         ば、この警告が出力されます。
                                        (LOADLIN は WINDIR= という環
                                         境変数があると仮定します)


                    --------- +++  --------

6.    UMSDOS システムをブートするためのプリプロセッサ LOADLINX
      ========================================================

このプログラムは LOADLIN ユーティリティの「プリプロセッサ」として使
われ、DOS 風のドライブ名(C:, D:, など)を Linux のデバイス名(/dev/....)
に変換します。

"root=X:" に加えて、LOADLINX は LOADLIN と同じパラメータを受け付け、
LOADLIN に渡します。(LOADLIN とは異なり) LOADLINX ではパラメータファイ
ル (@param-file) のパラメータをコマンドラインにに書くことも可能で、そ
のパラメータは上書きされます。
(例えば "loadlinX zImage @default vga=3" という書き方は loadlinX では
可能ですが loadlin では使えません)

LOADLINX は CONFIG.SYS ファイルの shell= に指定することも可能です。し
かし、LOADLINX は LOADLIN と同じディレクトリにないといけなせん。

Jacques Gelinas(jacques@solucorp.qc.ca)が変換アルゴリズムの発案者です
(私はそれを強化して LOADLIN にインプリメントし、DOS の正確な振舞いにあ
わせただけです)。

普通のユーザーは DOS パーティションをルートデバイスにはしないでしょう
から UMSDOS ユーザーのみに価値があるものでしょう。

LOADLINX は AT タイプのドライバ(IDE)か、DOS の元で使える BIOS を持った 
SCSI アダプタカードに接続された最大 2 台までの SCSI ディスクの環境での
み利用できます(すなわち INT13 システムコールで使えねばなりません)。IDE
と SCSI を混在した環境は(まだ)サポートしていません。しかし、そのような
環境では root=/dev/xxxx として LOADLINX のドライブ名の変換をバイパスす
ることができます。

6.1.  LOADLINX のコマンドライン
      -------------------------
使い方：

 LOADLINX [--dv]  LOADLIN_command_line

    --dv          デバッグ情報の出力；LOADLIN は実行しない。

    --version     zimage からバージョン番号を出力(setup.S に対す
                  るパッチが必要)

    --version=-1.0.9   カーネルバージョンが 1.0.9 以下かのチェック

    --version=1.1.47   カーネルバージョンが 1.1.47 以上かのチェック

    --version=1.1.47#2 カーネルバージョンが 1.1.47 () #2 かどうかのチェッ
                       ク
[訳注：よく分りませんが、1.1.47 でパッチが当っているかのチェックだと思
       います]

例：

LOADLINX zimage.ums root=D: vga=ask

(注意：UMSDOS はブート時にルートファイルシステムを r/w でマウントする
       必要があるので "ro" オプションを使ってはいけません。)

LOADLINX zimage_1.147 @test.par root=/dev/hdb2 --version=1.1.47#2

(注意：全てのパラメーターを test.par ファイルから読みこみ、カーネルイ
       メージファイル名とルートデバイス名を書きかえ、バージョンチェッ
       クを行います)
こんなバッチファイルを使うのがよりスマートな方法でしょう。

  +-------------------- start of LINUX.BAT
  |
  |  SMARTDRV /C
  |  C:\LOADLIN\LOADLINX C:\LOADLIN\ZIMAGE root=C: vga=3
  |
  +-------------------- end of LINUX.BAT

こうしておけば、

  C> linux

とするだけで済みます。

                    --------- +++  --------

7.    コメントやバグレポートの送り先
      ==============================

コメントやバグレポートは以下に送ってください。

      E-Mail:    lermen@elserv.ffm.fgan.de

      SnailMail: Hans Lermen
            Am Muehlenweg 38
            D53424 REMAGEN-Unkelbach
            GERMANY

念のため、繰り返して注意しますが、どうぞあなたの E-Mail の "Reply to" 
パスが正しいか確認してください。宛先不明で帰ってきたメールが多数ありま
す。ゴミ箱送りにするためにメールに返事をするのは楽しいことではありません。

[訳注：このマニュアルの日本語訳に関しては、kojima@komae.denken.or.jp
 まで連絡してください。]

                    --------- +++  --------

8.    協力者と謝辞
      ============

このプログラムは F.Coutant 作の BOOTLIN 無しには、こんなに速く書きあげ
ることはできなかったでしょう。

このプログラムは Linus Torvalds なしには全く意味のないものです。

Jacques Gelinas が VCPI のサポートを実現するように勇気づけてくれました。
LOADLINX プリプロセッサも彼のアイデアをインプリメントしたものです。

Alessandro Rubini は、自作の linuxEXE パッケージから BOOTSECT.BIN 関係
のコードを利用させてくれ、いくつか重要なヒントをくれました。

Chuck Munro は QEMM とバージョン 1.4αの問題についてのヒントをくれまし
た。彼はまた、ドキュメント化について手伝ってくれました。

Javier Achirica がセットアップからスイッチアウトする方法を考案しました
(LOADLIN-1.5)。この結果、ほとんど全てのマシンで BIOSINTV や REALBIOS
法は不要になりました。この方法は：セットアッププログラムを V86 モード
で実行し、プロテクトモードに移行する直前に割込むことです。

重要な問題やバグレポートが：

      Mitchum Dsouza, UK
      Claus Tondering, Denmark
      Johann Friedrich Heinrichmeyer, Germany
      Jacek Zapala, Poland
      Jon Peatfield, UK

から届きました。

全ての ALPHA テスターに感謝します。彼らは "テスター募集"の呼びかけに応
じてくれました。参加者全てのリストを掲げることは不可能ですが、彼らは特
に徹底的にテストしてくれました：

      Michael Goddard, US
      Shih-Hua Chao, US
      Rene Baart, Netherlands
      Asad Khan,
      Jan Lien, Sweden

また、LOADLIN で問題は起らなかったけど、私のもとに "動いたよ" とメール
してくれた全ての人に感謝します(肯定的なフィードバックは最善のものです)

                    --------- END --------

