旧型リブレットのWin98SE起動時間短縮(05/01)
目的と方針
Win98SEで動いている旧型リブレットの起動時間の短縮が今回の作業の主目的です。磁気ディスクの使用エリア削減も期待しました。また、これまで敬遠していたレジストリを勉強する良い機会にしたいとも思いました。対象にしたリブレットは50、60、70で、それぞれ複数台を保有しています。今回の作業では http://www.haltz.com/ のWHAT.txtにある「ふみつ記」がとても参考になりました。ありがとうございます。
ディレクトリを削っていくのですからWin98SEの機能を削っていくことになります。私のゴールはVB6で開発したアプリケーションが動くことができる必要最小限の機能を持つWin98SEです。関連知識が徹底的に不足していたのでレジストリの減量はステップ・バイ・ステップで試行錯誤を繰り返すという原始的な作業方法をとりました。regeditの[編集][検索]で削除したい機能に関連した文字列を入力し、見つかったキーを削除します。どのレベルで削除するか、つまり見つかったキーだけにするのか上位のキーごと削除するのかという多少の判断は必要です。「レジストリをすべて検索しました。」が出たら、次の適当な文字列を思い浮かべて検索と削除を繰り返します。ひとしきり削除したら、というか厭きてきたらregeditを終了してWin98SE再起動します。そして件のアプリケーションを実行できれば今回のステップは成功ということになります。うまくいかないときには復旧作業でステップの開始時点に戻ることになります。レジストリを弄るのですからシステムがどのような状態になっても復旧できるだけの知識と機材は必要ですし、何が起きても挫けない精神力が不可欠です。
この文章は自分のためのメモとして作成したものです。あなたも自己責任でレジストリと遊んでみませんか?
しつこいようですが、何が起きても恨みっこなしです!!!
初期作業
c:\Windowsディレクトリの減量
All Users,Application Dat,APPLOG,COMMAND,Cookies,Favorites,FONTS,History,IME,INF
Local Settings,MEDIA,NetHood,OPTIONS,PIF,PrintHood,Recent,SendTo,ShellNew,spool,SYSBCKU
SYSTEM,SYSTEM32,Tasks,TEMP,Temporary Internet Files,VCM,WEB,スタート メニュー, デスクトップ
以上のディレクトリを残します。削除するファイルはWHAT.txtにある「ふみつ記」を参考にしてください。削除しようとしても「Windowsが使っています。」のメッセージが出るファイルは本当に削除できないのかレジストリに記述があるだけの不要なファイルです。regeditで指名手配して見つけ出してからきりきりと取り調べてください。
c:\Windows\Systenディレクトリの減量
IOSUBSYS,mui,sfp,SHELLEXT,VMM32
以上のディレクトリを残します。ファイルの削除については上項に準じます。
c:\Windows\system.iniの減量
[boot]
system.drv=system.drv
drivers=mmsystem.dll power.drv
user.exe=user.exe
gdi.exe=gdi.exe
sound.drv=mmsound.drv
dibeng.drv=dibeng.dll
comm.drv=comm.drv
shell=Explorer.exe
keyboard.drv=keyboard.drv
fonts.fon=vgasys.fon
fixedfon.fon=vgafix.fon
oemfonts.fon=vgaoem.fon
386Grabber=vgafull.3gr
display.drv=pnpdrvr.drv
mouse.drv=lmouse.drv
*DisplayFallback=0
[keyboard]
subtype=2
type=7
kbdjp.kbd=kbdjpa01.kbd
keyboard.dll=
oemansi.bin=
MakeIMEVKey=yes
[boot.description]
keyboard.typ=106 日本語 (A01) キーボード
aspect=100,96,96
display.drv=Chips & Tech. Super VGA
mouse.drv=Toshiba AccuPoint
system.drv=標準コンピュータ
[386Enh]
ebios=*ebios
woadbcsfont=app932.fon
device=vime.vxd
device=*vshare
device=*dynapage
device=*vcd
device=*vpd
device=*int13
mouse=*vmouse, msmouse.vxd
woafont=dosapp.fon
device=fdcmon.vxd
device=pwrsave.vxd
[drivers]
vpm=chipsvpm.dll
wavemapper=*.drv
wave=mmsystem.dll
[drivers32]
vidc.CVID=iccvid.dll
vidc.MSVC=msvidc32.dll
VIDC.MRLE=msrle32.dll
VIDC.VDOM=vdowave.drv
[NonWindowsApp]
TTInitialSizes=4 5 6 7 8 9 10 11 12 13 14 15 16 18 20 22
[Password Lists]
LIB72U=C:\WINDOWS\LIB72U.PWL
[TTFontDimenCacheDBCS]
0 4=2 4
0 6=3 6
0 8=4 8
0 10=5 10
0 12=6 12
0 14=7 14
0 16=8 16
0 18=9 18
0 20=10 20
0 22=11 22
以上が私の場合です。
c:\Windows\win.iniの減量
[windows]
load=
NullPort=None
MouseTrails=-7
run=
[Desktop]
Wallpaper=(なし)
TileWallpaper=1
WallpaperStyle=0
[intl]
iCountry=81
ICurrDigits=0
iCurrency=0
iDate=2
iDigits=2
iLZero=1
iMeasure=0
iNegCurr=1
iTime=1
iTLZero=1
s1159=午前
s2359=午後
sCountry=日本
sCurrency=\
sDate=/
sDecimal=.
sLanguage=jpn
sList=,
sLongDate=yyyy'年'M'月'd'日'
sShortDate=yy/MM/dd
sThousand=,
sTime=:
iTimePrefix=0
[FontSubstitutes]
@標準明朝=@MS 明朝,128,3
@標準ゴシック=@MS ゴシック,128,3
Helv=MS Sans Serif
Tms Rmn=MS Serif
Times=Times New Roman
MS Shell Dlg 2=MS Sans Serif
標準明朝=MS 明朝,128,3
標準ゴシック=MS ゴシック,128,3
Helvetica=Arial
[Compatibility]
INSTALL=0x00400000
[TrueType EUDC]
EudcRanges=f040-f9fc
[Pscript.Drv]
ATMWorkaround=1
[Extensions]
txt=notepad.exe ^.txt
[embedding]
Package=パッケージ,パッケージ,packager.exe,picture
[SciCalc]
layout=0
[Sounds]
SystemDefault=,
[TrueType]
FontSmoothing=0
[Desktop_Shell]
Current=Win
以上が私の場合です。
作業手順
以下の手順を飽きずに繰り返します。確認作業の大切さはいうまでもありませんがバックアップも大切です。検索と削除を繰り返しているときに「これ以上戻るのは御免だ」と思ったときがバックアップする良いタイミングです。
1.regeditを起動する
2.文字列を検索してキーを削除する作業を繰り返す
3.regeditを終了する
4.フリーソフトのCleanSystemDirectoryで不要なdllを別ディレクトリへ移動する(05/01)
5.MS-DOSモードで再起動する
6.scanreg /fixでレジストリを修復する
7.scanreg /optでレジストリを最適化する
8.exitでWin98SEを起動する
9.一連の確認作業
10.c:\windowsにあるsystem.datとuser.datのコンパクトフラッシュへのバックアップか、scanregwによるc:\Windows\Sysbckupへのバックアップ
復旧作業
当然のことですが確認作業で見つかった不具合により復旧方法も異なります。いちばん悲劇的でしかも容赦なく何回も起きるのは、確認作業でそれまで確認していなかった新種の不都合が起きることです。無駄なようでも毎日最後のバックアップを必ず残しておくのがお勧めの対策です。私は何台かのリブレットを次々に乗り換えながら作業を進めました。新しい不都合が見つかったときには作業履歴の新しいリブレットから古いリブレットの順に動作を確認します。確認できたらそこまで逆戻りですが、振りだしに戻るよりはずっとましです。2枚の256メガのコンパクトフラッシュが大活躍してくれました。
復旧に使用できるファイルは
1.scanregwによるc:\Windows\Sysbckupへのバックアップ
2.system.datとuser.datのコンパクトフラッシュへのバックアップ
3.他のリブレットでregeditの[レジストリ][レジストリ ファイルの書き出し]により作成した.regファイル
4.他のリブレットからコピーした.dllファイル
5.Win98SEセットアップCD
です。不調になったリブレットの治療方法は以下の通りです。言うまでもありませんが最悪の場合はWin98SEの再インストールです。
1.セットアップ用起動フロッピーでDosを起動して他のリブレットからのファイルをコピーする。system.datとuser.datはコピー不能。
2.F8を押しながら起動し、Command prompt onlyとしてscanreg /restoreする。
3.F8を押しながら起動してSafe modeに入り、コンパクトフラッシュにあるデータを取り込む。.regファイルはダブルクリックすれば良い。system.datとuser.datのバックアップをc:\Windowsへ上書きした時はリセットボタンを迷わずに一突きする。この場合は再起動後に[マイコンピュータ][(c:)のプロバティ][チェックする]が必要になります。磁気ディスクがキャッシュ付の時にはリセットボタンの一突きは致命傷になります、というか、私の場合はなりました。キャッシュ付の時にはUSB接続のケースに入れたりして別のパソコンで作業してください。c:\Windowsへ上書きしてからリセットしないで、メモリと磁気ディスクにあるレジストリの内容が同じでない状態のまま普通にシステムを終了しても予想通り上手くいきませんでした。
4.Win98SEを起動する。治療方法はSafe modeに準じます。
5.ネットワークカードなどをすべて削除してから再稼動してネットワーク関係を再セットアップする。
6.[コントロールパネル][アプリケーションの追加と削除][Windowsファイル]で例えば[マルチメディア]のチェックをはずして[適用]してからチェックをつけて[OK]として再セットアップする。
感想など
結果から言うと今回の作業は大成功でした。内蔵ディスクを5400rpmにしたリブレット70は電源投入からパスワード入力パネルの表示までが45秒となり、リブレット50ですら68秒と70秒を僅かですが切りました。インストール直後の数字ではありませんが112秒というメモが残っていますので44秒の削減です。電源投入後のメモリチェックに14秒ほどかかっていますので98秒が55%の54秒になったことになります。起動時間短縮だけでなくシステムが固まることなく長時間安定稼動することも期待しています。また私がレジストリに対して親しみをもてるようになったのも今回の収穫のひとつです。レジストリは意外と丈夫だと大昔に何かで読んだ記憶がかすかにありますが確かに丈夫でした。レジストリがWin98SEの動作環境を仕切っていることを実感できましたし、ディレクトリのいろいろな記述に触れることで更なるWin98SEそのものの理解の必要性も痛感しました。懸案のWinCE用プログラム作成の前にWin98SE用のVC++プログラムを組んでみることになりそうな予感がします。
二回戦
所期の目的は達したものの一部の機能が欠けてしまったためにどうしても満足できず、意を決して最初から作業をしなおしました。方針は「ディレクトリ記述の削除をファイル削除に優先する」です。ディレクトリは簡単に復旧できますがファイルの復旧は面倒に思えたためです。ディレクトリの削除はキーワードを決めてから取り掛かり、削除中には関係のない記述に触れませんでした。削除したキーワードを列記してからシークエンス番号を拡張子としたディレクトリ、たとえば「Java.XML.0」、あるいは「0Java.XML」でも可、を作成して作成後のsystem.datとuser.datを保存しました。不要と判断した記述は容赦なく削除したために削除の履歴が分からなくなったこれまでの作業方法の反省です。system.datが1389KB、user.datが113KBと前回並みになったので作業を打ち切りました。今回は確認作業をしっかりと行ったためにずっと出来の良いシステムになっています。
削除した主要なキーワードは、Java、XML、HTML、Direct、Active、Mpeg、Movie、Music、Outlook、OLE DB、Imading、Help、Paint、WordPad、Mplayer、Midi、Joystick、Video、Capture、MCI、FTP、ICW、MSDA、JET、Game、Chat、Walletです。あれっ、Phone、Dialが落ちていますね。私のアプリケーションは自分でも忘れてしまいましたが何らかの理由があってWin95ではなくWin98を使っているはずです。しかしここまで多くの機能を外したWin98で動いているようでは、再度Win95で動くかを確認する必要があるようです。また、Microsoft Scripting Runtimeを使用しているためかアプリケーションの実行時にエラーが起きる場合がありましたが、WindowsScript5.6をセットアップしたらエラーは発生しなくなりました。レジストリを削除しすぎて動かなくなった機能をセットアップで回復できた例です。セットアップ機能だけを残したガリガリのレジストリを作成してから私のアプリケーションをインストールし、それが動いたらレジストリからセットアップ機能を削除すると終局のWin98が実現するのではないかと思い始めました。
キャッシュ付ディスクのsystem.datとuser.datの書き換えは、元になるパソコンで「scanregw」の実行、c:\Windows\SYSBCKUPにあるrb*.cabファイルのコンパクトフラッシュなどへのコピー、このrb*.cabファイルを目的のパソコンのc:\Windows\SYSBCKUPへのコピー、「scanreg /restore」を実行してrb*.cabの最新の物を指定する、で良いようです。レジストリが書き換えられているために再起動すると盛大にエラーが起きることがありますが、そのままWin98を立ち上げててネットワークカードを削除してから再起動してネットワーク関係を再設定すれば落ち着くはずです。
しかし考えてみればおかしな作業です。普通は必要な機能を選択してからシステムを作成・インストールしますが、Windowsではお仕着せが大部分のために、出来たものから不必要な機能を剥ぎ取るというシステムのディグレーションをするのですから、、、
先頭ページへ戻る