2013年8月21日水曜日

FreeBSD on RaspberryPi で Xorg を WITH_NEW_XORG を有効にしてビルドする

前の記事では、WITH_NEW_XORG を有効にしないで、ビルドする方法の解説でしたが、 ようやくWITH_NEW_XORG を有効にして、Xorg をビルドすることができました。

もっとも、ビルドできただけなので、どこまできちんと動作するのかは正直まだ未知数ではありますが・・。

せっかくなので、とりあえず、fvwm2 も追加で入れて写真をとってみました。たまに落ちたりもしますが、動くことは動くみたいです。

詳しいビルド方法については、現在 github に必要なパッチを適用した ports を入れたリポジトリと一緒に、ドキュメントを公開しています。

freebsd-ports-xorg-raspberrypi

同じドキュメントの日本語版は以下になります。


FreeBSD on RaspberryPi での Xorg のビルド方法

1: 事前準備

このビルドで使用する FreeBSD RaspberryPi のイメージは、"MALLOC_PRODUCTION=yes" オプションを有効にしてビルドしてください。このオプションが設定されていないと、jemalloc 問題 (Failed assertion) で glib20 がビルドに失敗する原因になります。イメージをビルドするのに crochet-freebsd を使用している場合は、"__MAKE_CONF"オプションを指定することで、ビルドに使用する "make.conf" の指定ができます。

"WITH_NEW_XORG=yes" を指定したビルドも可能ですので、その場合は、このオプションを "make.conf" に設定してください。

2: ports tree の取得

イメージ作成時に、crochet-freebsd では "UsrPorts" オプションを指定することで、ports tree をあらかじめインストールすることができます。もしくは、RPI 上で以下のコマンドを使用して、手動で ports tree を取得することもできます。

    # portsnap fetch
    # portsnap extract
    # cd /usr/ports
    # make fetchindex

3: 修正版の適用

ビルドを無事に完了させるために、事前に ports tree に修正を適用する必要があります。

(1) x11/xorg-server

Aleksandr Rybalko 氏が作成された FreeBSD ARM でxorg-server がビルドできない問題の修正版

    # fetch --no-verify-peer https://github.com/rayddteam/x11-servers-xorg-server/archive/master.zip
    # unzip master.zip
    # rm master.zip
    # cd x11-servers-xorg-server-master
    # cp -rf * /usr/ports/x11-servers/xorg-server/
    # cd ../

(2) x11-drivers/xf86-video-scfb

Aleksandr Rybalko 氏による xf86-video-scfb の移植版

    # fetch --no-verify-peer https://github.com/rayddteam/xf86-video-scfb/archive/master.zip
    # unzip master.zip
    # rm master.zip
    # cp -rf xf86-video-scfb-master /usr/ports/x11-drivers/xf86-video-scfb/

(3) x11-font/fontconfig, x11/pixman

デフォルトビルドで、x11-fonts/fontconfig の fc-cache が ARM で Segmentation fault (core dumped) する問題 (ports/181372)、 及び、ARM で x11/pixman がビルドできない問題 (ports/181372)、の修正版

    # fetch --no-verify-peer https://github.com/taguchi-ch/freebsd-ports-xorg-raspberrypi/archive/master.zip
    # unzip master.zip
    # rm master.zip
    # cd freebsd-ports-xorg-raspberrypi-master/x11-fonts/fontconfig/
    # cp -rf * /usr/ports/x11-fonts/fontconfig/
    # cd ../../x11/pixman/
    # cp -rf * /usr/ports/x11/pixman/

(4) graphics/libGL, graphics/dri

ARM で "WITH_NEW_XORG=yes" オプションを有効にしてビルドした場合に、graphics/libGL や graphics/dri で 発生するエラーを修正する Olivier Cochard-Labbe 氏によるパッチ(ports/176703・ports/176705) の適用版。 いずれも graphics/libGL の修正のみで問題が解決します。

    # cd ../../graphics/libGL/
    # cp -rf * /usr/ports/graphics/libGL/

(5) security/libgcrypt

security/libgcrypt のARM ビルド問題 (ports/181365・Rui Paulo 氏) は PR が採用されたため、現時点では解決済みです。

4: Xorg のビルド

    # cd /usr/ports/x11/xorg/
    # make config-recursive
注意: オプション設定では、ビデオドライバは一切必要はありません。RPI で使用するビデオドライバは後ほどインストールする xf86-video-scfb です。
    # make install clean

5: xf86-video-scfb のビルド

    # cd /usr/ports/x11-drivers/xf86-video-scfb/
    # ./configure
    # make install clean

6: xorg.conf の作成

'Xorg -configure' は現時点ではまだ RPI では機能しません。そのため、自分で "/etc/X11/xorg.conf" を作成する必要があります。 しかし、Aleksandr Rybalko 氏が作成された "xorg.conf" の設定が公開されているので、その設定を "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

7: rc.conf への設定追加

    # echo 'dbus_enable="YES"' >> /etc/rc.conf
    # echo 'hald_enable="YES"' >> /etc/rc.conf

8: dbus・hald の起動

    # /usr/local/etc/rc.d/dbus start
    # /usr/local/etc/rc.d/hald start

9: xorg の起動

    % startx

0 件のコメント:

コメントを投稿