VMware の話のなかで Bochs というのが話題にでたのでチェックしてみた。 記事などを見ていると QEMU の上の方が高速に動くという評判である。
先日 Wine を試してみたものの、結局 Windows の DLL とかがたくさん必要でいろいろ面倒なわりにソフトウェアの動作確認環境としては不安定すぎて使えない感じだ。 ということで QEMU の上に Windows をインストールしてみることにした。
Debian のパッケージになっているのでそれをインストール:
apt-get install qemu
今回は Windows 2000 Professional をインストールしてみる。 手元にあるのがアップグレード版なので Windows 98 の CD-ROM も必要。 それぞれ dd でイメージを作っておく (w2kupdate.iso、w98.iso)。
とりあえず2GB。
qemu-img create w2k.img 2G
/var のパーティションに余裕があるので、/var/lib/qemu を作ってそこにおく。
HDD イメージ・CD-ROM イメージを指定し(-hda、-cdrom)、CD-ROM からブートするようにオプションを指定(-boot d)して QEMU を起動。QEMU のグラフィックモードでマウスクリックした後、なぜか Ctrl-Alt してもマウスを grab したまま離してくれないので、QEMUモニタは qemu を起動した端末側にしておく (-monitor stdio)。 メモリは1GB実メモリの半分、512MBにしておく(-m 512)。
qemu -hda /var/lib/qemu/w2k.img \ -cdrom /tmp/w2kupdate.iso \ -boot d \ -m 512 \ -monitor stdio \ -user-net
インストール開始。 途中で Windows 2000 より前の OS の CD-ROM を要求される。 QEMU モニタ上で CD-ROM を交換
change cdrom /tmp/w98.iso
しかし、インストーラは正しい Windows 98 インストールディスクとして認識してくれず。 Windows 2000 を直接インストールするのは諦め。
遊びでちょっと sarge のインストールをちょっと途中まで QEMU 上でやってみる。 以前のインストーラより設定項目が少なくなった?
で気をとりなおして、Windows のインストールの続き。 Windows 98 SE をインストールしてから、Windows 2000 へアップグレードすることにする。
Windows 98 の起動ディスクのイメージを dd で作成 (w98fd1.img)。
これでブート
qemu -hda /var/lib/qemu/w2k.img \ -cdrom /tmp/w98.iso \ -fda w98fd1.img \ -boot a \ -m 512 \ -monitor stdio \ -user-net
こちらは順調にインストールが進む。 1時間以上かかってインストール完了。
Windows 98 起動中はCPUパワーを100%使うので、ファンががんがん回ってうるさいうるさい。
あいかわらず ungrab できないのが困るな。 1度 QEMUのグラフィカルウィンドウ上をクリックして grab されてしまうと、他のウィンドウにフォーカスを与えることができなくなってしまう。 Windows 98 側でシャットダウンして QEMU を終了させるか、Ctrl-Alt-Backspace で X Window System もろとも落とすとかしか手段がない。 Windows 使用中、他のウィンドウが使えないというのでは利用価値半減。
要調査。
昨日の続き。
QEMU 上にインストールできた Windows 98 SE を Windows 2000 にアップグレード。
こちらは特に問題なし (アップグレード時にちょっとエラーダイアログが出たが致命的ではない様子)。
Windows 2000 にアップグレードしたらアイドル時にCPUを100%使わないようになった。素晴しい。 そのかわり、シャットダウンしても電源断(=QEMU終了)はしなくなった。
Windows Upgrade ではSP4以外はアップデートできた。 Windows Upgrade からの SP4 インストールは、ファイルのダウンロード中にエラーが起きて先に進まない。
別途SP4のアップデータをダウンロードしてインストールしてみたが、こちらも途中でエラー終了。
Window Maker との関連による問題かと思い、Blackbox Window Manager をインストールしてその上で動かしてみたが駄目。
うーん。困った。
X Window System 関連の設定を再チェックしてみる。
あれ ~/.xinitrc の中で呼んでいるスクリプトにこんなのがある:
#!/bin/sh # set alt as meta key # ref man xmodmap xmodmap -e "keysym Alt_L = Meta_L Alt_L"
1999年4月6日のタイムスタンプのファイル。 うーん、いつだったか多分 Emacs 用に設定したんだと思う。 今は必要ない。
これをはずしたら QEMU 上で Ctrl-Alt が使えるようになった。 良かった良かった。
WiKicker の Win32 対応のために、ファイル処理まわりや flock を使っているところを中心としたテスト・修正作業。
これでようやく Win32 で動くようになったかな。 まだ一部警告が出るけど。
しかし ThinkPad X31 (2672-PHJ、Pentium M 1.60GHz [Banias]) の上での QEMU + Windows 2000 は、やっぱり遅すぎて動作検証には使いづらい。WiKicker で1ページの処理に10秒以上かかったりするし。 結局 VNC を使って、別のPCで作業を行った。
Windows で「最後がピリオド(.)で終わるファイル名」を新規作成する。 最後のピリオド(ドット)が無くなる。
……。
8.3形式の名残なのか? Explorer 上で作成しても、プログラム(Perlスクリプト)から作成しても駄目。
環境は Windows XP Home Edition SP2 + NTFS。 Windows 2000 + NTFS でも同様。
これは WiKicker のテストをしていて気がついた。 WiKicker では「PageName の base64 を生成し 『/』 を 『.』 で置き換えたもの」をファイル名にしている。 例えば UTF-8 で「タ」は
44K/
となるので、ファイル名は 「44K.」となる。 で最後の文字が消えてしまうので、デコードするとおかしくなると。
これを機会に Windows 環境でのエンコーディングは RFC3548 「4. Base 64 Encoding with URL and Filename Safe Alphabet」を使うように変更するか。
本当は全てこれに変更したいのだけれど、すでに動いている WikiForum の事を考えると移行は難しいかも。
Linux kernel 2.6.15 で MADWIFI がうまく動かないようなので、NdisWrapper を試してみることにした。 NdisWrapper は、Linux で Windows の NDIS (Network Driver Interface Specification) 無線 LAN ドライバを使えるようにするラッパーモジュールである。
モジュールをインストール:
#apt-get install ndiwrapper-source #module-assistant prepare #module-assistant auto-install ndiswrapper #apt-get install ndiswrapper-source
lspci でコントローラを確認:
#lspci 0000:02:02.0 Ethernet controller: Atheros Communications, Inc. AR5212 802.11abg NIC (rev 01) #lspci -n 0000:02:02.0 0200: 168c:1014 (rev 01)
Lenovo からドライバをダウンロード:
Windows 上で展開してできた WINXP_2K ディレクトリを Linux 上にコピー。
ndiwrapper コマンドでドライバをインストールする:
#cd /path/to/WINXP_2K #ndiwrapper -i NET5211.INF #ndiswrapper -l Installed ndis drivers: net5211 driver present, hardware present #modprobe -a ndiswrapper
wlan0 でインタフェースが作成される。 MADWIFI と同じ無線 LAN 設定で、つながった。
通信も成功。
しかし、やはり大きなファイルの転送が途中で止まってしまう。
うーん、もしかしたらドライバ以外の問題なのだろうか。
「ついつい保存しようとして Ctrl+S を押して Web ブラウザの保存ダイアログを開いてしまうんだよね。Ctrl+S で (WikiPage を)保存してくれると嬉しいんだけれど。」
WiKicker を使用している同僚からのアイデア。 自分にとって C-s は Incremental search forward (`isearch-forward') であって保存ではないので、あまり関係ないといえばないんだけれど、その気持ちは良くわかる (C-p で 印刷ダイアログが開くのうざい)ので、試しに実装してみることにした。
ただしいきなり Ctrl+S で保存はちょっとデンジェラスなので、プレビュー画面に移動するようにしてみる。
例によって Web ページ上の JavaScript におけるイベント処理は、Web ブラウザ依存バリバリなのね。 テストが面倒(自分でできない/自動化困難)なので、できるだけ近付きたくはないのだけれども。
とりあえず、Firefox 1.5.0.2 on Debian GNU/Linux と、Internet Explorer 6 on Windows 2000 では動くことを確認するところまできた。
喜べ松下君。
HDD 交換にともなって Debian GNU/Linux の再インストールを行うのにあたって、Debian のネットワークインストール CD イメージ (debian-31r2-i386-netinst.iso) をダウンロード。
で自宅の PC で、CD-R に焼こうと思ったら CD-R/RW DVD-ROM ドライブ (リコー MP9210A)を認識していない。 以前 Windows 98 SE から Windows 2000 にあげた時から使ってなかったから、そのせいかな。
インストール CD までは今日作成して、ThinkPad X31 + ThinkPad USB ポータブルCD-ROMドライブ (USB 接続)でブートできるところまで確認しておきたかったのだが。
残念。
ここ数日、HDD アクセスランプが光ったままフリーズしてしまうことがあった社内サーバであるが、今日も出勤したらフリーズしていたので再起動したのだけれどついに起動しなくなってしまった。
FastTrack TX2000 で RAID 1 を組んでいる array が Critical と表示。無理矢理先に進めても Windows 2000 起動時にブルースクリーン。 FastBuild Utility でみてもどちらの障害だかわからなかったので片方ずつ HDD を抜いて起動させてみたところ最初の HDD が NG。もう片方は無事起動できて一安心。データ全滅は免れた。 代替 HDD 用意してないのでどうするかな。同じモデル今から入手できるだろうか。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。