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 に 修正して使用してください。
作成した 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 -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 |
% 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 を動かすためには、いくつかの環境変数を設定する必要があります。 XMODIFIERS と LANG です。 それは、csh または tcsh の場合は、.cshrc で設定するか、sh または bash の 場合は、.profile に設定します。
setenv XMODIFIERS "@im=kinput2" setenv LANG ja_JP.eucJP |
export XMODIFIERS="@im=kinput2" export LANG=ja_JP.eucJP |
また、シェルに依存しない方法として、.xinitrc に設定することもできます。
.... 省略 # start some nice programs export XMODIFIERS="@im=kinput2" export LANG=ja_JP.eucJP twm & xsetroot -def & kinput2 -canna & .... 省略 |
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 を使用するように修正。
小金丸コンピュータエンジニアリングサービス
小金丸信幸