- 2008.8.17追記
-
こんなのありましたー。
- PLoP - Bootmanager - Free Boot Manager, boot different operating systems, cdrom, usb, freeware
- PLoP Boot Manager(USBブート非対応PC用起動ディスク)
上記のページのやつが使えるなら(※USB CDは非対応)、このページに書いてるやつはいらないですね...。orz
【追記】DOS用USBドライバを使わない方法も書いてみました。
- 【2008.4.13 さらに追記】
-
メニュー表示とか色々設定してみました。
- 【私的】USBブート非対応PC用起動フロッピーを作るの巻(DOS + USBドライバ)
- 【私的】USBブート非対応PC用起動フロッピーを作るの巻【その2】(DOS + ファイル分割)
というわけで方法は3通りあるわけですな。
- kernelとinitrdがそれぞれFDに収まるサイズなら、FDを入れ替えてloadlin.exe(or LINLD.COM)実行
- DOS用USBドライバを準備して、USBデバイス内のkernelとinitrdを直接指定してloadlin.exe(or LINLD.COM)実行
- kernelとinitrdをFDサイズに分割して、RAMドライブ上に展開後にloadlin.exe(or LINLD.COM)実行
【2008.4.6追記】linldのコマンドの書式が少し間違ってました。すみません。
2ch見ててなるほどと思い試してみためも。
考えるポイントは...
- GRUBなどのブートローダはBIOSレベルで非対応のUSBデバイスを認識できない
- Linuxカーネルとミニルート(initrd)読み込み後はUSBデバイスの認識可能
- 最近のLiveCDなどはLinuxカーネルが1.44MB FDに入らない
つまり、BIOSがUSBデバイスでのブートに非対応でもLinuxカーネル(とミニルート)を読み込めばUSBの認識が可能になるけど、そのファイルがFDに収まらないのでどうすべか?というお話。
※CDブート、HDブート、またはPXEネットワークブートが可能ならそっちの方が簡単です。
【追記】というか、INSERT+ 1.2.18 ではkernelとinitrdがそれぞれFDに収まるサイズなので、FDを2枚にして、USBドライバなしで直接LINLDからロードさせてUSBメモリ内の本体のマウントが可能でした。FD入替のためにパスをごまかし(何)します。
LINLD image=A:\vmlinuz initrd=B:\miniroot.gz vga=normal "cl=【ここにオプション】"
※BIOSでFDのBドライブを無効にしておく必要があるかもしれません。
Berry Linux 0.84でもUSBドライバなしでブートできました。kernel(CD内のSetupディレクトリにある)が起動ディスクに入らないのでFDは3枚2枚必要。initrdを1枚目、kernelを2枚目に。(※オプションは多少いじった方がいいかも?)
LINLD image=B:\vmlinuz initrd=A:\initrd.gz vga=791 "cl=ro cdrom berry_dir=/berry/berry splash=silent overlay=ram"
他にも、試してませんがDamn Small Linuxなどでもこの方法で可能かなと。
こんな方法をとりますた。(※カーネルとinitrdがそれぞれFDに入らない場合)
- DOS起動ディスクでブート
- USBドライバ(ASPIマネージャとディスクドライバ)を組み込みUSBメモリをドライブとして認識させる
- LINLD.COM(loadlin.exeの後継版みたいなの)でUSBメモリ内のLinuxカーネルをロード
- Linuxが起動してUSBメモリ内ののルートイメージをマウント
■ USBドライバについて
DOSでUSBストレージデバイスを使うにはUSBコントローラを認識させるためのASPIマネージャというやつと、ドライブレターを割り当てるためのディスクドライバなるものが必要らしい。私はNorton Ghost 2003 に付属のものでやってみた。
- ASPIマネージャ(USBストレージ用)
-
USB1.1 では、UHCI(Universal Host Controller Interface)とOHCI(Open Host Controller Interface)の2種類。USB2.0ではEHCI(Enhanced Host Controller Interface)。それぞれ対応と
config.sys
の記述方法を要確認。※どれもフリーではないけど...
- Norton Ghost 2003 などIomega製
- aspiuhci.sys(USB1.1 UHCI用)
- aspiohci.sys(USB1.1 OHCI用)
- aspiehci.sys(USB2.0用)
- NOVACのHDケースに付属
- USBASPI.SYS(USB1.1用)
- PanasonicのUSB光学ドライブに付属
- USBASPI.SYS(USB1.1/2.0 兼用らしい)
- Norton Ghost 2003 などIomega製
- ディスクドライバ
-
ドライブレターを割り当てる
- Norton Ghost 2003 などIomega製
- GUEST.EXE
- NOVACのHDケースに付属
- Di1000dd.SYS
- PanasonicのUSB光学ドライブに付属
- USBCD.SYS(USB-DVD/CDドライブ用)+ MSCDEX(SHSUCDX)も必要?
※USB-FDドライブでブートして差換えする場合は、RAMディスクドライバも必要になるかと。
- Norton Ghost 2003 などIomega製
- 【追記】Panasonic USB-CDドライブの例
-
- CONFIG.SYS
REM DEVICE=A:\RAMFD.SYS DEVICE=A:\USBASPI.SYS /W /E DEVICE=A:\USBCD.SYS /D:USBCD001
※USB1.1では、/U または /O。USB-FDドライブでブートする場合は1行目のREMを外す。
- AUTOEXEC.BAT(MS-DOS) - (※間違ってた。すみません。)
A:\MSCDEX.EXE /D:USBCD001
- AUTOEXEC.BAT(FreeDOS)
A:\shsucdx /D:USBCD001
■ FreeDOS起動ディスク作成
FreeDOSの起動ディスクイメージ(fdboot.img)、またはBalderのFDイメージをダウンロード
RawWrite for WindowsなどでFDへ書き込み
最低限必要なファイルは下記のみなので、それ以外はFDから退避しておく
- kernel.sys
- command.com
- himem.exe
CONFIG.SYS
を作成-
DOSDATA=UMB DOS=HIGH,UMB FILES=20 LASTDRIVE=Z DEVICE=HIMEM.EXE
FDに保存
■ Norton Ghost 2003 のドライバ組み込み
必要ファイルは C:\Documents and Settings\All Users\Application Data\Symantec\Ghost\Template\common
にある
FDにGHOSTフォルダを作成、ファイルをコピーしてCONFIG.SYS
に“追記”する。
- CONFIG.SYS
-
- USB1.1 UHCI
DOSDATA=UMB DOS=HIGH,UMB FILES=20 LASTDRIVE=Z DEVICE=HIMEM.EXE DEVICE=A:\GHOST\aspiuhci.sys /int /all DEVICE=A:\GHOST\aspiuhci.sys /int /all /D1 DEVICE=A:\GHOST\aspiuhci.sys /int /all /D2 DEVICE=A:\GHOST\aspiuhci.sys /int /all /D3
- USB1.1 OHCI
DOSDATA=UMB DOS=HIGH,UMB FILES=20 LASTDRIVE=Z DEVICE=HIMEM.EXE DEVICE=A:\GHOST\aspiohci.sys /int /all DEVICE=A:\GHOST\aspiohci.sys /int /all /D1 DEVICE=A:\GHOST\aspiohci.sys /int /all /D2 DEVICE=A:\GHOST\aspiohci.sys /int /all /D3
- USB2.0 EHCI
DOSDATA=UMB DOS=HIGH,UMB FILES=20 LASTDRIVE=Z DEVICE=HIMEM.EXE DEVICE=A:\GHOST\aspiehci.sys /int /all
AUTOEXEC.BAT
を作成-
GUEST.EXEをFDのGHOSTフォルダにコピーしておく
@ECHO OFF A:\GHOST\GUEST.EXE
FDに保存
■ LINLD.COM or loadlin.exe
尚、USBキーボードでは、USBデバイスが有効になった後使えなくなる場合がありました。その場合はコマンド、またはbatファイルをAUTOEXEC.BATに記述して自動実行させる必要があるかもしれません。(※UHCI.EXE,OHCI.EXEなどを設定すれば使えそうなのですが私にはわかりませんでした。)
- キーボード配列について
-
キーボードドライバを入れていない場合はUS配列となるのでご注意。
後述の手順でキーボードドライバを設定すればjp106配列で使用できます。
DOS上からLinuxカーネルの読み込み。LOADLIN.EXEはカーネル2.6系には非対応らしい(?)のでBusyBoxのサイトで配布されてたLINLD.COMを使用。ブートの確認は、INSERT+ 1.2.18*1Knoppix 5.1.1/CD(高速起動版)(ライブCDの部屋さん版)とHTTP-FUSE-KNOPPIX501。
モニタの設定がおかしくなることがあったので、なるべく安全設定オプションで起動させた方がよさそう。vesa
とかnofb
とか。
- ダウンロード
書式
LINLD [image=] [initrd= ] [vga=vgamode] [cl= ] 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
USBメモリがC:\
場合はこんなかんじで実行(Knoppix 5.1.1/CD ライブCDの部屋さん版の例)
LINLD image=C:\boot\isolinux\linux initrd=C:\boot\isolinux\minirt.gz vga=normal "cl=ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off xmodule=vesa nomce loglevel=0 quiet BOOT_IMAGE=knoppix"
これをいちいち入力するのは辛いので、このままbatファイルで保存した方がいいかと。
オプションを別ファイルにすることも可能。例えば、こんなかんじでoptions.txtを作成
ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=normal xmodule=vesa nomce loglevel=0 quiet BOOT_IMAGE=knoppix
コマンドはこうなる
LINLD image=C:\boot\isolinux\linux initrd=C:\boot\isolinux\minirt.gz vga=normal cl=@a:\options.txt
LINLD.COMとbatファイル、options.txtをUSBメモリのカーネルと同じディレクトリに保存しておけばパスの記述が要らなくなるのでそっちの方がいいかな?
- LOADLIN.EXE
-
こっちも試したので一応めも。カーネル2.6でも使えたりした。でも、何故かHTTP-FUSE-KNOPPIX501ではだめ。
- ダウンロード(※LinuxのインストールCDに入ってたりしますがDebianのが新しめかなと?)
- ftp://ftp.jp.debian.org/debian/tools/lodlin16.zip
- Index of /pub/linux/debian/debian/toolsとか
コマンドの書式(Knoppix 5.1.1/CD ライブCDの部屋さん版の例)
loadlin C:\boot\isolinux\linux initrd=C:\boot\isolinux\minirt.gz ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=normal xmodule=vesa nomce loglevel=0 quiet BOOT_IMAGE=knoppix
設定ファイルを書く場合は「すべての指定」を改行で分けて書く
- option.txt(Knoppix 5.1.1/CD ライブCDの部屋さん版の例)
C:\boot\isolinux\linux initrd=C:\boot\isolinux\minirt.gz ramdisk_size=100000 init=/etc/init lang=ja-utf8 im=scim apm=power-off vga=normal xmodule=vesa nomce loglevel=0 quiet BOOT_IMAGE=knoppix
コマンドはこう
loadlin @a:\option.txt
Can't find KNOPPIX filesystem sorry.
Dropping you to (very limited) shell.
上記の様なメッセージが出て、USBメモリ内のKnoppixイメージがマウントできない場合に、kernel,initrd読み込み後USBランプが消えた直後にUSBポートを挿し直すとマウント可能になることがあります。
Allowing slow USB-devices some more time to register...ok
このメッセージが出れば多分OK。
■ FreeDOS起動ディスクをもっと使いやすくする
Balderに含まれるコマンドとGrub.exeを追加。
- [ディレクトリ]GHOST
- aspiehci.sys
- aspiohci.sys
- aspiuhci.sys
- GUEST.EXE
- [ディレクトリ]ATAPICD
- shsucdx.com - CDROM用プログラム
- xcdrom.sys - ATAPI-CDドライバ
- command.com
- deltree.com - ディレクトリごと削除
- edit.exe - テキストファイル編集
- fdisk.exe - FDISK
- format.exe - フォーマット
- kernel.sys
- keyb.exe - キーボードマネージャ
- keyboard.sys - キーボードドライバ
- keybrd2.sys - キーボードドライバ
- LINLD.COM
- loadlin.exe
- more.exe - テキストファイル表示など
- sys.com - システムを転送
- xcopy.exe - ディレクトリごとコピー
ついでにブートローダGRUB for DOSも
- grub.exe
- menu.lst
- CONFIG.SYS
-
USB2.0のみ有効の状態。REM行は無効なので適宜変更。!SWITCHES=/E menucolor=7,0 menudefault=0,100 menu menu FreeDOS USB driver support menu menu 0 - USB2.0 menu 1 - USB2.0 + ATAPI CDROM menu 2 - USB1.1 menu 3 - USB1.1 + ATAPI CDROM menu 4 - Clean boot menu 4?shell=command.com command.com /P 0123?DOSDATA=UMB 0123?DOS=HIGH,UMB 0123?DEVICE=HIMEM.EXE 01?DEVICE=A:\GHOST\aspiehci.sys /int /all 23?DEVICE=A:\GHOST\aspiuhci.sys /int /all 23?DEVICE=A:\GHOST\aspiuhci.sys /int /all /D1 23?DEVICE=A:\GHOST\aspiuhci.sys /int /all /D2 23?DEVICE=A:\GHOST\aspiuhci.sys /int /all /D3 23?DEVICE=A:\GHOST\aspiohci.sys /int /all 23?DEVICE=A:\GHOST\aspiohci.sys /int /all /D1 23?DEVICE=A:\GHOST\aspiohci.sys /int /all /D2 23?DEVICE=A:\GHOST\aspiohci.sys /int /all /D3 13?DEVICEHIGH=A:\ATAPICD\XCDROM.SYS /D:FDCD0001 !FILES=20 !BUFFERS=20 !LASTDRIVE=Z
- AUTOEXEC.BAT
-
キーボード配列をjp106仕様に。
@ECHO OFF set path=a:\ if %CONFIG% == 4 goto end if %CONFIG% == 3 goto CD if %CONFIG% == 2 goto USB if %CONFIG% == 1 goto CD if %CONFIG% == 0 goto USB :USB A:\GHOST\GUEST.EXE A:\KEYB JP goto end :CD A:\GHOST\GUEST.EXE A:\ATAPICD\shsucdx /D:FDCD0001 A:\KEYB JP goto end :end
尚、DOSのFDは結構ファイルが壊れたりするのでFreeDOS自体がエラーを出して起動しない時などは、フォーマットし直すか、新しいFDを使いましょう。
■ choice.exeでメニュー選択
DOS素人なのでいまいちかもですが、choice.exe + loadlin.exe で設定してみた。
- 【2008.4.6追記】う?ん、loadlinだとUSB CDがだめな場合が多いみたい?
-
といわけでlinldと両方試す方がいいかも。
ライブCDの部屋Knoppix 5.1.1/CD(高速起動版)用
- choice.exe
-
展開してchoice.exeをFDルートへコピー
- loadlin.exe
-
※lodlin16.zipを展開。loadlin.exeをFDルートへコピー
- 設定ファイル詰め合わせ
-
展開してfdos_usb_lcr_filesフォルダ内のファイルをFDへ上書き
- ブートの流れ
-
- DOS起動後にknoppix.batを実行(またはautoexec.batに記述)
- Cドライブ以降から Knoppixのカーネル(
\linux
)を探しディレクトリを%usbdir%
にset %usbdir%
に移動a:\choice.exe
を実行。a:\welcome.txt
を表示。番号を入力- 指定に従い、
a:\loadlin @a:\knoppix5\knoppix.txt
などが実行される
- loadlin.exe, choice.exe をFDルートにおく
- FDのknoppixディレクトリ内にオプションファイルとwelcome.txt作成
- FDルートにknoppix.bat作成
- knoppix.bat
@echo off for %%x in ( C D E F G H I J ) do if exist %%x:\boot\isolinux\linux set usbdir=%%x:\boot\isolinux for %%x in ( C D E F G H I J ) do if exist %%x:\boot\syslinux\linux set usbdir=%%x:\boot\syslinux for %%x in ( C D E F G H I J ) do if exist %%x:\syslinux\linux set usbdir=%%x:\syslinux for %%x in ( C D E F G H I J ) do if exist %%x:\knoppix\linux set usbdir=%%x:\knoppix for %%x in ( C D E F G H I J ) do if exist %%x:\knoppixl\linux set usbdir=%%x:\\knoppixl for %%x in ( C D E F G H I J ) do if exist %%x:\linux set usbdir=%%x: cdd %usbdir% cls type a:\knoppix5\welcome.txt a:\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 a:\loadlin @a:\knoppix5\knoppix.txt GOTO Ende :2 a:\loadlin @a:\knoppix5\vesa.txt GOTO Ende :3 a:\loadlin @a:\knoppix5\text.txt GOTO Ende :4 a:\loadlin @a:\knoppix5\fb800.txt GOTO Ende :5 a:\loadlin @a:\knoppix5\fb1024.txt GOTO Ende :6 a:\loadlin @a:\knoppix5\fb1280.txt GOTO Ende :7 a:\loadlin @a:\knoppix5\failsafe.txt GOTO Ende :8 a:\loadlin @a:\knoppix5\test.txt GOTO Ende :Ende
- a:\knoppix5\welcome.txt
=================================================== 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
- (オプションファイルの例)a:\knoppix5\knoppix.txt
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
*1:LiveCDの部屋さんバージョン。カーネルは2.4なのでLINLD.COMは非対応かなと思いましたがブート可能でした。