2008/06/17(Tue)Boot Windows from USB-HDD

2008/06/17 23:53 Software::Windows
前々から環境整備したWindowsをポータブルに持ち運べないかと考えていた。

PXEブートだとか、色々難しく考えすぎていたのかもしれないが、ググってみたら、意外と簡単に行けそうなことが書いてある記事があった。
USB外付けHDDからWindowsをブートする(1)


試してみたいのはやまやまだけど、ちょっと時間がないのでまたに…。

でもなぁ、Windows環境を持ち運べるようにしたところで、そのライセンスはPC1台分必要だし、繋ぐPCによってドライバ関係がめんどそうだし、何より……電源レスにしようとしたら、2.5インチHDD=遅いからあんまり意味はないかなぁ。

2008/06/07(Sat)UltraVNC SC

2008/06/08 00:13 Software::Windows

UltraVNC SCとは

UltraVNCの派生的存在のUltraVNC SCというのがあります。
UltraVNCは他のVNCソフトウェア同様、遠隔操作のためのツールの一つであるが、このSCというのはSingle Clickの略で、遠隔操作を使用したサポートにもってこいのツールですね。

UltraVNC SCのすすめ

離れた場所にあるPCをサポートしたことのある人なら誰もが経験していると思いますが、まず「サポートしづらい」でしょう。
離れた場所にあるPCをモニタリングなどできないから、
  • 電話・メール越しに状態を聞いてアドバイスするとか
  • メッセンジャーでお話しながら聞くとか
一種のエスパー的推測をしながら対処していることだろうと思います。

UltraVNCSCを使うと、相手にファイルをひとつ送って開いてもらい、1クリックしてもらうだけで、こちらにVNC同様、画面がリアルタイムに送られてくる。もちろん操作もできます。
UltraVNC付属機能の、ファイル転送なんかもできる。
相手がファイアーウォールの圏内にいても、問題なし。
唯一の弱点といえば、相手がWindowsに限定されること、支援する側のポートが開いていないといけないくらいでしょうか。

構築方法

幸い便利な生成ソフトが作られているので、これを使うとよい。
画面レイアウトをカスタマイズしてEXEを作るだけ。
後は、USBメモリで渡すなり、メッセンジャーで渡すなり、無料HPのサーバーに置いておくなり好きにすればよい。

一方、支援する側にも設定が必要です。
もっとも、支援する側なんだから、これくらい事はわかってくれると思って書きますが。
  1. TCPポートをひとつ開けます。ルーターを使っている場合は、NAT設定で、支援するPCに転送するように設定しておきましょう。
  2. ファイアーウォールで、そのポートが使えるように開放しておきます。
  3. UltraVNCのvncviewer.exeをListenモードで起動します。具体的には、vncviewer.exe -listen <port-number>
これだけです。

ファイアーウォールを越える仕掛け

↑で支援する側にvncviewer.exeをListenモードで立ち上げるのがミソです。
ビューワ側にサーバー的役割(Listen)をさせることで、支援される側のファイアウォールを内側から開けることができ、その開いたポートを使って、UltraVNCSCから画面情報をこちらに流してVNCするわけです。
考えた人は偉いですね。

レスポンスが悪い場合

UltraVNCSCで作ったsc.exeは、一応2000やXP、Vistaなどで使うことができるようですが、Vistaの場合、極端にレスポンスが低下することがあります。
これを解決するには、UltraVNC本体に含まれているVideo Hook Driverを組み込んでやるとよい模様。
UltraVNC 1.0.4RC14 日本語版 Release 1等に含まれている、Ultravnc_driver_Setup.exeを、支援する人のPCでインストールしてもらえば、サクサク動くようになります。


有料の遠隔支援ツールを使わなくても、こんなに素晴らしいツールがありますよ。。。

2008/06/04(Wed)システムフォントサイズが…?

2008/06/04 06:30 Software::Windows

フォントが小さすぎる所がある

x64を導入してから特に目立ったシステムトラブルはなかったのだが、フォントのサイズがやけに小さい場所があって、困っていた。それも自分で指定しているのではなく、システムデフォルトのフォント指定のところが、である。

具体的には、このように(MS UI Gothicの8ptだろうか?)文字サイズもFormサイズも潰れるほど小さくなってしまうのである。
(ちなみに下のソフトは、自分が組んでいるソフトのプロトタイプバージョンです。)

prinpa_8pt.png


非公式テーマ(.msstyles)を使っているだとか、その非公式テーマを適用するためにuxtheme.dllにパッチを当てているのが原因かとか、MSGothic.ttcのバージョン違い?などといろいろ考えて実験してみた。
やっぱりここでもVMが大活躍。大概カスタムを施していないVMの方では正常な挙動をすることが多いので、同環境の正常個体として役に立つ。これでこそメモリを増やした甲斐があったものだ。

テーマ設定が悪い?

確かにウィンドウタイトルバーやアイコン等は"Tahoma 8pt"に設定されているが、明らかに上の画像の部分はTahomaではないし、ウィンドウ内のLabelコントロールのフォントを指定できるようなところは画面のプロパティにない。

display_design_setting.png


しかも、正常なVM内とホスト側、どちらもすべて同じ設定値。
よってこれは違う。

DPI設定?

システムのフォントサイズといえば、DPI設定がある。

display_dpi_setting.png


が、これも正常なVM内とホスト側、どちらも96DPI。
よってこれも違う。

uxtheme.dll?

どちらもパッチ済みでCRC比較しても一緒だった。これも違う。

ならば何だ?

と思ってレジストリをパラパラ見ていると、それらしいのがあった。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize

▼VM側
gre_initialize_vm.png


▼ホスト側
gre_initialize_host.png


という風に明らかにGUIFont.Height(DWORD) = 0x00000009といいうのが足りない。しかもいま9ptにならなくて悩んでいるので速攻で設定してリブート。

無事、ちゃんと意図したようになりました。
やれやれ。

▼左(異常)、右(正常)
prinpa_8pt.png
prinpa_9pt.png


何でこのエントリが削れたんだろう?

[追記] 2008/06/08

MicrosoftのKBWindows Server 2003 R2 with SP2 適用済みのメディアからシステムをインストールした場合 表示が小さくなる場合があるに書いてありました。
うーん何でこれが不足するんだろうねw

Windows XP x64の情報を探すときは、Windows 2003R2の情報を探す方がいいのかも。

2008/06/04(Wed)回復コンソールをHDDにインストールできない!

2008/06/04 05:58 Software::Windows

さて、今回は回復コンソールの話。

回復コンソールはWindowsがセーフモードでも起動しなくなった時や、セーフモードよりもっと低層のファイル操作が必要な時などに重宝する。

通常はWindows XPのインストールCDから起動し、ドライバを読み終わった後で[R]を押して回復コンソールへログインするのだが、HDDにインストールし、ブート時にメニューから選択することもできる。


回復コンソールをHDDへ

ググるとすぐに出てくるのでリンクを張るまでもないかもしれないが、Windows XP での回復コンソールのインストールおよび使用方法である。

が、x64の場合は\i386\winnt32.exeではなく、\amd64\winnt32.exeである点に注意。Technetの方には書いてあるのだが、何故↑のKBに書いてないんだろう…?


インターネットから更新パッケージを調べ、順調にファイルをコピーしていくのだが、最後で詰まった。

ファイル a3lb241a.sys(a9doe4m5.sys)*1をC:\$WIN_NT$.~BT\a3lb241a.sys(a9doe4m5.sys)にコピー中にエラーが発生しました。

ファイルが不足しています。システム管理者に問い合わせてください。

コピーの再試行、このファイルのスキップ、またはセットアップの終了を選択できます。

* [再試行]を選択した場合は、ファイルをもう一度コピーしようとします。

* [ファイルのスキップ]を選択した場合は、ファイルはコピーされません。これはWindows システムファイルの詳しい知識があるユーザーを対象にしています。

* [セットアップの終了]を選択すると、後で再度セットアップを実行して、Windows をインストールまたはアップグレードする必要があります。


cmdcons_err1.png:cmdcons_err1.png:cmdcons_err1.png

cmdcons_err2.png:cmdcons_err2.png:cmdcons_err2.png


こんなsysファイル見たことないなぁ…と思いつつ、セットアップCDからCドライブのいたるところ、特にdriver.cab等を重点的に探したのだが出てこず。


*1 : 何度繰り返してもファイル名が変わらなかったが、再起動して再度winnt32.exe /cmdconsを試すと、ファイル名が変わっていた…

強行突破

を図って、回復コンソールをブートさせてみたが、Loading files...の一番最後でこのファイルが見つからないと言って強制停止を食らった。

これでもだめならば、VMwareの同様の環境で試そうということで、試してみるとVM側はあっさりインストールが完了。あれ?

C:\cmdcons\以下をDiffしてみると、Winnt.sif、Bootsect.datが双方で異なったが、一個だけファイルがそもそも片方にないのがあった。

unsupdrv.infというファイルである。

中身はというと…

[Version]
Signature = "$Windows NT$"

[AddReg.a9doe4m5]
[Files.a9doe4m5]
a9doe4m5.sys,system32\drivers
[HardwareIds.a9doe4m5]
*PNPA000=a9doe4m5
ACPI\PNPA000=a9doe4m5
[Devices]
a9doe4m5

中身の名前からしてもこれに間違いない。

とりあえず削除してみると、回復コンソールが無事に使えるようになった。やれやれ。


後書き

a3lb241aやa9doe4m5という名前に全く心当たりはないけれど、unsupdrv.infという名前がついているあたり、Unsupported Driverじゃないかとの助言をつーさ氏から受けた。なるほど……。

そういえば、問題が起きたPC上(マザボ: ASUSTek P5B Deluxe/WiFi-AP)では、ASUSが配っている謎のACPI virtual deviceというドライバを導入してたっけな。これ絡み?

とりあえずACPIの制御を回復コンソールでやることはないであろう……。