« 2014年10月 | メイン | 2014年12月 »

2014年11月 アーカイブ

2014年11月29日

VMWareでのFreeBSD 9.3のX Window環境セットアップ

6月くらいに、JIRAをFreeBSDで動かしてみようと思って、以前と同じ要領で、当時、バージョン番号の末尾が0のものを除いた最新のFreeBSD 9.2をVMWare 5.5にインストールしたが、rxvtで日本語が表示されなくて、苦労することがあった。
結局、それは解決したのだが、その頃にはFreeBSD 9.3が出ており、折角なのでそれをセットアップしようと思い、sysinstallコマンドからPackagesをインストールしようとすると、"Unable to get packages/INDEX file from selected media."というエラーになり、右往左往してしまった。FreeBSD 9.3/10.0からpackagesの管理システムが"pkgng"に変わったことに関係しているらしい。
筆者は近年、FreeBSDの新たなバージョンをインストールする度に、必ず何かにつまずいている。最近の動向にキャッチアップする努力をせずに過去の環境に固執しているのが原因であり、色々情報を漁ればもっと便利な環境が手に入るとは思うのだが、今回も、とりあえず必要だった最低限の情報をまとめる。

●VMWareにてFreeBSD 9.3のX Window立ち上げまでにやったこと

  1. FreeBSD 9.3をインストール後、コマンドラインからパッケージをインストール
    pkg install open-vm-tools xf86-video-vmware xf86-input-vmmouse xorg-minimal
  2. /etc/rc.confに以下を追加して再起動
    hald_enable="YES"
    dbus_enable="YES"
    vmware_guest_vmblock_enable="YES"
    vmware_guest_vmhgfs_enable="YES"
    vmware_guest_vmmemctl_enable="YES"
    vmware_guest_vmxnet_enable="YES"
    vmware_guestd_enable="YES"
    ※再起動しなくても
    foreach s (hald dbus vmware-kmod vmware-guestd)
    service $s start
    end
    とすれば良いのだが、起動時にそれらが自動的に起動されることを確認するために再起動した。
  3. /usr/local/etc/hal/fdi/policy/x11-input.fdi を以下の内容で作成し、service hald restart
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <deviceinfo version="0.2">
     <device>
      <match key="info.capabilities" contains="input.keyboard">
       <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
       <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
       <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
       <merge key="input.x11_options.XkbOptions" type="strlist">terminate:ctrl_alt_bksp</merge>
       <append key="input.x11_options.XkbOptions" type="strlist">ctrl:nocaps</append>
      </match>
     </device>
    </deviceinfo>
    
    参考:/usr/local/share/hal/fdi/policy/10osvendor/10-x11-input.fdi
    反映を確認するには、lshalを実行する
  4. /etc/X11/xorg.confの作成
    Xorg -configure
    /root/xorg.conf.newを開き、Depth 24の所に
    Modes "1024x768"
    を追加してデフォルトの解像度を変更し、
    mv /root/xorg.conf.new /etc/X11/xorg.conf
  5. /etc/hostsにhostnameを127.0.0.1として追加
    (無いと、xauthがbad display name "...:1"というエラーになる)
  6. テスト実行
    上の組み合わせではxtermやtwmがインストールされないので、いずれ必要になりそうな、代わりのものをインストールする
    pkg install rxvt-unicode
    pkg install open-motif # mwmを含む
    ~/.xinitrcを次の内容で作成し、startx
    nohup vmware-user-suid-wrapper 2>&1 > /dev/null &
    mwm &
    exec urxvt
  • 日本語キーボード対応になってること
  • マウスカーソルがシームレスに動くこと
  • Windowsとクリップボードを共有できること
  • Ctrl+Alt+Backspaceが効くこと
  • Caps Lockは効かないこと
を確認

なお、FreeBSD 9.2のPackagesでopen-vm-toolsをインストールするとvmware-toolboxコマンドがインストールされたのだが、9.3でpkgngでインストールすると、vmware-toolboxコマンドが見当たらない。
しかし、仮想ディスクのshrinkくらいにしか使ってないし、それも

vmware-toolbox-cmd disk shrink /
とすればできるので、それほど困らない。

なお、open-vm-toolsのファイル共有機能は、kernel panicになることが知られているが、筆者の環境でも確かにkernel panicになったので、諦めてSambaをインストールした。

【12/30追記】
この記事を書いた当時は、このようにfdiファイルを用意すれば日本語キーボード(jp106)の設定になっていたのだが、今日、pkg upgradeすると、これでは日本語キーボードにならなくなった。
原因はよくわからないが、とりあえず

setxkbmap -layout jp -model jp106
とすると日本語キーボードになるようなので、これを~/.xinitrcに書けば良さそうである。

●Xorgの日本語環境のセットアップ

まず、日本語フォントであるが、

pkg install ja-font-std
とすると、大体足りる。しかし、筆者はxlsfontsとやってcourierとかlucidaとかtimesとかが出て来ないと不安だったり、rk24の大ファンだったりするので、
pkg install xorg-fonts
ともする。

urxvt(rxvt-unicode)で日本語を表示するには、

setenv LANG ja_JP.UTF-8
又は、bashの場合や.xinitrcに書く場合は
export LANG=ja_JP.UTF-8
とした後に、urxvtを起動すれば良い。urxvt起動後に行うのは無効である。

urxvtのフォントを変更するには、引数-fnで指定するか、Xリソースにて指定する。
例えば、このようにする。

urxvt -fn rk24 &
XFTのフォント名も使用可能である。XFTのフォント名一覧はfc-listコマンドで取得できる。
urxvt -fn 'xft:terminal, xft:M+2VM+IPAG' &
urxvt -fn 'xft:IPAGothic:size=12' &
良いのが決まったら、Xリソースに登録する為、~/.Xdefaultsか、xrdbを使っている場合は~/.Xresourcesに書いておく。
urxvt.font: xft:IPAGothic:size=12
なお、こういう書式とか(並べされたフォントが順に検索される)、
urxvt.font: xft:terminal, xft:IPAGothic:size=14
こういう書式もある。
urxvt*font:\
  [codeset=ISO8859]x:-*-*-*,\
  [codeset=JISX0201]x:-*-*-*,\
  [codeset=JISX0208]x:-*-*-*
この辺りの書式は、man urxvt に書かれている。

本記事の冒頭で、rxvtで日本語表示ができないと悩んだのは、以前のFreeBSDにはja-rxvtというpackageがあり、それをインストールするとrxvtで日本語が表示できていたのだが、9.xではja-rxvtが無くなっており、それに気付かずに普通のrxvtを入れていた(元々rxvtは日本語表示ができない)のが原因だった。

なお、ktermは、-kmオプションやXリソースのkanjiModeでeucやsjisやutf-8を指定しないと、ロケールに関係なく、JISコードの日本語テキストしか表示されない。これまであまり意識してなかったのだが、今回はこれを忘れて、ど壷にはまってしまった。
rxvtでもktermでも日本語が表示されないので、フォントかロケールに問題があるのだと思い、あらぬ方向に莫大な時間を使い、無駄にしてしまった。
rxvt/urxvtで日本語が表示されて以来、ktermは必要なくなったが、nkfとかが無くてもShift-JISのテキストファイルが表示されたりするので、使い道はあるのかも知れない。

筆者は過去のある時点からkinput2の設定がうまくできなくなり、それ以降、over-the-topな日本語入力FEPを使わず、X Windowでの漢字変換は全てEmacs+anthy.elで行っていたのだが、今回、ibus-anthyというのを使ってみた。

pkg install ibus-anthy
Xを起動し、ibus-setupすると、次の環境変数を$HOME/.bashrcへ追記しろと出てくるが、bashは使ってないので、.xinitrcに追記する。
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=xim
ついでに、次の、ibus-daemonを起動するコマンド等も追記しておく。
export XIM=ibus
export XIM_PROGRAM="ibus-daemon"
export XIM_ARGS="-r --daemonize --xim"
${XIM_PROGRAM} ${XIM_ARGS}
Xを再起動し、再度ibus-setupを起動し、
  • キーボードショートカットにShift+spaceを追加
    (kinput2時代からの定番キーだから。デフォルトの<Super>spaceとはWindowsキー+spaceのことらしい)
  • 「インプットメソッド」として「日本語 - Anthy」と「英語 - English(international AltGr dead keys)」を追加
とすると、Shift+spaceで日本語入力モードと英語入力モードが切り替わるようになる。

さて、FreeBSD 9.2でインストールするとibus-1.4.1だったのだが、9.3ではibus-1.5.5になった。このibus-1.5というのが、すこぶる評判が悪いのだが、筆者も、非常に使いづらいと思った。
まず、上記の、日本語モードと英語モードが切り替え可能な状態にするのに、かなり手間取った。ibus-1.4だと「インプットメソッド」に「日本語 - Anthy」を足すだけで良かったのに、ibus-1.5だと、それだとショートカットキーを押しても英語入力モードに戻らなくなった。
さらに、日本語入力モードにした時に現れる入力バーがバグっている。ibus-1.4だと

こんな感じのバーだが、ibus-1.5だと

こうなる。しかも勝手に消えるので、今が日本語入力モードなのかどうかがわからなくなる。
設定方法を調べようという意欲が削がれるのに十分な悪印象である。
FreeBSD 9.2で使い始めて間もないが、もうibusを触るのが嫌になった。

本格的なデスクトップ環境が必要になるまでは、Emacs+anthy.elで頑張ることにする。

参考リンク 404 Blog Not Found:備忘録 - FreeBSD 10 あれこれ

続きを読む "VMWareでのFreeBSD 9.3のX Window環境セットアップ" »

About 2014年11月

2014年11月にブログ「Weblog on mebius.tokaichiba.jp」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2014年10月です。

次のアーカイブは2014年12月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35