Xorg の設定 (8.3-RELEASE, 9.1-RELEASE)

02 版: 平成25年(2013年)05月01日 (水)
小金丸 信幸/Nobuyuki Koganemaru
kogane@koganemaru.co.jp

はじめに

FreeBSD 5.X-RELEASE で XFree86 をインストールして設定して以来、 X Window をインストールしていませんでした。 FreeBSD 8.2-RELEASE で、改めて Xorg をインストールしようとしましたが、 違いが大きくとまどいました。 これは、8.2-RELEASE の説明を元に 8.3-RELEASE と 9.1-RELEASE 用に 変更したものです。 8.2-RELEASE にインストールする場合は、こちら 「Xorg の設定」(8.2-RELASE 版) を参照してください。

以前に、この文書を作成した時点では、9.1-RELEASE 用のパッケージが 用意されていませんでした。 新しく、9.1-RELEASE 用のパッケージを使用して、 インストールする方法を説明します。

希望の設定とするために、何度も Web を検索する必要がありました。 インストール時に遭遇した問題等を解決して設定する方法を紹介致します。 最終的にインストールする環境としては、 ウィンドマネジャーとして、基本的な twm、日本語を表示するための kterm、 日本語を入力するための kinput2、ブラウザとして firefox を使用するものです。

FreeBSD/i386 のマシンで、既に 8.3-RELEASE, 9.1-RELEASE が インストールされていて、 ネットワークの設定も済んでいることを前提として説明します。 設定を行うユーザとしては、スーパユーザ (root) であることとします。 シェルとしては、csh または tcsh としています。

まず、次のシェル手続きを作成します。

#!/bin/sh
export LANG=C
SITE=ftp.jp.freebsd.org
#SITE=ftp.freebsd.org
case `uname -r` in
8.2-*)
    REL=8.2-RELEASE
    ;;
8.3-*)
    REL=8.3-RELEASE
    ;;
9.1-*)
    REL=9.1-RELEASE
    PKG=packages-9.1-release
    ;;
*)
    echo UNKNOWN RELEASE `uname -r` 1>&2
    exit 1
    ;;
esac
while :
do
    case "$1" in
    -*)	OPT="$OPT $1" ; shift ;;
    *) break ;;
    esac
done
for F
do
    if [ "$PKG" ]; then
      	echo pkg_add $OPT ftp://$SITE/pub/FreeBSD/ports/i386/$PKG/All/$F
      	pkg_add $OPT ftp://$SITE/pub/FreeBSD/ports/i386/$PKG/All/$F
    else
	echo pkg_add $OPT ftp://$SITE/pub/FreeBSD/releases/i386/$REL/packages/All/$F
	pkg_add $OPT ftp://$SITE/pub/FreeBSD/releases/i386/$REL/packages/All/$F
    fi
done

        package を追加するためのシェル手続き PKG_ADD.sh

エディタで入力するのが面倒な人のためには、次で取得できます。
ftp://ftp.koganemaru.co.jp/pub/FreeBSD/Xorg/PKG_ADD.sh

このファイルに実行パーミッションを付けて、 適切な実行パスがあるディレクトリに置きます (例えば、/usr/local/bin/)。

# chmod +x PKG_ADD.sh; mv PKG_ADD.sh /usr/local/bin
# hash (csh、tcsh の場合)

PKG_ADD.sh の中の取得するサイト (SITE) としては、日本のサイト ftp.jp.freebsd.org が適切ですが、サイト内のファイルに問題があるようで、 取得できないパッケージなどが生じます。その場合は、ftp.freebsd.org に 修正して使用してください。

Xorg のインストール

作成した PKG_ADD.sh を使用して Xorg をインストールします。

# PKG_ADD.sh xorg-7.5.1.tbz	# 8.3-RELEASE
# PKG_ADD.sh xorg-7.5.2.tbz	# 9.1-RELEASE

途中でエラーが生じるなどで、本体の Xorg がインストールできないような場合は、

# PKG_ADD.sh -f xorg-7.5.1.tbz	# 8.3-RELEASE
# PKG_ADD.sh -f xorg-7.5.2.tbz	# 9.1-RELEASE

のように -f オプションをつけて実行します。 Xorg の版数 (xorg-7.5.1, xorg-7.5.2) などが、不明の場合は、次のように ftp サイトにログインして、package の一覧を取得すると便利です。 <> の部分は、利用者の入力部分です。

# 8.3-RELEASE の場合
# ftp ftp.freebsd.org
Trying 87.51.34.132...
Connected to ftp.freebsd.org.
220 ftp.beastie.tdk.net FTP server (Version 6.00LS) ready.
Name (ftp.freebsd.org:root): <ftp>
331 Guest login ok, send your email address as password.
Password:<利用者のメールアドレス>
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <cd pub/FreeBSD/releases/i386/8.3-RELEASE/packages/All>
250 CWD command successful.
ftp> <dir . 8.3-RELEASE.pkg>
output to local-file: 8.3-RELEASE.pkg [anpqy?]? <y>
229 Entering Extended Passive Mode (|||62949|)
150 Opening ASCII mode data connection for '/bin/ls'.
  1635 KB   70.62 KB/s
226 Transfer complete.
ftp> bye
221 Goodbye.
#
# 9.1-RELEASE の場合
# ftp ftp.freebsd.org
Trying 87.51.34.132...
Connected to ftp.freebsd.org.
220 ftp.beastie.tdk.net FTP server (Version 6.00LS) ready.
Name (ftp.freebsd.org:root): <ftp>
331 Guest login ok, send your email address as password.
Password:<利用者のメールアドレス>
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> <cd pub/FreeBSD/ports/i386/packages-9.1-release/All>
250 CWD command successful.
ftp> <dir . 9.1-release.pkg>
output to local-file: 9.1-release.pkg [anpqy?]? <y>
229 Entering Extended Passive Mode (|||62949|)
150 Opening ASCII mode data connection for '/bin/ls'.
  1616 KB   51.53 KB/s
226 Transfer complete.
ftp> bye
221 Goodbye.
#

これで、8.3-RELEASE.pkg または 9.1-release.pkg ファイルに package の 一覧が出力されます。

# grep xorg 8.3-RELEASE.pkg	# 8.3-RELEASE
# grep xorg 9.1-release.pkg	# 9.1-RELEASE

とすると Xorg の版数等が分かります。
次に日本語環境のための package をインストールします。

# 8.3-RELEASE, 9.1-RELEASE とも同じ
# PKG_ADD.sh ja-kterm-6.2.0_11.tbz
# PKG_ADD.sh ja-canna-server-3.7p3_9.tbz
# PKG_ADD.sh ja-kinput2-3.1_13.tbz

日本語対応の firefox をインストールします。

# PKG_ADD.sh firefox-i18n-10.0.3_1.tbz	# 8.3-RELEASE
# PKG_ADD.sh firefox-i18n-10.0.9.tbz	# 9.1-RELEASE

xorg.conf の設定

インストールが終ったら、xorg.conf を作成して、設定します。

# Xorg -configure

とすると、root のホームディレクトリに xorg.conf.new というファイルが 作成されます。

# Xorg -config xorg.conf.new -retro

とすると、X が起動しますが、多分うまくいかないでしょう。X を終了するには、 Crtl+Alt+Fn (1 番目の仮想コンソールから起動した場合は、F1) を入力して、 次に Ctrl+C を入力します。
次の「FreeBSD ハンドブック」を参照してください。
http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/index.html

「X11 の設定」は、次の部分です。
http://www.jp.freebsd.org/www.FreeBSD.org/doc/ja_JP.eucJP/books/handbook/x-config.html

ハンドブックにも書かれているように、モニタの周波数を追加しなければなりません。

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	HorizSync       30-170
	VertRefresh     48-120
EndSection

これは、モニタの仕様に合わせて設定しますが、モニタによっては、 起動時に画面に表示されるものもあります。
私の使用しているモニタ (CRT ブラウン管) では、これでも表示できませんでした。 結局次のように設定すると表示できるようになりました。

Section "Monitor"
	Identifier   "Monitor0"
	VendorName   "Monitor Vendor"
	ModelName    "Monitor Model"
	HorizSync       31.0-81.0
	VertRefresh     55.0-76.0
EndSection

次に画面の解像度やサイズを設定します。次の場合は、DefaultDepth を 16 に し、その部分に Modes "1024x768" を追加しています。解像度が大きい場合は、 DefaultDepth を 24 等にし、画面のサイズも Modes "1152x864" 等にできます。

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth	16		<- 追加
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	.... (省略)
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes	"1024x768"	<- 追加
	EndSubSection

ほぼ表示できるようになったなら、xorg.conf.new ファイルを所定の位置、 /etc/X11/xorg.conf にコピーします。

# cp xorg.conf.new /etc/X11/xorg.conf

キーボードとマウスの設定

これで、startx を実行すれば、X Window が起動します。

# startx

しかし、マウスは、動きません。 また、日本仕様のキーボード jp106 での入力ができません。 従来の XFree86 であれば、次のように xorg.conf に設定することで、jp106 が使えるようになっていました。 キーボードの CapsLock キーと Ctrl キーを交換しています。

Section "InputDevice"
	Identifier  "Keyboard0"
	Driver      "kbd"

	Option "XkbRules"	"xorg"		<- 追加
	Option "XkbModel"	"jp106"		<- 追加
	Option "XkbLayout"	"jp"		<- 追加
	Option "XkbOptions"    "ctrl:swapcaps"	<- 追加
EndSection
Section "InputDevice"
	Identifier  "Mouse0"
	Driver      "mouse"
	Option	    "Protocol" "auto"
	Option	    "Device" "/dev/sysmouse"
	Option	    "ZAxisMapping" "4 5 6 7"
	Option      "Emulate3Buttons"		<- 必要であれば追加
EndSection

実は、Xorg 7.4 から、キーボードとマウスは、hal で制御されるようになりました。 hal を動かすためには、次の行を /etc/rc.conf に追加します。

hald_enable="YES"
dbus_enable="YES"

これで、マシンを再起動して、X Window を動かすと、 マウスは、動きますが、キーボードは、jp106 になりません。

しかし、以前のように xorg.conf に設定するだけでマウスやキーボードの問題を 解決する方法があります。 これらは、FreeBSD のメーリングリストで見つけることができました。 xorg.conf に次の行を追加します。

Section "ServerFlags"
	Option	"AllowEmptyInput" "off"
EndSection

hal を動かさないモードの場合は、/etc/rc.conf の hal の指定を削除しておきます。

#hald_enable="YES"
#dbus_enable="YES"

hal によるキーボードとマウスの設定

それでは、hal を動かすモードの設定方法を説明します。

xorg.conf の AllowEmptyInput の部分を削除します。

Section "ServerFlags"
	#Option	"AllowEmptyInput" "off"
EndSection

/etc/rc.conf の設定を元に戻します。

hald_enable="YES"
dbus_enable="YES"

8.2-RELASE では、hal が動きませんでしたが、この原因は、 インストール時に /var/cache/hald というディレクトリが 作成されていないことでした。 8.3-RELASE, 9.1-RELASE では、問題は、ありません。

これで、マシンを再起動すれば、hald (hal) が動きます。 しかし、キーボードの jp106 の設定は、有効になりません。 hal の場合は、別のファイルでキーボードの設定を行います。そのファイルは、 /usr/local/share/hal/fdi/policy/10osvendor/10-x11-input.fdi です。 そのファイルを次のように変更します。
"<!-- 追加 -->" から "<!-- 追加終り -->" までの行を追加します。

<?xml version="1.0" encoding="ISO-8859-1"?>
<deviceinfo version="0.2">
  <device>

    <!-- KVM emulates a USB graphics tablet which works in absolute coordinate mode -->
    <match key="input.product" contains="QEMU USB Tablet">
       <merge key="input.x11_driver" type="string">evdev</merge>
    </match>

    <match key="info.capabilities" contains="input.tablet">
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
    </match>

    <match key="info.capabilities" contains="input.keyboard">
      <!-- If we're using Linux, we use evdev by default (falling back to
           keyboard otherwise). -->
      <merge key="input.x11_driver" type="string">kbd</merge>
      <!-- 追加 -->
      <merge key="input.x11_options.XkbRules" type="string">xorg</merge>
      <merge key="input.x11_options.XkbLayout" type="string">jp</merge>
      <merge key="input.x11_options.XkbModel" type="string">jp106</merge>
      <merge key="input.x11_options.XkbOptions" type="string">ctrl:swapcaps</merge>
      <!-- 追加終り -->
      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
             string="Linux">
        <merge key="input.x11_driver" type="string">evdev</merge>
      </match>
    </match>
  </device>
</deviceinfo>

修正するためには、次のようにファイルのパーミッションを変更する必要があります。

# cd /usr/local/share/hal/fdi/policy/10osvendor
# chmod +w 10-x11-input.fdi

エディタで入力するのが面倒な人のためには、次で取得できます。
ftp://ftp.koganemaru.co.jp/pub/FreeBSD/Xorg/10-x11-input.fdi

修正した後に、hal を再起動するためには、次のように行います。

# cd /usr/local/etc/rc.d
# ./hald restart

twm の設定

これからの説明は、スーパユーザ (root) でなく、一般のユーザで設定できます。 X Window を起動するとき、表示されるコンポーネントを設定するためには、 .xinitrc に記述します。 .xinitrc のサンプルは、/usr/local/lib/X11/xinit/xinitrc にあります。 次のコマンドで、ホームディレクトリに .xinitrc をコピーします。

% cp /usr/local/lib/X11/xinit/xinitrc ~/.xinitrc

左上に表示される -name login の xterm を小さくし、その他の xterm を削除して kterm を使用するようにするには、次のように変更します。

--- .xinitrc.orig	2011-01-05 00:49:09.000000000 +0900
+++ .xinitrc	2012-02-23 02:20:18.000000000 +0900
@@ -45,6 +45,5 @@
 
 twm &
 xclock -geometry 50x50-1+1 &
-xterm -geometry 80x50+494+51 &
-xterm -geometry 80x20+494-0 &
-exec xterm -geometry 80x66+0+0 -name login
+kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+20+35 &
+exec xterm -geometry 80x10+0+0 -name login

また、日本語を入力するための kinput2 の設定もここで行います。 上記の変更部分を次のようにします。

twm &
kinput2 -canna &
xclock -geometry 50x50-1+1 &
kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+20+35 &
exec xterm -geometry 80x10+0+0 -name login

kinput2 は canna を使用して日本語を入力しますので、canna を有効にしなければ なりません。 それには、/etc/rc.conf に、root になって、次の行を追加します。

canna_enable="YES"

エディタで入力するのが面倒な人のためには、次で取得できます。
ftp://ftp.koganemaru.co.jp/pub/FreeBSD/Xorg/.xinitrc

次に、マウスの右ボタンで firefox を起動するように設定するには、.twmrc ファイル に記述します。 .twmrc のサンプルは、/usr/local/share/X11/twm/system.twmrc にあります。 次のコマンドで、ホームディレクトリに .twmrc をコピーします。

% cp /usr/local/share/X11/twm/system.twmrc ~/.twmrc

次の行を .twmrc の最後の行に追加します。 クロックの表示は、最初から表示するのではなく、ボタンで表示するようにしています。 その場合は、.xinitrc から xclock の部分を削除します。 firefox をボタンで表示します。 3 つの kterm を画面に追加するようにしています。 この場合、1024x768 の画面では、右側の 2 つの kerm を表示することができません。 これを解決する方法は、後で説明します。

Button3 = : root : f.menu "Applications"

menu "Applications"
{
"Clock  "       !"xclock &"
"kterm 1 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+0+400 &"
"kterm 2 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+585+400 &"
"kterm 3 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+600+30 &"
""		f.nop
"Firefox  "     !"firefox &"
}

これで、ほぼ設定が終了ですが、何か変な感じがします。 それは、背景が真っ黒なことです、以前の XFree86 の場合は、黒白のまだらの 背景が自動的に表示されていました。 この問題を解決するために、何度も Web 検索を行いました。 結論としては、背景を表示するコマンド xsetroot を使用することです。 次のように、.xinitrc に、そのコマンドを追加します。 別の背景を表示するなら、xsetroot のマニュアルを参照してください。 xsetroot で Web 検索すると、日本語のマニュアルが見つかります。

twm &
xsetroot -def &			<- 追加
kinput2 -canna &
xclock -geometry 50x50-1+1 &
kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+20+35 &
exec xterm -geometry 80x10+0+0 -name login

エディタで入力するのが面倒な人のためには、次で取得できます。
ftp://ftp.koganemaru.co.jp/pub/FreeBSD/Xorg/.twmrc

仮想画面の設定

1024x768 の画面で、すべての kerm を表示するためには、仮想画面を使用します。 マウスを移動することで、隠れた画面を表示することができるようになります。 次のように xorg.conf を修正します。 もちろん、xorg.conf の修正は、root になって行います。

Section "Screen"
	Identifier "Screen0"
	Device     "Card0"
	Monitor    "Monitor0"
	DefaultDepth	16
	SubSection "Display"
		Viewport   0 0
		Depth     1
	EndSubSection
	.... (省略)
	SubSection "Display"
		Viewport   0 0
		Depth     16
		Modes	"1024x768"
		Virtual     1280 1024		<- 追加
	EndSubSection

kinput2 の設定

kinput2 を動かすためには、いくつかの環境変数を設定する必要があります。 XMODIFIERS と LANG です。 それは、csh または tcsh の場合は、.cshrc で設定するか、sh または bash の 場合は、.profile に設定します。

setenv XMODIFIERS "@im=kinput2"
setenv LANG ja_JP.eucJP
csh、tcsh の場合

export XMODIFIERS="@im=kinput2"
export LANG=ja_JP.eucJP
sh、bash の場合

また、シェルに依存しない方法として、.xinitrc に設定することもできます。

.... 省略
# start some nice programs

export XMODIFIERS="@im=kinput2"
export LANG=ja_JP.eucJP

twm &
xsetroot -def &
kinput2 -canna &
.... 省略
.xinitrc に設定

X Window のアプリケーションで日本語を入力するためには、 その画面の入力する部分ににカーソルを移動し、Shift+Space を押します。 日本語入力を中止する場合にも、Shift+Space を押します。

その他の設定

FreeBSD で作業をするとき、ほとんどは、root で行っていますが、mail などは、 一般ユーザで取り扱っています。 次に説明するのは、root の画面と一般ユーザの画面を混在する方法です。 .xinitrc に、一般ユーザの画面を追加する方法です。 ここで、usernm は、一般ユーザのログイン名です。

twm &
xsetroot -def &
kinput2 -canna &
xclock -geometry 50x50-1+1 &
kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+20+35 &
su usernm -c 'cd ~ ; kterm -km euc -vb -bg bisque -sb -sl 200 -cu -geometry 80x50+290+5' &
exec xterm -geometry 80x10+0+0 -name login

一般ユーザの場合は、kterm の基底の色を変えて root の画面と区別しています。 次は、.twmrc で、一般ユーザの画面を追加する方法です。

Button3 = : root : f.menu "Applications"

menu "Applications"
{
"Clock  "       !"xclock &"
"kterm usernm"	!"su usernm -c 'cd ~ ; kterm -km euc -vb -bg bisque -sb -sl 200 -cu -geometry 80x50+290+8' &"
"kterm 1 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+0+400 &"
"kterm 2 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+585+400 &"
"kterm 3 "      !"kterm -km euc -vb -sb -sl 200 -cu -geometry 80x24+600+30 &"
""		f.nop
"Firefox  "     !"firefox &"
}

X Window を起動するために、通常 startx を使用しますが、su が含まれた .xinitrc や .twmrc が実行できません。 この場合は、root になって xinit で起動してください。

# xinit

twm のポップアップメニューなど、文字のフォントは、 xorg.conf のフォントの指定の順序が影響するようです。 フォントを小さくする場合に、xorg.conf のフォントの指定部分を次のように 75dpi を 100dpi の前に入れ換えます。

Section "Files"
	ModulePath   "/usr/local/lib/xorg/modules"
	FontPath     "/usr/local/lib/X11/fonts/misc/"
	FontPath     "/usr/local/lib/X11/fonts/TTF/"
	FontPath     "/usr/local/lib/X11/fonts/OTF"
	FontPath     "/usr/local/lib/X11/fonts/Type1/"
	FontPath     "/usr/local/lib/X11/fonts/75dpi/"    <-入れ換える
	FontPath     "/usr/local/lib/X11/fonts/100dpi/"   <-入れ換える
EndSection

firefox を起動すると、明朝体のすこしぼけたおおきな文字で表示されます。 ゴシック体で表示するためには、次の ipa フォントのパッケージを追加するとよいでしょう。 通常の設定であれば、特に xorg.conf を修正する必要はありません。

# 8.3-RELEASE, 9.1-RELEASE とも同じ
# PKG_ADD.sh ja-font-ipa-00303.tbz

おわりに

これで、Xorg の設定は、終りです。 GNOME、KDE や Xfce の設定については、未調査です。 設定する機会があれば、また説明を行いたいと思っています。 説明が分からない、足りないなどがありましたら、連絡してください。


変更履歴
作成:  平成25年(2013年)03月30日 (金)
	8.2-RELEASE 版の 「Xorg の設定」を元に作成。
02 版: 平成25年(2013年)05月01日 (水)
	9.1-RELEASE 用の package を使用するように修正。

小金丸コンピュータエンジニアリングサービス
小金丸信幸