[last updated:2009/09/27] [since:2009/09/27]
この文書では、Dynabook SS/S5のX端末化の手順メモです。 当方では以下のような粗筋でX端末化に成功していますが、環境の違い、 この文書のバグ :-) などでうまくいかない可能性もあります。 ちょっとした参考程度に考えて下さい。
Gentoo LinuxによるX端末化でX端末を作ってより、 長らく更新をサボっていました。そんなこんなしているうちに諸々の環境が変化して いたらしく、困ったことやら新機能が使えないやらの問題が発生していました。
Composite拡張がなくてEmacsの背景透過やらXfceのパネル透過ができなかったのを 契機に、環境の更新をする決心を固めました。
以下の作業は、ホスト側での作業となります。
ホスト側の適当なディレクトリ以下に、Gentoo Linuxを「インストール」します。 この過程は、基本的には通常のインストールと同様です。但し、 Gentoo Handbook の5.bから行ないます。また、繰り返しになりますが、
/etc/make.confの追加設定項目は、今回は次のようにしてあります:
LINGUAS="ja" INPUT_DEVICES="keyboard mouse" VIDEO_CARDS="trident" USE="-acl alsa -apm -arts -bonobo -bzip2 -calender -canna -cdr cjk -dga \ -doc dri -emacs esd -examples -expat -fbcon -fontconfig -foomaticdb \ -freewnn -gb -gnome -gnustem -gpm -gtk -gtk2 -gtkhtml -guile -hal \ iconv -ipv6 -java -kde -lesstiff mmx -motif -mozilla -ncurses -nls \ nptl opengl -oss pcmcia -perl -php -python -qt3 -qt4 -samba sse \ -tcl -tk -tetex wifi -xattr -xinerama xcomposite -zlib"
この辺りは、適宜工夫してみて下さい。
インストールプロセスの一環として、カーネルを作成します。 基本的には、以前のビルド環境から.configをコピーして make oldconfig し、 make menuconfig で調整してビルドします。
(chroot) # make (chroot) # make modules_install (chroot) # make firmware_install
以下のパッケージを追加します。 無線LANもPCMCIAも使っていないので、今回はpcmcia-csは入れませんでした。
インストールした後は、rc-updateをお忘れなく。今回はdhcpcdのaddは不要です。
(chroot) # rc-update add esound default (chroot) # rc-update add alsasound boot
システムを再emergeします。
# emerge -uD --newuse system
depcleanします。
# emerge --depclean # revdep-rebuild
/etc/inittabを編集します。
... # TERMINALS c1:12345:respawn:/sbin/agetty 38400 tty1 linux <- c1を除き、削除 #c2:2345:respawn:/sbin/agetty 38400 tty2 linux #c3:2345:respawn:/sbin/agetty 38400 tty3 linux #c4:2345:respawn:/sbin/agetty 38400 tty4 linux #c5:2345:respawn:/sbin/agetty 38400 tty5 linux #c6:2345:respawn:/sbin/agetty 38400 tty6 linux # X terminal x1:345:respawn:/usr/bin/X -query [XDMCP server host] <- X端末化 ... #x:a:once:/etc/X11/startDM.sh <- 不要
X端末化のための X -query の実行については、 他のファイルを編集する手もあるかと思います。
以下は、インストール環境から抜けてから設定します。
X端末にするマシンで作成したXとミキサーの設定をコピーします。 ターゲット名を付加したファイル名に変更しておいて、シンボリックリンク にすると、流用するときに便利かもしれません。
以下、gentoo以下にインストールしたものとします。
(chroot) # exit <- インストール環境から抜ける # umount gentoo/proc gentoo/dev <- まず、アンマウントする # cp xorg.conf gentoo/etc/X11/xorg.conf # cp asound.state gentoo/var/lib/alsa/asound.state
基本的に以前の設定ファイルをコピーすればよいのですが、 今のバージョンではalsasoundの設定ファイルが/etcでなく/var以下に なっていることに注意が必要です。
esoundについては、以下の通り設定します。サンプリングレートの設定も必要です。
/etc/conf.d/esound:
... ESD_START="-nobeeps -as 2" ... # Public TCP access. ESD_OPTIONS="-tcp -public -r 96000" ...
/etc/esd/esd.conf:
... auto_spawn=1 spawn_options=-nobeeps -as 2 -tcp -r 96000 spawn_wait_ms=100 ...
作成したカーネルは、/tftproot以下にコピーします。
# cp gentoo/usr/src/linux/arch/i386/boot/bzImage /tftproot/kernel-2.6.31
不要なファイルの削除で失敗したり、カーネルを設定しなおす羽目になったりする かもしれないので、インストールしたファイルをコピーしておきます。
# cp -a gentoo/ base # rm -r base/usr/src/*
また、X端末環境用のディレクトリを作成しておきます。
# cp -a base/ env # mv env base/ # cp -a base/env base/env.bak
この二段目のディレクトリは、emergeで不要パッケージを削除するにあたって portageも削除するため必要です。
base/以下にchrootします。
# chroot base/ # export PS1="(chroot) $PS1"
以下のportageをunmergeします。
ファイルにリストを書いておき、emergeするのが良いかと思います。
(chroot) # cat del_pkgs.txt | \ xargs emerge --unmerge --root=env --config-root=env
警告が大量に出ますが、構わず削除します。
不要なファイルを削除します。
(chroot) # chroot env # export PS1="(chroot2) $PS1" (chroot2) # rm -r \ boot opt home mnt \ var/log/portage var/log/emerge*.log var/log/news \ var/db/pkg var/cache/edb var/tmp/* \ usr/local usr/src usr/libexec usr/include usr/portage \ usr/share/aclocal usr/share/doc usr/share/info usr/share/man \ usr/share/binutils-data usr/share/gcc-data \ usr/lib/perl5 usr/lib/pkgconfig usr/lib/portage \ usr/lib/python2.6 \ usr/lib/gcc/i686-pc-linux-gnu/4.3.2/include* \ usr/lib/opengl/xorg-x11/include (chroot2) # find usr/lib \( -name '*.a' -o -name '*.la' \) \ -a \! -name '*_nonshared.a' -print | xargs rm
chroot環境から抜けます。
(chroot2) # exit (chroot) # exit
イメージファイルを作成します。
# dd if=/dev/zero of=xt.img bs=1024k count=240 # mke2fs -F xt.img # tune2fs -i 0 -c 0 xt.img # mount -o loop xt.img /mnt # cp -a base/env/* /mnt/ # umount /mnt # gzip xt.img.gz
できたファイルを/tftprootにコピーします。
# cp xt.img.gz /tftproot
色々とトラブルもあったものの、何とか環境を更新できました。今のデスクトップは こんな感じです。 なお、Emacsの背景透過設定は TransparentEmacs を参考にしました。また、Xfceのパネル透過設定は Xfce - Panel を参考にしました。
因みに、background imageは まんがタイムきららWeb からダウンロードした「GA −芸術科アートデザインクラス−」の壁紙です。 background musicは聴こえませんが :-) 「Don't say "lazy" [5人 ver.]」です。
最後に嵌まった事を紹介します。
portageの削除がうまくできません。
# emerge unmerge sys-devel/python sys-apps/portage ...
portageそのものの削除はできない上、派手にエラーが出ます。
emergeでルートとなるディレクトリを指定できるので、別のルートを作成して やれば、そのルートのportageやpythonは綺麗に削除できます。
今回は削除する方向で作業しましたが、逆に必要なportageを追加するように してX端末用環境を構築する手もあったかと思います。
例えばアイコンボックスを一回クリックしたのに、 二つのウィンドウが立ち上がります。これは、今回の更新前からそうでした。 調べてみると、
という原因があるようです。halを使っていないので、1の線は無さそうです。 2についても「タッチパッドとUSBマウスが繋がっているのだから、 二つ登録する必要があるのでは?」と思っていました。しかし、実際には /dev/input/miceを一つ登録しておけば、両方とも使えるようです。 なので、InputDeviceのmouseを一つにすることで解決しました。
Section "ServerLayout" Identifier "XFree86 Configured" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" EndSection ... Section "InputDevice" Identifier "Mouse0" Driver "mouse" Option "Protocol" "auto" Option "Device" "/dev/input/mice" Option "ZAxisMapping" "4 5" EndSection ...