デンマーク語キーボード

***本記事にはプロモーションが含まれています。***

デンマークの人から、キーボードが動かないというメールをもらった。-kオプションを使っているってことだったけれど、Windowsホスト上では-kオプションは-vncオプションと一緒で無いとうまく動かないです。
キーボードのレイアウトについては、ここが詳しいそうです。世界にはいろいろなキーボードがあるものですね。
http://en.wikipedia.org/wiki/Keyboard_layout
キーの番号付けには、こちら。
http://www.penticoff.com/nb/kbds/nbkeynumbers.htm
Windows XPのスクリーンキーボードも入力環境を変えると、キーの表示が変わります。イマイチだけど、確認するにはちょうどいいです。
また、-vncオプションを使わないときは-kオプションを無視するバイナリを作って上げておきました。

ドイツ語キーボード

***本記事にはプロモーションが含まれています。***

結局、いつも使っているWinXPの設定を変更して確認しました。
いろいろ調べた結果、SDL_VIDEODRIVER=windibとSDL_VIDEODRIVER=directxで挙動が違うことが確認できました。
右Altを押してみると、windibの時はleft ctrlのイベントがright altの前に入るんですよね。どうもAltGrキーというのは、無い場合に左Ctrl+左Altで代用するみたいです。でも、実際に生成されるイベントは左Ctrl+右Altで謎が残りますけど。
調べていく過程で、SDLをSDL_VIDEODRIVER=dirextxにすると、右Altキーを押したときにleft ctrlのスキャンコードが送られてこないことがわかりました。
left ctrlのコードが悪さをしているみたいなので、削除すればよさそうなのですけど、実際に試してもらうしか確認はできないと思います。メーリングリストに聞いてみるしかないけれど、調べてくれる人がいるかどうか。
聞いてみたら、答えてくれました。なんか、フランス語も問題みたいです。left ctrlを消すことで直るかどうか。

キーボードの多言語チェック

***本記事にはプロモーションが含まれています。***

ドイツ語キーボードがうまく動かないというメールがたびたびメーリングリストに登場したりして、すこし、チェックできないかなと調べてみました。
Windowsホストの場合、Windows 2000とXPには入力する言語を選択できる機能があります。また、スクリーンキーボードというのがアクセサリにあって、notepadに入力することができます。常用しているWinXPで試してみるのはちょっと怖くてゲスト内でQEMUを動かそうとしたのですが、みごとに動かなかったので、どうしましょう。
Linuxホストの場合、Fedora Coreだとキーボードの言語を変えることによりすぐにドイツ語入力ができるようになります。表示する言語を変えることももちろんできますけど、何言っているのかわからなくなりますのでキーボードだけでいいと思います。
また、Gnome on-screen keyboard(GOK)というのがあって、マウスを使ってスクリーン上で入力できます。xevでイベントを調べてみるとこちらもちゃんと動いているみたい。
これで、日本語環境でドイツ語キーボードのデバッグができるか試せるかな。

QEMUの中のQEMU

***本記事にはプロモーションが含まれています。***

WinXPホスト上で、WinXPゲストを立ち上げ、その中でQEMUを使ってLinuxゲストを立ち上げようとすると、なぜかQEMUがフリーズしてしまいます。
WinXPホストで、Win2kゲストの中でQEMUを動かすと動くんですけど。
Linuxホストでも同じ結果でした。
さて、困った。なにが原因だろう。
gdbstubを使って、Linuxカーネルの止まる位置を確認しようとしたりしてみたけど、フリーズする位置が不安定みたい。それに、エミュレーションの速度が遅すぎて非常にストレスがたまった。
ゲストOSの中で作業するには、QEMUがもう少し速いといいですけどね。
これは、すぐには直せないかもと思った。

Lions' Commentary on UNIX

***本記事にはプロモーションが含まれています。***

昔買ってよくわからなくて、積読になっていたのを思い出した。少し読んでみると、以前よりソースコードの意味がわかるようになっているみたいです。なんか少しうれしかった。
少しずつ読んでみるかな。

CygwinでのGLOBALのコンパイル

***本記事にはプロモーションが含まれています。***

Cygwinで、GNU GLOBALを作ったのですが、cannot make GPATHとかエラーが出て、うまく動きません。
メーリングリストに、config.hのpreadとpwriteをコメントにするとうまく動くという記事をみつけて、そのようにしたらうまく動きました。
ひげぽんさんの所を参考に、Meadowで使ってみたのですが、
active_timers 703 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c pt =
active_timers 727 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c pt =
active_timers 744 /cygdrive/c/msys/1.0/home/kazu/qemu/vl.c for(t =
こんな感じで、探したい単語と、ファイル名は出るのですが、ファイルの内容の右側が切れてしまいます。これは、Meadowを広げれば何とかなりますけど。
ついでに、LinuxのソースコードをHTMLにしてみました。でも、task_structが見つけられなかった。
ソースコードを読むことを考えると、まだM-x grep-findがいいのかなと思います。GLOBALがもう少し洗練されるといいのですけど。たとえば、i386のコードのみが検索されるとかね。
LXRとかだったら大丈夫なのかな。

Windows XPと-kernel-kqemu

***本記事にはプロモーションが含まれています。***

Windows XP SP1aは、-kernel-kqemuオプションつきでは動かないみたいです。ユーザーモードのkqemuだったら動くのですが。kqemu無しでは動かないのも相変わらずです。
Win2kでも、ツールバーの時計をクリックするとフリーズするのは、いつの間にか直っていますね。時間計測の方法が結構変わったからだと思うけれど。時間も正確に刻んでいるようです。

Win32のselect

***本記事にはプロモーションが含まれています。***

Windowsホストだと、VLANが遅いということで、selectを使わずに、イベントとWSAEventSelectを使う改造をやってみています。
実装して、QEMU同士で通信させてみると、TCPで3倍から5倍、UDPでは10倍くらいスピードが速くなりました。なんか、すごいと思った。
Winsock FAQにも書いてありますけど、Windowsでselectを使うのはやめましょう。イベントを使った方が、はるかに効率がいいということですね。Windowsのネットワークスタックは、BSDのものを流用しているはずなんですけど、どうしてこんなことが起こるんですかね。
でも、VLANを使っている人がいるのかどうかわからないのですけど。
パッチとバイナリは、ホームページのほうを更新しておきました。

仮想化やクラウドについて