毎回のように書いているが、私は日常のデスクトップとしてDebianの不安定版(sid)を使っている。素人の私には猫に小判だが、最新のパッケージが使えて嬉しい。しかしパッケージのアップデート後に場合によっては起動できなくなることもあるから気をつけなさいと諸先輩方から言われている。そこで仮想環境下にもう一つ sid を構築し、アップデートがある場合はそちらをまずアップデートし、問題がなければ元のシステムをアップデートする、ということを続けている。
仮想環境をフリーで使えるソフトで構築している。以前は VMware Server を使っていたのだが、今は VirtualBox を使っている。インストールが楽なのと各種設定もGUIで簡単にできるからである。
ところで今日、sidで走る VirtualBox のゲストOSとしての sid でアンダースコア("_")が入力できないことに気がついた。なぜ今まで気がつかなかったのかというとゲストOSで文字を入力することがほとんどなかったことと、私は複数のOSをゲストとして使っているのだが、WindowsXP ではこのようなことが発生しないからだ。Ubuntu 8.10 もゲストOSに使っているのだが、やはりアンダースコアが入力できなかった。同様の事例は VMware を使っていたときも発生していた。自分なりに考えておそらく回避できたと思うので、まとめてみる。
毎度のことだが、素人の私が書くことなので正しくないことも含まれるだろうし、私の設定をまねて不具合が起きても責任は負えないことを申し添えておく。
VirtualBox 2.1.2 でホストもゲストも Linux の場合、キーの対応が一部壊れる。
正確に書くと、私の場合、ホストが Debian (sid) でゲストが Ubuntu 8.10 と Debian (sid) の場合でアンダースコアやバックスラッシュが入力できないことを確認した。(検索すると Fedora の例も出てくるので他のディストリビューションでも同様であると推測できる。全部のディストロで確かめたわけではない。)
VirtualBox の2.0以降ではゲストが WindowsXP の場合は正しくキー入力できる。私なりにいろいろ検索してみたが、検索の上位にくるものは、ほとんどがホストが Windows (Vista の例が多いようだ)でゲストが Linux (最近は Ubuntu の例が多そうだ)である。
私のようにホストが Linux ゲストも Linux という例がほとんどない(当たり前かw)。そこで怪しい文章だが、多少は書く価値があるかもしれないと、まとめてみる気になった。
xmodmap を使ってキーマップを変更した。
VMware の場合は、”/etc/vmware/config” などの設定ファイルを変更すれば良かったのだが、VirtualBox の場合そのような方法が検索できなかった。いろいろ悩んだ末、以下のページを参考に xmodmap を使ってキーマップを変更することを思いついた。今のところうまく入力できているので、この方法で良いと私は思っている。(他にもっと良い方法があるかもしれない)
私は以下のように設定変更を行った。
- ホストOS(Linux)で"xmodmap -pke" とコマンドを入力してキーマップを確認する。
- ゲストOS(Linux)にログインして同様に"xmodmap -pke"としてキーマップを確認した。
- 両者の相違点を見つけて、ゲストOSのテキストエディタで書き出し、それを"~/.xmodmaprc"として保存し、ログインしなおす。
以上のような手順でキー入力がホストとゲストで一致し、アンダースコアやバックスラッシュなどが入力できるようになるはずである。
私の場合、VirtualBox で共有フォルダを設定してあったので、ホスト側で、"xmodmap > xmodmap.txt " と適当なファイルに書き出し、それを共有フォルダを経由してゲスト側へ移し、そこでホームディレクトリへ移動して、(ここではxmodmap.txtを)".xmodmaprc" と名前を変更した。
私の場合、自分のPCは私しか使わない、事実上のシングルユーザなのでこうしたが、マルチユーザな環境では、上記のサイトでの「設定を常時有効にする」を参考にされた方が良いかもしれない。