【私的】USBブート非対応PC用起動フロッピーを作るの巻【合体編】

2021.4.1 移転しました...
  • このページの旧URLは
    • http://www10.plala.or.jp/palm84/fdboot_liveusb3.html

はてなブックマーク

2008.9.7 作成
2009.7.2 【その1】【その2】を更新したのでそれに合わせて設定ファイルを修正。(※選択OSとか全然変わっていませんが...)
2009.7.4 reload.batについて追記、備考注意点関連リンクを整理しました。

ご案内してみたり...
  1. その1 === DOS用USBドライバでUSBデバイスを直接認識
  2. その2 === 分割ファイルをコピーした複数枚FDからブート
  3. 合体編 === 【その1】と【その2】を合体
    • 今ここ
  4. GRUB編 === 【合体編】をFDイメージへ、PLoP Boot Managerを追加

内容が重複しまくっとります。恐れ入り奉りまする。Palm84的【設定ファイル詰め合わせ】については甚だ不完全なのでコロコロ修正すると思います。

※あくまで、インストール・ファイル救出時などメンテナンス向けです。通常使用向けでは全くありません。...というか色物ワシ流起動ディスクなのかもしれま...(><)

下記ページの続き、かなーり私的な内容です...2つの起動ディスクの機能を合体!(おおげさな...)させてみました。

尚、チェックは念入りにしてます(つもり)けど、DOSについての知識はかなりあやしいので、内容は全く未保証だと思われます...ご容赦をば。

USBブート非対応PC用起動ディスク

こんなのありましたー。

上記のページのやつが使えるなら(※USB CDは非対応)、このページに書いてるやつはいらないです...。orz

【予備知識?】Linuxの起動について

おおまかにこんなかんじ

  1. BIOSがブートデバイスを認識
  2. ブートデバイスからブートローダGRUB,LILO,SYSLINUX など)が起動
  3. ブートローダ(カーネルローダー)が Linuxカーネルinitrd をロードして“小さな”Linux起動。デバイスの初期化・認識
  4. “大きな”ルートファイルシステム(イメージ)をマウントして“大きな”Linux起動

2,3,4 は別の場所でもイイってとこがミソ。initrd にはUSB対応モジュールなどが大抵含まれているので、“小さな”Linux起動後はUSBデバイスのマウントがほぼ可能になります。でも、最近の Linux はカーネルと initrd がFD1枚に収まるものが少ないのでFD1枚ではチョトツライというわけ。

initrd とは

initial ramdisk のこと。初期RAMディスク(イメージ)とかミニルートなんて言い方も。

起動時にファ イルとして用意したファイルシステムを ramdisk 上に展開、そこを暫定的な ルートファイルシステムとしてカーネルを立ちあげ、必要な処理をしてから実 際のルートファイルシステムを再マウントする、という 2 段ロケット的なブー トを可能にします。

Ext-Rootfs-mini-HOWTO: initrd とは?

これって何?

  1. DOS+RAMドライブ
    • DOS上で24MBのRAMドライブ作成。RAMドライブへFDからLinuxブートに必要なファイルをコピー。
  2. DOS+USBドライバ
    • USBドライバ組み込み。DOS上でUSBデバイスを直接利用。

USBメモリ、USB CDブートに対応していないPCにて、DOS起動FDからブートして、DOS版Linuxローダー(linld.com) からカーネルをロードさせてUSBデバイス上のルートファイルシステム(イメージ)をマウントさせます。

とりあえず下記のものについて確認。

RAMドライブ【DOS+RAMドライブ】

内容は下記ページと同じものです。というか、このページのやつから【DOS+USBドライバ】を抜いたのがそれだったりします。

RAMディスクドライバで 24 MB のRAMドライブを作成。RAMドライブ上にコピーしたファイルからLinuxをブート

※DOS起動後に、FDからRAMドライブへ“分割された”Linuxカーネル(と initrd)をコピーするので、後述の分割ファイルの作成が必要。

DOS用USBドライバ組み込み【DOS+USBドライバ】

う〜ん、こっちは対応ドライバがあれば設定しておくということで...【DOS+RAMドライブ】だけでもいいかも

内容は下記ページと同じものです。というか、このページのやつから【DOS+RAMドライブ】を抜いたのがそれだったりします(こればっかし)。

設定ファイルは、NOVAC製USBストレージ用ドライバPanasonic製USB CDドライブ用ドライバ、とかで一応書いてみました。

FDは起動ディスク1枚で済むので楽なのですが、きっちり対応してるドライバがなかなかないので難しいところ。あと、ライセンス的に微妙な話もあったり...

Panasonic製USB光学ドライブならドライバ付属なのでかなり便利です。

RAMFD.SYS 使用時の問題点

USB側のディレクトリ構成が元のCDと同じではない場合は、FDにtemp.txtを作成しますが、RAMFD.SYS 使用時は書き込みができません。事前にtemp.txtの作成が必要になります。

※または、【DOS+RAMドライブ】でブート後に、OS選択メニューを x でキャンセル、reload.bat の実行でいけるかも。

GRUB for DOS

※DOS上のRAMドライブ、DOSで認識したUSBデバイスはGRUBでは認識しません。

ナニゲに便利なブートローダ。grub.exe はDOS上から直接起動できます。

HD上にコピーしたイメージからブートするのにも使えるし。Memtest86+ もついでに(GRUBから実行)。

ネットワークブート用起動ディスクとして

gPXE対応汎用カーネルをコピーしておけばいいのです。メジャーどころはほぼ対応してるかと(※Intel e100, Realtek 8139, VIA Rhine, tulip とか一応確認済み)。BIOSで対応していても切替が面倒だったりするのであると便利です。

ダウンロードしておくもの

FDへ直接書き込む
イメージからファイルを取り出し
FDイメージからファイルを取り出すには(イメージをファイルに展開)

下記の Universal Extractor が便利かも。 UniExtract Binary Archive はインストール不要で使えます(日本語表示も可)。

※注意:対象ファイルのパスに‘デスクトップ’など日本語が含まれるとエラーになるみたいです。

FDに一旦書き込むか、展開する、仮想ドライブでマウントするなどしてファイルを取り出しておく

  • RAMディスクドライバなどを含むディスクイメージ

fc5fd.tar.bz2作者様への感謝の気持ちを込めてダウンロード。FC5-FloppyInstall-1.imgを展開

  • xcopy.exe, edit.exe, keyb.exe, keyboard.sys, keybrd2.sys
    • balder10.img(FDイメージなのでFDに書き込むか展開する)
ファイルのダウンロード

0.4.3.zip(または 0.4.4.zip)をダウンロード。0.4.4の方が機能が多いのでおすすめですが、サイズがやや大きいので入り切るかどうか。

  • 0.4.3 grub.exe - 198 KB
  • 0.4.4 grub.exe - 230 KB
ネットワークブート用カーネル
  1. Choose an output format
    • Linux kernel (SYSLINUX/GRUB/LILO) loadable image (.lkrn) を選択
  2. Choose a NIC type
    • all-drivers を選択
  3. [Get Image] をポチっと
  4. gpxe-0.9.x+-gpxe.lkrngpxe_all.krn にリネーム

※ ずっと 0.9.5 使ってたので最新版はどうなのかわかりません。。。旧バージョン(0.9.4, 0.9.5)は、185 KBと若干サイズが小さいです。最新 0.9.6 は 204 KB。旧バージョンでは、Choose NIC/ROM typegpxe:all-drivers を選択、Choose ROM output formatLILO/GRUB/SYSLINUX loadable Linux kernel format (.lkrn) を選択。

  • 0.9.7+ - 257 KB
  • 0.9.6 - 204 KB
  • 0.9.5 - 185 KB
  • 0.9.3 - 174 KB
Memtest86+ (memtest86+-2.01.bin)

【Pre-Compiled Bootable Binary】をダウンロードして展開。ファイル名を memtest にリネーム。

※旧バージョンは若干サイズが小さいです。

設定ファイル詰め合わせ

あくまでPalm84的なので内容の保証は全くありません(汗)。というか、大したものではないので改訂をおすすめ...

展開して内容をそのままFDへコピーするだけ...

※USBドライバを入れるとFDがパンパンになるかも。不要分を削除するか、memtestなど旧バージョンを使うとかしないといけないかもしれません...orz

config_files ディレクトリは見本ファイルなので不要です。

起動ディスク作成

  1. 起動ディスクイメージをFDへ書き込み
  2. コマンドなど必要ファイルを追加
  3. 設定ファイルコピー
FreeDOS起動ディスクをFDへ書き込み
  1. fdboot.imgをRawWrite for WindowsなどでFDへ書き込み
  2. 不要ファイル削除 - fdconfig.sys は必ず削除すること

必要ファイルは下記のみ

A:.
|   command.com
|   kernel.sys
|
+---driver
|       devload.com
|       himem.exe
|       shsucdx.com
|
\---freedos
        choice.exe
ブートセクタ

MS-DOSフロッピーにファイルをコピーしただけでは、FreeDOSは起動しません。ブートセクタにFreeDOSのブートコードが必要なのです。(mkbt.exe や Linuxの ms-sys コマンドなんかでブートコードのみコピーすることもできたりしますけど)

FDへイメージを直接書き込むか、仮想ドライブなどでイメージファイルとして操作するべし。

FC5-FloppyInstall-1.img からファイルをコピー

イメージから展開したファイルをコピーします

  • 上記の起動ディスクルートへ
    • appld.bat
    • HOME.DAT
    • LDFD.ZIP
    • license.txt
    • RDRIVE.BAT
    • ReadMe.txt
    • TDSK.EXE
    • TURBO.DAT
    • TURBODAT.exe
    • UNZIP.EXE
    • version.txt
balder10.img からファイルをコピー

イメージから展開したファイルをコピーします

  • xcopy.exe, edit.exeA:\freedos
  • keyb.exe, keyboard.sys, keybrd2.sysA:\driver
LINLD.COM, grub.exe, gPXEカーネル, memtest
  • ダウンロードしておいたLINLD.COMA:\freedos
  • grub.exe をルートへ
  • gpxe-git-gpxe.lkrngpxe_all.krn にリネームしてルートへ
  • memtest をルートへ
ファイル一覧
A:.
|   appld.bat
|   command.com
|   gpxe_all.krn
|   grub.exe
|   HOME.DAT
|   kernel.sys
|   LDFD.ZIP
|   license.txt
|   memtest
|   RDRIVE.BAT
|   ReadMe.txt
|   TDSK.EXE
|   TURBO.DAT
|   TURBODAT.exe
|   UNZIP.EXE
|   version.txt
|   
+---driver
|       devload.com
|       himem.exe
|       keyb.exe
|       keyboard.sys
|       keybrd2.sys
|       shsucdx.com
|       
\---freedos
        choice.exe
        edit.exe
        LINLD.COM
        xcopy.exe
設定ファイルを詰め合わせをコピー

fdboot_liveusb3_files ディレクトリ内の内容をFDへすべてコピー

【DOS+USBドライバ】USBドライバの組み込み

下記ページは、このページのやつから【DOS+RAMドライブ】がない分だったりします。【DOS+USBドライバ】の内容は同じだったりしますので詳しくはそちらで。

※【DOS+RAMドライブ】 では不要。

下記のもので一応(?)設定を書いてみた。

A:\driver にコピー

USB CD/DVDドライブ用

  • Panasonic USB CD/DVDドライブ用
    • RAMFD.SYS - USB FDドライブでのブート時に必要なRAMディスクドライバ
    • Usbaspi.sys - ASPIマネージャ?
    • USBCD.SYS - USB CDドライバ

USBメモリ用は下記のどちらかで。

  • Iomega製 - USBメモリ・USB HD用(※Norton Ghost 2003 にも付属)
    • aspiehci.sys - USB 2.0
    • aspiuhci.sys - USB 1.1(UHCI)
    • aspiohci.sys - USB 1.1(OHCI)
    • guest.exe - ディスクドライバ(ドライブレター割当)
  • NOVAC USBメモリ/USB HD用(※NOVAC HDケースに付属)
    • Usbaspi.sys - USB 1.1専用 ASPIマネージャ?
    • di1000dd.sys - ディスクドライバ(ドライブレター割当)

※NOVAC分は A:\driver\novac にコピー。

ドライバが入りきらない場合は、設定ファイル詰め合わせの config_files ディレクトリ(約 66KB)を削除しませう。

分割ファイル作成【DOS+RAMドライブ】

※INSERT+ 1.2.18 と BG-Rescue Linux は分割不要

  1. Linuxカーネルと初期RAMディスクイメージをzipで圧縮
    • KNOPPIX 5.3.1CD では(FDx4枚)、\boot\isolinuxlinuxminirt.gz
    • Knoppix 5.1.1 CD では(FDx3枚)、\boot\isolinuxlinuxminirt.gz
    • slax-ja-5.1.8.1-3 では(FDx3枚)、\bootvmlinuzinitrd.gz
    • systemrescuecd-x86-1.0.4(FDx8枚+) では、\isolinuxrescuecd(※など)とinitram.igz
    • Berry Linux 0.90 では(FDx2枚)、\Setupvmlinuzinitrd.gz
    • Puppy Linux 4.1.2.1 では(FDx2枚)、vmlinuzinitrd.gz
  2. FDサイズに分割
  3. ファイル名は順番にldfdraa,ldfdrab,ldfdrac,...にする
  4. それぞれをFDへそのままコピー
  5. 最終のFDに空ファイル end.txt 作成
Linux上で実行

※KNOPPIX 5.3.1CD の例

$ cp /cdrom/boot/isolinux/linux .
$ cp /cdrom/boot/isolinux/minirt.gz .
$ zip ldfd.zip linux minirt.gz

ldfd.zipが作成されたのを確認して分割ファイル作成(※531通常版は4個、Remastered CD だと3個のファイル)

$ split --verbose -b 1423k ldfd.zip ldfdr
creating file `ldfdraa'
creating file `ldfdrab'
creating file `ldfdrac'
Windows XP上で実行

※KNOPPIX 5.3.1CD の例

  1. CDの\boot\isolinuxフォルダを開く
  2. linuxminirt.gzとHD上にコピー
  3. linuxminirt.gzを選択
  4. 右クリック送る圧縮(zip 形式)フォルダ
  5. 圧縮・解凍ソフトでzipファイルを開き、1423(1423.5)KBで分割
  6. ファイル名を順に、ldfdraa,ldfdrab,ldfdrac,...にする

分割不要な場合

カーネルと初期RAMディスク(initrd)がそれぞれFDに収まるサイズなら分割不要。

INSERT+ 1.2.18

【DOS+RAMドライブ】では、isolinuxディレクトリ内のvmlinuzminiroot.gzをFDへそれぞれコピー

【DOS+USBドライバ】ではUSBメモリから直接カーネルをロード

BG-Rescue Linux 0.9.1

【DOS+RAMドライブ】では、vmlinuzinitrd.img をFDへそれぞれコピー

【DOS+USBドライバ】ではUSBメモリから直接カーネルをロード

スクリーンショット

【DOS+RAMドライブ】でのブートの流れ

※【DOS+USBドライバ】の方は、スクリーンショット -【その1】とほぼ同じです。

0 が【DOS+RAMドライブ】です。

【DOS+USBドライバ】では...

USBドライブが正常に認識(ドライブレター割当)されれば、カーネルとinitrdは自動検索するので、ディレクトリの指定など(※もちろんFDからファイルのコピーも)不要。

RAMドライブが D: に作成されました。

OS選択メニュー表示。番号を入力してEnter

FD入替指示のメッセージ。順番通りゆっくりと入換えてEnter。

end.txt のある最終FDまで繰り返しコピーを実行。

ディレクトリの指定。CDの内容そのままの場合は default の【1】(※10秒放置で1が選択される)

ブートオプション設定メニュー。USB CDとUSBメモリとでオプション指定がやや違う場合があります。

SLAXがブートしましたー。

※ルートイメージをサブディレクトリに保存している場合

SLAXでは from=/dev/sda1/slaxな形式でデバイス(ファイル)名の指定が必須らしい(?)ので、slax.bat 内の /dev/sda1 を環境に合わせて /dev/sda2 , /dev/sdb1 , dev/sdc1 などに修正する必要があるかもしれません

from=slax/ とサブディレクトリ名の指定だけでいけました...

GRUB for DOS

ネットワークブート、Memtestや、イメージをHDに保存して起動する際などに使う。

GRUB for DOSブートメニュー

起動の流れ

【DOS+RAMドライブ】

※SLAXの場合

  1. A:\autoexec.bat
    • A:\bin\auto_ram.bat
  2. A:\bin\auto_ram.bat
    • A:\TURBODAT.EXE - RAMディスクドライバをロード
    • A:\RDRIVE.BAT - RAMドライブへ移動
    • DOSコマンドなどをRAMドライブへコピー
    • set path=%ramdrv%\bin;%ramdrv%\freedos
    • keyb.exe - キーボード設定
    • start.bat
  3. %ramdrv%\bin\start.bat (A:\bin\start.bat)
    • OS選択メニュー表示 (%ramdrv%\menu.txt)
    • 選択OSのブート設定ファイルをRAMドライブへコピー
    • copyb.bat
  4. %ramdrv%\bin\copyb.bat (A:\bin\copyb.bat)
    • FD入替で分割カーネルをRAMドライブへコピー
    • appld.bat をコールしてファイル結合
    • 結合ZIPファイルを展開
    • slax.bat
  5. %ramdrv%\bin\slax.bat (A:\bin\slax.bat)
    • SLAXディレクトリの選択表示
      • 10秒表示で[【default】自動選択(※ここで間違った場合は、xでキャンセルして、slax実行)
    • SLAXブートオプションメニュー表示
    • 選択のオプションファイルの設定でブート
【DOS+USBドライバ】

※SLAXの場合

  1. A:\autoexec.bat
    • set path=a:\bin_usb;a:\freedos
    • RAMFD.SYS を選択した場合は、差換えのための待機メッセージを表示、ここでASPIマネージャをロード
    • ドライブレター割り当て
    • start.batへ
  2. A:\bin_usb\start.bat
    • OS選択メニュー表示(A:\menu_usb.txt)
    • A:\bin_usb\slax.bat
  3. A:\bin_usb\slax.bat
    • ルートイメージの場所とカーネルを検索
    • カーネルのディレクトリへ移動
    • SLAXブートオプションメニュー 表示
      • キャンセルすると start.bat へ戻る

設定ファイル【DOS+RAMドライブ】

【DOS+USBドライバ】でのDOS用USBドライバについては、Panasonic + NOVAC のものとなってます。

!switches=/f /n
menucolor=0,3
REM menudefault=0,10
menu
menu  ===========================================
menu      FreeDOS USB support -- LiveUSB boot
menu  ===========================================
menu
menu     0 - DOS+RAMドライブ TURBO.DAT
menu     1 - USB-Flash - 2.0 EHCI
menu     2 - USB-Flash - 1.1
menu     3 - USB-CD    - 2.0 EHCI
menu     4 - USB-CD    - 1.1 
menu     5 - USB-Flash - 2.0 EHCI + RAMFD.SYS
menu     6 - USB-Flash - 1.1      + RAMFD.SYS
menu     7 - USB-CD    - 2.0 EHCI + RAMFD.SYS
menu     8 - USB-CD    - 1.1      + RAMFD.SYS
menu     9 - == GRUB for DOS  or  FreeDOS  ==
menu
menu  ===========================================
menu

9?shell=command.com command.com /P
REM 012345678?shell=command.com /e:1024 /p
012345678?DEVICE=a:\driver\himem.exe
5678?DEVICE=A:\driver\RAMFD.SYS

REM ################################################################
REM === USB Flash === Panasonic + novac ===
REM ################################################################
REM ===== Panasonic USB ASPI driver ( USB 2.0 EHCI only )
1?DEVICE=A:\driver\USBASPI.SYS /E
5?DEVICE=A:\driver\USBASPI.SYS /W /E
REM ===== Novac USB storage driver  (USB-Flash 2.0)
15?DEVICE=A:\driver\novac\DI1000DD.SYS
REM #####################################
REM ===== Novac USB ASPI driver ( USB 1.1 only )
2?DEVICE=A:\driver\novac\USBASPI.SYS
6?DEVICE=A:\driver\novac\USBASPI.SYS /W
REM ===== Novac USB storage driver  (USB-Flash 1.1)
26?DEVICE=A:\driver\novac\DI1000DD.SYS
REM ################################################################

REM ################################################################
REM === USB CD ===
REM ################################################################
REM ===== Panasonic USB ASPI driver ( USB 2.0 EHCI only )
3?DEVICE=A:\driver\USBASPI.SYS /E
7?DEVICE=A:\driver\USBASPI.SYS /W /E
REM ===== Panasonic USB ASPI driver ( USB-CD driver     )
37?DEVICE=A:\driver\USBCD.SYS /D:USBCD001
REM #####################################
REM ===== Panasonic driver          ( USB 1.1 only      )
4?DEVICE=A:\driver\USBASPI.SYS
8?DEVICE=A:\driver\USBASPI.SYS /W
REM ===== Panasonic USB ASPI driver ( USB-CD driver     )
48?DEVICE=A:\driver\USBCD.SYS /D:USBCD001
REM ################################################################

012345678?DOSDATA=UMB
012345678?DOS=HIGH,UMB
!FILES=20
!BUFFERS=20
!LASTDRIVE=Z
0?stacks=9,256
0?DEVICE=A:\TDSK.EXE 24576
@ECHO OFF
if %CONFIG% == 9 goto FREEDOS
if %CONFIG% == 0 goto load_ram
set path=a:\bin_usb;a:\freedos

if %CONFIG% == 1 goto usbfm
if %CONFIG% == 2 goto usbfm
if %CONFIG% == 5 goto usbfm
if %CONFIG% == 6 goto usbfm

if %CONFIG% == 3 goto usbcd
if %CONFIG% == 4 goto usbcd
if %CONFIG% == 7 goto usbcd
if %CONFIG% == 8 goto usbcd

REM ################################################################
REM === USB Flash === Panasonic + novac ===
REM ################################################################
:usbfm
pause
echo.
goto menu
REM ################################################################

REM ################################################################
REM === USB CD
REM ################################################################
:usbcd
a:\driver\shsucdx /D:USBCD001
echo.
pause
goto menu
REM ################################################################

:menu
a:\driver\keyb jp
start.bat
goto END

:load_ram
a:\bin\auto_ram.bat
goto END

:FREEDOS
REM ########################      FREEDOS        #########################
cls
echo          ============================================================
echo          ================  FreeDOS  boot options ====================
echo          ============================================================
echo.
echo          ====     1.  GRUB for DOS  -- grub.exe                  ====
echo.
echo          ====     2.  FreeDOS       -- load HIMEM,KEYB           ====
echo.
echo          ====     3.  FreeDOS       -- clean boot                ====
echo.
echo          ============================================================
echo.
a:\freedos\choice.exe /C:1234X Type Number:

if ERRORLEVEL 4 GOTO END
if ERRORLEVEL 3 GOTO END
if ERRORLEVEL 2 GOTO HIMEM
if ERRORLEVEL 1 GOTO GRUB

:HIMEM
a:\driver\devload.com a:\driver\himem.exe
set path=a:\bin_usb;a:\freedos
a:\driver\keyb jp
goto END

:GRUB
a:\grub.exe
goto END

:END
【DOS+USBドライバ】では...

【DOS+USBドライバ】では、この後 A:\bin_usb\start.batOS選択メニュー表示

@ECHO OFF
if %CONFIG% == 9 goto END

A:\TURBODAT.EXE
copy TURBO.DAT RDRIVE.BAT
call RDRIVE.BAT
copy nul ramdrive.txt
for %%y in ( C D E F G H I J ) do if exist %%y:\ramdrive.txt set ramdrv=%%y:
copy a:\UNZIP.EXE
copy a:\APPLD.BAT
copy a:\LDFD*.*
copy a:\menu.txt
copy a:\reload.bat
a:\freedos\xcopy.exe /i /s a:\bin %ramdrv%\bin
a:\freedos\xcopy.exe /i /s a:\freedos %ramdrv%\freedos
if exist a:\options.txt copy a:\options.txt
set path=%ramdrv%\bin;%ramdrv%\freedos
a:\driver\keyb jp

:END
start.bat

choice.exeでメニュー表示

@echo off
cls
type %ramdrive%\menu.txt
choice /C:123456789X boot:
IF ERRORLEVEL=10 GOTO END
GOTO %ERRORLEVEL%

:1
xcopy /i /s a:\knop53 %ramdrv%\knop53
set boot=knoppix3
cls
copyb.bat
GOTO END

:2
xcopy /i /s a:\knop5 %ramdrv%\knop5
set boot=knoppix
cls
copyb.bat
GOTO END

:3
xcopy /i /s a:\slax5 %ramdrv%\slax5
set boot=slax
cls
copyb.bat
GOTO END

:4
xcopy /i /s a:\sysres1 %ramdrv%\sysres1
set boot=sysres
cls
copyb.bat
GOTO END


:5
xcopy /i /s a:\berry90 %ramdrv%\berry90
set boot=berry
cls
copyb.bat
GOTO END

:6
xcopy /i /s a:\puppy400 %ramdrv%\puppy400
set boot=puppy
cls
copyb.bat
GOTO END

:7
xcopy /i /s a:\inse12 %ramdrv%\inse12
set boot=insert
cls
insert.bat
GOTO END

:8
xcopy /i /s a:\bgrescue %ramdrv%\bgrescue
set boot=bgrescue
cls
bgrescue.bat
GOTO END

:9
if not exist a:\grub.exe goto nogrub
a:
a:\grub.exe
goto END

:nogrub
echo.
echo A:\GRUB.EXE not found !!!
echo Insert boot floppy in drive A: ... and press a key
pause >nul
goto 9

:END
cls
      ================================================================
                          Linux LiveCD Boot Menu
      ================================================================

                     Type one of the following numbers:

               1 :     Knoppix 5.3.1 CD - SSK  --- from Floppy +4
               2 :     Knoppix 5.1.1 CD - LCR  --- from Floppy +3
               3 :     SLAX Live CD 5.1.8.1-3  --- from Floppy +3
               4 :     SystemRescueCd 1.0.4    --- from Floppy +8?
               5 :     Berry Linux 0.90        --- from Floppy +2
               6 :     Puppy Linux 4.00 JP     --- from Floppy +3
               7 :     INSERT+ 1.2.18          --- from Floppy +2
               8 :     BG-Rescue Linux 0.9.1   --- from Floppy +2
               9 :     GRUB for DOS

@echo off
REM Copy all files to RAM Drive
:docopy
if exist A:\end.txt goto done
pause Insert next floppy and press a key...
copy a:\LDFD*.*
goto docopy

:done
REM Now reconstruct the zipfile
for %%f in (LDFDR*.*) do call appld.bat %%f
del ldfdr*.*
unzip ldfd

GOTO %boot%

:puppy
puppy.bat
GOTO END

:berry
berry.bat
GOTO END

:sysres
sysres.bat
GOTO END

:slax
slax.bat
GOTO END

:knoppix
knoppix.bat
GOTO END

:knoppix3
knoppix3.bat
GOTO END

:END
copy ldfd.zip /b + %1 /b ldfd.tmp
copy ldfd.tmp ldfd.zip
del ldfd.tmp
del %1
@echo off
echo.
echo      ===================================================================
echo                                Type Number
echo.
echo              1 : knoppix_dir=/KNOPPIX/KNOPPIX/    *** default ***
echo.
echo              2 : knoppix_dir=/knoppix3/KNOPPIX/   *** rename  ***
echo.
echo      ===================================================================
choice /C:12X /T:1,10 Type Number:
REM choice /C:12X Type Number:

if ERRORLEVEL 3 GOTO END
if ERRORLEVEL 2 GOTO RENAME
if ERRORLEVEL 1 GOTO DEFAULT

:DEFAULT
set param1=
GOTO MENU

:RENAME
set param1=knoppix_dir=knoppix3 knoppix_name=KNOPPIX
GOTO MENU

:MENU
cls
set menudir=%ramdrv%\knop53
type %menudir%\menu.txt
choice /C:12345678X boot:
IF ERRORLEVEL=9 GOTO END
GOTO %ERRORLEVEL%


:1
set opt=default
set vga=791
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:2
set opt=vesa
set vga=normal
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:3
set opt=text
set vga=normal
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:4
set opt=fb800
set vga=788
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:5
set opt=fb1024
set vga=791
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:6
set opt=fb1280
set vga=794
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:7
set opt=failsafe
set vga=normal
if not "%param1%"=="" GOTO TEMP
GOTO LINLD


:8
set opt=test
set vga=normal
if not "%param1%"=="" GOTO TEMP
GOTO LINLD



:LINLD
linld image=linux initrd=minirt.gz vga=%vga% cl=@%menudir%\%opt%.txt
GOTO END


:TEMP
copy %menudir%\%opt%.txt %menudir%\temp.txt
echo   %param1%>>%menudir%\temp.txt
linld image=linux initrd=minirt.gz vga=%vga% cl=@%menudir%\temp.txt
GOTO END

:END
     ===================================================================
                    Knoppix Live CD SSK 5.3.1 Boot Menu
     ===================================================================

                     Type one of the following numbers:

               1 :     default
               2 :     vesa
               3 :     text mode
               4 :     fb 800x600
               5 :     fb 1024x768
               6 :     fb 1280x1024
               7 :     failsafe
               8 :     test (desktop=fluxbox)
               X :      * cancel * 

ramdisk_size=100000 init=/etc/init lang=ja apm=power-off nomce highres=off loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix

ファイル一覧

A:.
|   appld.bat          ** ファイル結合バッチ **
|   autoexec.bat
|   command.com
|   config.sys
|   gpxe_all.krn
|   grub.exe
|   HOME.DAT
|   kernel.sys
|   LDFD.ZIP
|   license.txt
|   memtest
|   menu.lst           ** GRUB for DOS ブート設定ファイル **
|   menu.txt           ** OS選択 ブートメニュー (【DOS+RAMドライブ】)**
|   menu_usb.txt       ** OS選択 ブートメニュー (【DOS+USBドライバ】)**
|   RDRIVE.BAT
|   ReadMe.txt
|   reload.bat          ** 【DOS+RAMドライブ】で起動後にUSBドライバをロード **
|   TDSK.EXE
|   TURBO.DAT
|   TURBODAT.exe
|   UNZIP.EXE
|   version.txt
|       
+---berry90            ** Berry Linux ブートオプションファイル **
|       default.txt
|       default2.txt
|       dynabook.txt
|       expert.txt
|       menu.txt       ** Berry Linux ブートメニュー  **
|       onram.txt
|       safe.txt
|       vaio.txt
|       vesa.txt
|       vesa2.txt
|       
+---bgrescue
|       menu.txt       ** BG-Rescue Linux ブートメニュー  **
|       menu_usb.txt   ** BG-Rescue Linux ブートメニュー (【DOS+USBドライバ】)  **
|       
+---bin                ** 【DOS+RAMドライブ】用バッチ **
|       auto_ram.bat
|       berry.bat
|       bgrescue.bat
|       copyb.bat      ** 分割FDコピー バッチ **
|       insert.bat
|       knoppix3.bat
|       knoppix.bat
|       other.bat
|       puppy.bat
|       slax.bat
|       start.bat
|       sysres.bat
|       
+---bin_usb            ** 【DOS+USBドライバ】用バッチ **
|       berry.bat
|       bgrescue.bat
|       insert.bat
|       knoppix3.bat
|       knoppix.bat
|       other.bat
|       puppy.bat
|       slax.bat
|       start.bat
|       sysres.bat
|       
+---driver
|   |   devload.com    ** DOSブート後にドライバロード **
|   |   himem.exe
|   |   keyb.exe       ** キーボードドライバ **
|   |   keyboard.sys   ** キーボードドライバ **
|   |   keybrd2.sys    ** キーボードドライバ **
|   |   RAMFD.SYS      ** DOS USBドライバ **
|   |   shsucdx.com    ** CD-ROM 用プログラム **
|   |   Usbaspi.sys    ** DOS USBドライバ **
|   |   USBCD.SYS      ** DOS USBドライバ **
|   |
|   \---novac
|           di1000dd.sys   ** DOS USBドライバ **
|           usbaspi.sys    ** DOS USBドライバ **
|       
+---freedos            ** FreeDOSコマンド **
|       choice.exe
|       edit.exe
|       LINLD.COM
|       xcopy.exe
|
+---get_iso            ** isoイメージのダウンロードURL **
|       download.txt
|       
+---grub               ** HDDブート用GRUB設定ファイル **
|       berry.conf
|       insert.conf
|       insertfd.conf
|       knoppix.conf
|       knoppix3.conf
|       puppy.conf
|       slax.conf
|       sysres.conf
|       
+---inse12             ** INSERT ブートオプションファイル **
|       default.txt
|       expert.txt
|       failsafe.txt
|       fb1024.txt
|       fb1280.txt
|       fb800.txt
|       menu.txt       ** INSERT ブートメニュー  **
|       menu_usb.txt   ** INSERT ブートメニュー (【DOS+USBドライバ】)  **
|       text.txt
|       vesa.txt
|       
+---knop5              ** KNOPPIX LCR 5.1.1 ブートオプションファイル **
|       default.txt
|       failsafe.txt
|       fb1024.txt
|       fb1280.txt
|       fb800.txt
|       menu.txt       ** KNOPPIX LCR 5.1.1ブートメニュー  **
|       test.txt
|       text.txt
|       vesa.txt
|       
+---knop53             ** KNOPPIX 5.3.1 ブートオプションファイル **
|       default.txt
|       failsafe.txt
|       fb1024.txt
|       fb1280.txt
|       fb800.txt
|       menu.txt       ** KNOPPIX 5.3.1ブートメニュー  **
|       test.txt
|       text.txt
|       vesa.txt
|       
+---puppy400
|       menu.txt       ** Puppy ブートメニュー  **
|       
+---slax5              ** SLAX ブートオプションファイル **
|       default.txt
|       menu.txt       ** SLAXブートメニュー  **
|       safe.txt
|       vesa.txt
|       xconf.txt
|       
\---sysres1
       menu.txt        ** SystemRescueCD ブートメニュー **
       

Linuxローダ

LINLD.COM については下記ページにて。

別の Linux を起動

※いまいちかもしれない...

options.txtを作成(※必要な場合)

対象アイテムの syslinux.cfg , isolinux.cfg , menu.lst などを参照してブートオプション(カーネルパラメータ)を書いた options.txt を(※必要なら)作成する。

※Linuxインストーラなど不要な場合もあります。

  • linld コマンドの書式
linld image=filename initrd=filename vga=normal cl=@A:\options.txt

書式はこんなかんじなので、vgaオプションと、initrdファイル名を除いたファイルを作成。

  • 対象アイテムの isolinux.cfg を参照してみる(※これはKNOPPIX 5.3.1の例)
LABEL knoppix
KERNEL linux
APPEND ramdisk_size=100000 init=/etc/init lang=ja apm=power-off vga=791 initrd=minirt.gz nomce highres=off loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix
options.txt の一例

APPEND行の指定をコピー、initrd=xxx と vga=xxx を消すだけ。

ramdisk_size=100000 init=/etc/init lang=ja apm=power-off nomce highres=off loglevel=0 libata.atapi_enabled=1 quiet SELINUX_INIT=NO nmi_watchdog=0 BOOT_IMAGE=knoppix

from 【DOS+RAMドライブ】

  1. OS選択メニューは x でキャンセル
  2. other.bat 実行
  3. FDを入換えてコピー
  4. options.txt の場所を選択

※カーネルと initrd は、ありがちな名前で検索します。ありがちじゃないとエラーになります。

[none]以外を選択すると options.txt の存在確認します。ない場合はエラーを表示してやり直しとなります。

追加したいオプション(パラメータ)があれば入力。なければそのままEnter。

from 【DOS+USBドライバ】

  1. OS選択メニューは x でキャンセル
  2. other.bat 実行
  3. ドライブレターを入力
    • C とか d とか
  4. ディレクトリ名を入力
    • knoppix とか boot\isolinux とか
  5. options.txt の場所を選択

※カーネルと initrd は、ありがちな名前で検索します。ありがちじゃないとエラーになります。

ディレクトリ・ファイル名など検索して確認するので、ない場合はエラー表示してやり直しとなります。

[none]以外を選択すると options.txt の存在確認します。ない場合はエラーを表示してやり直しとなります。

追加したいオプション(パラメータ)があれば入力。なければそのままEnter。

【※注意】options.txt があり、かつ追加オプションを指定した場合、 options.txt のコピーに追記されます。この場合の options.txt の場所について、RAMFD.SYS 使用時は Floppy がだめ、USB CDでは Same .. がだめ

備考

LiveCDのファイルを変更している場合

サブディレクトリにまとめてるとか、マルチブートの為ディレクトリ名を変えてるとか。下記はデフォルト以外の指定対象

【DOS+USBドライバ】では自動で検索します。【DOS+RAMドライブ】ではLINLD実行前に選択画面が表示されます。

  • KNOPPIX 5.3.1
    • knoppix3\KNOPPIX
  • SLAX 5.1.8.1-3
    • slax\livecd.sgn
    • myslax\livecd.sgn
    • slax5\livecd.sgn
  • SystemRescueCd 1.0.4
    • sysres10\sysrcd.dat
  • Berry Linux 0.90
    • berry90\BERRY
  • Puppy Linux 4.1.2.1
    • 元々サブディレクトリも検索してくれるらしい?(/puppyなんとかな名前にしとけばいいのかな?)

【※注意】【DOS+USBドライバ】では、Aドライブにオプションを追記した temp.txt を書き込みます。KNOPPIX5.3.1なら コピーされたオプションファイル A:\knop53\temp.txtknoppix_dir=knoppix3 を追記します。

RAMFD.SYS使用時はAドライブは書き込み不可となるので事前に オプションを追記したtemp.txt をFDへ作成する必要があります。書き込みエラーとなった場合でも temp.txt があればそのまま使用されます。ややこしいかなぁ。。

【DOS+RAMドライブ】から reload.bat を実行の方がいいかなぁ。

【DOS+RAMドライブ】ではRAMドライブ上なので問題ありません(temp.txt は消えちゃうけど)。

注意点

【DOS+USBドライバ】でのUSBドライバ使用時の注意点などは下記にて。

故障デバイスがあると...

(一概に断言はできませんが)故障あるいは不良デバイスがあるとBIOSで無効にしないと初期化中に止まってしまうことがあります。

なるべく新しいフロッピーで

古いものでは読み込みでエラーが出たり、エラー発生後にファイルが壊れたりすることも。

フロッピーを確認しませう!

いぁ、新品でもおかしい時ありますから。

Windows上では不良セクタがあっても使えてしまったりしますから、 format コマンド打つべし。

format a:
    1,457,664 バイト : 全ディスク領域
        1,024 バイト : 不良セクタ
    1,456,640 バイト : 使用可能ディスク領域

不良セクタがないか、「パオーパオーン」な雄叫び(笑)が1,2回じゃなく数十回も発生しないかとか確認しませう。

Linux LiveCD側の注意点?
「Linux起動後に」USBデバイスが認識されない

いわゆる「シェルに落ちる〜」ってやつですね。「/KNOPPIX/KNOPPIX が見つからないYO!」です。

ブートメニュー

Linux起動後の初期化中にUSBデバイスが認識されない場合は、 Linux起動直後、または「Checkin for USB...」などのメッセージが表示されている時にUSBポートを挿し直すと認識されることがあります。

USB CDだとあんまり問題ないのになぁ。(あくまでウチでは)

シャットダウン
  • SLAXでは、acpi=off を指定してるので自動で電源は切れない。「Power Down」などのメッセージで止まったら電源ボタンを押す
  • SystemRescueCdでもそうかも。
  • 他のLinuxでも acpi=offnoacpi “とか”を指定しないと起動できないことがあるかも。
USB FDドライブ

USB FDドライブでブートする際は、カーネルとinitrdロード後にUSBポートを抜いてしまった方がいいかも。デバイスの検出で時間がかかるので。

reload.bat

DOS起動時にUSBドライバの読み込みエラーとなる場合などに試してみる価値があるかもしれませぬ(ないかもしれませぬ。)私の環境ではこちらでやっとこさ認識したことがありますです。

FreeDOS起動後にデバイスドライバのロードが可能な devload.com を使いUSBドライバを読み込みます。

起動時に選択した環境によって若干違いがありますです。

【DOS+USBドライバ】から実行

下記【その1】編と同様。

【DOS+RAMドライブ】から実行
  • USB FDドライブ使用時でもRAMFD.SYSが不要になり、USBドライバ読み込み前に取り外しが可能に。
  • RAMFD.SYS使用時はAドライブが書き込み不可になるけど、これのRAMドライブはおk
    • USB側のディレクトリ変更してる場合とか、Aドライブにtemp.txtの作成が必要になるし

実行時の流れはこんなかんじ。

  1. 【DOS+RAMドライブ】のOS選択メニュー画面を【x】でキャンセル
  2. コマンドラインからreload.batを実行
  3. ドライバなど必要なファイルがRAMドライブへコピーされる
  4. DOS+USBドライバ】のOS選択メニューに切り替わる(環境がRAMドライブ上の【DOS+USBドライバ】に変更される)
  5. 番号を選択すると選択OSのオプションファイルがRAMドライブへコピーされる
  6. ドライバを選択
  7. ドライバの読み込み、USBデバイスの検出とドライブレター割り当て
  8. 選択OSのメニュー画面が表示される

OS選択メニュー画面でキャンセルして、コマンドラインから reload.bat を実行

reload.bat実行画面1

DOS+USBドライバ】の必要ファイルがRAMドライブへコピーされますー

reload.bat実行画面2

環境がRAMドライブ上の【DOS+USBドライバ】に変更されて、【DOS+USBドライバ】のメニューになりますた。

reload.bat実行画面3

KNOPPIXの【1】を入力すると、オプションファイルがRAMドライブへコピーされますー

reload.bat実行画面4

ドライバを選択しませう

reload.bat実行画面5

USB FD ドライブは外した方が安全だと思います(?)ので警告画面など出してみたり。ここで外せます。

reload.bat実行画面6

ドライブレターが、キター!です。(※これはIomegaドライバの例)

reload.bat実行画面7

DOS+USBドライバ】用 knoppix3.bat が実行されてメニューが出ますた!

reload.bat実行画面8

もし、ドライブレター来ないYO!な時は、「同じKNOPPIXなら」ですが、【x】でキャンセルしてもいっかい reload.bat の実行でキター!になることもあるかもしれません(私はあったけどないかもしれません...)。

関連リンク

Linux LiveCD
FreeDOS
LINLD.COM
GRUB for DOS
Written by yassy