(古い版)【私的】USBブート非対応PC用起動フロッピーを作るの巻

2008.4.6 作成
2008.4.12 設定ファイルとかちょこまか更新
2008.4.13 config.sysとautoexec.batをちょっと訂正

ここは旧ページです。

更新版は下記にて。

ややこしくてすみませぬ。

2008.8.17追記

こんなのありましたー。

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

下記ページの続きということで。

とりあえず下記のものについて設定を書いてみた。

追記【追記】

ちょっと改訂してみた。あんまりテストしてないので間違いあるかも...

  • KNOPPIX 5.3.1 を追加
  • Berry Linux を 0.90 へ
  • SystemRescueCd を 1.0.4 へ
  • Puppy 4.0 以降に対応

チェックはしてますけど多少間違いあるかも?ご容赦をば。

あくまでFDしかブート手段がない、あるいはHD上にファイルをコピーできない状態でのお話。ネットワークブート可能ならサーバ上からカーネルをロード、HDへファイルのコピーが可能なら、GRUB(for DOS、またはNTFSパッチなど)起動ディスクでHD(NTFSでもおk!)上のファイルをロードしてブートできますし。

これって何?

USBメモリ、USB CDブートに対応していないPCにて、DOS起動FDからブートして、Linuxローダー(linld.com, loadlin.exe) からUSBデバイス上のカーネルを読み込んでLinux LiveCDをブートさせようというものなのでありんす。

起動の流れはこんなかんじ...

  1. USBドライバを組み込んだFreeDOS起動ディスクでブート
  2. USBデバイスを認識、ドライブレター割り当て
  3. Linuxカーネル(C:\knoppix\linux などを順に)を検索して、見つかったらそのディレクトリへ移動
  4. LINLD.COM(loadlin.exe)でカーネルとinitrd(初期RAMディスクイメージ)をロード
  5. (ミニ)Linuxが起動しUSBデバイスを検出して認識
  6. Linuxルートイメージをサーチしてマウント

尚、USBカードリーダなど、Winodows上やLinuxで使えてもDOSでは認識できないこともあるので完全ではないということでご注意。FDの枚数が増えて面倒ですが下記の方法が確実だったりしますでなん。

ページ先頭 U

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

Palm84的設定ファイル詰め合わせ

あくまでPalm84的なので内容の保証は全くありません。(汗)

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

追記【追記】

ちょっと改訂してみた。あんまりテストしてないので間違いあるかも...

  • KNOPPIX 5.3.1 を追加
  • Berry Linux を 0.90 へ
  • SystemRescueCd を 1.0.4 へ
  • Puppy 4.0 以降に対応
BG-Rescue Linux 0.9.1

これはUSBデバイス不要です。FD +2枚で起動。(vmlinuzinitrd.imgをそれぞれFDにコピーしておく)

ページ先頭 U

FreeDOS起動ディスク

起動の流れ

  1. config.sys で USBドライバ を選択
  2. autoexec.bat
    1. set path=a:\bin
    2. CD/フラッシュメモリの振り分け
    3. A:\bin\start.bat 実行
  3. start.bat
    1. A:\menu.txt 表示
    2. A:\bin\choice.exe 実行
    3. OS別batファイル実行
  4. A:\bin\knoppix.bat(など)
    1. Knoppixイメージの検索
    2. Knoppixカーネルの検索
    3. (\knop5)menu.txt 表示
    4. choice.exe 実行
    5. 設定ファイルを読み込み、LINLD 実行

ページ先頭 U

ディスク作成

  1. fdboot.imgをRawWrite for WindowsなどでFDへ書き込み、fdconfig.sysを削除
  2. FreeDOSのドライバ・コマンド類をコピー

【2】の段階でとりあえず下記の構成にする

A:\
|   command.com
|   kernel.sys
|   keyb.exe
|   keyboard.sys
|   keybrd2.sys
|   
+---bin
|       choice.exe
|       edit.exe
|       LINLD.COM
|       loadlin.exe
|       more.exe
\---driver
        himem.exe
        shsucdx.com
        devload.com

あと必要なのは設定ファイルとUSBドライバ

  1. 設定ファイルを作成(またはPalm84的詰め合わせをコピー)
  2. USBドライバをdriverディレクトリにコピー
USBドライバ

DOS用USBドライバの入手については、暗黙の了解的自己責任(何)ということで。私は以下のもので設定。

USBフラッシュメモリ用

Iomega製ドライバ(Norton Ghost 2003に付属)

下記をa:\driver\にコピー

  • aspiehci.sys
  • aspiohci.sys
  • aspiuhci.sys

【追記】一つ抜けてました。スミマセンスミマセン

  • guest.exe
USB CDドライブ用

Panasonic製光学ドライブ用です。

下記をa:\driver\にコピー

  • RAMFD.SYS
  • Usbaspi.sys
  • USBCD.SYS
!SWITCHES=/E
menucolor=7,0
menudefault=0,100
menu
menu FreeDOS USB support -- LiveUSB boot
menu
menu 0 - USB-Flash - 2.0 EHCI
menu 1 - USB-Flash - 1.1
menu 2 - USB-CD    - 2.0 EHCI
menu 3 - USB-CD    - 1.1 
menu 4 - USB-Flash - 2.0 EHCI + RAMFD.SYS
menu 5 - USB-Flash - 1.1      + RAMFD.SYS
menu 6 - USB-CD    - 2.0 EHCI + RAMFD.SYS
menu 7 - USB-CD    - 1.1      + RAMFD.SYS
menu 8 - Load  HIMEM.EXE
menu 9 - Clean boot
menu

9?shell=command.com command.com /P
012345678?DEVICE=a:\driver\himem.exe
4567?DEVICE=A:\driver\RAMFD.SYS
04?DEVICE=A:\driver\aspiehci.sys /int /all
15?DEVICE=A:\driver\aspiuhci.sys /int /all
15?DEVICE=A:\driver\aspiuhci.sys /int /all /D1
15?DEVICE=A:\driver\aspiuhci.sys /int /all /D2
15?DEVICE=A:\driver\aspiuhci.sys /int /all /D3
15?DEVICE=A:\driver\aspiohci.sys /int /all
15?DEVICE=A:\driver\aspiohci.sys /int /all /D1
15?DEVICE=A:\driver\aspiohci.sys /int /all /D2
15?DEVICE=A:\driver\aspiohci.sys /int /all /D3
REM load USB 2.0 EHCI only
26?DEVICE=A:\driver\USBASPI.SYS /W /E
37?DEVICE=A:\driver\USBASPI.SYS /W
REM load USB 1.1 UHCI only
REM 37?DEVICE=A:\driver\USBASPI.SYS /W /U
REM load USB 1.1 OHCI only
REM 37?DEVICE=A:\driver\USBASPI.SYS /W /O
2367?DEVICE=A:\driver\USBCD.SYS /D:USBCD001
012345678?DOSDATA=UMB
012345678?DOS=HIGH,UMB
!FILES=20
!BUFFERS=20
!LASTDRIVE=Z
@ECHO OFF
set path=a:\bin
if %CONFIG% == 9 goto end
if %CONFIG% == 8 goto end
if %CONFIG% == 7 goto usbcd
if %CONFIG% == 6 goto usbcd
if %CONFIG% == 5 goto usbfm
if %CONFIG% == 4 goto usbfm
if %CONFIG% == 3 goto usbcd
if %CONFIG% == 2 goto usbcd
if %CONFIG% == 1 goto usbfm
if %CONFIG% == 0 goto usbfm

:usbfm
a:\driver\guest.exe
a:\keyb jp
pause
goto end

:usbcd
a:\driver\shsucdx /D:USBCD001
a:\keyb jp
pause
goto end

:end
a:\bin\start.bat

ページ先頭 U

choice.exeでメニュー表示

こんなんでいいかな。

@echo off
cls
type a:\menu.txt
choice /C:12345678X boot:
IF ERRORLEVEL=9 GOTO Ende
IF ERRORLEVEL=8 GOTO 8
IF ERRORLEVEL=7 GOTO 7
IF ERRORLEVEL=6 GOTO 6
IF ERRORLEVEL=5 GOTO 5
IF ERRORLEVEL=4 GOTO 4
IF ERRORLEVEL=3 GOTO 3
IF ERRORLEVEL=2 GOTO 2
IF ERRORLEVEL=1 GOTO 1

:1
knoppix.bat

:2
slax.bat

:3
sysres.bat

:4
berry.bat

:5
puppy.bat

:6
knoppixx.bat

:7
slaxx.bat

:8
bgrescue.bat

:Ende
      ================================================================
                          Linux LiveCD Boot Menu
      ================================================================

            Type one of the following numbers and press return

               1 :     Knoppix 5.1.1 CD - LCR
               2 :     SLAX Live CD 5.1.8.1-3
               3 :     SystemRescueCd 1.0.1
               4 :     Berry Linux 0.88
               5 :     Puppy Linux 3.01 JP
               6 :     Knoppix 5.1.1 CD - LCR  (loadlin)
               7 :     SLAX Live CD 5.1.8.1-3  (loadlin)
               8 :     BG-Rescue Linux 0.9.1 from FD (linld)
               X :       none

@echo off
echo search KNOPPIX filesystem...
for %%x in ( C D E F G H I J ) do if exist %%x:\knoppix\knoppix set knpdrv=%%x:
if "%knpdrv%"=="" goto nofiles
echo find KNOPPIX filesystem
echo search KNOPPIX kernel...
if exist %knpdrv%\boot\isolinux\linux set knpdir=%knpdrv%\boot\isolinux
if exist %knpdrv%\boot\syslinux\linux set knpdir=%knpdrv%\boot\syslinux
if exist %knpdrv%\syslinux\linux set knpdir=%knpdrv%\syslinux
if exist %knpdrv%\knoppix\linux set knpdir=%knpdrv%\knoppix
if exist %knpdrv%\knoppixl\linux set knpdir=%knpdrv%\knoppixl
if exist %knpdrv%\linux set knpdir=%knpdrv%
if "%knpdir%"=="" goto nokernel
echo find KNOPPIX kernel
cdd %knpdir%
cls
type a:\knop5\menu.txt
choice /C:12345678X boot:
IF ERRORLEVEL=9 GOTO Ende
IF ERRORLEVEL=8 GOTO 8
IF ERRORLEVEL=7 GOTO 7
IF ERRORLEVEL=6 GOTO 6
IF ERRORLEVEL=5 GOTO 5
IF ERRORLEVEL=4 GOTO 4
IF ERRORLEVEL=3 GOTO 3
IF ERRORLEVEL=2 GOTO 2
IF ERRORLEVEL=1 GOTO 1

:1
linld image=linux initrd=minirt.gz vga=791 cl=@a:\knop5\default.txt

:2
linld image=linux initrd=minirt.gz vga=normal cl=@a:\knop5\vesa.txt

:3
linld image=linux initrd=minirt.gz vga=normal cl=@a:\knop5\text.txt

:4
linld image=linux initrd=minirt.gz vga=788 cl=@a:\knop5\fb800.txt

:5
linld image=linux initrd=minirt.gz vga=791 cl=@a:\knop5\fb1024.txt

:6
linld image=linux initrd=minirt.gz vga=794 cl=@a:\knop5\fb1280.txt

:7
linld image=linux initrd=minirt.gz vga=normal cl=@a:\knop5\failsafe.txt

:8
linld image=linux initrd=minirt.gz vga=normal cl=@a:\knop5\test.txt

:nofiles
echo.
echo Can't find KNOPPIX filesystem
pause
GOTO Ende

:nokernel
echo.
echo Can't find KNOPPIX kernel
pause
GOTO Ende

:Ende
start.bat
      ================================================================
                  Knoppix Live CD LCR 5.1.1 Boot Menu
      ================================================================

             Type one of the following numbers and press return
              to select Your preferred video mode:

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

Linuxローダ

LINLD.COMの方が新しいので確実だと思われますが、なぜかloadlin.exeでしかLinuxがブートしないことがあったので両方入れることにしました。

ページ先頭 U

LINLD.COM

-----
LINLD [image=<file>] [initrd=<file>] [vga=vgamode] [cl=<kernel cmdline>]
vgamode: ask,extended,normal or dec/oct/hex number
Defaults:
        image=bzImage
        initrd=(nothing)
        cl=auto
        vga=0
Use quotes: "cl=..." if you need spaces in cmdline
Use cl=@filename to take cmdline from file
---------------- 
linld image=ファイル名 initrd=ファイル名 vga=サイズ "cl= パラメータ1 パラメータ2..."
linld image=ファイル名 initrd=ファイル名 vga=サイズ cl=@ファイル名

ファイルはスペース区切りで書いたらいい模様。

ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off nomce loglevel=0 quiet BOOT_IMAGE=knoppix

ページ先頭 U

loadlin.exe

基本的に2.6系カーネルには対応していない様なのですが、なぜかこちらでしかブートできないこともありましたとさ。

loadlin カーネルファイル名 initrd=ファイル名 パラメータ1 パラメータ2..."
loadlin @ファイル名

ファイルは改行区切りで書く。

linux
ramdisk_size=100000
init=/etc/init
lang=ja-utf8
im=scim
apm=power-off
vga=791
initrd=minirt.gz
nomce
loglevel=0
quiet
BOOT_IMAGE=knoppix

ページ先頭 U

ファイル一覧

A:\
|   autoexec.bat
|   config.sys
|   command.com
|   kernel.sys
|   keyb.exe
|   keyboard.sys
|   keybrd2.sys
|   menu.txt
|   
+---berry88
|       default.txt
|       dynabook.txt
|       expert.txt
|       menu.txt
|       onram.txt
|       safe.txt
|       test.txt
|       vaio.txt
|       vesa.txt
|
+---bgrescue
|       welcome.txt
|       
+---bin
|       berry.bat
|       bgrescue.bat
|       choice.exe
|       edit.exe
|       LINLD.COM
|       loadlin.exe
|       more.exe
|       knoppix.bat
|       knoppixx.bat
|       puppy.bat
|       slax.bat
|       slaxx.bat
|       start.bat
|       sysres.bat
|       xcopy.exe
|       
+---driver
|       aspiehci.sys
|       aspiohci.sys
|       aspiuhci.sys
|       guest.exe
|       himem.exe
|       RAMFD.SYS
|       README.TXT
|       shsucdx.com
|       Usbaspi.sys
|       USBCD.SYS
|       xcdrom.sys
|       
+---knop5
|       default.txt
|       failsafe.txt
|       fb1024.txt
|       fb1280.txt
|       fb800.txt
|       menu.txt
|       test.txt
|       text.txt
|       vesa.txt
|       
+---knop5x
|       default.txt
|       failsafe.txt
|       fb1024.txt
|       fb1280.txt
|       fb800.txt
|       menu.txt
|       test.txt
|       text.txt
|       vesa.txt
|       
+---puppy30
|       menu.txt
|       
+---slax5
|       default.txt
|       menu.txt
|       safe.txt
|       ucd_my.txt
|       ucd_slax.txt
|       ufm_my.txt
|       ufm_slax.txt
|       vesa.txt
|       xconf.txt
|       
+---slax5x
|       default.txt
|       menu.txt
|       safe.txt
|       ucd_my.txt
|       ucd_slax.txt
|       ufm_my.txt
|       ufm_slax.txt
|       vesa.txt
|       xconf.txt
|       
\---sysres1
        menu.txt
        sysres_s.bat
        sysres_s.txt
       

ページ先頭 U

スクリーンショット

メニューで分けなくてもいいような気がしますが、この方が確実だという気もするするなので。

config_menu

main_menu

knoppix_menu

数字入力でKnoppixがブート。【x】を打つとキャンセル。再度メニューを表示するには【start】(knoopix,slax ... とか)と打つべし。

ページ先頭 U

備考

注意点など。

通常ブートに比べると同じPCでもトラブルが出る可能性が若干高いみたいな...

USB FDでブートする

USB FDからブートする場合は、RAMFD.SYSの読み込みが必要かも。また、RAMFD.SYSの読み込み直後にFDのUSBポートを抜くか、同じポートにUSBメモリ・USB CDを挿し換えするのが確実かも

USBマウスなども外しておいた方がいいかもしれません。

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

USBキーボード

USBドライバのロード後にUSBキーボードなどが使えなくなることがあります。この場合はconfig.sysやautoexec.batを自動起動するように編集する必要があるかも。

USBデバイスが認識されない

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

シャットダウン
  • SLAXでは、acpi=off を指定してるので自動で電源は切れない。「Power Down」などのメッセージで止まったら電源ボタンを押す
  • SystemRescueCdでもそうかも。
  • 他のLinuxでもacpi=off指定しないと起動できないことがあるかも
なるべく新しいフロッピーを使う

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

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

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

ページ先頭 U

BG-Rescue Linux

後で使い道なんかを書く予定ですが...テキトウですが書いてみました。

USBデバイスは不要。FD +2枚のみで起動できます(vmlinuzinitrd.imgをそれぞれFDにコピーしておく)。NTFS書き込みも可能なので、FDブートネットワーク(インターネットからダウンロードもおk)から、またはUSBデバイスからLiveCDイメージをHDにコピー、GRUB起動ディスクなどからLiveCDをブートさせることができます。

Bドライブに入れなさい?

BドライブFD入替メッセージ

ファイルのパスに B:\ を指定するとInsert diskette in Drive B:とメッセージが出ますが、BIOSで2台目のFDDを有効にしていなければ(通常無効)単純に入替で読み込みが可能かと。

ページ先頭 U

Written by yassy