11月 122013
 

いやー。前回のエントリでは Windows と FreeBSD がなんとかマルチブートできる環境が構築できた。というエントリでしたが、ここでは実際に freeBSD を利用してみた感想を書いてみたいと思います。

 
1. OS のチョイス
今回は UEFI+GPT に対応していない FreeBSD/amd64 9.2-RELEASE をチョイスしました。インストール方法は前回のエントリに書いているのでそっちを参照してください。

本当は FreeBSD/amd64 10.0-BETA3 でも良かったのですが、僕の環境で利用している FreeBSD はほぼ全てが /amd64 9.2-RELEASE なんですね。何が良いかと言われれば pkgng の恩恵をごっそりと受け継げることができる。と、いうことですね;-)。

まず先に pkgng のことをちょっと書いておきましょうかね;-)。

デスクトップ PC で稼働している FreeBSD を pkgng 化して packages をドドドと作成します。2,3 の設定は以下の通り。

・/usr/ports/ports-mgmt/pkg をインストール
インストール後は pkg2ng を実行しろ。というので実行します。まぁ、新規インストールな状態なのでサクっと終わりますが;-)。

・/etc/make.conf に以下の行を追加
ここいらの設定はあちこちに書いてありますね。

WITH_PKGNG=yes

 
・packages の作成
そもそも KDE4 などの統合デスクトップ環境をインストールすると 800 個近い packages がインストールされています。インストールされたこれらを package 化します。以下はそのスクリプトです。

#!/bin/sh
pkg info | grep $1 | awk '{print "pkg create -f tbz -n -g -o /usr/ports/packages/All " $1}' | sh -x

 
一行野郎ですが、これを例えば pkg-create.sh という名で保存し、実行時には ./pkg-create.sh kde などとオプションを指定すると kde と付いた pkg info で表示される全てが packages 化されて /usr/ports/packages/All/ に格納されます。
ただ、関連性のあるプログラムまでは packages 化してくれないのであとからチマチマこのコマンドを実行する必要があるかもです;-)。

 
・packages のインストール
新しくインストールした ThinkPad e145 上の FreeBSD は同じく pkgng 化したあとに NFS でマウントした /usr/ports/packages/All/ に cd して、そこで pkg add kde* などと打つとドドドとインストールしてくれます;-)。

ただ、この pkg add するためには設定ファイルを一個用意して置く必要があります。
/usr/local/etc/pkg.conf というファイルを一個用意してあげます。

# cd /usr/local/etc
# echo "packagesite: http://pkg.freebsd.org/${ABI}/latest" > pkg.config

 
/usr/local/etc/pkg.conf.sample と、いうファイルがありますが、とりあえず一行だけ書いたファイルを置いてあげると pkg add が動き出します。このファイルが無いと pkg add はスルっと終わってしまい packages をインストールしてくれません。
packages 自体はこのファイルに書いたホスト名など、リモートから取って来なくてカレントデイレクトリの packages を利用したいので、これで十分です;-)。

以上で新規にインストールした FreeBSD の環境が整いました。早いです;-)。

 
2. 動くデバイスと動かないデバイス
packages がドドド入ったので X を起動したり色々やる準備が整いました。で、まず、動かないもの(デバイス)を書きましょうか。

・Wi-Fi: Broadcom (多分 BCM943142HM)
・Bluetooth: Broadcom 製 USB 経由 で 4.0 対応
・SD Card Reader: Realtek 製

これらはダメですね。 FreeBSD 側にドライバが無いようです。あと、渋いところでいうと AMD の SUBus が認識しない。この辺りについては pciconf -lv を置いておきますのでそちらを参照して頂ければと思います。

続いて X ですが、 e145 の CPU というか APU は A4-5000 で Radeon HD 8330 な GPU ですが、以下の URL で確認すると・・。

https://wiki.freebsd.org/AMD_GPU
https://wiki.freebsd.org/Graphics

と、いうことで Radeon HD 8000 番台は “Not supported” だそうです。残念ながら VESA 決定ですね。最後に要らないとは思うけど、xorg.conf を付けておきます。
タッチパット・トラックポイント共に動作する設定が入っています。

 
動くもので気がついたのを書いてみます。

・suspend/resume する (あれ?しなくなった。ちょっち調査中)
・テンキーで画面の明るさ変更が可能
・音は出る
・USB カメラは webcamd+cuse4bsd+pwcview で動きます

くらいかな?

 
試してないものは以下の通りですが、これは多分 Xorg とか KDE4 の機能に引っ張られると思うなぁ。あとで確認してみよう。

・D-SUB 15pin/HDMI/LCD があるけど、三画面出力とか可能なのかな?
・バッテリーの持ち状況とかまだ確認してないです

あと、以前の「PRIMERGY MX130 S2 を FreeBSD で利用する。」というエントリで「hwpstate0: set freq failed, err 6」というメッセージが延々と出力される。と書いたことが有りましたが、この NotePC でもやはり表示されます。回避策は上記エントリに書いてあるのでそのパッチを適用しました。

 
実際に ThinkPad Edge e145 を FreeBSD で利用してみた体感的な感想をちょっと書きます。比較は ThinkPad X100e とですが、実測値とかなくてすみません。

・CPU は 2Core から 4Core になったので余裕を感じます。あと、 CPU の温度が低いですね。ファンが唸りを上げて回るというのはまだ体験していません。その点からするとたとえ遅くとも「良いんじゃね;-)。」と思えます。
・Xorg が VESA でしか利用できないのが痛いかなぁ。とか思ったのですが、最近の VESA は以前よりも進んでいますね。以前は 1024×768 を 1366×768 横方向に拡張して表示してくれていたのですが、今の VESA はちゃんと画面のサイズでで表示してくれます。 2D のみなら VESA でも我慢できるかなぁ。と、いう感じかな。

しかし、KDE4 の「デスクトップ効果」では xrandr を利用してウィンドの透明化とか全仮想デスクトップの表示とかが動きます。あれあれ? VESA でも今は十分に動いているよ。状態です。 ThinkPad X100e の頃の VESA とは随分と違い驚いています;-)。

 
とまぁ、こんな感じですが、これは続くかどうかわかりません;-)。

ThinkPad X100e の場合は枯れた技術を利用した新製品の NotePC でしたが、今回購入した e145 は最新鋭の NotePC になるので X100e の頃よりは色々と楽しめそうです;-)。

と、いうことで ThinkPad Edge e145 で FreeBSD/amd64 9.2-RELEASE をインストールして動作している状態の情報を提示します。

起動時の dmesg
pciconf -lv の結果
sysctl -a の結果
vesa だけど xorg.conf

皆さんも是非 FreeBSD を PC ネーテブで動かしてみてください;-)。

11月 092013
 

前回のエントリで「購入したー。FreeBSD 用の領域確保したー。」で、終わったのですが、ガマンできずに、ロクに下調べもせずに FreeBSD 用に確保した領域に FreeBSD/amd64 9.2-RELEASE をインストールしてみたのですが・・。

あたたた。 Windows8 がぶっ飛びました。 Windows と FreeBSD の両方がブートできなくなってしまいました・・。orz。
ThinkPad X100e に引き続き、またまたリカバリー領域のバックアップをしない状態で HDD 全初期化の運命です・・。orz。

 
この ThinkPad Edge e145 ってのは最新鋭の NotePC なんですね。その辺りのことをまるで意識していませんでした。 Windows8 がブートする NotePC なので起動は Windows7 世代の PC と同様の BIOS ではなく UEFI BIOS で、パーティション構成は GPT を利用しています。こんなの知らないよーみたいな・・f(^^;;。以下、 BIOS との格闘についてです。

 
1).USB デバイスからの OS の起動
まず、USB デバイスから OS をインストールするためにメモリとか CD/DVD から起動しようとするのですが、これがまた起動しません。orz。 BIOS の設定は二ヶ所。ここを変更してあげないと外部メディアからブートできません。

・USB UEFI BIOS Support を enable に
BIOS の Config メニューから USB を選択するとこのメニューがありますが、これが disable だと USB デバイスからブートしません。

・Secure Boot
これは UEFI BIOS の機能なのですね。 UEFI の場合はブート時のウィルス対策のためにできたメニューらしいですが、新規に OS をインストールする場合には disable にしないとダメです。

IMG_6038_e145_UEFI_1

あと、細かい点としては FreeBSD のインストールメディアを USB3.0 のポートに接続するとこれまたブートしません。OS インストール中は USB3.0 は disable にしておいたほうが良いかもです。

 
2). OS のインストールと起動
例えば Windows8 のみインストールする場合や FreeBSD を先にインストールした場合にはそれぞれがブートしてくれます。
Windows8 の場合は UEFI BIOS の Startup メニューから UEFI Only を選択すれば高速にブートする状態でインストールし、起動します。 FreeBSD の場合は Legacy Only にすればインストールできて起動もします。

しかしっ!! 一個がインストールできてもう一個の OS をインストールすると最初起動していた OS がブートしなくなり、結局二つの OS 共にインストールしたモノが起動しなくなりました。

試したのは以下の通り。インストールした OS の順番を意味し、その後どうなったか? を掲載しています。 FreeBSD は GPT パーティションを利用しました。

・Windows8 (起動) -> FreeBSD/amd64 9.2-R = 両方とも起動せず
・FreeBSD/amd64 9.2-R (起動) -> Windows8 = 両方とも起動せず
・Windows8.1 (起動) -> FreeBSD/amd64 9.2-R = 両方とも起動せず
・FreeBSD/amd64 9.2-R (起動) -> Windows8.1 = 両方とも起動せず
・Windows8.1 (起動) -> FreeBSD/amd64 10.0-BAETA3 = Windows8.1 は起動するが FreeBSD を起動する方法がわからない

一番最後のパターンは FreeBSD/amd64 10.0-BAETA3 が UEFI に対応したと小耳に挟んだのでトライしました。 UEFI BIOS は Both で UEFI/Legacy Boot Priority から UEFI First でインストールしました。
Windows8.1 から bcdedit を利用し Windows8.1 のブートマネージャからのブートを試みましがダメでした。

IMG_6037_e145_UEFI_2

この辺りの情報はまだあまりなくて、 OS 単体をインストールしたら起動したとか、仮想環境にインストールしたら起動したとかそんなんばっかりで、物理的な最新の PC にインストールしてマルチブートしたという情報がほとんど無いのが現状です。

本当にヒトバシラーだぁ・・。orz。

 
3). 何とか起動。ふぅ。
もぉヨワヨワです。UEFI BIOS の設定は以下にしました。

・Secure Boot: disable
・UEFI/Legacy Boot: Legacy Only

もう明らかに前世代の PC の BIOS じゃん。みたいな・・。ここに Windows7 をまずインストールしました。この環境でインストールする Windows7 はすごいですね。 MBR パーティションにインストールしているようです。

Windows7 インストール後に FreeBSD は /amd64 9.2-R をインストールした場合はインストール時に GPT パーティションでインストールしようとしているので Windows7 のパーティションが見えません。あららら。

と、いうことでインストールの手順は以下の通り。

1. FreeBSD/amd64 9.2-R を MBR パーティションでインストール
パーティション作成時に先頭の 230GB を NTFS として確保し、残りのディスクは MBR 形式で FreeBSD パーティションを確保します。 /dev/ada0s3a,b,c,d って感じですね;-)。これで FreeBSD のインストールは完了。

2. Windows7 のインストール
FreeBSD のインストール時に先頭 230GB を確保したのでここに Windows7 をインストールします。これはパーティションを新規割り当てするなど、フツーの手順通りで OK です;-)。

3. マルチブート
インストール後に再起動。まずは Windows7 が起動します。その後 bcdedit で FreeBSD が起動するように設定します。そして、その再起動後は Windows7 のブートマネージャから両方の OS がブートするようになるのでありました。ふぅ。

 
と、いうことで、なんとか無事に二つの OS が起動するようになりましたが UEFI BIOS の知識は十分に付けてからトライしたほうが良さそうですね。UEFI BIOS でハマった道を再確認。

・ USB デバイスからインストールメディアがブートしない
USB UEFI BIOS Support を enable にする。
Secure Boot を disable にする。

・UEFI+GPT 対応 OS
Windows8は レガシー BIOS と MBR に対応しているというんだけどそれではインストールできないみたい。 UEFI Only と GPT でしか扱えませんでした。
FreeBSD 10.0-BETA3 は UEFI Only でインストールできます。ただし、マルチブート時にどのようにしたら良いのかドキュメントが無い(少ない?)。
OS としてインストールしないのに Linux のブートローダを利用するのはイヤなので関連すドキュメント全く読んでません。
Windows8 や FreeBSD 9.2-R は単体でインストールして単体で利用する分には全く問題は無いと思います。

・Legacy BIOS+MBR でマルチブート
UEFI+GPT に対応したマルチブート環境化において、ブートローダ(ブートセレクタというのかな?)部分はどうしたら良いのか全くわからなかったので古い PC アーキテクチャで OS を利用る場合に良いかと思われます。

BIOS やパーティションレベルでの最新機能は必要なく、とりあえず「何はなくともマルチブート命」って人向けでしょうかね;-)。

 
今は Windows7 そっちのケで FreeBSD/amd64 9.2-RELEASE をいじっています。一応、 X まで起動して KDE4 が動き出しました。
Windows7 はここから Windows8.1 にバージョンアップできるのかなぁ? そーすると Legacy BIOS+MBR で一応動くことになると思うんだけど。

と、いうことで今回はここまでにします。二つの OS をマルチブートするための方法を書いてみました。FreeBSD 10 側でマルチブートのための機能とかあるのかなぁ? やっぱり OS は物理マシンにインストールしないとダメですねぇ;-)。

次回は FreeBSD について、動くデバイス・動かないデバイス・その他について書いてみたいと思います;-)。

11月 062013
 

以前利用していた ThinkPad X100e がちょうど三年でぶっ壊れてしまったので新たに NotePC を購入したのですが、どうしようか悩んだ挙句 Thinkpad Edge e145 にしました。
ウェブから申し込んだのが 10/09 で受注生産だったので納期が 2-4 週間とのことで、いやー。本当に 4 週間かかりましたな。 11/06 に配達され、手元に届きました。

新しいブツが手に入ったのでしばらくはこのネタ続くかもしれないです。今回はその第一回目と、いうことで;-)。

僕が購入したのは AMD の CPU である A4-5000 が載っている受注生産モデル。 e145 の代表的なスペックは以下になります。

・CPU クロック: 1.5GHz
・CPU コア数: 4Core
・GPU: Radeon HD 8330
・メモリ: 4GB
・HDD: 7mm 厚 500GB
・OS: Windows8
・NIC: RealTek GbE
・Wi-Fi: Broadcom (多分 BCM943142HM)
・Bluetooth: Broadcom 製 USB 経由 で 4.0 対応
・SD Reader: Realtek 製

ThinkPad X100e で利用していた SSD を入れようかと、届いたその日に裏蓋を開けたのですが、なんとっ!! default の HDD は 7mm のヤツで 9mm の SSD は入りませんでした。
その他のパーツで ThinkPad X100e から色々流用できるか試してみたリストは以下です。

・AC アダプタ: 使えました;-)
・Wi-Fi: Intel Centrino Advanced-N WiMAX 6250 BIOS ロックがかかっていて利用不可
・Bluetooth: あえて Broadcom 2.0 を利用する必要ナシ
・メモリ: 規格が違うのでアウト

着脱可能で流用できそうなパーツはこれくらいでしょうかねぇ。

あと、裏蓋開けてみて X100e と違うなぁ。と思ったのは SIM スロットとか無いので随分とさっぱりしている点かな。 HDD とメモリと MiniPCI の Wi-Fi にアクセスできるくらい。

初日は Windows8 のアップデートとかしてシューリョーって感じでした。
以前利用していた X100e のときは Windows7 をブートもせずに HDD の内容を全部ぶっ飛ばしてから FreeBSD と Windows7 をインストールしたのですが、今回はリカバリーメディアを作成するために一応 Windows8 をブートしました。

にしてもっ!! リカバリー領域をバックアップするプログラムが見つかりません。同梱されていた資料は薄っぺらい紙が三枚で、ユーザ・ガイドは PC の中でそれを見るとリカバリー方法が書かれているのですが、画面右の「検索」に “recovery” と入力して表示されたプログラムを実行しろ。とは書かれているのですが、そのプログラムが見当たらないんですね。

でもって Lenovo のサイトから Rescue and Recovery 4.51 対応全言語用フルインストールファイル (594MB) をダウンロードして試したのですが e145 の Windwos8 にはインストールできませんでした。あたた。

と、いうことで 今のところは SSD 化することもできずリカバリーメディアを作成することもできない状態なのでとりあえず 480GB ほどある Windows8 パーティションを縮小して FreeBSD 用の領域を 230GB ほど確保したところで一日目の作業は終了。となったのでありますf(^^;;。

 
さてさて。今回購入した Lenovo Thinkpad Edge e145 は勢いで”赤”を購入してみました。 Lenovo Thinkpad X100e と比較してみます。

IMG_6057_ThinkPad_e145_2

まず、大きさが目につきましたね。と、いうか X100e のほうが「あ。こんなに小さかったんだ。」と感じました(右側)が、それはつまりはバッテリーの部分が飛び出るか本体に内蔵されるかで、e145 のほうが奥に長い(左側)のはバッテリーのせいなのね。と、いうことが解ります。

筐体ですが、これが随分と違うんですね。 X100e のほうはプラスチックボディーなんですが、 e145 は一応鉄製というかブリキというかプラスチックでは無い素材というかを利用しています。

どっちが良いか?聞かれれば e145 のほうが好きかなぁ。赤だからかもしれませんけど;-)。

IMG_6054_ThinkPad_e145_1

と、いうことで第一回目はこれにて終了にします。 e145 の次のネタを書くのは Windows8 か、もしかしたら FreeBSD/amd64 9.2-RELEASE をインストールしたときになるかと思われます;-)。

11月 032013
 

OS X Mavericks にしてしばらく使っていたのですが、 iTunes は iOS デバイスとカレンダー同期してくれなくなったんですね。iTunes の[概要]タブから「スケジュール」の項目が消えています。
と、いうことは iCal のスケジュールの情報は iCloud 経由で同期しろ。ってことなんですね。いやー。Apple も google みたいなことしてくれますなぁX-(。

このブログにも以前に書いているのですが、スケジュールは google に預けたくないし、当然 Apple にも預けたくない。そーいう人にとって、今回の Mavericks の iTunes の仕様変更は改悪ですね。困った困った。

さて、ではどうするか? と言えば、僕は自分で CalDAV サーバを持っているのでそれを利用することにしました。

CalDAV サーバを Mavericks の iCal と iPhone4・iPhone5、あと Thunderbird の Lightning からアクセスして参照・更新すれば一応は OK な状態になりますね。

今までは家の中専用で利用していた CalDAV サーバを SSL 化してグローバルからでもアクセス可能な状態にします。そして、 iCal・iPhone4・iPhone5・Lightning から接続テストをしてみます。が、 iOS もかぁなりクセがありますね。けっこう orz 的な事態になったのであります・・。orz。

今回はこの辺りの顛末についてちょっと書いてみます。

1. CalDAV の SSL 化
CalDAV 自体のインストールと設定については以前のエントリに書いたのでそっちを参照してください。あ。一点だけ。
古いバージョンの davical-0.9.9.4 から davical-1.1.1 にバージョンアップするとデータベースの互換性がなくなるようで、サクっと portmaster とか走らせると痛い目に遭います。
iCal とか Lightning で ics 形式のバックアップを取ってから davical とか postgresql などを一旦消してバージョンアップして、1.1.1 で動く状態にしてからバックアップした ics ファイルをインポートすると今度はサクっと動くようになります。 postgresql にデータが残っている状態でバージョンアップして『それを潰さないように』などと思っているとダメっぽいです。

さて本題。 CalDAV サーバと言っても基本的には httpd を httpsd とするだけなので、あと、自分しか利用しないのでヲレヲレ証明書で行きます。 FreeBSD 的には以下のコマンドを打つだけで簡単に SSL 化できます。

# cd /etc/ssl
# openssl genrsa -out ./server.key 2048
# openssl req -new -x509 -days 3650 -key server.key -out server.crt
# openssl x509 -in server.crt -out server.der -outform DER
# cd /usr/local/etc/apache22/
# ln -s /etc/ssl/server.crt
# ln -s /etc/ssl/server.der
# ln -s /etc/ssl/server.key

 
server.crt を作成する場合に色々聞かれてきますので値を入力します。server.der はブラウザにインストールするといちいち「このサイトは怪しいぜぃ。」って聞かれなくなります。

このオペレーションだと apache22 の SSL 化の設定は非常にラクチンですね。 httpd-ssl.conf は以下の部分だけ直すと作業は終了です。

#   General setup for the virtual host
DocumentRoot "/usr/local/www/davical/htdocs"
ServerName ical.running-dog.net:443
ServerAdmin takachan@running-dog.net
ErrorLog "/var/log/httpd-ssl-error.log"
TransferLog "/var/log/httpd-ssl-access.log"

 
あとは apache22 を再起動して作業は無事完了。各クライアントからアクセスして動作確認します。基本的には以下の URL で ics ファイルが取得可能な状態となるはずです。

https://ical.running-dog.net/caldav.php/takachan/home/

ここ、重要ですからねー。覚えといてくださいよー;-)。

 
2. iCal の設定
iCal は OS X に付属のカレンダーアプリです。「環境設定」→[アカウント]から”+”で追加します。 SSL で追加しましょう;-)。
[サーバ設定]タブでは CalDAV サーバの FQDN と URL を書きます。サーバパスは “/caldav.php/takachan/” を指定します。 CalDAV のコントロールパネルで他にカレンダーを設定した時に /home/ の部分が任意のパスとして生成され iCal 上に表示されるようになります。

 
3. iOS デバイスの設定
僕は手元に iPhone5 があって、それは既に iOS7 にしているのですが、このカレンダーアプリはどえりゃーやっかいでした・・。 Maverickes の iTunes も iOS7 もひでーことだぁ。と、知ることになるんですけども。

iOS の場合はまず、設定アプリから「メール/連絡先/カレンダー」を選択し「アカウントを追加」→「その他」→「CalDAVアカウントの追加」を選択し情報を入力します。
「サーバ」は FQDN のみで OK。「詳細設定」で色々指定してあげます。 SSL を有効にしてから「アカウントURL」に上記の URL を指定します。以上で設定は完了。次にカレンダーアプリを開き、しばらくすると新しく登録した CalDAV のアカウントが見えるようになります。うふふ。これでカレンダーの同期が完了だぁ;-)。

が、しかし・・。落とし穴はここからでした・・。orz iOS のカレンダーアプリは default のカレンダーが”カレンダー”として自動的に登録されるんですね。上に書いた URL 覚えていますか? CalDAV の default のカレンダーのパスなんですけども。もう一度書きますね。

https://ical.running-dog.net/caldav.php/takachan/home/

しかし、iOS のカレンダーアプリはここを参照してくれなくて、勝手に EUI-64 でパスを生成してそこに”カレンダー”ってタイトル付けて、そこにしかアクセスできないんですね・・。URL 的にはこんな感じ。

https://ical.running-dog.net/caldav.php/takachan/DE1A314-92BE-4518-A56E-B7138819A30B/

僕的には iOS のカレンダーアプリも /caldav.php/takachan/home/ を参照して欲しいのだけどここは見てくれない。で、新規にカレンダーを作成しようとするとまたまたサーバ上に EUI-64 のパスを作ってそこにタイトルを勝手に付ける仕様になっています。

とりあえず iOS はここで一旦終わって、次に Lightning の話を先に書きます。

 
3. Thunderbird Lightning の設定
Lightning は昔から利用しているしここにも何回かエントリとして登場しました。

Lightning でカレンダーを利用する場合には default の URL である

https://ical.running-dog.net/caldav.php/takachan/home/

を記述すると無事にカレンダーが表示できるのですが、上の iOS デバイスのカレンダーアプリが”カレンダー”と認識している EUI-64 なパスにしかアクセスできないので、Lightning に指定したパスも変更してあげる必要があります。まぁ、http:// から https:// に変更する必要があるので、この際テマは一緒かー。みたいな気はするんですけどね。

 
ちなみに、Lightning の場合はパスを /caldav.php/takachan/ で指定するとその配下の全てのカレンダーを表示してくれます。
Mavericks の iCal のパスは無条件に /caldav.php/takachan/ になって、配下のカレンダー全てを表示してくれます。
iOS の場合は無条件で UEI-64 のパスを掘って”カレンダー”とラベルを付けてそこにしかアクセスできません。 iOS 上で新規にカレンダーを作成するとそれは閲覧・更新可能な状態となりますが、自分で作成したものしか見えずに他のアプリで作成したカレンダーは見えません。
そー考えると iOS のカレンダーアプリが一番ワガママですね。

 
と、いうことで iTunes が iOS デバイスと同期できなくなったというのが一番大きな問題点なので、そこを Apple に何とかしてもらわないとお話にならないですね。一応、「iTunesの意見/感想を送る」から『カレンダー同期復活してくれー。』とは送っておきましたけどね。

CalDAV 経由ではなく、もっとスマートに同期できる方法があったら教えて頂きたいものです。

9月 102013
 

以前のエントリで「xmodmap と setxkbmap。」というのを書いているのですが、そのときに xmodmap -pke というコマンドを打ってみて、このコマンドが出力した情報をじっくりと眺めてみると何やら色々な設定があるようなので試してみることにしました。

色々な設定というのは、例えば NotePC において Fn キー + テンキー同時押しでボリューム調整を行う、であるとか画面の明るさを変更する、であるとか suspend/resume であるとかその辺りのことができるようなんですね。

IMG_5632_NotePC_Fn+10Key

通常この辺りの制御は ACPI のほうでやっていて、以前であれば、僕の場合、今回は ThinkPad X100e で試してみましたが、 acpi_ibm.ko というのを kldload して /usr/local/sbin/acpi_oem_exec.sh とかを作成して呪文のような文字列と数値を書いて devd に対応させる。というのが一般的だったんですけども。
まぁ、その辺りは man acpi_ibm してみて、その内容でスクリプトを書くんですけど、なんか大変そうで「動かなくてもいやー。」となっていたんですね。

今までは ACPI で制御していた Fn キー + テンキー同時押しの機能がどうやら xmodmap でできるらしいんですね。と、いうことで早速設定してみましょう。
まずは xmodmap -pke でどんなオプションが指定できるのかを探してみます。

$ xmodmap -pke | grep XF
keycode  63 = KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply KP_Multiply XF86ClearGrab
keycode  67 = F1 F1 F1 F1 F1 F1 XF86Switch_VT_1
keycode  68 = F2 F2 F2 F2 F2 F2 XF86Switch_VT_2
keycode  69 = F3 F3 F3 F3 F3 F3 XF86Switch_VT_3
keycode  70 = F4 F4 F4 F4 F4 F4 XF86Switch_VT_4
keycode  71 = F5 F5 F5 F5 F5 F5 XF86Switch_VT_5
keycode  72 = F6 F6 F6 F6 F6 F6 XF86Switch_VT_6
keycode  73 = F7 F7 F7 F7 F7 F7 XF86Switch_VT_7
keycode  74 = F8 F8 F8 F8 F8 F8 XF86Switch_VT_8
keycode  75 = F9 F9 F9 F9 F9 F9 XF86Switch_VT_9
keycode  76 = F10 F10 F10 F10 F10 F10 XF86Switch_VT_10
keycode  82 = KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract KP_Subtract XF86Prev_VMode
keycode  86 = KP_Add KP_Add KP_Add KP_Add KP_Add KP_Add XF86Next_VMode
keycode  95 = F11 F11 F11 F11 F11 F11 XF86Switch_VT_11
keycode  96 = F12 F12 F12 F12 F12 F12 XF86Switch_VT_12
keycode 112 = KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide KP_Divide XF86Ungrab
keycode 214 = XF86Display NoSymbol XF86Display
keycode 215 = XF86KbdLightOnOff NoSymbol XF86KbdLightOnOff
keycode 216 = XF86KbdBrightnessDown NoSymbol XF86KbdBrightnessDown
keycode 217 = XF86KbdBrightnessUp NoSymbol XF86KbdBrightnessUp

 
なるほど。この中にキーボード配列に合いそうな XF86 なオプションを ~/.xmodmaprc に記述していけば良いんですね。などということが解りました。

上にキーボードの写真を掲載しましたがちっこくて見えないですかねf(^^;;。それに合わせて今回 ThinkPad X100e に設定したのは以下の通り。

keycode 140 = XF86AudioStop
keycode 176 = XF86AudioRaiseVolume
keycode 174 = XF86AudioLowerVolume
!
keycode 162 = XF86AudioPlay
keycode 144 = XF86AudioPrev
keycode 153 = XF86AudioNext
!
keycode 115 = XF86KbdBrightnessUp
keycode 109 = XF86KbdBrightnessDown

 
以前から Fn+F4 で suspend/resume は動作していたので今回は設定しません。

ボリュームの停止・大きく・小さくは動作しました。まぁ、KDE4 のパネルにボリュームウィジェットを表示しているのでそれで調整することも可能ですが、新たに Fn+ESC ・ Fn+F1 ・ Fn+F2 キーでできるようになった。と、いう感じでしょうか。

あと、音楽の曲飛ばし(Fn+F11)と戻り(Fn+F9)・停止と再生(Fn+F10)が動作しました。利用したソフトは gmplayer で 起動時に gmplayer *.mp3 とかして再生開始します。再生している最中に Fn+ キーを押すとそれが有効になりました。けど、考えてみると gmplayer のほうにも曲飛ばしとか停止のキーバインドはあるわけでして、無理して Fn+ キーに設定する必要は無いのかなぁ;-)。

XF86KbdBrightnessDown と XF86KbdBrightnessUp は動作しませんでした。と、いうか、Fn+ のキーがもう無いんですね。 xev で keycode を取得しようとしても取得できないキーが何個かありました。
現在、画面の明るさ変更については ACPI で行っています。 kldload acpi_ibm.ko すると acpi_ibm.0.lcd_brightness という sysctl mib が生えてきます。ここに値を設定してあげると画面の明るさが変わるのですが、shell スクリプトを書いてそれを実行することにより明るさを変えています。

その他に何かできないのかな?などと思ったのは外部ディスプレーの切り替えとか。 xmodmap 的に何かパラメータはあるのかな?と思ったのですが特に無いようなので諦めました。
ではどうするか?というと、KDE4 では KDE システム設定の中に「ディスプレーとモニタ」という項目があってここから LCD か外部ディスプレーにするか変更ができるのでそれでやることにしました。なので X の再起動とかは必要ありません。調べてないんだけどこの辺りは xrandr が面倒見ているのかな?

 
と、いうことで、以前は ACPI のほうで設定していた内容がいとも簡単にできるようになったのは良いことですね。ただ、本当にその設定が必要か? 聞かれれば「特には困っていない。」のであまり必要ではないんですけどねf(^^;。キーボードに書いてあるのでそれに合わせてキーをマッピングしてみた。と、いうのが素直な感想で。けど、簡単に設定可能なものは一応設定して見ましょう。という内容のエントリなのであります;-)。

8月 192013
 

以前のエントリで「ibus-mozc を使う。」というのを書いているのですが、このときは mozc を ibus 経由で利用します。と、いうネタが基本でしたが「僕はかな入力の人なので、かな入力時の “ー” 問題ががあります。」と書いています。

その時は xmodmap で以下の設定を行うことにより回避していました。詳細についてはリンク先のエントリを読んでみてください。

keycode 133 = bar bar bar bar

 
しかし、最近の ports-current を利用していて、とあるタイミングから USB キーボードを抜き差しすると上記 xmodmap の設定がチャラになって(消えて)しまう事象に悩んでいたのであります。

色々調べてみると xorg.conf の設定で hal を利用していた場合に原因があることが解ってきました。以下に事象を箇条書きにしてみます。

o. USB キーボード利用時に(USB KVM などで)キーボードの抜き差しを行なったあとに利用すると xmodmap の設定が消えている
o. USB キーボードを X が hal 経由で認識しているときにその問題が発生する
o. hal はどうやら setxkbmap を利用して xmodmap の設定を飛ばしてしまうようだ
o. USB キーボードを認識したところで xmodmap を実行すると再度キーバインドが有効になる

と、いうような状況。

そもそも mozc をかな入力で利用していない人にとっては “\” (バックスラッシュ)を “|” (バー)に割り当てる必要は全く無いわけでして、なのでこの問題に遭遇することは無いと思われます。

 
と、いうことで、ここからはどうしてもキーバインドを変更したい人にとっては重要な内容になるのであります。
そして、ある程度原因が特定できたので、ここから先は xmodmap と setxkbmap の対比について見ていくことにしましょう。

上記 xmodmap の設定において “\” の keycode は 133 です。これは xev(1) でキーを調べたり xmodmap -pke コマンドで、現在 133 に何が割り当てられているか確認すれば良いので比較的容易に調べられます。まぁ、昔からある枯れた確認方法ですしね。

それにしても xmodmap で指定した設定が setxkbmap のどれに対応するのか解らない。 hal を利用していて Ctrl と CAPS Lock を入れ替える場合には以下の設定を /usr/local/etc/hal/fdi/policy/10-keyboard-jp106.fdi 辺りによく書いています。

<merge key="input.x11_options.XkbOptions" type="string"> ctrl:nocaps</merge>

 
で、 setxkbmap もこの形式を引きずっているようで、オプションパラメータが合えば受け付けるんでないかなぁ。

$ setxkbmap -option bar:nobackslash

 
上記コマンドのオプションの法則をまるて理解してなくて実行しているんですが、これでは backslash が bar に置き換わりませんでした。もーしょうがないので色々調べることにします。

xmodmap は xev で値を確認したり -pke オプションで表示された情報に従って動作していることが解ります。なのに setxkbmap ってどうやって設定するのぉ?って。調べていくと /usr/local/share/X11/xkb/ 内のファイルを各種参照していることが解ってきました。でもって以下のコマンドで参照しているファイルが確認できそうです。

$ setxkbmap -print
xkb_keymap {
        xkb_keycodes  { include "xfree86+aliases(qwerty)"       };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete+japan"        };
        xkb_symbols   { include "pc+jp" };
        xkb_geometry  { include "pc(pc104)"     };
};

 
上記の結果で確認する必要があるのが xkb_keycodes と xkb_symbols です。

xkb_keycodes は xfree86 だね。ってことはファイル的には /usr/local/share/X11/xkb/keycodes/xfree86 になります。 xmodmap では keycode の 133 の値を変更したかったので 133 で grep してみるとっ!! おーーっ!! <AE13> = 133; って行が見つかりました。

でもって xkb_symbols を見るとと今度はファイル的には /usr/local/share/X11/xkb/symbols/jp を参照していると思われます。

なるほどー。これで xmodmap と setxkbmap との関連性がそこはかとなく解ってきたような気がします。
しかし、それにしても setxkbmap -option に指定する記述方法がいまいち解りません。しょうがないので直接設定ファイルを変更してしまうことにしましょう。

あ。ちなみに setxkbmap -option に指定した形式は 上記 hal の 10-keyboard-jp106.fdi に input.x11_options.XkbOptions に設定してあげるだけで良いみたいなんですけどね。形式が解れば直接設定ファイルを変更する必要は無いんですけども。

と、いうことで /usr/local/share/X11/xkb/symbols/jp のファイルを以下のように変更してあげます。変更する項目は先程確認して <AE13> だということが解っていますね。

//  key <AE13> { [ backslash, bar       ] };
    key <AE13> { [ bar, bar   ] };
        :
//  key <AE13> { [ backslash, bar       ] };
    key <AE13> { [ bar, bar   ] };

 

<AE13> の項目は全部で二つあったので両方とも直しました。あとはマシンを再起動して X が起動したあとにログインして USB キーボードを抜き差しして動作確認を行い xmodmap で指定していた値が変わらなくなったことを確認します。

 
今回はたまたま mozc のかな入力のキーバインド変更のための設定変更でしたが、通常 CAPS Lock と Ctrl キーの変更などはウェブ上にゴロゴロしていますよね。そーじゃないちょっと変わったキーの変更を hal 経由の場合に継続的に持続する場合についての探し方などについてまとめてみました。

多分、他のキーについても上記の方法で行けるのでは無いかと思われます。

それにしても setxkbmap -option の記述方法知りたいなぁ。オプションに指定する方法などを知っている方いましたら教えて頂ければと思います;-)。

8月 182013
 

ずいぶん前、それは多分 pgp2.6 辺りが流行っていたころだと記憶していた頃に聞いた話ですが、フランスでは民間人の暗号化された情報のやりとりは禁止されている。ってことらしいですが、それが本当の話か、はたまた全然間違いだったのか? というのは確認してないので定かではないのですが、そんな話を耳にしたことがあります。

最近の出来事としてはマルウェアだかトロイの木馬だかで情報がごっそり、特定のサーバに送られてしまう。なんて話も聞きますが、FreeBSD は安心さー。みたいな感じで。あぁ、確かに利用者数からしても Linux や Solaris よりは圧倒的に少ないとは思うのですけどね。それでも Mac OSX でも最近はちらほらと話は聞くので、 ID やパスワードを書いたテキストファイルをデスクトップに置いといてもちょっとアレですね。

と、いうことで、そーいう重要なファイルなどは暗号化して持っていることにしましょう。と、いうのが今回のエントリの趣旨です。

利用するのは openssl で暗号化形式は des3。 パスワードとか住所とか書かれているファイルを普段は暗号化して持っていましょう。って感じでちょっとスクリプトを書いてみました。

#!/bin/sh

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin/:/usr/local/bin
export PATH

desfile=`echo "${HOME}/.data/Encryption_txt.des3"`
orgfile=`echo "${HOME}/.data/Encryption_txt"`
oldfile=`echo "${HOME}/.data/Encryption_txt~"`

case $1 in
'-d' )
    if [ -f $orgfile ]; then
	openssl des3 -salt -in $orgfile -out $desfile
	if [ -f $oldfile ]; then
	    /bin/rm -f $oldfile
	fi
	if [ -f $desfile ]; then
	    /bin/rm -f $orgfile
	fi
    else
        echo "$orgfile is not found.";echo ""
    fi

    ;;
'-u' )
    if [ -f $desfile ]; then
	openssl des3 -d -salt -in $desfile > $orgfile
    else
	echo "$desfile is not found.";echo ""
    fi
    ;;
* )
    echo "usage : Encryption.sh { -d(des) | -u(undess) }"
    ;;
esac

exit 1;

 
こんな感じでどうでしょうかねぇ?

色々人に見られたくない情報が書かれたファイルは ${HOME}/.data/Encryption_txt というヤツです。
上記のスクリプトを例えば Encryption.sh という名で保存してオプションに -d を指定すると openssl des3 で暗号化するためにパススレーズを二回入力します。

Encryption_txt と、いうファイルは ${HOME}/.data/Encryption_txt.des3 という名で保存されます。その時、 emacs で編集していれば ${HOME}/.data/Encryption_txt~ ファイルは削除します。

解凍するときは -u オプションを指定してパスフレーズを入れると解凍されます。

これで個人情報はそこそこ守れるかな?

あとは逆に、辞書攻撃しかけて des3 の強度と CPU パワーの確認。なんてのにも使えそうです;-)。

まぁ、気休めかもしれませんが、ベタなテキストファイルで持っているよりは『安心』と、いうことで。

もし、上記スクリプトを利用して大切な情報がどうか(ファイル自体が消えたり、あっという間に解読されたとかその他諸々)なっても僕は一切責任を持ちませんので自己責任でお願いします。

ちなみに動作的には FreeBSD と Mac OSX で確認しています。僕は Linux はデスクトップでは利用してないので;-)。

8月 132013
 

僕は Firefox というのはドドドとバージョンが激しく上がっていくヤツではなく ESR 版を利用しているのですが FreeBSD の ports 的に言うと www/firefox-esr になるわけですけども。

現在の最新の ports-current では firefox-esr-17.0.8,1 と、いうバージョンが利用できます。しかし、確か 17.0.8 になったときだと記憶しているのですが、メニューなどの日本語表示ができなくなってしまいました。でもって、僕は firefox の起動時には bing.com を表示しているのですが、これがあーた。英語サイトを default で表示してくれるようになったりと、言語環境がぶっ壊れチックになってしまったんですね。

いつも Firefox をインストールするときは以下をインストールします。あ。 potrs 的情報ですけども。

・www/firefox-esr
・www/firefox-esr-i18n
・www/xpi-quick-locale-switcher

日本語言語パックとアドオンの Quick Locale Switcher も合わせてインストールしているのにどうして日本語で表示してくれないのだ?と悩むのであります。

そもそも以下の事象が現れています。

1.アドオンメニューのアドオン一覧に「言語パック」メニューが表示されない。
2.拡張機能の項目の中に ports からインストールしたはずの Quick Locale Switcher が表示されない。

どもう見てもこれはおかしい。ってんで色々調べたのですが「アドオンメニュー」の「アドオン入手」から Quick Locale Switcher 1.7.8.8 をインストールすると表示されるようにはなってメニューにも[言語を変更]ってのが現れるんだけど、しかし、日本語表示できない。

で、色々調べた結果「アドオン入手」から入手したアドオン(拡張機能)は

$HOME/.mozilla/firefox/乱数.default/extensions/

にインストールされるんですね。かたや ports からインストールしたヤツは

/usr/local/lib/xpi/

にインストールされます。 で更に調査を進め、色々な firefox のオプションとか指定して試すんですけども、あれー?! ってことは Firefox は /usr/local/lib/xpi/ を参照してないんではないの? という結論に達しました。

と、言うことで ports からインストールした言語パックと Quick Locale Switcher を symlink してあげることにしました。

$ cd ~/.mozilla/firefox/乱数.default/extensions/
$ ln -s /usr/local/lib/xpi/langpack-ja@firefox.mozilla.org ./
$ ln -s /usr/local/lib/xpi/\{25A1388B-6B18-46c3-BEBA-A81915D0DE8F\} ./

 
上の symlinkは 日本語言語パック、下の symlink は UUID ですが Quick Locale Switcher になります。そのまま symlink しました。

あとは Firefox を再起動して各種設定を見なおして完了です。アドオンマネージャにも「言語パック」とか、 ports からインストールした Quick Locale Switche が表示されるようになった(今のところはバージョンでどっちからインストールしたかの判断は付きます)ので一見落着。

20130813_firefox_01

と、いうことでこの作業を行なったおかげで無事に Firefox の日本語表示が復活しました。
しかし、 /usr/local/lib/xpi/ は信用したらアカン。と、いうことかな? 今後はこの symlink をずっと残すことになるかもしれませんが、それはこのエントリを読んだ方の好きにして頂ければと思います;-)。

8月 042013
 

以前のエントリで「X11 で Synaptics とタッチパッドの両方を利用する。」ってのを書きましたが、今回はそれのほぼ続編です。

と、いうのも以前のエントリでは X11 で Synaptics のマウスポインタとボタン、タッチパッドを同時利用するための設定を書きましたが、その設定では USB マウスを接続してもマウスが使えない状態だったんですね。

で、しばらくの間は NotePC に付属の二つのマウスが動くようになったので、まぁ、良いかー。とか思っていたのですが、やっぱり USB マウスが欲しい場合があるわけで、それならもう一度設定を見直して、Synaptics とタッチパッド、あと、 USB マウスが動作するようにしてみるかー。と、なり、このエントリを書くわけです。

以前のエントリで xorg.conf と rc.conf の設定を書いているので今回はそこに USB マウスの設定部分を加筆する感じで記載します。とは言いつつ、実は xorg.conf への設定追加のみでサクっと動作したので設定はらくちんです;-)。

以下の設定を xorg.conf に加筆する感じです。

Section "ServerLayout"
        Identifier     "X.org Configured"
        Screen      0  "Screen0"   0 0
        InputDevice    "Mouse0"    "CorePointer"
        InputDevice    "Mouse1"    "AlwaysCore"
        InputDevice    "Touchpad0" "SendCoreEvents"
        InputDevice    "Keyboard0" "CoreKeyboard"
EndSection
    :
Section "InputDevice"
        Identifier  "Mouse1"
        Driver      "mouse"
        Option      "Protocol" "auto"
        Option      "Device" "/dev/ums0"
        Option      "ZAxisMapping" "4 5 6 7"
EndSection

 
X11 で Synaptics とタッチパッドの両方を利用する。」のエントリで書いた設定は Mouse0 と Touchpad0 の設定を書きましたが、今回はそこに Mouse1 として Section “InputDevice” を登録します。そしてデバイスが一個増えたので Section “ServerLayout” に Mouse1 を追加します。

Section “ServerLayout” では既に Mouse0 で “CorePointer” を利用しているので Mouse1 では利用できません。では何を利用することになるのか? というと “AlwaysCore” を利用します。

これで USB マウスが利用できるようになります。でもって Synaptics とタッチパッドも同時に利用できるようになるので、合計三つのマウス全てが利用可能な状態になります。うひひ。

ただ、ですね。二点ほど注意点があります。

1. X を利用しない場合、つまりコンソール利用時には USB マウスが利用できないみたいです。
2. X 起動前に USB マウスを接続しておかないと利用できない。また、X 起動中に USB マウスを一旦抜いてしまうと以降は利用できない。

などがあります。 2. の場合は X を再起動すると再度利用できるようになります。どちらも多分設定で切り抜けられるのかなぁ? とは思うのですが、まだ調べてはいませんf(^^;;。けどもまぁ、今まで動作していたマウスの他に USB マウスも利用できるようになったので喜ぶべきなのでしょうなぁ;-)。

多分 2. の場合は hal 経由にしないと無理っぽいだろうなぁ。と、そこはかとなく感じていますが・・。

7月 092013
 

さてさて。全体的に KDE ライクで Qt ベースな Twitter クライアントである Choqok を FreeBSD で何人くらい利用しているのかわからないのですが、タイトルの通り Twitter API 1.1 に対応した Choqok の ports を作成してみました。

以下の URL に置きましたので使ってみたい方は利用してみてください。

http://icmpv6.org/Prog/FreeBSD_ports/ports-choqok-20130709.tgz

ちょっと説明させて頂くと、現在 FreeBSD ports の www/choqok はバージョンが 1.3 です。でもって、本家のダウンロード先である http://choqok.gnufolks.org/download/ でも 1.3 をリリースしています。しかし、このバージョンは Twitter API 1.0 にしか対応していなくて最近では Twitter にログインできなくなってしまっていたんですね。

そしたら debian とか ubuntu 方面では 1.4-2 というバージョンをリリースしていて、 Twitter API 1.1 に対応している。と、いうのでそれらを利用して ports を作ってしまいました。と、いうことです。

上記 URL からダウンロードしたファイルは以下の手順で展開、インストールしてください。

# cd /usr/ports/www
# mv choqok choqok.ORG
# tar xvzfp ~/ports-choqok-20130709.tgz
# cd choqok
# mv choqok-1.4.tar.bz2 /usr/ports/distfiles/
# make && make install
#

 
基本的に ports のほうは Makefile のバージョンと distinfo を変えただけです。同梱のソースのほうに手を加えています。

もとになるソースコードは以下の URL からダウンロードしています。

http://tech.chandrahasa.com/2013/06/19/choqok-patch-for-twitter-api-1-1/
https://launchpad.net/~pfoo/+archive/choqok/+packages

choqok_1.4-2.orig.tar.gz というソースコードに choqok_1.4-2-1git0.diff.gz のパッチを適用したあと、このソースコードには po ファイルがなかったので 1.3 から po/ ディレクトリを持ってきて choqok-1.4.tar.bz2 を生成しています。

ports の distinfo は以下のようになっています。

SHA256 (choqok-1.4.tar.bz2) = 101bd27bf75ffa8c2454efab2d86dcbae737e410cad01f6fe3496d22fb15f448
SIZE (choqok-1.4.tar.bz2) = 9782427

 
ports の Makefile でいろいろやるのが面倒だったのでソースの tar 玉のほうで吸収してしまうという、ちょっとインチキなことをしていますが、一応動くので作りました。まぁ、当然ノラ ports ですけど。

どうしても Choqok が使いたいーっ!! っていう方のみ、本家が Twitter API 1.1 に対応してくれるまでの間、ご利用ください;-)。

うーむ。せっかく po ファイルを用意したのに今回利用したソースは参照しないようだ。と、いうことで po ファイルをソースコードに混ぜたのは無駄な作業でした。メニューは英語のままとなります・・。しくしく。