Loadlin v1.5 のドキュメント類 Hans Lermen lermen@elserv.ffm.fgan.de こじまみつひろ - 日本語訳 kojima@komae.denken.or.jp 1994/08/07 Loadlin v1.5 のドキュメント類 Note: この文書は、Loadlin v1.5 の付属文書のうち、README.1ST, MANUAL.TXT, PARAMS.DOC, QUICKSTA.RT を翻訳したものです。原文の日付 は 1994年8月27日、訳文の日付は 1995年2月13日となっています。Loadlin は 2001年9月時点で v1.6 が出て います。なお、本書は、訳者小島三弘さんが作成された文書を SGML に変 換したものです。 (JF Project) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Table of Contents 1. REAEME.1ST 2. MANUAL.TXT 2.1. Copyright 2.2. なぜ(LILO ではなく) LOADLIN や BOOTLIN を使うのか? 2.3. BOOTLIN があるのになぜ LOADLIN か? 2.4. LOADLIN の使い方 2.5. LOADLIN のコマンドラインパラメータ 2.6. 問題が起れば 2.7. UMSDOS システムをブートするためのプリプロセッサ LOADLINX 2.8. コメントやバグレポートの送り先 2.9. 協力者と謝辞 3. PARAMS.DOC 3.1. loadlin のコマンドパラメタ 3.2. コマンドパラメタの詳細 4. QUICKSTA.RT 5. 日本語訳について ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Chapter 1. REAEME.1ST LOADLIN.EXE は (DOS で動く) LINUX カーネルイメージのローダーです。 (カ ーネルのコマンドラインを完全にサポートしています) (C) 1994 Hans Lermen (lermen@elserv.ffm.fgan.de) (翻訳:こじまみつひろ kojima@komae.denken.or.jp) LOADLIN は F.Coutant 作の BOOTLIN と同じ原理に基づいていますが、よりエ ラーチェックを強化し、カーネルの持つ「コマンドライン機能」を完全にサポ ートしています。レスポンスファイルを利用することも可能で、もしコマンド ラインが (DOS の制限である) 128 バイトを越えても大丈夫です(1.0.5 よりも 古いカーネルでは、80 バイト以上の文字列を渡すためにはパッチが必要です) 。 UMSDOS では、LOADLINX プリプロセッサが DOS 風のドライブ名を /dev/ xxxx の形に変換します。 昔からの LOADLIN ユーザーへ: LOADLIN-1.5 は、 BIOSINTV/REALBIOS な しに動きます! ローダーのプログラムは以下の条件の元で DOS のプロンプトか CONFIG.SYS か ら起動できます。 1. プログラムがロードされるメモリ番地と 0x90000 番地の間に圧縮されたカ ーネルイメージを置けるスペースがあること(ヘッダーとセットアッププロ グラムは別にして) 2. A) CPU が仮想 8086 モードにないこと か、 B) EMS ドライバが VCPI をサポートしていること 手早く始めるには QUICKSTA.RT を、より詳しい説明は MANUAL.TXT を、それぞ れ読んでください。 ┌────────────────────────────────────┐ │LODLIN15.TGZ の中身 │ │------------------- │ │ │ │ README.1ST 今読んでるこれ! │ │ QUICKSTA.RT Pat Volkerding の LODIN14.TXT の引用 │ │ MANUAL.TXT マニュアル │ │ PARAMS.DOC Linux コマンドラインパラメータの説明 │ │ TEST.PAR レスポンス(パラメータ)ファイルの例 │ │ CHANGES LOADLIN の歴史 │ │ LINUX.BAT Linux を起動するための DOS のバッチファイルの例 │ │ LOADLIN.EXE ローダー │ │ LOADLIN.ASM ソースコード │ │ BIOSINTV.SYS VCPI 経由でロードするためのデバイスドライバ │ │ BIOSINTV.ASM そのソース │ │ REALBIOS.EXE 本物の BIOS 割込みベクター/データをファイルに書きだす │ │ ためのプログラム │ │ REALBIOS.C そのソース │ │ BOOTSECT.BIN 上記のデータを使うフロッピー用のブートセクター │ │ BOOTSECT.ASM そのソース │ │ LOADLINX.EXE UMSDOS をサポートしたプリプロセッサ │ │ LOADLINX.C そのソース │ │ MAKEFILE TASM, TLINK 用の MAKEFILE │ │ BOOTING.DOC いくつかの有益な情報 │ │ COPYING FSF の一般許諾契約(Gnu Public License) │ │ KERNEL/* boot/setup.S に対するパッチ │ └────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Chapter 2. MANUAL.TXT LOADLIN と LOADLINX ユーザーガイド(94-08-27) (日本語版/95-02-13) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.1. Copyright 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. │ └────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.2. なぜ(LILO ではなく) LOADLIN や BOOTLIN を使うのか? LOADLIN や BOOTLIN はハードディスクから Linux(0.99.14 以上)をブートする ためのもっとも安全な方法です。多くの Linux の初心者は、詳しいけれど長す ぎる [1] LILO のドキュメントを読むのに耐えきれず、LILO を誤って動かし、 、、バン !! DOS とはさようなら、、、してしまいます。 (FDISK /MBR はディスクを修復するためのスーパーマンではありません) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.3. 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 ドライバ を使っている時はこれが普通です)から起動することも可能です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4. LOADLIN の使い方 注意: LOADLIN はあなたのコンピュータを「論理的に再起動」するプログ ラムであり、 DOS は Linux で完全に上書きされます。もし DOS に戻りた ければ、Linux の "reboot" コマンドを使う必要があります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 │ └────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.2. DOS プロンプトからの起動 2.4.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 にあります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.2.2. 簡単なヘルプ C:\LOADLIN> loadlin とすることで、オンライン・ヘルプと設定が示されます。こういう風にしたら 、もう少し使いやすいかも。 C:\LOADLIN> loadlin | more こうすると、このような出力が示されるはずです(私のマシンからのものです) ┌───────────────────────────────────────┐ │ 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 のコマンド ライン・パラメーター以前にないといけません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 パッケージに入れておきました。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 をインストールす れば自動的に組みこまれます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.2.5. システムの制約 1. 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 に何が起るかわかりま せん。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 が実際に 受けとったコマンドライン・パラメータを表示させることができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.3. CONFIG.SYS からの起動 DOS のバージョン 6.0 からは MSDOS の起動時に異なる設定で起動することが 可能になりました。これは CONFIG.SYS を解釈する時に行なわれますので、 LOADLIN/LOADLINX/Linux を設定するにも便利です。 たとえ DOS をブートしたとしても、後から DOS のコマンドライン、あるいは バッチファイルから Linux を起動することも可能です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 ここから先にはその他の「一般的な」設定をします。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.4.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 ではサポートしているようです] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5. 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 ファイルには記述しないこと! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.5.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 を変 更するだけです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6. 問題が起れば 私はいくつかのフィードバックを受けて 1.2 を 1.3 にバージョンアップし、 より徹底的なエラーチェック機能を付けました。いくつかのバグも見つかり、 修正しました。しかし、何千もの可能性がありうる PC のハードウェア/ソフト ウェアの組み合せの元では、完璧にバグを無くすことは不可能でしょう。です から、あなたの直面した問題についてぜひとも私にフィードバックしてくださ い。 もしバグに気づいたら、それに時間を費すことはせず、私あてに mail してく ださい! しかし、問題をレポートしていただく際には詳しい情報が必要です。「私のス クリーンは真っ青になってしまいますが、何が悪いのでしょう?」だけでは十 分ではありません。 -d か -t オプションを使えば、LOADLIN は私(あなたにも)に有益な情報を示し てくれます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 フ ァイルのルートデバイスフラグを変更することも可能です。) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 も)を使 う必要は一切ありません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 をアップデートすることなく使うことができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.3.1. /dev/xd デバイスファイルのメジャー番号の変更 新しいカーネルでは /dev/xd のメジャー番号を 13 に変えています。ルートデ バイスは LOADLIN の内部で変換されるので、古いカーネルをロードする際には トラブルが起きるはずです。このような場合には -oldxd オプションを付けて 、/dev/xd の古いデバイス番号(12)を使うようにします。setup.S へのパッチ をあてれば、この設定はLOADLIN が自動的にやってくれます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 法を使ってみてください。 しかし注意が必要です: ・ REALBIOS 法で作られる C:\REALBIOS.INT ファイルは、それが作られたマ シンに固有のもので、C:\ になければいけません。 ・ 友達に配布してはいけません("loadlin14.tgz" だけを配布してください) 。 ・ 友達のマシンからコピーしてもいけません。 ・ (NFS などで)共有してはいけません。 ・ もしハードウェアを変更したら(アダプタカードや RAM の着脱、IQR や I/ O アドレスの変更など)があったらもう一度ファイルを作りなおしてくださ い。 ・ REALBIOS.INT を作ったマシンでのみ使ってください。 ところで:多分 PS2 では拡張 BIOS データで問題が起きるはずです。すみませ んが、この問題については、私にはテストするすべがありません。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 が教えてくれるはずです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 法を好む理由はここにあります) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 バイトほど残る程度のはずです。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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 マネージャーが実際のページングをしてはいけませ ん! ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.6.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= という環 │ │ 境変数があると仮定します) │ └─────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7. 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 のドライブ名の変換をバイパスす ることができます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.7.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 とするだけで済みます。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.8. コメントやバグレポートの送り先 コメントやバグレポートは以下に送ってください。 ┌──────────────────────────────────┐ │ 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 ま で連絡してください。] ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2.9. 協力者と謝辞 このプログラムは 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 で問題は起らなかったけど、私のもとに "動いたよ" とメール してくれた全ての人に感謝します(肯定的なフィードバックは最善のものです) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Chapter 3. PARAMS.DOC LOADLIN 1.5 ((C) 1994 lermen@elserv.ffm.fgan.de) and Linux version: 0.99.14, 0.99.15, 1.0, 1.1.47 (翻訳:こじまみつひろ kojima@komae.denken.or.jp) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.1. loadlin のコマンドパラメタ 以下に示すものは認識されるコマンドラインパラメータです。 1. LOADLIN が解釈するもの ┌────────────────────────────────┐ │ ramdisk=size (ramdisk のサイズ(KBytes)) │ │ or │ │ ramdisk=size,no (上と同じですが、ディスクを変えるように、 │ │ とのプロンプトは出ません) │ │ 例: ramdisk=1440,no │ │ │ │ vga=mode │ └────────────────────────────────┘ 2. Linux のカーネルが解釈するもの ┌─────────────────────────────────┐ │ mem=number (0.99pl15 以上では物理的なメモリの終り) │ │ root=device │ │ ro │ │ rw │ │ no387 │ │ debug コンソールに出力されるログレベルを 10 にセット │ │ no-hlt 起動時の HLT チェックを中止 │ └─────────────────────────────────┘ 3. init が解釈するもの ┌────────────────────────────┐ │ single │ │ auto │ │ ro,rw,no387 (カーネルから渡される) │ └────────────────────────────┘ 4. 各種のドライバが解釈するもの ┌──────────────────────────────────────┐ │ reserve=port1,num1,...,port5,num5 # 80x86 の io ポート予約用 │ │ ether=irq,base_addr,mem_start,mem_end,dev_name # イーサネット用 │ │ hd=cyl,head,sect # HDD 用。2 ドライブあればこれを 2 度繰りかえす │ │ # 1 つめがドライブ 0 に対応 │ │ bmouse=irq # バスマウスの IRQ の指定 │ │ max_scsi_luns=n # (n は 1 から 8 の間) │ │ st0x=base_address,irq # SEAGATE controller ST01/ST02 │ │ tmc8xx=base_address,irq # Future Domain TMC-885,TMC-950 │ │ t128=address,irq # Trantor T128/T128F/T228 │ │ ncr5380=port,irq,dma # Generic NCR5380 driver │ │ aha152x=portbase,irq,scsiid,reconnect # Adaptec AHA-152x driver │ │ xd=type,irq,iobase,dma # xd ハードディスク用 │ │ mcd=port,irq # Mitsumi CD 用 │ │ sound=0x0TTPPPID, .. │ │ sbpcd=sbport,SoundBlaster │ │ sbpcd=LMport,LaserMate │ │ sbpcd=SpeaFXport,SPEA │ └──────────────────────────────────────┘ 5. 環境変数になるもの name=xxxx の形式になっているパラメータで、カーネルにもドライバにも 認識されないものは環境変数に登録されます。 LOADLIN 自身は BOOT_IMAGE=imagefile を環境変数に登録します。ユーザ ー自身でその他の環境変数を利用して /etc/rc などで条件に合せた動作を させることが可能です。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3.2. コマンドパラメタの詳細 以下に示すものはより詳細な説明です: ・ LOADLIN で認識されるパラメータ: root=device ----------- device "/dev/hda2" のようなシンボリックなデバイス名か 16 進で示されるデバイスナンバー(上位バイトがメジャーナ ンバーで、下位バイトがマイナーナンバー) 認識されるシンボリックデバイス名(とそのパーティション) は以下の通り: "hda", "hdb", "sda", "sdb", "sdc", "sdd", "sde", "fd", "xda", "xdb" ここには問題もあります: Linus は /dev/hda の後に続く数字を 16 進と解釈しています。とこ ろが、Slackware では Linus がしたであろう /dev/hda1 .. hda9 .. hdaa .. hdaf ではなく、 /dev/hda1 .. hda9 .. hda10 .. hda16 という番号付けになっていま す。 このため、LOADLIN のバージョン 1.3 以降では、ルートデバイスを 自ら解釈して数字でブートセクターに渡すようにしています。私の妥 協的な命名法が、多少なりとも役にたてば、と願っています。 私の命名法は: もし "/dev/hda, hdb, sda .." に続く数字が 0, 0x あるいは a..f ならば 16 進数と考え、1..9 で始まっていれば 10 進数とみなしま す。もし、どちらにもあてはまらなければ、その文字列はそのままコ マンドラインへと渡されます(より新しいバージョンのカーネルではま た違うデバイス名を用意しているかも知れません) 例: root=302 root=0x201 root=/dev/hda2 root=/dev/sdaa は root=/dev/sda10 、 /dev/sda0xa と同じ。 ramdisk=size ------------ size Kbytes 単位で表した RAMDISK の容量です。ラムディスクの イメージは root=/dev/fdx が指定された場合、カーネルの 起動時にフロッピードライブから読みこまれます。イメージ を読みこんだ後、 カーネルはラムディスク(フロッピーでは ありません)をルートデバイスにします。(カーネルがロード された後など)起動用のフロッピーディスクが不要になれば、 LOADLIN 自身がラムディスクにコピーすべきディスクを入れる ようにプロンプトを出します。 vga=mode -------- mode -3 VGA モードをユーザーに問いあわせる。 ask でも同じ -2 80x50 拡張 VGA モード extended でも同じ -1 80x25 標準モード normal でも同じ 0 ブートプロンプトが出ている時に 0 を入れたと同じ . . n ブートプロンプトが出ている時に n を入れたと同じ ro "ro" を指定するとルートデバイスはリードオンリーモードで マウントされます(UMSDOS 用ではありません!) rw "rw" を指定するとルートデバイスをリード/ライト可能で マウントします ・ カーネルにのみ理解されるパラメータ mem=number ---------- number 物理的な RAM の終りを示します。0.99.15 以上のカーネルで利用で き、インストールされている RAM のサイズを自動的に認識できない ときに使うと便利です。 root=device ----------- device "/dev/hda2" といったシンボリックデバイスかデバイス番号を示す数 字(上位バイトがメジャー番号、下位バイトがマイナー番号)。認識可 能なシンボリックデバイス名(パーティションも含めて)は: "hda","hdb","sda","sdb","sdc","sdd","sde","fd","xda","xdb" 注意:1.1.47 以前のカーネルでは xda=0xC00, xdb=0xC40 だったが それ以降のカーネルでは xda=0xD00, xdb=0xD40 に変更 例: root=302 root=/dev/hda2 !!注意:古いカーネル(1.0.5 以前)には init/main.c に小さなバグが !! あります。もっとも、ほとんど問題になることはありませんが: !! シンボッリックデバイス名の最後("hda2")が init にオプション !! パラメータとして渡されてしまい、init が "illegal option" と !! 文句を言います。しかし、エラーにはならずにそのまま実行されます。 !! !! もっと注意すべきことは、コマンドラインの静的バッファが小さすぎる !! ことです(init/main.c では 80 バイトに設定されています)。このバッ !! ファのサイズを 512 にしてカーネルを再構築するのがいいでしょう。 !! !! このバグは Linux 1.0.5 以降では修正されており、"command_line" も !! 最近のカーネルで 256 バイトがデフォルトになり、必要ならば !! init/main.c の #define COMMAND_LINE_SIZE xxxx を変更することで簡 !! 単に変更することができます(上限は 2047 です) no387 ----- "no387" を指定するとハードウェア浮動小数点コ・プロセッサを使用しません。 1.1.47(より以前かも)以降では、ro,rw,no387 のオプションは init へは渡さ れなくなりました。 次のオプションは新しく設定されたものです。 debug コンソールに出力されるログレベルを 10 に設定します。 ----- no-hlt 起動時に HLT コマンドのチェックをしません。もし 486 ------ クローンチップを使っていれば、このオプションは*きわめて* 有益でしょう。 ・ "init" に認識されるパラメータ: single 起動時に "シングルユーザー・モード" になります。 ------ auto ---- ro,rw,no387 (1.1.47 以前のカーネル用。上記のコメントを見てください) ----------- ・ イーサネットの設定 ether=irq,base_addr,mem_start,mem_end,dev_name --------------------------------------------- irq 数字、IRQ 番号(3..15) base_addr 数字、IO ベースアドレス(0x280,...) mem_start 数字、シェアードメモリーの開始 mem_end 数字、シェアードメモリーの終り dev_name 文字列 eth0..3 all configured ethernetcards dl0 D-Link DE600 ポケットアダプタ atp0 AT-LAN-TEC (RealTek) ポケットアダプタ plip0..2 パラレルIP (PLIP) sl0..3 シリアルIP (SLIP) 例: ether=10,0x280,0xc8000,0xcbfff,eth0 関係するファイル: net/inet/eth.c, drivers/net/Space.c ・ I/O ポートの予約 reserve=port1,num1,...,port5,num5 --------------------------------- portn 対象となる IO ポートの範囲番号 numn その番号で予約するアドレス(これらのアドレスは "ioport_register" で "1" にセットされる) 関連するファイル: kernel/ioport.c (v1.2 以降では arch/i386/kernel/ioport.c) ・ ルートデバイスのハードディスクパラメーターの設定 hd=cyl,head,sect --------------- # 注意:もし 2 つのドライバを持っていれば、hd= パラメータを 2つ 書くこ # と。1 つめがドライブ 1 に、2 つめがドライブ 2 に対応する。 # 例:loadlin zimage hd=1001,15,17 hd=989,15,56 root=/dev/hdb2 ro # これは私のマシンの例ですが、実際には不要です。もし Linux が BIOS か # ら正しくドライブのパラメータを取得できないときにのみ必要です。 関係するファイル: drivers/block/hd.c 設定: CONFIG_BLK_DEV_HD ・ バスマウス用の IRQ の設定: bmouse=irq ---------- 関係するファイル:drivers/char/busmouse.c 設定: CONFIG_BUSMOUSE ・ SCSI コントローラー用のパラメーター: max_scsi_luns=n lun の最大値(1 から 8 までの間) st0x=base_address,irq SEAGATE ST01/ST02 用の設定 tmc8xx=base_address,irq Future Domain TMC-885, TMC-950 用 t128=address,irq Trantor T128/T128F/T228 用 ncr5380=port,irq,dma NCR5380 用 aha152x=portbase,irq,scsiid,reconnect Adaptec AHA-152x 用 関連ファイル: drivers/scsi/seagate.c, t128.c, g_NCR5380.c, aha152x.c 設定: CONFIG_SCSI_SEAGATE, CONFIG_SCSI_T128, CONFIG_SCSI_GENERIC_NCR5380, CONFIG_SCSI_AHA152X ・ SCSI テープ用のパラメータ: st=buffer_size,write_threshould,max_buffers buffer_size Kbyte 単位で示したテープバッファのサイズ(ST_BLOCK_SIZE) write_threshould バッファを書きだすまでの大きさ(buffer_size より小 さくすること) max_buffers 予約しておくバッファの数 関連ファイル: drivers/scsi/st.c 設定: CONFIG_CHR_DEV_ST ・ XT ハードディスコントローラ(DTC 5150X)用のパラメータ: xd=type,irq,iobase,dma ---------------------- 関連ファイル: drivers/block/xd.c 設定: CONFIG_BLK_DEV_XD ・ Mitsumi 製の CDROM ドライバ用のパラメータ: mcd=port,irq ------------ 関連ファイル:drivers/block/mcd.c 設定: CONFIG_MCD ・ サウンドカード用の設定: sound=0x0TTPPPID, .. ---------------- 全ての値は 1 つの longint 値に埋めこまれる。上の例では、16 進のフォー マットになっており、それぞれ 16 進数で記述される。 TT サポートしているカードのタイプ 設定されているカードへのインデックス。もし全てのカードが設定され ていれば(普通あり得ない設定だが)、以下の順番になっている。 Roland MPU-401 Gravis Ultrasound ProAudio Spectrum SoundBlaster SoundBlaster 16 SB16 MPU-401 (SB16-MIDI port) AdLib PPP 使用するポートのアドレス I IRQ D DMA Channel 関連ファイル: drivers/sound/dev_table.h,dev_table.c 設定: CONFIG_SOUND ・ IDEタイプの CD-ROM(Kotobuki/Matsushita/Panasonic)用のパラメータ sbpcd=sbport,SoundBlaster ------------------------ sbpcd=LMport,LaserMate ---------------------- sbpcd=SpeaFXport,SPEA ---------------------- sbport サウンドブラスタ用のドライバが使うベースアドレス + 0x10 (0x230 なら 0x220+0x10 を意味している) LMport MPU タイプのポートで、0x300 か同等のアドレス SpeaFXport SpeaFX カードのベースアドレス 関係ファイル: drivers/block/sbpcd.c 設定: CONFIG_SBPCD ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Chapter 4. QUICKSTA.RT Quickstart for LOADLIN-1.5 LOADLIN のバージョン 1.5 は(それ以前のバージョンとは異なり)、たいてい特 別の設定は不要で、ALPHA テスターからは十分安定している、と報告されてい ます。だから、必要なものは、 ・ LOADLIN.EXE, ・ LOADLINX.EXE (LOADLIN.EXE の preprocessor で、入力されたパラメータを処理し LOADLIN.EXE を実行します) これらのファイルを DOS のパーティション(例えば C:\LOADLIN)にコピーしま す。2 つのファイルは同じディレクトリに置いてください。さもないと LOADLINX が LOADLIN を見つけられません。 Linux を起動するためには"/vmlinuz" や "/usr/src/zImage" などの圧縮され たカーネルイメージが必要です。Slackware では、あなたが手に入れた ftp サ イトの ..../slackware/kernels のディレクトリに(bare, scsi, modern 等の) 多くのカーネルが用意されています。 カーネルイメージも DOS パーティション(例えば C:\)にコピーします。 dos プロンプトから起動するには: 1. Linux のパーティション(ext2, minix, ...)をルートディレクトリとして マウントするには、 ┌────────────────────────────┐ │ loadlin c:\vmlinuz root=/dev/hdb2 ro │ │ == │ └────────────────────────────┘ 2. UMSDOS ファイルシステムをルートディレクトリにするには、 ┌────────────────────────────┐ │ loadlin c:\vmlinuz root=/dev/hda1 rw │ │ == │ │ or │ │ │ │ loadlinX c:\vmlinuz root=c: rw │ └────────────────────────────┘ とします。 3. SlackWare がインストールされた A ドライブにあるルートフロッピーから ブートしてカーネルイメージはハードディスク上にある場合、 ┌────────────────────────────┐ │ │ │ loadlinX c:bare root=a: rw ramdisk=1440,no │ └────────────────────────────┘ SlackWare がインストールされたルートフロッピーが B ドライブにあり、 カーネルイメージの入った DOS フロッピーが A ドライブにある場合、 ┌────────────────────────────┐ │ loadlinX a:scsi root=b: rw ramdisk=1440,no │ └────────────────────────────┘ SlackWare がインストールされたルートフロッピーが A ドライブ、カーネ ルイメージの入った DOS フロッピー*も* A ドライブにある場合、 ┌────────────────────────────┐ │ loadlinX a:modern root=a: rw ramdisk=1440 │ └────────────────────────────┘ (LOADLIN はカーネルをロード後、フロッピーを交換するように示します) 注記: どのルートパーティションを使うかは知っておく必要があります。 上の /dev/xxx とか C: は、あくまで例に過ぎません。 もしうまく行かなかった場合、MANUAL.TXT を読んでください。 この文書は、特に Slackware のユーザーのために、SlackWare 2.0.0 に附属の Patrick Volkerding が書いた LODLIN14.TXT を修正して添付したものです。多 分、Pat 自身も文書を LOADLIN-1.5 用にバージョンアップするでしょうから、 新しいLODLIN15.TXT は "-----" 以下に付けておきます。 注意してほしいことは、公式の LOADLIN は *.TGZ 形式になっていますが、 Pat's のものは*.ZIP になっていることです。ですから、すでに Slackware 2.0.0 をインストールしている場合、手順のうち "unzip ... pkunzip loadlin15.zip" の部分は飛ばし、(Linux のもとで) tar を使って LOADLIN-1.5 をインストールできます。 ┌──────────────────────────────────┐ │ mount -t msdos /dev/hda1 /mnt │ │ cd /mnt │ │ mkdir loadlin │ │ cd loadlin │ │ tar -xzvf lodlin15.tgz │ └──────────────────────────────────┘ Hans Lermen(訳注:loadin の作者) elserv.ffm.fgan.de ======================================================================= ===== ---------------------------------------------------------------------------- これは Linux を MS-DOS から起動するためのユーティリティです。LILO を使 って起動するのに取って替り得るもので、初心者には LILO よりもずっと安全 でしょう。LILO では不可能な UMSDOS からの起動も難なくこなします。 Loadlin を使うためにはまず Linux をインストールする必要があります。「 LILO のインストール」はスキップしますが、「システム設定」の最初にたずね られる bootdisk は作成しておきましょう。システムを起動し、 kernel(/ vmlinuz)を DOSのパーティションにコピーします。Linux をインストールすれ ばどこかにDOS のパーティションがマウントされていることでしょう。もしマ ウントされていなれば、以下のようにして手動でマウントします。 ┌──────────────────────────────────┐ │ mount /dev/hda1 /mnt -t msdos │ └──────────────────────────────────┘ どのパーティションが DOS のパーティションかは 'fdisk -l' で確認できます 。 次に、カーネルを DOS のパーティション上にコピーします。 ┌──────────────────────────────────┐ │ cp /vmlinuz /mnt/vmlinuz │ └──────────────────────────────────┘ DOS を起動して、lodlin15.zip を unzip します。 ┌──────────────────────────────────┐ │ unzip -d lodlin15.zip │ │ │ │ or: │ │ │ │ pkunzip -d lodlin15.zip │ └──────────────────────────────────┘ そして、C:\LOADLIN(あるいはあなたの決めた場所) にあるドキュメントを読み ます。それらは loadlin の作者自身が書いているので、私がどうこう言うより も有益でしょう :^) ここまで来れば loadlin.exe を使って Linux パーティションを起動するのは 、 ┌──────────────────────────────────┐ │ loadlin c:\vmlinuz root=/dev/hdb3 ro │ └──────────────────────────────────┘ とするだけです。 もし UMSDOS を使っていれば、このようにします: ┌──────────────────────────────────┐ │ loadlinx c:\vmlinuz root=c: rw │ └──────────────────────────────────┘ 繰りかえしますが、全てのオプションに対する詳細については LOADLIN 附属の ドキュメントを見てください。それらには、私が見たなかでは最も完璧な起動 時にカーネルに渡されるオプションのリストも入っています :^) それでは、Good luck Patrick Volkerding (訳注:Slackware の作者です) volkerdi@mhd1.moorhead.msus.edu 日本語訳:小島 三弘 kojima@komae.denken.or.jp ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Chapter 5. 日本語訳について 配布形態に関するお問い合わせなどは JF@linux.or.jp までお願いします。 日本語訳: 小島三弘 (1995/02/13) SGML 変換: 森本淳 (2000/05/12) 千旦裕司 (2001/09/14) Notes [1] この LOADLIN のドキュメントも長すぎますよね!