[last updated:2006/04/08] [since:2006/04/03]
この文書では、Dynabook SS/S5のX端末化の手順メモです。 当方では以下のような粗筋でX端末化に成功していますが、環境の違い、 この文書のバグ :-) などでうまくいかない可能性もあります。 この文書通りに行うなら自己責任で、読むだけならちょっとした参考程度に 考えて下さい。
よしなしごと、続・よしなしごと でも書いてありますが、Dynabook SS/S5のHDDはトラブル続きです。 HDDのトラブルを回避するため、64MB CompactFlash Linux を作ってみたりもしています。 しかし、64MB CompactFlash Linuxでは、X環境が無いため、 デスクトップ環境としては力不足です。
そこで、Dynabook SS/S5をX端末として用いることを考えました。 他のマシンにLinuxを入れて、XDMCPで接続するわけです。
実のところ、64MB CompactFlash Linuxを作った時点で、同じ方法でX端末用の イメージを作る計画もあったのですが、面倒だったので放置していました。
面倒とは思っていたものの、連続起動していると数日でHDD異常が発生する (HDDアクセスランプが点きっ放しで動作がとてつもなく重くなる。多分、swapのせい) のに耐えられなくなり、X端末化することにしました。
X端末化にあたって、以下の方針を立てました。
まずは、X端末がアクセスするホストの用意です。 ブートイメージなどもホスト側から提供することにしました。
当然、必要です。私はデスクトップ環境としてはXfce4を使っています。 他、EmacsやらMozilla Firefoxやら、いろいろ入っています。
詳細は割愛します。Gentoo Linuxのドキュメントを参照して下さい。
ディスプレイマネージャを入れます。私の環境では、gnome-base/gdm を使っています。
一般に、セキュリティ上の理由で、XDMCPはデフォルトで無効となっています。 GDMの場合、gdmsetupで色々な設定ができます。XDMCPを有効にするためには、 まず、SecurityタブのEnable XDMCPをオンにする必要があります。
ルートファイルシステムにフォントを入れると、サイズが大きくなってしまいます。 フォントサーバを用いることにします。
# USE="font-server" emerge xorg-x11 # vi /etc/X11/fs/config ... #no-listen = tcp <- 削除 ... catalogue = ... <- 適宜、パスを追加 ... # vi /etc/conf.d/xfs ... XFS_PORT="7100" <- "-1"から変更 ... # rc-update add xfs default
カーネルなどを供給するため、tftpサーバを設定します。
# emerge tftp-hpa # mkdir /tftproot # rc-update add in.tftp default
/tftproot以下に、カーネルなどを入れます。
iptablesを使っている場合、XDMCP(177/udp)、フォントサーバ(7100/tcp)、 tftp(69/udp)へのアクセスを許可する必要があります。 X端末のホストアドレスまたはネットワークアドレスに対して、 これらのポートを開けておきます。
この辺りは、次の「X端末イメージの作成」と並行作業になるかもしれません (というか、私は試行錯誤で交互に作業してました)。
端末側でXが起動できるよう、設定ファイルを作成します。
私のケースでは、元々インストールしていたGentoo Linuxの /etc/X11/xorg.confのFontPathを編集して用いました。
# FontPath "/usr/share/..." <- 削除 ... FontPath "tcp/[font-server host]:7100" <- 追加
/etc/X11/xorg.confをホストに転送しておきます。
可能なら、ディスプレイマネージャやフォントサーバへの接続を 確認しておくことをお勧めします。
Linux起動直後はサウンド入出力のレベルが0となっているので、 起動時に適切に設定されるよう、ミキサー設定ファイルを作成します。 media-sound/alsa-utilsを使いました。
# emerge alsa-utils <- インストール # alsamixser <- cursesでの設定 # /etc/init.d/alsasound save <- ミキサー設定ファイルのセーブ
/etc/asound.stateをホストに転送しておきます。
grubをnetboot可能にします。
# USE="netboot" emerge grub # grub --no-floppy grub> root (hd0,0) grub> install /boot/grub/stage1 (hd0) /boot/grub/stage2.netboot /boot/grub/menu.lst grub> quit
(hd0,0)や/boot/grub/などは、環境に合わせて適宜読み替えて下さい。
menu.lstを編集します。
... #splashimage=(hd0,0)/boot/grub/splash.xpm.gz <- 削除 ... title=X Terminal dhcp ifconfig --server=[tftp server host] root (nd) kernel /kernel-2.6.15 root=/dev/ram0 initrd /xt.img.gz ...
splashimageに注意して下さい。削除し忘れると、grubがこけます。 なお、dhcp以下については、grubのinfoのNetworkの項目を参照して下さい。
以下の作業は、ホスト側での作業となります。
ホスト側の適当なディレクトリ以下に、Gentoo Linuxを「インストール」します。 この過程は、基本的には通常のインストールと同様です。但し、
/etc/make.confのUSEは次のようにしてあります:
USE="-apm -curl -arts -bonobo -bzip2 -calender -canna -cdr cjk -curl dga \ -doc dri -emacs esd -examples -expat -fbcon -foomaticdb -freewnn -gb \ -gnome -gnustep -gpm -gtk -gtk2 -gtkhtml -guile iconv -ipv6 -java -kde \ -lesstiff -motif -mozilla -ncurses -nls nptl opengl -oss pcmcia -perl \ -php -python -qt -samba -tcltk -tetex wifi -zlib"
この辺りは、適宜工夫してみて下さい。
インストールプロセスの一環として、カーネルを作成します。 ネットワーク、X関連、ALSA、USB HIDデバイス以外は、とことん外して 構わないと思います。私は、IDEドライバも全て外しました。 但し、RAM diskの容量(256MB/1つ)とinitrdで用いるファイルシステム (私の場合はext2)には気を付けて下さい。
サウンドについては、ALSAのGeneric Devices(Dummyなど)は外しておくべきです。 ミキサー設定に齟齬が生じる可能性があります(というか、嵌まりました)。
以下のパッケージを追加します。
インストールした後は、rc-updateをお忘れなく。
(chroot) # rc-update add pcmcia default (chroot) # rc-update add esound default (chroot) # rc-update add alsasound boot (chroot) # rc-update add dhcpcd default
esoundについては、/etc/conf.d/esoundのコメントに従って設定ファイルを 編集する必要があります。また、/etc/esd/esd.confについては、 spawn_optionsの-terminateを削除した方が良いでしょう。
/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端末化のための X -query の実行については、 他のファイルを編集する手もあるかと思います。
以下は、インストール環境から抜けてから設定します。
X端末にするマシンで作成したXとミキサーの設定をコピーします。 ターゲット名を付加したファイル名に変更しておいて、シンボリックリンク にすると、流用するときに便利かもしれません。
以下、gentoo以下にインストールしたものとします。
(chroot) # exit <- インストール環境から抜ける # umount gentoo/proc gentoo/dev <- まず、アンマウントする # cp xorg.conf gentoo/etc/X11/xorg.conf.xxx # ln -s xorg.conf.xxx gentoo/etc/X11/xorg.conf # cp asound.state gentoo/etc/asound.state.xxx # ln -s asound.state.xxx gentoo/etc/asound.state
不要なファイルの削除で失敗したり、カーネルを設定しなおす羽目になったりする かもしれないので、インストールしたファイルをコピーしておきます。
# cp -a gentoo/ base/
なお、作成したカーネルは、/tftproot以下にコピーします。
# cp gentoo/usr/src/linux/arch/i386/boot/bzImage /tftproot/kernel-2.6.15
base/以下にchrootします。
# chroot base/ /bin/bash # mount -t proc none /proc
まず、システム全体を再emergeします。
# emerge -uD --newuse world
depcleanします。
# emerge --depclean
以下のパッケージをunmergeしていきます。
もし設定ファイルをX端末側から転送する必要があるなら、net-misc/opensshは 残しておいた方が良いかもしれません。
最後に、以下のパッケージを削除します。
警告が大量に出ますが、構わず削除します。なお、Gentoo Linuxの パッケージシステムであるportageを削除してしまうため、やり直しはききません。 なので、コピーをしたわけです。
不要なファイルを削除していきます。
# rm -r boot/ opt/ home/ # rm -r var/cache/* var/db/* var/tmp/* # rm -r var/log/emerge.log var/log/sandbox/ var/log/news/ # rm -r usr/portage usr/src/ usr/local/ usr/libexec/ # rm -r usr/i386-pc-linux-gnu/*bin usr/i386-pc-linux-gnu/lib/*.{a,la} # rm -r usr/lib/perl5 usr/lib/portage # rm -r usr/share/{aclocal,automake*,binutils-data,bison,dict,doc,fonts,\ gcc-data,info,libtool,man,sandbox} # find usr/lib \( -name '*.a' -o -name '*.la' \) -a ! -name '*_nonshared.a' \ -print | grep -v modules | grep -v opengl | xargs rm
findの行は判りづらいですが、要はシェアードオブジェクト以外のライブラリを 削除します。但し、以下を除きます。
chroot環境から抜けます。
# umount proc # exit
イメージファイルを作成します。
# dd if=/dev/zero of=xt.img bs=1024 count=240 # mke2fs -F xt.img # tune2fs -i 0 -c 0 xt.img # mount -o loop xt.img /mnt # cp -a base/* /mnt/ # umount /mnt # gzip xt.img.gz
できたファイルを/tftprootにコピーします。
# cp xt.img.gz /tftproot
これで、設定はおしまいです。
私の手元では、上記のような手順でホスト-X端末を構成し、 今までDynabook SS/S5のスタンドアローンでやってきた日常作業 (メール、Web閲覧など)ができ、XMMSでの音楽再生もできています。
64MB CompactFlash Linuxで作成したCF-Linuxのブートローダを ネットワークブート可能なgrubに差し替えて、menu.lstも書き換えました。 これを使えばHDDともオサラバできます。ただ、CFからだと起動に一手間かかるので、 今のところはHDDを使っています。
anraku@lemon.plala.or.jp