«前の日(05-13) 最新 次の日(05-15)» 追記

meta's blog - The Power To Serve

筆者について

FreeBSDを通じてOSSにささかな貢献を。

OSS活動をご支援いただける方を募集しています


2012-05-14 Bluetooth

FreeBSD で Bluetooth マウスを使う…も USB マウスを挿していないと使えない

Mitzyuki's Blog :: FreeBSD で BlueTooth マウスを利用する あたりを参考にしました。

使うマウスは1000円くらいで買ったSoftBank SELECTION Bluetoothレーザーマウス MO01

Bluetooth を使うためにカーネルモジュールをロードする。

cat >> /boot/loader.conf <<EOF
netgrph_load="YES"
ng_ubt_load="YES"
vkbd_load="YES"
EOF

Bluetooth のデバイスアドレスを調べる。

# hccontrol -n ubt0hci inquiry

出力結果の BD_ADDR の部分がデバイスアドレスなのでこれを /etc/bluetooth/hcsecd.conf に書き足す。

# softbankmouse
device {
        bdaddr 00:a0:b0:e2:xx:xx;
        name    "softbankmouse";
        key nokey;
        pin nopin;
}

同じくデバイスアドレスを /etc/bluetooth/hosts に書く。

00:a0:b0:e2:xx:xx softbankmouse

その後も参考ページと同様に…。

# bthidcontrol -a softbankmouse query > /etc/bluetooth/bthidd.conf

で、これでは参考ページの丸写しなので補足。/etc/rc.conf に以下の3行を追加して Bluetooth 関係のデーモンを起動させる。

bluetooth_enable="YES"
bthidd_enable="YES"
hcsecd_enable="YES"

service(8) コマンドでサービスを起動。ubt0 の部分は環境に応じて適当に。

# service bluetooth start ubt0
# service bthidd start
# service hcsecd start

以上で繋がるはずです。繋がったかどうかは l2ping(8) コマンドで確かめます。

# l2ping -a softbankmouse
0 bytes from softbankmouse seq_no=0 time=588.802 ms result=0
0 bytes from softbankmouse seq_no=1 time=34.595 ms result=0
^C

softbankmouse の部分は /etc/bluetooth/hosts に書いた名前を。

これで無事 Bluetooth マウスが X11 上で使えるようになったんですが、なぜか USB マウスを引っこ抜くと Bluetooth マウスまで一緒に使えなくなりました。マウスとキーボードは HAL が面倒を見ているので hald が Bluetooth マウスを見つけられてないんだと思うんだけど…眠いのでまた今度。


2013-05-14 TigerVNC

net/tigervnc に欠けていた x11/xkeyboard-config への依存関係を追加

net/tigervnc を少し修正しました。欠けていたランタイムの依存関係を追加したのが主な変更です。

  • x11/xkeyboard-config, x11/xkbcomp への依存関係を追加
  • xorg-macros を BUILD_DEPENDS から USE_XORG へ移動
  • vncviewer といっしょにデスクトップエントリファイルをインストールするように変更
  • ライセンス情報を追加
  • 不要なオプションを CONFIGURE_ARGS から除去

以下のように出力されて、Xvnc が起動しませんでした。Xvnc の実行に必要な x11/xkeyboard-config への依存関係が欠けていたためです。

FreeBSD に TigerVNC だけでなく x11/xorg をインストールしている環境であれば x11/xkeyboard-config が既にインストールされているため、問題なく動作していたはずです。xorg をインストールせずに net/tigervnc だけで運用しようとしている環境では全く使い物にならない状況になっていました…。もし引っかかっていた人がいたらすみません。

$ Xvnc :10 (オプション省略)
Xvnc TigerVNC 1.2.0 - built May  9 2013 17:35:57
Copyright (C) 1999-2011 TigerVNC Team and many others (see README.txt)
See http://www.tigervnc.org for information on TigerVNC.
Underlying X server release 11006000, The X.Org Foundation


Tue May 14 04:07:47 2013
 vncext:      VNC extension running!
 vncext:      Listening for VNC connections on all interface(s), port 5910
 vncext:      created VNC server for screen 0
(EE) XKB: Couldn't open rules file /usr/local/share/X11/xkb/rules/base
(EE) XKB: Failed to load keymap. Loading default keymap instead.
(EE) XKB: Couldn't open rules file /usr/local/share/X11/xkb/rules/base
XKB: Failed to compile keymap
Keyboard initialization failed. This could be a missing or incorrect setup of xkeyboard-config.

Fatal server error:
Failed to activate core devices.
本日のツッコミ(全2件) [ツッコミを入れる]

Σ Matthewfex [[b][/b] ]

Σ Fluxal [ I'm impressed, I have to admit. Rarely do I come across ..]


2015-05-14 複数の OS やアーキテクチャでホームディレクトリを共有している環境で rbenv を使う方法

複数の OS やアーキテクチャでホームディレクトリを共有している環境で rbenv を使う方法

rbenv を使っていると各バージョンの Ruby が $HOME/.rbenv/versions 以下にインストールされ、 $HOME/.rbenv/shims/ruby などを経由して実行されますが、GNU/Linux と FreeBSD などでホームディレクトリを共有している場合は、FreeBSD でビルドした Ruby のバイナリは Linux では実行できない(逆はできる)ので、これでは都合が悪い場合があります。同じ Linux を使っていても amd64 と i686 などアーキテクチャが違えばバイナリ互換性がない場合があるので、同様のトラブルが発生します。

これを回避するには RBENV_ROOT 環境変数を設定して、OS やアーキテクチャごとに異なるディレクトリ以下に Ruby がインストールされるようにします。rbenv init - を実行する前に設定していなければならないので、例えば以下のように。例では zsh を使っているので .zshenv を書き換えます。

export RBENV_ROOT=$HOME/.rbenv/$(uname)
[ -x "$(which rbenv)" ] && eval "$(rbenv init - zsh)"

こうすると、Linux 環境では $HOME/.rbenv/Linux に、FreeBSD 環境では $HOME/.rbenv/FreeBSD 以下に rbenv の環境が構築されそれぞれにあった方を使ってくれるようになります。ただこのままではアーキテクチャを考慮しないので、少し変更して以下のようにするのがいいかもしれません。

 export RBENV_ROOT=$HOME/.rbenv/$(uname -r).$(uname -m)

hostname を個別に設定しているなら、hostname を使って

 export RBENV_ROOT=$HOME/.rbenv/$(hostname)

でもいいかも。