■昨年末あたりからむずむずしていたのだけど、発注から着荷までが長いということで敬遠していたのだけど、最近になって改善されたという話を知ってRSコンポーネンツから発注した。発注してからはなしのつぶてで、いつ発送されたのかも良く解らなかったのだけど、2週間ほどたって突然ポストに入っていた。小包扱いですらないらしい。素晴らしい。
カーネルイメージとしてFedoraも選べるという話を知っていたのでさっそく落としてみたのだけどブートしない。Fedoraイメージを専門に焼きこむインストーラーもあったのだけど、Windows8では書き込み先を選択できないらしく、それは使えなかった。結局、Debianベースのwheezyを使った。
apache, PHPをtarbollからビルドできるように環境整備したり、bluetoothでオーディオを飛ばそうとPulseAudioを入れたりとapt-getでパッケージをいろいろと追加。ちょっと困ったのが標準のビデオ出力がHDMIしかなく、うちに他に対応するHDMI入力というと、居間のテレビしかないのでさすがにそれは使い勝手が悪い。
やむなく以前から使っているLinuxサーバーにVNCでログインしている環境から、ラズベリパイにSSHでログインして、環境変数DISPLAYをLinuxサーバーに向ける設定をしてターミナルを動かしてラズベリパイOS内でシェルを使えるようにした。
ただ、やっぱり専用のディスプレイがないのは具合が悪い。ただ、大型のディスプレイは場所をとる。たまたまうちにはUSB接続のサブディスプレイがあるので、それが使えると具合がいい。ものは試しとUSBにつないでみると、一瞬画面が光って消える。dmesgを確認すると'DisplayLink'というデバイスが認識されている。ただ、デバイスが作成されていない。調べてみると'DisplayLink'はメジャーなデバイスらしく、デバイスドライバは存在するし、ドライバのソースも存在する。ただ、Raspberrypi環境ではコンパイルできない。強引にコンパイルに持ち込むこともできそうだけど、順当なのはカーネルコンパイルのオプション指定で初めから取り込んでしまうことのようだった。
wheezyのソースコードはhttps://github.com/raspberrypi/linuxにあり、gitコマンドで取得した。
rootユーザにsuしてから、/usr/src/3.6.11ディレクトリを作成し、そこにcdした後、
git clone git://github.com/raspberrypi/linux.git
を実行し、ソースコードを展開。それからオリジナルのwheezyのコンフィグを取るため、
zcat /proc/config.gz > .config
make oldconfig
make clean
make menuconfig
(menuconfigを使うためにlibcurses5-devパッケージを追加で取得したりした)
vi Makefile
でMakefileを開き、冒頭にある、EXTRAVERSIONパラメータに'-user.1'と入れた。これはカーネルに付けるバージョン番号のオプションで、リブート後にuname -aで確認できる。-userはともかく、.1は自分がカスタマイズした最初のリビジョンなので。
コンフィグメニューの中でdrivers > video > uldfb を有効化して保存してから
make
を実行し(5~6時間ほど)
cd /lib/modules
mv 3.6.11+ 3.6.11+.org
cd /lib
mv firmware firmware.org
cd /usr/src/3.6.11
make modules_install
これでドライバ類がインストールされた。それからようやくカーネルイメージの移動。
cd /boot
mv kernel.img kernel.img.org
cd /usr/src/3.6.11
installkernel 3.6.11-user.1+ arch/arm/boot/zImage System.map
cd /boot
config.txtを開き、kernelパラメーターで先ほどビルドしたカーネルイメージを指定する。
vi config.txt
kernel = vmlinux-3.6.11-user.1+
そして再起動。
shutdown -r now
再起動後にログインして、dmesgを確認。DisplayLinkが認識された後に/dev/fb1が作成されていれば、デバイスドライバが使えています。続いてはxorg.confの設定をします。続く。