何かと結構時間かかりましたが、ようやくFreeBSD on RaspberryPi で Xorg が動作しました。やっぱりなんだかんだいっても、グラフィカルな表示をみるとうれしくなりますよね。もっとも、派手なウインドウマネジャが入ってるわけじゃないので、ひたすら地味ですが・・。
xorg のビルドに当たってのハマりどころは、前回の記事の webcamd のビルド でのハマりどころに、更にいくつか追加されるような感じになります。
まずは、手順から。
1: Xorg のビルドインストール
# cd /usr/ports/x11/xorg # make config-recursive
オプション設定の注意ですが、RPI で使用するビデオドライバは別途入れることになりますので、xorg-drivers のビデオドライバは全部チェックを外すことをおすすめします。多分チェックすると新たなハマりどころが増えるだけかと思います。
あと、libiconv の patches オプションはオンにしておいた方がいいでしょう。
それ以外は基本的になるべく必要ではない設定は組み込まない、もしくはデフォルトで、を心がければそれほどハマらないですむのではないかと思います。
オプション設定が完了したら、次のコマンドを実行することで、xorg 及び依存関係にある ports 全てが自動的にビルドインストールされます。
尚、現時点でデフォルトでビルドされる xorg-server のバージョンは 1.7.7 ですが、WITH_NEW_XORG=yes
を make.conf に指定することで xorg-server のバージョンが 1.10.6 になり、それに伴い関連するドライバーなどもバージョンアップした状態でビルドをすることができます。しかし、現時点ではこのオプションを指定した状態ではコンパイルが通らないため、使用は避けた方がよいでしょう。
# make install clean
もし、問題が発生したら、2: の回避方法を試してみて、問題の発生した ports が無事にインストール完了したら、
# cd /usr/ports/x11/xorg # make install clean
で xorg のビルドを再開してください。
2: 問題が起きた場合の解決方法
多分、しばらくすると、エラーで落ちます。というか、落ちましたよね ?
x11/pixman や devel/glib20 のエラーについては、webcamd のビルドに書いてありますので、そちらを参照してください。ここでは残りのエラーの回避方法を書きます。
(1) x11-fonts/fontconfig
これは結構いやらしくて、デフォルトで make すると、make 自体は問題なく終了するのですが、インストール時に fc-cache が実行されると Segmentation fault (core dumped) を起こすというものです。そして、実際にエラーで止まるのは fontconfig ではなく、font 系の他の ports です。わたしの場合は font-misc-misc でした。そのため発生したら、一旦 fontconfig を deinstall して、入れ直す必要があります。
回避方法: 一旦インストール済みの fontconfig を deinstall し、make 時に、USE_GCC=4.2 を指定して再インストールします
# cd /usr/ports/x11-fonts/fontconfig # make deinstall # rm -rf work # make USE_GCC=4.2 install clean
(2) x11-servers/xorg-server
これが恐らく、一番の山で、デフォルトの状態では決してビルドが通りません。なぜかというと、対応するビデオドライバがないからです・・。
エラーメッセージ:
Making all in fb gmake[3]: Entering directory `/usr/ports/x11-servers/xorg-server/work/xorg-server-1.7.7/fb' CC fb24_32.o In file included from fb24_32.c:30: ./fb.h:102:2: error: "GLYPHPADBYTES must be 4" #error "GLYPHPADBYTES must be 4" ^ 1 error generated. gmake[3]: *** [libfb_la-fb24_32.lo] Error 1 gmake[3]: Leaving directory `/usr/ports/x11-servers/xorg-server/work/xorg-server-1.7.7/fb' gmake[2]: *** [all-recursive] Error 1 gmake[2]: Leaving directory `/usr/ports/x11-servers/xorg-server/work/xorg-server-1.7.7' *** Error code 1 Stop. make[1]: stopped in /usr/ports/x11-servers/xorg-server *** Error code 1 Stop. make: stopped in /usr/ports/x11-servers/xorg-server
回避方法: しかし、実は、この問題は Ray 氏によって既に解決されていて、xorg-server の patch 及び、RPI 向けの移植版ビデオドライバが公開されています。そのため、それを使用すれば問題なく xorg-server をビルドして動作させることができます。
まず、準備として、x11-servers-xorg-server-master.zip と x11-drivers-xf86-video-scfb-master.zip を任意の場所にダウンロードします。以下のコマンドはファイルをダウンロードしてビルドインストールするまでになります。
# fetch --no-verify-peer https://github.com/rayddteam/x11-servers-xorg-server/archive/master.zip # unzip master.zip # cd x11-servers-xorg-server-master # cp -rf * /usr/ports/x11-servers/xorg-server/ # rm master.zip # fetch --no-verify-peer https://github.com/rayddteam/xf86-video-scfb/archive/master.zip # unzip master.zip # cd x11-drivers-xf86-video-scfb-master # cp -rf x11-drivers-xf86-video-scfb-master /usr/ports/x11-drivers/xf86-video-scfb/ # rm master.zip # cd /usr/ports/x11-servers/xorg-server/ # make install clean # cd /usr/ports/x11-drivers/xf86-video-scfb/ # make install clean
3: xorg.conf について
xorg が無事最後までインストールできたら、いよいよ xorg の起動の準備になります。
通常であれば、Xorg -configure
で設定ファイルを作成するのですが、なんと、RPI ではこれがうまく動作しません・・。困ったものです。
しかし、xorg-server の patch を書かれた Ray 氏が、記事に設定例も書いてくれていますので、これをそのまま使わせていただくことにします。
以下の設定を全て、/etc/X11/xorg.conf
にコピペして保存します。
Section "Files" EndSection Section "Module" Load "dbe" Disable "dri" Disable "dri2" Disable "glx" SubSection "extmod" Option "omit xfree86-dga" EndSubSection EndSection Section "ServerFlags" Option "AIGLX" "false" Option "NoAccel" "True" Option "NoDRI" "True" Option "DRI" "False" Option "DRI2" "False" EndSection Section "InputDevice" Identifier "Keyboard1" Driver "kbd" EndSection Section "InputDevice" Identifier "Mouse1" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/sysmouse" EndSection Section "Monitor" Identifier "Monitor" Mode "1024x600" DotClock 25.175 HTimings 1024 1048 1148 1200 VTimings 600 610 620 700 EndMode EndSection Section "Device" Identifier "Generic FB" Driver "scfb" Option "NoAccel" "True" EndSection Section "Screen" Identifier "Screen" Device "Generic FB" Monitor "Monitor" DefaultDepth 16 SubSection "Display" Depth 16 Modes "1024x600" EndSubsection EndSection Section "ServerLayout" Identifier "layout" Screen 0 "Screen" 0 0 InputDevice "Mouse1" "CorePointer" InputDevice "Keyboard1" "CoreKeyboard" EndSection
わくわく、startx する前に、/etc/rc.conf
に 設定を追加するのを忘れないようにしましょう。
# echo 'dbus_enable="YES"' >> /etc/rc.conf # echo 'hald_enable="YES"' >> /etc/rc.conf
dbus と hald を手動で起動します。
# /usr/local/etc/rc.d/dbus start # /usr/local/etc/rc.d/hald start
ようやく、準備が整いました。うまく動くといいですね~!
% startx
0 件のコメント:
コメントを投稿