Palm84 某所の日記

死のうは一定、しのびクマには何しよぞ...

FDドライブなしでNetwork Client for DOS(TCP/IP)起動ディスクを作るの巻

【08.2.3追記】ぐはぁ。autoexec.batに間違いありましたちょっと修正してます。すんません。

最終目的は1.44MB 起動ディスクの作成なのである。

Network Client for DOSのTCP/IPは1.44MB FDへ直接セットアップできない(NetBEUIは可能)。VMwareなど仮想マシンなら2.88MBイメージも使えるのでセットアップ可能。ただ、2.88MBイメージの作成が結構面倒だということでなるべく楽にセットアップできるように考えるためのめも。

おおまか手順
  1. 仮想FDドライブでイメージファイルを操作
  2. 1.44MBイメージからIPLを2.88MBイメージへコピーして2.88MB起動ディスクイメージ作成
  3. Grub for DOSなどを使い、2.88MBイメージからブートしてセットアップ
  4. 最低限必要なファイルのみで1.44MB起動ディスクイメージ作成

【注意】NICがPCMCIAの場合はDOS用ドライバの他にPCカードを認識させる為のプログラム等が必要。

必要なもの

作成環境はWindows XPマシン(NTFS)

ブートローダ - GRUB for DOS

※VMwareとか仮想マシンを使う場合は不要

grub4dos-0.4.3.zipをダウンロード

FreeDOS FDイメージ - Balder

balder10.imgをダウンロード

仮想FDドライブ - Virtual Floppy Drive(※Windows XP/2000用)
IPLのコピー - mkbt.exe

2.88MB DOS起動ディスクの作成に使う

NICのDOS用ドライバ

メーカーサイトなどで頑張って探す。NDIS用とかでいいかと。拡張子dosなやつとoemsetup.infとかなファイル。

Network Client for MS-DOS

DSK3-1.EXE,DSK3-2.EXEをダウンロード。

DSK3-1.EXE
MD5   : 2a0a0065e8080a3e46e55658415cfb76
DSK3-2.EXE
MD5   : 532c91001ff4750407b00af7007e0984

ブートローダ - GRUB for DOS

boot.iniの編集を間違うとWindowsが起動しなくなることもあるので注意

FDドライブなどを使わずにHDから直接FDイメージをブートする方法。

※VMwareとか仮想マシンを使う場合は不要

他のブート手段(boot.ini弄りたくない場合とか)

環境次第なので確実にOKだとは限らないと思われますが。

  • VMwareとか仮想マシン上でA,Bドライブ使用。ブートローダ不要。最も安全で簡単。BIOSでA,Bドライブを有効にしておく
floppy0.present = "TRUE"
floppy0.autodetect = "TRUE"
floppy0.startConnected = "TRUE"
floppy0.fileType = "file"
floppy0.filename = "fdos288.img"

floppy1.present = "TRUE"
floppy1.autodetect = "TRUE"
floppy1.startConnected = "TRUE"
floppy1.fileType = "file"
floppy1.filename = "msnet.img"
  • FD,CD,USBメモリなどでGrub for DOSをブート。
  • USBメモリでGrub for DOSをブート。(※これだとUSBメモリ1本のみでできますが...)
  • ネットワークブート(pxelinux + grub.exe0.4.2以降)。イメージはローカルに置くこと。grldr0.4.3では(pd)でtftpサーバ上のイメージをマウントできるがIndirect Map(オンメモリ)のみみたい(?)なので、FreeDos2.88MBイメージはローカルHDD上にないといけない模様
  1. grldrをCドライブのルートにコピー
  2. boot.iniにエントリを追記
  3. menu.lstをCドライブのルートにコピー
  4. menu.lstにエントリを追記
  • boot.iniの編集(追記)
attrib -h -r -s C:\boot.ini
copy C:\boot.ini C:\boot.ini.txt /y
echo.>>C:\boot.ini
echo C:\grldr="GRUB for DOS">>C:\boot.ini
attrib +h +r +s C:\boot.ini
notepad C:\boot.ini

最終行 --- メモ帳で内容確認する

  • menu.lstの編集(追記)
echo.>>C:\menu.lst
echo title Network Client for DOS>>C:\menu.lst
echo     find --set-root /fdos288.img>>C:\menu.lst
echo     map /fdos288.img (fd0)>>C:\menu.lst
echo     map --mem=-2880 /msnet.img (fd1)>>C:\menu.lst
echo     map --hook>>C:\menu.lst
echo     chainloader (fd0)+1>>C:\menu.lst
echo     rootnoverify (fd0)>>C:\menu.lst
notepad C:\menu.lst

最終行 --- メモ帳で内容確認する

GRUBからブートして、fd0(DOS上ではAドライブ)は変更も保存される。fd1(Bドライブ)はオンメモリ。

FreeDOS 2.88MB起動ディスクイメージ作成

ドライブレターを間違うとWindowsが起動しなくなることもあるので注意

  1. Virtual Floppy Drive起動
  2. ドライブ0にAドライブ(※内蔵FDDがない場合)を割り当てbalder10.imgをマウント
  3. ドライブ1にBドライブを割り当て2.88MBで開きフォーマット
  4. FreeDOS 2.88MB起動ディスクイメージ作成
  • ブートレコード(IPL)コピー
mkbt -x a: b:
  • ファイル・コピー
a:
copy kernel.sys b:
copy command.com b:
copy himem.exe b:
b:
mkdir bin
cd bin
copy A:\keyb*.*
copy A:\deltree.com
copy A:\edit.exe
copy A:\fdisk*.*
copy A:\format.exe
copy A:\more.exe
copy A:\sys.com
copy A:\xcopy.exe
echo device=A:\himem.exe> B:\config.sys
echo A:\bin\keyb.exe jp> B:\autoexec.bat

Virtual Floppy DriveでBドライブをファイル名fdos288.imgとして保存してドライブ1を閉じる。失敗あるかもなのでコピーも取っておく。

fdos288.imgをドライブルートにコピー

Network Clientセットアップディスクイメージ作成

  1. Virtual Floppy Drive起動
  2. ドライブ1にBドライブを割り当て2.88MBで開きフォーマット
  3. セットアップファイルをBドライブへ展開(重複ファイルは上書)
DSK3-1.EXE -d B:
DSK3-2.EXE -d B:
mkdir B:\driver

B:\driverにDOS用ドライバをコピー。Bドライブをmsnet.imgとして保存して閉じる。失敗あるかもなのでコピーも取っておく。

msnet.imgをドライブルートにコピー

ブートしてセットアップ

とりあえず注意点だけ。後でちゃんとキャプチャーする(予定...)

これで出来上がった2.88MBイメージは、仮想FDブート(GRUB,SYSLINUX,BCDWなど)ならそのまま使える。

でも、winnt.exeを使用してWindows XPをインストールするにはCドライブをFAT32でフォーマットする必要あり。ブートローダ(ntldr)が消えるのでHDブートでHD上イメージは直接起動できない。Dドライブなどに保存した場合はネットワークやFDなどからHD上のイメージをブート可能だが、直接FreeDOS起動FDを使った方が楽かもしれない。

1.44MB版ディスクイメージ作成

出来上がったイメージは1700KB程あるけど、必須ではないファイルを削除すると900KB程となるので、1.44MB FDに収めることも可能。

この時点のfdos288.imgも一応バックアップしとく。

  1. Virtual Floppy Drive起動
  2. ドライブ0をAドライブ(※内蔵FDDがない場合)でbalder10.imgをマウント
  3. Aドライブから不要ファイルを削除
  4. ドライブ1をBドライブ、セットアップ済のfdos288.imgをマウント
  5. config.sysautoexec.batを変更
  6. Bドライブから不要ファイルを削除、Aドライブへコピー
  7. Aドライブをファイル名fdos144.imgなどとして保存して閉じる
  8. Bドライブもファイル名fdos288_2.img(バックアップ用)などとして保存して閉じる

NETディレクトリはディレクトリごとコピーしとかないとエラーで起動しなかったりするので不要ファイルを削除した状態のNETディレクトリをコピーする。

Aドライブを整理

とりあえず必要最小限のファイルのみにする

  • KERNEL.SYS,COMMAND.COMのみにする。これら以外を削除。
Bドライブを整理

NETディレクトリを必要ファイルのみにする。これら以外を削除。

  • 必要ファイル
    1. emsbfr.exe
    2. IFSHLP.SYS
    3. LMHOSTS
    4. NEMM.DOS
    5. NET.EXE
    6. NET.MSG
    7. NETBIND.COM
    8. NMTSR.EXE
    9. PROTMAN.DOS
    10. PROTMAN.EXE
    11. PROTOCOL.INI
    12. SHARES.PWL
    13. SYSTEM.INI
    14. TCPDRV.DOS
    15. TCPTSR.EXE
    16. TCPUTILS.INI
    17. TINYRFC.EXE
    18. umb.com
    19. WFWSYS.CFG
    20. ***.dos ---(NICのドライバファイル)
    21. IPCONFIG.EXE ---(※必須ではない)
    22. PING.EXE ---(※必須ではない)

config.sysを編集

menucolor=7,0
menudefault=0,100
menu
menu FreeDOS
menu
menu 0 - load HYMEM.EXE
menu 1 - NetBIOS over TCP/IP with HIMEM
menu 2 - Clean boot
menu

2?shell=command.com command.com /P
01?DEVICE=A:\HIMEM.EXE
01?DOS=HIGH,UMB
01?BUFFERS=20
01?LASTDRIVE=Z
01?FILES=20
1?devicehigh=A:\NET\ifshlp.sys

autoexec.batを編集

@ECHO OFF
set path=a:\bin
if %CONFIG% == 2 goto end
if %CONFIG% == 1 goto NBT
if %CONFIG% == 0 goto HIMEM

:NBT
a:\bin\keyb.exe jp
SET PATH=%PATH%;A:\NET
A:\NET\net initialize
A:\NET\netbind.com
A:\NET\umb.com
A:\NET\tcptsr.exe
A:\NET\tinyrfc.exe
A:\NET\nmtsr.exe
A:\NET\emsbfr.exe
A:\NET\net start
goto end

:HIMEM
a:\bin\keyb.exe jp
goto end

:end
BドライブからAドライブへファイルをコピー

多分KERNEL.SYSを上書するとだめなので、BドライブのKERNEL.SYSCOMMAND.COM以外を、Aドライブへコピー。

それぞれイメージをファイル名を指定して保存して閉じる。

1.44MB と 2.88MBイメージのできあがり?

1.44MBイメージをRawwiteなどでFDへ書き込んで1.44MB起動ディスクの完成だー。押忍。

「いまどきなぁ?」って声も激しくあったりするかも?(w