ESXiでLinuxを動かしていると、管理コンソールであるVMware vSphere Clientからコンソールを開いてLinuxにログインしなければいけない。vSphere ClientはMacでは動かないから、別のWindows機を起動している。Macはいつも起動させているので、計3台のPCが起動していることになる。なんとかLinuxぐらいはMacから接続できるようにならないかと考えたところ、実は研究室にいた頃に、CygwinからLinuxのXを呼び出して接続していたことを思い出した。研究室でやっていたことが役に立つなんて初めてのことかもしれない。もちろん研究内容とは全く関係ないので、研究自体が役に立っているわけではない。

接続方法

接続方法は大きくわけて3つある。

  1. sshでターミナルから接続
  2. sshのX forwardingでアプリの画面だけをMac側に持ってくる
  3. XDMCPでデスクトップの画面を丸ごとMac側に持ってくる

自分の要望としては3のデスクトップを丸ごと持ってくる方法なので、まずはXDMCPを設定する。

XDMCPの設定

ログイン先のLinuxにsshで接続。gdmの設定ファイルを変更して、XDMCPによるログインを許可する。

ssh user@IP
sudo vi /etc/gdm/gdm.conf

[xdmcp]セクションのEnableをtrueに変更する。

[xdmcp]
Enable=true

これでリモート側の設定はひとまず完了。

Macからの接続方法

ターミナルからのコマンドは

X -query IP &

これを実行すると、X11が起動してリモートログイン画面が表示される。僕の環境(OSX 10.6.1)だとコマンドを実行しても、X11のアイコンをクリックするまではログイン画面が表示されない。そして、CPUの使用率が100%に近いことに気がついた。Core2Duoなので、もう一個分残ってはいるけど、なんでこんなに使ってるのか分からない。

キーボードを叩いてみると

Linuxにログインして、キーボードを叩いてみると、キーアサインがでたらめなことに気がつく。仕方ないので、xevを使って、ひとつひとつ確認していく。

xev

実行するとEvent Testerというウインドウが表示される。このウインドウにフォーカスを当てたままキーを押すと、押したキーのキーコードと現在割り当てられているキーが分かる。で、全部のキーを確認する。確認したあとは、xmodmapでキーの割当を変更する。

xmodmap -e "keycode 8 = a"
xmodmap -e "keycode 51 = comma less"
xmodmap -e "keycode 55 = period greater"

これで割当は完了だが、このままだとShiftやControlキーなどがうまく機能しない。そこで、

xmodmap -e "add shift = Shift_L Shift_R"
xmodmap -e "add control = Control_L"
xmodmap -e "add lock = Caps_Lock"
xmodmap -e "add mod1 = Alt_L Alt_R"

を実行して、shiftキーやcontrolキーの関連づけを行う。これをシェルスクリプトとしておいて、ログイン時に実行する。実行権限付けるのを忘れないように。

ログイン場所によって分ける方法は?

WindowsのvSphere Clientからログインする場合はキーコードの再割当は必要ないけど、Macからログインする場合は再割当が必要になる。なので、どこからログインしたかによって、実行するスクリプトが制御できたら、とても便利。さて、どうやってやるんだろう?これはもうちょっと調べてから。

参考