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)
LOADLIN.EXE は (DOS で動く) LINUX カーネルイメージのローダーです。 (カーネルのコマンドラインを完全にサポートしています)
(C) 1994 Hans Lermen (lermen@elserv.ffm.fgan.de)
(翻訳:こじまみつひろ kojima@komae.denken.or.jp)
ローダーのプログラムは以下の条件の元で DOS のプロンプトか CONFIG.SYS から起動できます。
手早く始めるには 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 に対するパッチ |
LOADLIN v1.5 (C) 1994 Hans Lermen (lermen@elserv.ffm.fgan.de)
(翻訳:こじまみつひろ kojima@komae.denken.or.jp)
このプログラムは役に立つことを期待して配布していますが、一切の保証 はありません;購入の可能性や特定の目的に適合するかについての保証も ありません。より詳しくや GNU 一般許諾契約をご覧ください。
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. |
LOADLIN や BOOTLIN はハードディスクから Linux(0.99.14 以上)をブートす るためのもっとも安全な方法です。多くの Linux の初心者は、詳しいけれど 長すぎる [1] LILO のドキュメントを読むのに耐えきれず、LILO を誤って動か し、、、バン !! DOS とはさようなら、、、してしまいます。
(FDISK /MBR はディスクを修復するためのスーパーマンではありません)
BOOTLIN は明確で単純、きわめて効率的です。BOOTLIN のソースコードにある 情報の多くが LOADLIN の基礎になっています。
ある種のオプション(-v, -t, -d)を使うとデバッグ情報が出力されます。もし 何か問題が起きたときは、その情報を頼りに LOADLIN が実際に何をやってい るのか確認することができるでしょう。
LOADLIN は VCPI サーバーが存在している場合、仮想 86 モード(EMS ドライ バを使っている時はこれが普通です)から起動することも可能です。
LOADLIN.EXE MANUAL.TXT (このファイル) TEST.PAR(パラメーターファイルの例) PARAMS.DOC |
LOADLINX.EXE BIOSINTV.SYS REALBIOS.EXE BOOTSECT.BIN |
これから先、LODLIN15.TGZ を C:\LOADLIN に展開したとして話をすすめます。
C:> CD \LOADLIN C:\LOADLIN> LOADLIN zimage /dev/hdb1 ro vga=extended |
C:\LOADLIN> LOADLIN zimage -ja /dev/hdb1 ro vga=extended |
C:\LOADLIN> LOADLIN @params |
[訳注:6.1 章に LOADLINX でパラメータファイルを使う例が出てくるので、 今のバージョンではサポートしていると思います(私は試していませんが)]
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 |
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 |
こうすれば DOS を起動するフロッピー(と LOADLIN の起動)とルートディスク が同じフロッピードライブを利用することができます。
例:LST 1.07 ディストリビューションは 3.5" フロッピーで配布されていま すが、手元のドライブ A: は 5.25" です。
ちなみに:LOADLIN は Slackware と共に配布され、UMSDOS をインストールす れば自動的に組みこまれます。
1. 圧縮されたカーネルイメージをロードするのに十分なメモリ(LOADLIN の開 始位置と 090000h の間に必要です)。
LOADLIN の出力メッセージのうち、"load buffer size" が、あなたのシステ ムに実際に存在するメモリの大きさを示しています。
LOADLIN の "setup buffer size" に示される値が、セットアッププログラム 用のバッファサイズです。
640 K のメモリのうち、上位 20 K バイトが残っていれば、BIOS と上位メモ リに読みこまれるドライバ用のデータ領域として、多分十分でしょう。
DOS プログラムはいわゆるリアルモード(あるいは 386 以上のマシンでは 仮想 86 モード)でのみ稼働します。
かEMS ドライバで VCPI サーバーを利用する(これでも WINDOWS は使えません)
VCPI は P0 モードも利用でき、ほとんどの EMS ドライバでもサポートされて います(もし EMS が使えるならば)が、MS-WINDOWS の元では利用できません (MICROSOFT はユーザーが P0 モードを使うことを嫌っています)。
物理メモリと仮想メモリのマッピングも最初の 640K のRAM 領域 では同一で ある必要があります。普通はそうなっているはずですが、EMS ドライバに以下 のようなオプションを与えることで、強制的にこのように設定することができ ます。
EXCLUDE=1000-A000 (386MAX 用) |
B=A000 (EMM386.EXE 用。たいていの場合は不要です) |
注意: 特に何メガバイトもメモリをつんでいるシステムの場合、プロテクトモードに 移行する前に VCPI サーバーがガーベッジコレクションを始めて、しばらく時 間がかかることもありますが、しんぼう強く待ってやってください。
たとえ DOS をブートしたとしても、後から DOS のコマンドライン、あるいは バッチファイルから Linux を起動することも可能です。
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 ここから先にはその他の「一般的な」設定をします。 |
mem=... no387 single auto debug no-hlt reserve=... hd=... xd=... bmouse=... max_scsi_luns= |
vga=... ramdisk= ro rw |
root=... |
パラメーターファイルを使えば大文字/小文字の問題は避けることができま す。この場合、CONFIG.SYS ラインはこのようになります:
[LINUX] shell=c:\loadlin\loadlin.exe @c:\loadlin\params |
[訳注:先にも書きましたが、このあたりは 1.5 以前のバージョンのことで、 今の 1.5 ではサポートしているようです]
詳細は 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 ファイルには記述しないこと!
もしバグに気づいたら、それに時間を費すことはせず、私あてに mail してく ださい!
しかし、問題をレポートしていただく際には詳しい情報が必要です。「私のス クリーンは真っ青になってしまいますが、何が悪いのでしょう?」だけでは十 分ではありません。
-d か -t オプションを使えば、LOADLIN は私(あなたにも)に有益な情報を示 してくれます。
C:\LOADLIN>loadlin zimage /dev/sda1 ro |
何が問題なのかを確認するために -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 .. .. .. |
C:\LOADLIN>loadlin zimage root=/dev/sda1 ro mem=0xFF0000 |
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 ver 1.2 のころ、こんなバグレポートを受けとりました。
もし、1..9 の数字で始まっていれば、10 進数と解釈されます。
もしそれ以外の文字列ならば、そのままコマンドラインに渡されます(より新 しいバージョンのカーネルはもっと違うデバイス名を持っているかも知れませ んから)
LOADLIN がカーネルイメージをロードして、Linux へ制御を渡す前にどちらか 条件が必要です。
Javier 法を使うためには、設定から BIOSINTV/REALBIOS を外すか LODLIN に -ja オプションを付ける必要があります!
Javier 法でうまく行かない場合、b) の方法を試してみてください。b) の方 法を試すには、CONFIG.SYS の最初に次の一行を加えてください。
DEVICE=C:\LOADLIN\BIOSINTV.SYS |
もし、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
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 を作ったマシンでのみ使ってください。
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 キャッシュをフラッシュしてく ださい。 |
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 で継続、他のキーでキャンセルされます。 |
C:\REALBIOS.INT は他のマシンに移動させられないように"不可視+システム" ファイルになっています(DIR コマンドでは見えません)。
LOADLIN は最初に BIOSINTV.SYS を探し、次に REALBIOS.INT を探します。こ の順は "-rb" オプションで逆にできます。
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 ンの状態 |
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= という環 境変数があると仮定します) |
このプログラムは LOADLIN ユーティリティの「プリプロセッサ」として使 われ、DOS 風のドライブ名(C:, D:, など)を Linux のデバイス名(/dev/....) に変換します。
LOADLINX は CONFIG.SYS ファイルの shell= に指定することも可能です。し かし、LOADLINX は LOADLIN と同じディレクトリにないといけなせん。
普通のユーザーは DOS パーティションをルートデバイスにはしないでしょう から UMSDOS ユーザーのみに価値があるものでしょう。
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 かどうかのチェック |
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 |
E-Mail: lermen@elserv.ffm.fgan.de SnailMail: Hans Lermen Am Muehlenweg 38 D53424 REMAGEN-Unkelbach GERMANY |
[訳注:このマニュアルの日本語訳に関しては、kojima@komae.denken.or.jp まで連絡してください。]
このプログラムは F.Coutant 作の BOOTLIN 無しには、こんなに速く書きあげ ることはできなかったでしょう。
このプログラムは Linus Torvalds なしには全く意味のないものです。
Jacques Gelinas が VCPI のサポートを実現するように勇気づけてくれました。 LOADLINX プリプロセッサも彼のアイデアをインプリメントしたものです。
Alessandro Rubini は、自作の linuxEXE パッケージから BOOTSECT.BIN 関係 のコードを利用させてくれ、いくつか重要なヒントをくれました。
Chuck Munro は QEMM とバージョン 1.4αの問題についてのヒントをくれまし た。彼はまた、ドキュメント化について手伝ってくれました。
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 で問題は起らなかったけど、私のもとに "動いたよ" とメール してくれた全ての人に感謝します(肯定的なフィードバックは最善のものです)
ramdisk=size (ramdisk のサイズ(KBytes)) or ramdisk=size,no (上と同じですが、ディスクを変えるように、 とのプロンプトは出ません) 例: ramdisk=1440,no vga=mode |
mem=number (0.99pl15 以上では物理的なメモリの終り) root=device ro rw no387 debug コンソールに出力されるログレベルを 10 にセット no-hlt 起動時の HLT チェックを中止 |
single auto ro,rw,no387 (カーネルから渡される) |
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 |
name=xxxx の形式になっているパラメータで、カーネルにもドライバにも認識 されないものは環境変数に登録されます。
LOADLIN 自身は BOOT_IMAGE=imagefile を環境変数に登録します。ユーザー自 身でその他の環境変数を利用して /etc/rc などで条件に合せた動作をさせる ことが可能です。
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 ------ クローンチップを使っていれば、このオプションは*きわめて* 有益でしょう。 |
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 |
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 |
bmouse=irq ---------- 関係するファイル:drivers/char/busmouse.c 設定: CONFIG_BUSMOUSE |
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 |
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 |
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 |
LOADLIN のバージョン 1.5 は(それ以前のバージョンとは異なり)、たいてい 特別の設定は不要で、ALPHA テスターからは十分安定している、と報告されて います。だから、必要なものは、
これらのファイルを DOS のパーティション(例えば C:\LOADLIN)にコピーしま す。2 つのファイルは同じディレクトリに置いてください。さもないと LOADLINX が LOADLIN を見つけられません。Linux を起動するためには"/vmlinuz" や "/usr/src/zImage" などの圧縮され たカーネルイメージが必要です。Slackware では、あなたが手に入れた ftp サイトの ..../slackware/kernels のディレクトリに(bare, scsi, modern 等 の)多くのカーネルが用意されています。
カーネルイメージも DOS パーティション(例えば C:\)にコピーします。
dos プロンプトから起動するには:
Linux のパーティション(ext2, minix, ...)をルートディレクトリとし てマウントするには、
loadlin c:\vmlinuz root=/dev/hdb2 ro == |
UMSDOS ファイルシステムをルートディレクトリにするには、
loadlin c:\vmlinuz root=/dev/hda1 rw == or loadlinX c:\vmlinuz root=c: rw |
SlackWare がインストールされた A ドライブ にあるルートフロッピー からブートしてカーネルイメージはハードディスク上にある場合、
loadlinX c:bare root=a: rw ramdisk=1440,no |
loadlinX a:scsi root=b: rw ramdisk=1440,no |
loadlinX a:modern root=a: rw ramdisk=1440 |
注記: どのルートパーティションを使うかは知っておく必要があります。上の /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 のパーティション上にコピーします。
cp /vmlinuz /mnt/vmlinuz |
unzip -d lodlin15.zip or: pkunzip -d lodlin15.zip |
ここまで来れば loadlin.exe を使って Linux パーティションを起動するのは、
loadlin c:\vmlinuz root=/dev/hdb3 ro |
もし UMSDOS を使っていれば、このようにします:
loadlinx c:\vmlinuz root=c: rw |
それでは、Good luck
Patrick Volkerding (訳注:Slackware の作者です)
volkerdi@mhd1.moorhead.msus.edu
日本語訳:小島 三弘
kojima@komae.denken.or.jp
配布形態に関するお問い合わせなどは JF@linux.or.jp までお願いします。
日本語訳: | 小島三弘 <kojima@komae.denken.or.jp> | (1995/02/13) |
SGML 変換: | 森本淳 <morimoto@xantia.citroen.org> | (2000/05/12) |
千旦裕司 <ysenda@pop01.odn.ne.jp> | (2001/09/14) |
[1] | この LOADLIN のドキュメントも長すぎますよね! |