[Ubuntu 10.10] トラックポイントを利用する

2010/11/07PC::Linux/BSD

ThinkPad 600XにKubuntu 10.10(Maverick Meerkat)をインストールしたので、トラックポイントを利用できるようにした時のメモ。

環境

  • ThinkPad 600X (トラックポイントIII)
  • Kubuntu 10.10/i386
  • KDE3.5.12

解説

Ubuntu 10.04より、HALが廃止され9.04の頃のようにfdiでInputDeviceに対するルールを記述するのではなく、従来(8.04の頃)のようにxorgに対する設定ファイル経由で設定を読み込むようになったようです。
しかしながら、/etc/xorg.confはUbuntu 10.10には存在していません。/usr/share/X11/xorg.conf.d/以下に各デバイスに対する設定を記述することで読み込まれるようになったようです。

と、いうことで、また新しくトラックポイントの設定を記述しなければならなくなったわけです。

実装

調べてみたら、ちょうどいい具合に設定が公開されていました。

と、いうことで、上記サイトをベースにトラックポイントに関する設定を記述してみました。
上記サイトには記述されていない、各引数の説明も記述していますので、調整する場合に役立ててください。

/usr/share/X11/xorg.conf.d/20-trackpoint.conf

Section "InputClass"
        Identifier      "IBM TrackPoint"
        MatchProduct    "TrackPoint"
        MatchDevicePath "/dev/input/event*"
        Driver          "evdev"
        # ホイールエミュレートする
        Option          "EmulateWheel" "true"
        # ホイールエミュレートに使用するボタン番号
        Option          "EmulateWheelButton" "2"
        # 1ノッチに対応するカーソル移動量?
        Option          "EmulateIntrtia" "50"
        # ホイールエミュレートのタイムアウト時間(ms)
        Option          "EmulateWheelTimeout" "100"
        # 3ボタンエミュレートをしない
        # 3ボタンエミュレートは、従来の2ボタンマウスを同時押し(確か)することで
        # センターボタン押下をエミュレートする機能
        Option          "Emulate3Buttons" "false"
        # ホイールエミュレート中のX方向の移動に対する発生するイベント
        #(ボタン番号)を定義
        # 第2引数はそれぞれ、左(マイナス)方向、右(プラス)方向
        Option          "XAxisMapping" "6 7"
        # ホイールエミュレート中のY方向の移動に対する発生するイベント
        #(ボタン番号)を定義
        # 第2引数はそれぞれ、下(マイナス)方向、上(プラス)方向
        Option          "YAxisMapping" "4 5"
        
        # Option        "ZAxisMapping" "A B C D"
        # ZAxisMappingはホイールエミュレート中のそれぞれの移動に対して
        # 発生するイベント(ボタン番号)を定義
        # A: 垂直マイナス, B: 垂直プラス, C: 水平マイナス, D: 水平プラス
EndSection

上記を記述したら、再起動*1することで、トラックポイントによるスクロール機能が利用できるようになります。
また、以前はFirefox側にもチルトホイールによるスクロールを受け入れる設定が必要でしたが、Kubuntu 10.10で提供されるFirefox(3.6.12)では、デフォルトの設定にてスクロールが有効になっています。

*1 : Xサーバーの再起動でも構わないと思いますが、未検証です

Debianインストール時のパッケージ集に含まれるパッケージリストを表示する方法

2010/06/23PC::Linux/BSD

taskselでできるようです。情報を提供してくださった@henrichさん、ありがとうございました。

Kubuntu 9.04/amd64での実行例

タスクの一覧を表示する

$ tasksel --list-tasks
u desktop          Desktop environment
u web-server       Web server
u print-server     Print server
u dns-server       DNS server
i file-server      File server
i mail-server      Mail server
u database-server  SQL database
u laptop           Laptop
u manual           manual package selection

タスクで利用可能なパッケージの一覧を表示する

laptopタスクに含まれるパッケージリストを表示。

$ tasksel --task-packages laptop
acpi-support
hibernate
acpi
apmd
radeontool
anacron
wireless-tools
cpufrequtils
wpasupplicant
vbetool
pcmciautils
acpid
hotkey-setup
bluetooth
avahi-autoipd
uswsusp

NFSで利用するポートを固定する

2010/03/24PC::Linux/BSD

NFSサーバーのポートの固定をしたときのメモ。

環境

  • Debian GNU/Linux 4.0/i386
    • Kernel 2.6.18-6-686
    • nfs-kernel-server 1.1.0.10-6+etch.1

NFSが利用するポート

NFSが利用するポートは以下の通り。

  • portmapper: 111/tcp, 111/udp
  • nfs: 2049/tcp, 2049/udp
  • statd: 不定/tcp, 不定/udp
  • nlockmgr: 不定/tcp, 不定/udp
  • mountd: 不定/tcp, 不定/udp

上記のように、nlockmgr, statd, mountdが利用するポートは不定の為、iptablesでルールを記述することができません。ですので、iptablesを用いたセキュアな環境を構築するためにはこれらのポートを固定する必要があります。

NFSのポートを固定する

statdの固定

/etc/default/nfs-common

# If you do not set values for the NEED_ options, they will be attempted
# autodetected; this should be sufficient for most people. Valid alternatives
# for the NEED_ options are "yes" and "no".

# Options for rpc.statd.
#   Should rpc.statd listen on a specific port? This is especially useful
#   when you have a port-based firewall. To use a fixed port, set this
#   this variable to a statd argument like: "--port 4000 --outgoing-port 4001".
#   For more information, see rpc.statd(8) or http://wiki.debian.org/?SecuringNFS
STATDOPTS="--port 49152 --outgoing-port 49155"

# Some kernels need a separate lockd daemon; most don't. Set this if you
# want to force an explicit choice for some reason.
NEED_LOCKD=

# Do you want to start the idmapd daemon? It is only needed for NFSv4.
NEED_IDMAPD=

# Do you want to start the gssd daemon? It is required for Kerberos mounts.
NEED_GSSD=

STATDOPTSのパラメータ指定で入力側ポートと出力側ポートを指定します。
上記の例では入力に両方でプライベートポート*1である49152を、出力にも49155を指定しています。*2

nlockmgrの利用するポートの固定

/etc/modprobe.d/options.local
このファイルは用意されていないので、作成する必要があります。混乱を避けるためにあえて私は新規に作成していますが、modprobe.confに記述してもよいかと。

options lockd nlm_udpport=49153 nlm_tcpport=49153

新規に作成、もしくは既存のmodprobe.confに上記を記述します。上記の例ではnlockmgrの利用するポートを49153/tcp, 49153/udpを指定しています。

mountdの使用するポートの固定

/etc/init.d/nfs-kernel-server

  • 中略-
log_progress_msg "mountd" start-stop-daemon --start --oknodo --quiet --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS -p 49154 if [ $? != 0 ]; then
  • 後略-

nfs-kernel-serverの起動スクリプト中でポート番号の指定を書き加えます。
上記の例では49154番ポートを利用するように指定しています。

*1 : 49152~65535

*2 : 同じポートを指定すると正常に動作しない

確認する

設定が完了したら、nfs-kernel-serverの場合nlockmgrのポートの選定は起動時に行われるため、再起動が必要です*3。再起動後に、以下のコマンドでどのポートが利用されているかを確認することができます。

# rpcinfo -p
   program vers proto   port
    100000    2   tcp    111  portmapper
    100000    2   udp    111  portmapper
    100021    1   udp  49153  nlockmgr
    100021    3   udp  49153  nlockmgr
    100021    4   udp  49153  nlockmgr
    100021    1   tcp  49153  nlockmgr
    100021    3   tcp  49153  nlockmgr
    100021    4   tcp  49153  nlockmgr
    100024    1   udp  49152  status
    100024    1   tcp  49152  status
    100003    2   udp   2049  nfs
    100003    3   udp   2049  nfs
    100003    4   udp   2049  nfs
    100003    2   tcp   2049  nfs
    100003    3   tcp   2049  nfs
    100003    4   tcp   2049  nfs
    100005    1   udp  49154  mountd
    100005    1   tcp  49154  mountd
    100005    2   udp  49154  mountd
    100005    2   tcp  49154  mountd
    100005    3   udp  49154  mountd
    100005    3   tcp  49154  mountd

参考

*3 : nfs-user-serverではどうだかわかりません

samba経由で別のnfsサーバの公開領域に書き込みができるようにする

2010/02/26PC::Linux/BSD

sambaファイルサーバに、別のnfsサーバが公開している領域をマウントさせ、その領域をsamba経由で公開する場合のメモ。

環境

sambaサーバ

  • Debian GNU/Linux 4.0/i386
    • samba 3.0.24-6etch10

nfsサーバ

  • Debian GNU/Linux 5.0/i386
    • nfs-kernel-server 1.1.2-6lenny1

samba側サーバのnfs領域公開設定

NFSのマウント設定は別記事の設定を参照

/etc/samba/smb.conf

[nfs-srv]
            path = /mnt/nfs/nfs-srv
            writable = yes
            create mask = 0660
            directory mask = 0770
            guest ok = no

この状態で使ってみる

この状態でWindowsクライアントからファイルを書き込もうとすると、以下のエラーが発生します。

smb_error.jpg

クライアントの挙動として、以下のようになります。

  • nfs公開ファイルの読み込み: 問題なし
  • nfs公開領域へのフォルダ作成: 問題なし
  • nfs公開領域へファイル書き込み: エラー発生

対処方法

/etc/samba/smb.confのglobalセクションに以下を追加します。

kernel oplocks = no

kernel oplocks

カーネルoplocks をサポートしているUNIX(現在はIRIXとLinux 2.4カーネルのみ)の場合、 このパラメータにより oplock の利用を制御できる。

カーネル oplocks のサポートにより、 smbd(8) が oplock を行ったファイルに対して、 ローカルな UNIX プロセスや NFS 経由でのアクセスがあった際に、 Sambaが oplocks を破棄することが可能となる。 これにより、 SMB/CIFS と NFS やローカルファイルアクセスとの間の完全な一貫性が確保される (これは非常に素晴らしいことである :-)。

このパラメータのデフォルト値は、 on であるが、 カーネルがこの機能をサポートしていないシステムでは、自動的に無効にされる。 このパラメータを変更する必要はないであろう。

デフォルト:
kernel oplocks = yes

smb.conf(5)

ちなみに、共有セクションにoplocks = noと記述しても問題は解決されませんでした。

autofsの設定

2010/02/23PC::Linux/BSD

NFSサーバの公開領域を自動的にマウントさせる仕組みを実装したときのメモ。

環境

  • Debian GNU/Linux 4.0/i386

実装手順

1. autofsパッケージのインストール

# apt-get install autofs
Reading package lists... Done  
Building dependency tree... Done
The following NEW packages will be installed:
  autofs                                     
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 113kB of archives.                                
After unpacking 483kB of additional disk space will be used.  
Get:1 http://ftp.jp.debian.org etch/main autofs 4.1.4-13 [113kB]
Fetched 113kB in 0s (202kB/s)                                   
Selecting previously deselected package autofs.                 
(Reading database ... 35294 files and directories currently installed.)
Unpacking autofs (from .../autofs_4.1.4-13_i386.deb) ...               
Setting up autofs (4.1.4-13) ...                                       

Creating config file /etc/auto.master with new version

Creating config file /etc/auto.misc with new version

Creating config file /etc/auto.net with new version

Creating config file /etc/auto.smb with new version

Creating config file /etc/default/autofs with new version
Starting automounter: loading autofs4 kernel module, no automount maps defined.

2. マスタマップファイルの編集

/etc/auto.master に、最終行を追加。

#
# $Id: auto.master,v 1.4 2005/01/04 14:36:54 raven Exp $
#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#/misc  /etc/auto.misc --timeout=60
#/smb   /etc/auto.smb
#/misc  /etc/auto.misc
#/net   /etc/auto.net
/mnt/nfs        /etc/auto.nfs   --timeout=300

上記の例では、以下のように設定しています。

  • マウントベース(NFSサーバのマウントポイントが格納されるディレクトリ): /mnt/nfs
  • マウントベース毎のマップファイル*1: /etc/auto.nfs
  • automountデーモンに渡すオプション: --timeout=300 (5分後に自動的にアンマウントされる)

3. NFS用のマップファイルの作成

/etc/auto.nfs を新規作成します。

nfs-srv   -fstype=nfs,rw,hard,intr,rsize=32768,wsize=32768  192.168.0.1:/data

上記の例では、以下のように設定しています

  • NFSサーバ192.168.0.1の/dataディレクトリをマウントする
  • マウントポイントは/mnt/nfs/nfs-srvとする
  • マウントオプションはrw,hard,intr,rsize=32768,wsize=32768とする *2
  • fstypeでは、ファイルシステムタイプ(nfs)を指定しています

4. automountデーモンの起動

auto.masterを変更後は、automountデーモンに再読み込みさせなければなりません。
手っ取り早く再起動させます。

# /etc/init.d/autofs restart
Stopping automounter: done.
Starting automounter: done.

5. 動作確認

/mnt ディレクトリ内を確認します。

# ls /mnt
nfs

自動的にマウントベースが作成されています。

続けて、/mnt/nfs ディレクトリ内を確認します。

# ls /mnt/nfs

現時点では何もありません。

続けて、カレントディレクトリを/mnt/nfs/nfs-srvに移動してみます。

# cd/mnt/nfs/nfs-srv
/mnt/nfs/nfs-srv#

上記の時点では何もないので、"No such file or directory"と通常であれば怒られるところですが、正常に移動できています。この時点でlsを実行してみればNFSサーバで公開しているファイル類が表示されるはずです。

最後に、mountコマンド等の実行結果で確認してみます。

# mount
中略
automount(pid24357) on /mnt/nfs type autofs (rw,fd=4,pgrp=24357,minproto=2,maxproto=4)
192.168.0.1:/data on /mnt/nfs/nfs-srv type nfs (rw,hard,intr,rsize=32768,wsize=32768,addr=192.168.0.1)

# cat /etc/mtab
中略
automount(pid24357) /mnt/nfs autofs rw,fd=4,pgrp=24357,minproto=2,maxproto=4 0 0
192.168.0.1:/data /mnt/nfs/nfs-srv nfs rw,hard,intr,rsize=32768,wsize=32768,addr=192.168.0.1 0 0

# cat /proc/mounts
中略
automount(pid24357) /mnt/nfs autofs rw,fd=4,pgrp=24357,timeout=300,minproto=2,maxproto=4,indirect 0 0
192.168.0.1:/data /mnt/nfs/nfs-srv nfs rw,vers=3,rsize=32768,wsize=32768,hard,intr,proto=tcp,timeo=600,retrans=2,sec=sys,addr=192.168.0.1 0 0

*1 : 今回だと/mnt/nfs用のマップファイル

*2 : mountコマンドや/etc/fstabに記述するオプションと同じ