XFree86 のコンパイルと設定をする

OpenBSD に標準で付いて来る XFree86 は、X_locale が有効になっていません。 しかし、OS 自身のロケール機能が不完全で日本語を扱うことができないため、 X Window 側のロケール機能を有効にしておいた方が良さそうです。 そこで、X_locale を有効にして XFree86 を再コンパイルし、 インストールと設定をしました。

tk/tcl のインストール

  1. XFree86 のコンパイルには tk/tcl 8.3 が必要です。 そこで、ports からインストールします。
    ※ OpenBSD 3.5 からは tk/tcl 8.4 が必要になったようです。
    # cd /usr/ports/lang/tcl/8.3
    # make
    # make install
    # cd /usr/ports/x11/tk/8.3
    # make
    # make install
    

コンパイルとインストール

  1. X_locale を使えるように、 /usr/XF4/xc/config/cf/OpenBSD.cf の以下の部分を書き換えます。
    #define StandardDefines -DCSRG_BASED -DX_LOCALE
                                        ^^^^^^^^^^^^これを追加する。
    
  2. 全コンパイルをします。 これにより、インストール用の tar archive が出来ます。 また、XFree86がインストールされた環境で実行した場合には、 新しいバージョンの上書きインストールまで行われます。 これにはとても時間が掛かります。
    # cd /usr/XF4
    # mkdir dest rel
    # make b-r
    
  3. 初めてインストールする場合には、tar archive からのインストールが必要になります。 ここで、各ファイルの "32" の部分は OpenBSD の版数により変わります。
    # cd /
    # tar xzpvf /usr/XF4/rel/xbase32.tgz
    # tar xzpvf /usr/XF4/rel/xshare32.tgz
    # tar xzpvf /usr/XF4/rel/xfont32.tgz
    # tar xzpvf /usr/XF4/rel/xserv32.tgz
    

設定

  1. /etc/X11/XF86Config を作成します。 このファイルの仕様は、man XF86Config を参照してください。 なお、このファイルを生成するには、xf86config コマンドが便利です。 当方で使用しているファイルをこのページの最後に添付します。 参考にしてください。
  2. /etc/sysctl.conf ファイルの以下の行を有効にします(行頭の # を外す)。 インストール時に X Window を使う設定にした場合には、 ここは、既に有効になっているはずです。
    machdep.allowaperture=2         # See xf86(4)
    
  3. xdm を使用しするのなら、/etc/rc.conf ファイルの以下の箇所を変更します。
    xdm_flags=""
    
  4. 必要に応じて、xdm のログイン画面をカスタマイズします。 カスタマイズは、/etc/X11/xdm 配下のファイルを変更することで行います。 なお、デフォルトでは、OpenBSD の公式キャラクター(バージョン毎に異なる)が出迎えてくれます。

XF86Config のサンプル

  1. ATI Rage128 を使い、解像度 1600x1200 専用で表示する設定です。
    Section "Module"
        Load "dbe"
        SubSection "extmod"
            Option "omit xfree86-dga"
        EndSubSection
        Load "type1"
        Load "freetype"
    EndSection
    
    Section "Files"
        RgbPath  "/usr/X11R6/lib/X11/rgb"
        FontPath "/usr/X11R6/lib/X11/fonts/misc/:unscaled"
        FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
        FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
        FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
        FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
    EndSection
    
    Section "ServerFlags"
    #   Option "NoTrapSignals"
        Option "DontZap"
        Option "DontZoom"
        Option "BlankTime" "30"
        Option "StandbyTime" "30"
        Option "SuspendTime" "30"
        Option "OffTime" "0"
    EndSection
    
    Section "InputDevice"
        Identifier "Keyboard1"
        Driver "Keyboard"
        Option "AutoRepeat" "300 30"
    #   Option "Xleds"      "1 2 3"
        Option "XkbRules"   "xfree86"
        Option "XkbModel"   "pc101"
        Option "XkbLayout"  "us"
    EndSection
    
    Section "InputDevice"
        Identifier "Mouse1"
        Driver "mouse"
        Option "Protocol"   "wsmouse"
        Option "Device"     "/dev/wsmouse"
    #   Option "Emulate3Buttons"
    #   Option "Emulate3Timeout" "50"
    EndSection
    
    Section "Monitor"
        Identifier "EIZO F931"
        HorizSync   31.5-120
        VertRefresh 59-100
        Option "DPMS"
    EndSection
    
    Section "Device"
        Identifier "ATI RAGE 128"
        Driver  "r128"
    EndSection
    
    Section "Screen"
        Identifier "Screen 1"
        Device  "ATI RAGE 128"
        Monitor "EIZO F931"
        DefaultDepth 24
        Subsection "Display"
            Depth   8
            Modes   "1600x1200"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth   16
            Modes   "1600x1200"
            ViewPort 0 0
        EndSubsection
        Subsection "Display"
            Depth   24
            Modes   "1600x1200"
            ViewPort 0 0
        EndSubsection
    EndSection
    
    Section "ServerLayout"
        Identifier "Simple Layout"
        Screen      "Screen 1"
        InputDevice "Mouse1" "CorePointer"
        InputDevice "Keyboard1" "CoreKeyboard"
    EndSection