Howto

Armadillo-440 液晶モデル を使用して Debian 上で X.org を使ってみる

本 Howto では、Armadillo-440 液晶モデルで動作する Debian GNU/Linux に X.org をインストールし、Web ブラウザを起動するまでの方法を紹介します。

Armadillo-9 で X Window System を使用する方法については「Howto: X Window Systemのセットアップ」をご覧ください。

おおまかな手順は以下のようになります。

  1. Debian のインストール
  2. Debian の設定
  3. X.org のインストール
  4. X.org の設定
  5. アプリケーションのインストール
  6. アプリケーションの設定
  7. X.org の起動
  8. アプリケーションの起動

本 Howto で使用するソフトウェアのバージョンは以下の通りです。

  • ディストリビューション: Debian GNU/Linux 5.0 (コードネーム「Lenny」)
  • ウィンドウシステム: X.org X11R7.3
  • ウィンドウマネージャ: JWM 2.0.11
  • Webブラウザ: Mozilla Iceweasel 3.0.62

以降の説明では、Debian GNU/Linux を Debian と表記します。

1. Debian のインストール

本章では、Debian のインストール方法について説明します。

まずは ソフトウェアマニュアルの7.2.4. ルートファイルシステムの構築を参照し、Armadillo-440 液晶モデルに Debian をインストールしてください。

次にインターネットに接続できるようにネットワークを設定してください。

2. Debian の設定

本章では、Debian の時刻の設定方法と、Debian にインストールされているソフトウェアをアップグレードする方法を説明します。

apt-get コマンドを使用する時に、システム時刻が著しくずれている場合は、ワーニングが大量に表示されます。 ワーニングが大量に表示されるのを防ぐため、以下のコマンドを参考に現在の時刻を設定してください。

[armadillo ~]# ln -sf /usr/share/zoneinfo/Japan /etc/localtime
[armadillo ~]# date -s "2010/06/16 11:36:06"         ←時刻を設定します。例では、2010年6月16日 11時36分6秒に設定しています
[armadillo ~]# /etc/init.d/hwclock.sh restart

次に、Debian にインストールされているソフトウェアを最新バージョンにアップグレードするため、以下のコマンドを実行してください。

[armadillo ~]# apt-get update
[armadillo ~]# apt-get upgrade

3. X.org のインストール

以下のコマンドを実行し、X.org とタッチスクリーンのドライバーをインストールしてください。

[armadillo ~]# apt-get install x-window-system-core
[armadillo ~]# apt-get install xserver-xorg-input-evtouch

4. X.org の設定

本章では、Armadillo-440 で X.org を動作させるために必要な、ビデオデバイスとインプットデバイスの設定について説明します。

X.org の設定ファイル(/etc/X11/xorg.conf)を、以下のように修正してください。

まずは、ビデオデバイスの設定をします。Armadillo-440 では、ビデオデバイスとしてフレームバッファを使用するので、Device セクションに "fbdev" ドライバーを追加してください。

次に、インプットデバイスの設定をします。Armadillo-440 では、インプットデバイスとしてタッチスクリーンを使用するので、InputDevice セクションのドライバーに "evtouch" を指定してください。また、Device オプションを追加し、タッチスクリーンのデバイスファイルを追加してください。その他の項目については、後述の設定例を参照し設定してください。

なお、インプットデバイスとしてマウスの設定を行わなかった場合、X.org 起動時に以下のエラーが発生します。このエラーを回避するために、ServerFlags セクションを追加し、"AllowEmptyInput" オプションを "true" に設定してください。

(EE) <default pointer>: Cannot find which device to use.
(EE) xf86OpenSerial: No Device specified.
(EE) <default pointer>: cannot open input device
(EE) PreInit failed for input device "<default pointer>"

最後に、デフォルトの入出力デバイスを指定します。ServerLayout セクションを追加し、Screen エントリーに Default Screen、InputDevice エントリーに Generic Keyboard と Configured Mouse を設定してください。

設定例を以下に示します。(修正済みのファイルは、Armadillo-440 用 xorg.conf からダウンロードできます。)

Section "ServerFlags"
        Option          "AllowEmptyInput"       "true"
EndSection

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp"
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "evtouch"
        Option          "Device" "/dev/input/event1"        (*1)
        Option          "MinX" "150"                        (*2)
        Option          "MinY" "200"                        (*2)
        Option          "MaxX" "3950"                       (*2)
        Option          "MaxY" "3850"                       (*2)
        Option          "MoveLimit" "50"
EndSection

Section "Device"
        Identifier      "Configured Video Device"
        Driver          "fbdev"
        Option          "UseFBDev"              "true"
EndSection

Section "Monitor"
        Identifier      "Configured Monitor"
EndSection

Section "Screen"
        Identifier      "Default Screen"
        Monitor         "Configured Monitor"
EndSection

Section "ServerLayout"
        Identifier      "Default Layout"
        Screen          "Default Screen"
        InputDevice     "Generic Keyboard"
        InputDevice     "Configured Mouse"
EndSection

(*1) USB キーボード、USB マウス等を接続している場合はタッチスクリーンのデバイスファイル名が変更されている場合があります。その場合は、オプションの設定をタッチスクリーンのデバイスファイルに変更してください。タッチスクリーンのデバイスファイルの探す方法については Appendix A. インプットデバイスのデバイスファイルを探す方法についてを参照してください。

(*2) MinX, MinY, MaxX, MaxY はタッチスクリーンがタッチされた位置を特定するために必要な設定です。X.org 使用時にタッチした位置からカーソルがずれたり、タッチスクリーンを変更した場合はキャリブレーションをおこなってください。キャリブレーション方法については Appendix B. タッチスクリーンのキャリブレーション方法についてを参照してください。

/etc/X11/xorg.conf の設定方法の詳細は以下のコマンドで参照できます。

[armadillo ~]# man xorg.conf

タッチスクリーンドライバーの設定方法の詳細は /usr/share/doc/xserver-xorg-input-evtouch ディレクトリにあるファイルを参照してください。

5. アプリケーションのインストール

ウィンドウマネージャと Web ブラウザのインストール方法を説明します。

本 Howto では、ウィンドウマネージャとして JWM を使用します。

Web ブラウザは Debian で標準の Iceweasel を使用します。

以下のコマンドを実行し、JWM と Iceweasel をインストールしてください。

[armadillo ~]# apt-get install jwm
[armadillo ~]# apt-get install iceweasel

6. アプリケーションの設定

JWM の標準の設定ファイルには間違いがあるので、設定を変更する必要があります。 本章では JWM の設定方法を説明します。

ウィンドウマネージャの設定ファイル(/etc/jwm/jwmrc)を以下のように変更してください。

   <RootMenu height="15" onroot="123">
      <Program icon="rxvt.png" label="Terminal">x-terminal-emulator</Program>
      <Program icon="firefox.png" label="Www Browser">x-www-broser</Program>      ←削除
      <Program icon="firefox.png" label="Www Browser">x-www-browser</Program>     ←追加

他のアプリケーションもインストールする場合は apt-get コマンドを使用してインストールすることができます。chimera2、arora 等の軽量なブラウザをインストールし、使用することもできます。

本 Howto で使用した /etc/jwm/jwmrc ファイルは以下からダウンロード可能です。

・設定ファイル : jwmrc

7. X.org の起動

以下のコマンドを実行し、X.org を起動してください。

[armadillo ~]# startx
X: warning; process set to priority -1 instead of requested priority 0

X.Org X Server 1.4.2
Release Date: 11 June 2008
X Protocol Version 11, Revision 0
Build Operating System: Linux Debian (xorg-server 2:1.4.2-10.lenny2)
Current Operating System: Linux debian 2.6.26-at9 #1 PREEMPT Tue Jun 8 16:16:57 JST 2010 armv5tejl
Build Date: 11 June 2009  11:50:58AM
 
    Before reporting problems, check http://wiki.x.org
    to make sure that you have the latest version.
Module Loader present
Markers: (--) probed, (**) from config file, (==) default setting,
    (++) from command line, (!!) notice, (II) informational,
    (WW) warning, (EE) error, (NI) not implemented, (??) unknown.
(==) Log file: "/var/log/Xorg.0.log", Time: Mon Jun 14 06:30:19 2010
(==) Using config file: "/etc/X11/xorg.conf"
xf86optionListCreate: count must be an even number.
State: S_UNTOUCHED    Action: No Action        Button: 0
State: S_TOUCHED    Action: No Action        Button: 0
State: S_LONGTOUCHED    Action: down        Button: 1
State: S_MOVING    Action: No Action        Button: 0
State: S_MAYBETAPPED    Action: click        Button: 1
State: S_ONEANDAHALFTAP    Action: down        Button: 3
[config/hal] couldn't initialise context: (null) ((null))          (*)

(*) [config/hal] のエラーは HAL をインストールしていないため出力されます。HAL を使用しなくても X Window System は使用できますが、HAL を使用する場合は、apt-get コマンドを実行し HAL をインストールしてください。

X.org の起動が失敗した場合は、/var/log/Xorg.0.log ファイルを参照し、エラーの原因を調べることができます。エラーの原因が分かったら、該当箇所の設定ファイルを見直し、再度 X.org を起動してください。

8. アプリケーションの起動

JWM と Iceweasel の起動方法を説明します。

JWM は X.org が立ち上がると自動的に起動します。

Iceweasel を起動するためには、まず左下の "JWM" ボタンを押してください。そうするとアプリケーションを起動するためのメニューが表示されます。

次に表示されたメニューから "Www Browser" を選択してください。しばらくすると Iceweasel が起動します。

Appendix A. インプットデバイスのデバイスファイルを探す方法について

A.1. sysfs ファイルを利用してインプットデバイスを探す方法について

/dev/input/event[数字] ファイルがどのインプットデバイスかを知りたい場合は、/sys/class/input/event[数字]/device/name ファイルを読み込むことでわかります。

例えば、/dev/input/event0 ファイルが Armadillo-440 液晶モデルのボタンのデバイスファイルの場合は、/sys/class/input/event0/device/name ファイルの内容が gpio-keys になります。

また、/dev/input/event1 ファイルが タッチスクリーンのデバイスファイルの場合は、/sys/class/input/event1/device/name ファイルの内容が imx_adc_ts になります。

ですので、/sys/class/input/event[数字]/device/name ファイルの内容が gpio-keys または imx_adc_ts になるファイルを探してください。

以下に、Armadillo-440 液晶モデルのボタンのデバイスファイルが /dev/input/event0 ファイル、タッチスクリーンのデバイスファイルが /dev/input/event1 ファイルである場合の結果を示します。

[armadillo ~]# cat /sys/class/input/event0/device/name
gpio-keys
[armadillo ~]# cat /sys/class/input/event1/device/name
imx_adc_ts

A.2. インプットデバイスのデバイスファイルを表示するシェルスクリプトの作成

複数のインプットデバイスが接続されている場合、sysfs ファイルで調べるのは大変ですので、インプットデバイスのデバイスファイルを表示するシェルスクリプトを作成する方法を説明します。

find_input.sh という名前のファイルを作成し、以下の内容をファイルに追加します。

#!/bin/sh

for input_ev in $(find /sys/class/input/event*); do
    if [ "$(cat $input_ev/device/name)" = "gpio-keys" ]; then
        echo "Button = $(echo $input_ev | sed -e 's|/sys/class|/dev|')"
    fi
    if [ "$(cat $input_ev/device/name)" = "imx_adc_ts" ]; then
        echo "Touchscreen = $(echo $input_ev | sed -e 's|/sys/class|/dev|')"
    fi
done

sh コマンドを使用し、find_input.sh ファイルを実行すると Armadillo-440 液晶モデルのボタンと、タッチスクリーンのデバイスファイル名が表示されます。

[armadillo ~]# sh find_input.sh
Button = /dev/input/event0
Touchscreen = /dev/input/event1

sh find_input.sh コマンドの結果は以下のデバイスファイルを示します。

  • Button : Armadillo-440 液晶モデルのボタン
  • Touchscreen : タッチスクリーン

インプットデバイスの詳細はソフトウェアマニュアルの第8章 Linux カーネルデバイスドライバー仕様を参照してください。

本 Howto にて使用した find_input.sh ファイルは以下からダウンロード可能です。

・シェルスクリプト : find_input.sh

Appendix B. タッチスクリーンのキャリブレーション方法について

タッチスクリーンのキャリブレーション方法について説明します。 タッチスクリーンの変更等でカーソルがタッチしている場所からずれてしまう場合は、タッチスクリーンのキャリブレーションをする必要があります。以下の手順を参照し、キャリブレーションを実行してください。

B.1. キャリブレーションプログラムの起動

X.org を起動している場合は、終了してから以下の手順を行ってください。

/etc/X11/xorg.conf ファイルを以下のように変更してください。

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "Device"        "/dev/input/event0" ←追加(*)
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp"
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "evtouch"
        Option          "Device" "/dev/input/event1"
        Option          "MinX" "150"
        Option          "MinY" "200"
        Option          "MaxX" "3950"
        Option          "MaxY" "3850"
        Option          "MoveLimit" "50"
        Option          "Calibrate" "1"                     ←追加
EndSection

(*) USB キーボード、USB マウス等を接続している場合は Armadillo-440 液晶モデルのボタンのデバイスファイル名が変更されている場合があります。その場合は、オプションの設定を Armadillo-440 液晶モデルのボタンのデバイスファイルに変更してください。Armadillo-440 液晶モデルのボタンのデバイスファイルを探す方法は Appendix A. インプットデバイスのデバイスファイルを探す方法についてを参照してください。

以下のコマンドを入力し、キャリブレーションプログラムを起動してください。

[armadillo ~]# ln -s /usr/share/xf86-input-evtouch/empty_cursor.xbm /
[armadillo ~]# cd /usr/lib/xf86-input-evtouch
[armadillo /usr/lib/xf86-input-evtouch]# ./calibrate.sh

B.2. キャリブレーションの方法

キャリブレーションの手順を以下に示します。

  • X.org が起動し、画面に9個の×印が表示されます。

  • タッチスクリーンにタッチをすると画面に2行のテキストが表示されます。 1行目には X 座標と Y 座標の最小、最大値が表示されます。 2行目には最後にタッチした座標が表示されます。

  • X 座標とY 座標の最小、最大の値を求めるために、液晶の全ての角をタッチしてください。クリックしないでスライドさせるように動かすとよりよい結果がでます。

  • X 座標と Y 座標の最小と最大値と思う座標が、画面中央の1行目のテキストに表示されたら、 Armadillo-440 液晶モデルに付いている SW1 ボタンを押してください。

  • SW1 ボタンを押すと、左上の×印が赤く変わります。 赤い×印をタッチすると、次の×印が赤く変わります。 この作業を繰り返し、すべての×印をタッチするとキャリブレーションが 終了します。

  • キャリブレーションの結果は out.txt という名前のファイルで作成されます。 out.txt ファイルに設定されている内容を /etc/X11/xorg.conf ファイルに設定してください。

  • x0 ~ x8, y0 ~ y8 はカーソルが特定の位置で、補正するピクセル数を示しています。 もし、これらの値が -20 から 20 の間に入っていない場合は、正しく値がとれていない可能性があるため、 もう一度キャリブレーションを実行してください。

例としてArmadillo-440 液晶モデルにて実行した結果の out.txt ファイルを以下に示します。

        Option        "MinX"        "96"
        Option        "MinY"        "225"
        Option        "MaxX"        "3961"
        Option        "MaxY"        "3933"
        Option        "x0"        "-11"
        Option        "y0"        "-4"
        Option        "x1"        "-7"
        Option        "y1"        "-4"
        Option        "x2"        "-2"
        Option        "y2"        "-4"
        Option        "x3"        "-13"
        Option        "y3"        "-1"
        Option        "x4"        "-5"
        Option        "y4"        "-1"
        Option        "x5"        "-2"
        Option        "y5"        "-1"
        Option        "x6"        "-3"
        Option        "y6"        "2"
        Option        "x7"        "-7"
        Option        "y7"        "2"
        Option        "x8"        "0"
        Option        "y8"        "2"

B.3. キャリブレーションプログラムを実行するために変更した設定を元に戻す。

/etc/X11/xorg.conf ファイルを以下のように変更してください。

Section "InputDevice"
        Identifier      "Generic Keyboard"
        Driver          "kbd"
        Option          "XkbRules"      "xorg"
        Option          "Device"        "/dev/input/event0" ←削除
        Option          "XkbModel"      "jp106"
        Option          "XkbLayout"     "jp"
EndSection

Section "InputDevice"
        Identifier      "Configured Mouse"
        Driver          "evtouch"
        Option          "Device" "/dev/input/event1"
        Option          "MinX" "150"
        Option          "MinY" "200"
        Option          "MaxX" "3950"
        Option          "MaxY" "3850"
        Option          "MoveLimit" "50"
        Option          "Calibrate" "1"                     ←削除
EndSection

以下のコマンドを入力し、キャリブレーションを実行するために作成したシンボリックリンクを削除してください。

[armadillo ~]# rm /empty_cursor.xbm

  1. JWM は、比較的サイズが小さく、動作が軽いという特長を持ったウインドウマネージャです。 

  2. Iceweasel は、Debian 版の Mozilla Firefox です。商標の関係で名称が変更されています。