一覧に戻る

PC-98 W2K に HFSLIPを使ってみた

Copyright(C)2010 macky
 2006年のW2K自動インストールで書いた方法でも、一通り HotFixは適用出来るのですが、 HFSLIP を使うと、nec98の中にあるインストール元となるファイル群が更新されるので、ファイルサイズも大きくならずインストール時に順にアップデートされないので、時間もかなり短縮できます。また、アンインストール用のファイル等なども生じないのでインストール後の占有サイズも小さくできると、まぁ良いことずくめ、のハズです。

今回の目標は下記です

  1. インストール直後に、Windows Updateを実行した際の残数が0
  2. Hotfixは極力ダイレクトスリップストリーム統合
  3. インストール配布用ファイルサイズを小さく
  4. SVCPACKディレクトリからのインストールファイルを減らして時短
  5. DirectX9, IE6, WMP9 もダイレクト統合
  6. SCSIデバイスをフロッピーレスで認識できること、137GB以上に対応していること
  7. 手持ちで使いそうなハードウェア VGA(Radeon, GeForce, VooDoo3, USB2(EHCI), NIC(VIA, Realtek, etc), Sound CMI8738などのドライバーはインストール時に全て組み込まれ、インストール直後のデバイスマネージャーで黄色や赤マークが残らないようにすること
  8. RADEONやGeForceのドライバーがインストールされた場合、再起動時には DispFlipが有効になっていること
  9. よく使うDLL、小物ソフト類はインストール(ファイルのコピー+レジストリ設定+ショートカット作成)済みにできること
 さて、hfslipをPC-98に適用している情報も、ほぼ皆無ですから、がんばって試行錯誤してみます。
 

1.ファイルを集める

HFSLIPとSNMsynth

hfslipまとめサイト @ wikinLiteの役に立たない説明書のHFSLIPの記事などを参考にしてください。最新版は、MSFN の hfslip 1.7.10 betaJ ですが、Windows2000で使う分には、hfslip-1.7.9.zip でも大丈夫みたいです。 あと、dot net frameworkをまとめてサイレントアップデートさせるために、こちらもMSFNでSNMsynthを用意しておくと良いでしょう。

nLite

hfslip適用後、デフォルト設定など変更しておくのに便利です。

Windows2000 CD

PC-98用のWindows 2000です。今回はMSDNからダウンロードしたSP4適用済みのものを使っています。おそらく、パッケージモノに手動でSP4を統合したものでも大丈夫でしょう。
以前にも書きましたが、Windows 2000 Service Pack 4 用の更新プログラム ロールアップ 1 (KB891861)は、NEC98ってフォルダーをI386にリネームしてから作業を始めないとインテグレートできないので要注意です。

HotFixes

SP4移行のHOTFIXを全て集めます。DirectX9やIE6等も集めておきましょう。A.K OfficeさんのSP+メーカーにQKKさんの作られた、NEC98 Windows 2000 Service Pack 4 用アップデートリストを利用すると手早く集められます。どれを hfslip で統合したかは後述します。

2.HFSLIP作業の準備

 HFSLIPで統合する作業は、PC-98で実行する必要は有りません。ただ、Win7 x64等のx64 OSはダメみたいです。私は、C2Q RAM 8GなAT機の XP(32bit) で、5G程度のRAMDISKをWORKDIRにしています。
hfslip.cmd を初めて実行すると、下記のようなディレクトリが作成されます。

\hfslip\FDVFILES
\hfslip\HF
\hfslip\HFCABS
\hfslip\HFGUIRUNONCE
\hfslip\HFSVCPACK
\hfslip\HFSVCPACK_SW1
\hfslip\HFSVCPACK_SW2
\hfslip\HFTOOLS
\hfslip\REPLACE
\hfslip\SOURCE
それぞれの意味は、hfslipが表示するメッセージや先述のwikiを参照して下さい。

\hfslip\SOURCE へWindows 2000 with SP4 CDの中身を全てコピー
念のため、 ATTRIB -r /d /s *.* でリードオンリーの属性を外す。
\hfslip\SOURCE\I386 を適当な名前 $I386等にリネーム
\hfslip\SOURCE\NEC98 をI386等にリネーム

\hfslip\HF へ集めた hotfixファイルをコピー
 2010年6月末時点でのファイル一覧は hf_file_list_2010-06.txt これです。試行錯誤の過程で必要の無いファイルが混入しているかもしれませんが、結果オーライということで。 もし要らないファイルがわかったら教えて下さいね。

\hfslip\HFCABS へ
IE6SP1Jから
 BRANDING.CAB
 IEW2K_1.CAB
 IEW2K_2.CAB
 IEW2K_3.CAB
 IEW2K_4.CAB
 MAILNEWS.CAB
 OEEXCEP.CAB
 SCRIPTJP.CAB
 WAB.CAB
DirectX9 から
 BDANT.CAB
 DXNT.CAB
Microsoft Updateから(これは入れなくても、1番目の目標は達成できるけど)
 MUAUTH.CAB
 MUCATALOGWEBCONTROL.CAB
 MUWEB_SITE.CAB

DirectX9に関しては、pc-98パッチは必要有りません。DX8NEC98_254.LZHの98パッチはdsetup32.dllを対象としており、HFSLIPで
統合する場合は必要なし。また上記ファイルは、最新の directx_feb2010_redist.exe でも初期の directx_9c_redist.exe 04/07/23 35,097,792 等でも中身は同じなので、最新版を無理に用意しなくても大丈夫です。

3.HFSLIPの実行

 ファイルに漏れがないか確認し HFSLIP を実行しましょう。私のPCだと6分弱かかりました。
 

4.nLiteの実行

 nLiteは、ドライバーやアップデートの統合には用いておらず、あくまで初回ログオン時のユーザー名や、動作の初期設定値等をあらかじめ設定しておくために便利なので無人インストールとTweaks項目だけ選択し、\hfslip\SOURCESSに対して実行しています。必要なければ、飛ばしてもかまいません。この際、nliteは i386ディレクトリに対して実行されるので、まだディレクトリ名を i386からNEC98に戻してはいけません。
 実行後、 \SOURCESS\$OEM$\ のように \$OEM$\ が生成されるのでこれを \SOURCESS\I386の中に移動しておく必要があります。 CD-BOOTからインストールする場合は、\SOURCESS\$OEM$\が正解という記述も見かけるのですが、MS-DOS(モード)で起動して、ファイル共有からインストールする方法をとるので、検証していません。
 

5.ディレクトリ名を元に戻す

 \hfslip\SOURCESS\i386 を \hfslip\SOURCESS\nec98 に戻します。

6.ファイルの編集の編集

\hfslip\SOURCESS\nec98\SVCPACK.INF と
\hfslip\SOURCESS\nec98\HFSLIPWU.INF の中の I386 を NEC98に戻す

[SourceDisksNames]
1="Windows CD","CDROM_NT.5",,"\i386"    →  1="Windows CD","CDROM_NT.5",,"\NEC98"

\hfslip\SOURCESS\nec98\SVCPACK\HFSLIP.CMD
中の I386をNEC98に変更

 私は、sedを使ってバッチファイル中から自動処理でやらせてます。
 

7.BigDriveへの対応

MSHDC.IN_ の拡張子を.cabに変更して解凍
下記を追加
HKR,Parameters,EnableBigLba,%REG_DWORD%,1
cab圧縮(LZXで高圧縮)して拡張子を.IN_に戻す
 

実際は、文字列置換はSEDを使うなどして、2以降を2つくらいのバッチにまとめて処理させてます。
 

8.HFできないHOTFIX

以下のHOTFIX等は、HFSLIPでダイレクト統合出来ないので、インストール直後の最初の起動時に自動でインストール

wgainstall_9160b6b3929938243b7d18417810677d9b9983b7.exe
Windows2000-KB958470-nec98-JPN.EXE
この2つはHFで統合可能だか、そうすると 8.3文字でなく、長いファイル名のファイルができてしまうので、WINNT.EXEを使ったテキストモードでのインストールで失敗するのでHFSLIPしない方がベター

KB975560は2つあるので注意!
Windows2000-KB975560-nec98-JPN.EXE
はHFSLIP可能だが、
Windows2000-NEC98-DirectX9-KB975560-x86-JPN.exe
は HFに入れて統合した場合、msyuv.dllのコピーエラーが出るので統合しない。HFSLIPのバグ??

リモートデスクトップは msiファイルを取りだして
MSRDPCLI.MSI  /norestart /quiet でサイレントインストール
その後
KB958470.EXE(Windows2000-KB958470-nec98-JPN.EXE)
を入れる

下記はなぜかHFで統合できない
KB973904.EXE (Windows2000-KB973904-nec98-JPN.EXE)
KB977816.exe (Windows2000-NEC98-WindowsMedia-KB977816-x86-JPN.exe)

Windows2000-KB927779-MDAC28SP1-NEC98.exe も、ちょっと特殊なので、HFできないですね。

dotnetについて

dotnet2 は、必須でないのでインストールしなくても、目標1は可能なのですが、どうせなので、自動でインストールさせます。
基本的には、web等で見つかるSNMsynthの使い方通りで良いのですが、2ch のHFSLIP Part5 によれば、

NDP30SP2-KB982168-x86.exeを7-Zipなんかで解凍
NDP20SP2-KB976765.msp
NDP20SP2-KB980773.msp
それぞれIExpress化 (参照 日経トレンディネット)
NDP20SP2-KB976765-x86.EXE
NDP20SP2-KB980773-x86.EXE
とリネームしてSNMsynthフォルダに加え、統合とするそうです。
おそらく、これをやっておかないと、NDP20SP2-KB979909-x86.exe がうまく統合できないかも。

ということで、これらは

\HFSLIP\SOURCESS\NEC98\$OEM$\$1\TEMP
の中に仕込んでおき、インストールの最終段階で、HOTFIX.CMDとして組み込みます。2010-06時点では、こんな感じ(HOTFIX.CMD)です。多少一般的なやり方と違いますが、わざわざ、HOTFIX系だけ別ファイルにして最後に実行しているのは、
追加/削除などの変更をしやすい、急いでいるときなどHOTFIX.CMDの最初に仕込んだタイムアウト処理の間に中断しやすい、その後個別に確認しながらデバッグしやすい、等の理由からです。

9.自動処理等の設定

自動実行ファイルや、ドライバーファイル等を転送
このあたりは、過去のこれ
http://macky.s13.xrea.com/pc98/unattend_pc98.htm
に準拠してこんな感じ

 

なお、ここでも 8.3文字列以上のファイル名があるとテキストモードでインストールしようとするとエラーになるため、$oem$
の中に仕込んでおくファイルは、8.3文字にしておく方が無難です。

\$OEM$\$$\SYSTEM32\DRIVERS の中には DISPFLIP.SYS を入れてある。
\$OEM$\$$\SYSTEM32 にはよく使う統合アーカイバー等の dll などを適当に
\$OEM$\$1\DRIVERS は、使いそうなドライバーを片っ端から入れておく

NVIDIAの 77.77_winxp2k_international_whql.exe だと RVII + GF5200FX でブラックアウトしかし、
84.21_forceware_winxp2k_international_whql.exe だと大丈夫 なぜ?
ただ、このドライバーだと、NV4_DISP2.INF が有るので、8.3文字制限にひっかかるのでファイル名変更が必要

TEMPには、DISPFLIPの設定やら、レジストリの設定やら、長いファイル名のショートカットファイル等を圧縮してまとめたファイル(インストール時に展開)などと、HOTFIXが入れてある。

WIN32APPの中はよく使うエディターやファイラーなどが25MByteほど。

TEXTMODEは、インストール時に必要になるドライバーたちをまとめて入れてある。TXTSETUP.OEMも全部まとめて1ファイルにしてしまった。

ASC.INF
ASC.SYS
UIDE66.SYS
UIDE66.INF
INIA10X.CAT
SYMC8XX.SYS
SYMC8XX.INF
UIDE133.SYS
UIDE133.INF
INIA100.SYS
INIA10X.INF
SI3112.SYS
SI3112.CAT
SI3112.INF
TXTSETUP.OEM
HOTFIX全部とDRIVERに少々の追加ファイル、これだけあわせても 500MByteくらいですので、かなり小さくできてると思います。

10.いざインストール

Win9x の MSDOSモードに、NDIS2 な LANドライバーを組み込み、NETBEUIでファイル共有をかけて、LAN経由で Win2000をインストールします。上記の起動フロッピーに、fdiskとformatxを入れておけば、フロッピー1枚でOKですね。とりあえず、unattend.txt,  unattend.bat等の使い方は前の記事があるので省略します。
 

実際に PenIIIs 1400@700 Single, RAM 512MB, Chanpon2X, GF-FX5200 な RvII に、新品の Intel Mainstream SSD 80Gを接続して試してみました。

FDブートで、FAT32で領域確保 (実際は FDISK でなくてもっと高速なやつで領域確保)、FOMATXでフォーマット
再起動
XPなAT互換機(NetBeui導入済み)の共有フォルダ(RAMDISK上)に接続
WINNT.EXEを UNATTENDを使ってインストール開始。サーバーからファイルがコピーされる。DOSモードで100MなLANとはいえ、RADISKからSSDへなので、かなり高速。
再起動
インストーラーが起動 パーテションを選ぶ←ここだけ手動そうさが入るようにしてある。以後は最後までノータッチ
再起動
GUIなインストーラーが起動
再起動
DOTNET入れるか??で60秒待つ
インストール終了
マイクロソフトアップデートで更新リストが0なのを確認
とここまで、WINNT.EXEを UNATTENDを使ってインストール開始から最後まで、およそ25分でした。
 

11.覚え書き...32G越えな改造SCSI BIOS + 32G越えな改造 disk.sys を使う場合

disk.sysをMSDOSで起動して2回入れ替える必要が有るのでNTFSでフォーマットしないように
まずオリジナルの disk.sys で無人インストスタート
MS-DOSモードのWINNT.EXE (Win9xからだと winnt32.exe)でファイルコピー後、 ブート用のファイル群の中の disk.sy_ だけ 改造disk.sys と入れ替え
再起動
インストーラーが、NEC98の中のファイルをWINNT等のディレクトリへ配置。
再びMSDOSで起動し、system32\drivers の中のオリジナル disk.sys を 改造 disk.sys と入れ替え
GUIなインストール部分が終了し再起動
この時点でなぜか、オリジナルのファイルに戻っているので再再度MSDOSを立ち上げ \winnt\system32\drivers の中の disk.sys を入れ替え
という手順が必要でした めんどくさ〜。たぶん 改造disk.sysはcab圧縮して disk.sy_ にしても署名がらみではじかれるんですかねぇ。
 

作成 2010.7.2  macky