ここ盛岡でもやっと(2000年1月)ケーブルテレビがプロバイダーサービスを始めました。ケーブルモデムにハブをかませれば複数台のパソコンからインターネットアクセスができます、ということなので喜んでいたのですが、IPアドレスがDHCP自動設定なので、これまでアドレス固定で使っていたパソコン間のネットワークが使えなくなりました。聞けば、ケーブルユーザーを土台のクラッキングも増えているというし、ファイヤウォールもかねてサーバーを組むことにしました。
といった目標を持ちました。幸い、友人からマザボ、CPU、LS120(ATAPI大容量フロッピー)、CD-ROMドライブ、4ポートEthanetカードといった豪華セットをいただいたので(Joker氏、ファミ氏に感謝っっ!!!)、ケースなどを買い込んで1台組み上げました。
この時点ですでにOSはLinuxにしようと漠然と考えていましたが、書店で自作サーバー関連の記事を探してみるとやはりLinuxが一番コスト、パフォーマンス、情報量の面から有利そうです。ここはLinuxの勉強もかねてやってみることにしました。
ディストリビューションはさまざまありますが、たまたま手にした「RedHat Linux6.1 インターネットサーバー構築入門」という本がRedHatだったこともあり、これに決定。後々、これが正解だったことが分かりました。RPM形式によるインストールはWindowsなどインストーラーによるインストレーションに慣れたLinux初心者にはとても分かり易くて便利です。
・RedHat Linux6.1 インターネットサーバー構築入門(LOCUS、ISBN4-89814-095-5)4000円
この本にRedHatLinux6.1日本語版(バイナリ、ソースの2枚組)が付いてきます。うちのマシンにインストールしたのがこのCDから。
・RedHat Linux6.1 ネットワーク構築術(オーム社、ISBN4-274-06364-X)3800円
やたらと分厚い本です。ネットワークの実務の経験が元になった実用書で、sambaやファイヤーウォールについての解説が役に立ちます。
・Linuxメンテナンスブック(ソフトバンクパブリシング、ISBN4-7973-1030-8)2500円
オレンジ色の目立つ本で、コンパクトにまとまっているのにLinux初心者のかゆいところに手が届くお薦めの本。Unix系のコマンドの使い方が分からない・忘れたひと(私もそうでした)とか、Linux設定の要所を押さえるのには最適。
http://www.linux.or.jp/JF/ Linux JF (Japanese FAQ) Project. Linux FAQの日本語化プロジェクト
http://netpassport-wc.netpassport.or.jp/~wmyagi/index_jp.htm CATV接続についての実例
http://www.indyramp.com/masq/ Linux IPマスカレードについての英文サイト
http://www.samba.gr.jp/ 日本sambaの会
Mother ASUS P2B-D Rev1.04(Coppermine不可)
CPU Pentium II 300 / Dual構成
Memory 128Mb
Video Millenium II(推測)
HDD IBM DPTA-372050 (IDE 20GB)
CDROM NEC (ATAPI)
LS-120 Matsusita (ATAPI)
NIC Adaptec ANA-6944A/Qualtec TX (100Base-TX/10BaseT)
SCSI Host Tekram DC-390(00/09/12追加)
SCSI HDD FireBall 1GB (00/09/12追加)
以降の作業は教科書として「インターネットサーバー構築入門」に沿った形で進みます。所々誤植があり、結果と記事が異なる場合がありました。また、CATVとの接続(DHCPで一方のNICのアドレスが決まってしまう)でのファイヤウォールや、ゲーム(ディアブロ)のパケットが通らない問題などは、この本では解決しません。また、chkconfigコマンドについても書かれていません。
BIOSの起動デバイス設定を「CDROM,C,A」にしてCDRomよりブート。のちに「LS/ZIP,C」に戻しました。
インストーラによる設定
キーボード Japanese 106 Keyを選んだが、配列がIBM/PC?(あとで分かったが、インストーラのバグ、http://www.redhat.com/jp/support/ を参照のこと)
パーティション 参考書の倍の値を入力。
ネットワーク 使用カードは対応リストに載ってなかったが、自動で認識されました。
eth0 192.168.3.1
eth1 192.168.3.2
eth2,eth2はブート時アクティブにしなかった。
ルートアカウントの設定。
インストールするコンポーネント Web Serverのみ
dmesg | grep eth とタイプしてeth0、eth1(マルチNICなので)が表示されます。
ping -c 4 192.168.3.5 とタイプして応答があります。同様に他のマシンも確かめます。
これ以降、デーモンのインストールが頻繁に行われるが、RPMパッケージによっては、立ち上げ時に起動する設定になっていないものもあるようです。立ち上げ時に起動する設定を行うには、/etc/rc.d/init.dにデーモンを起動するシェルスクリプトがあり、これらは/etc/rc.d/rc*.d以下のリンクファイルから参照されています。起動、終了時には各ランレベルに応じたrc*.d以下のファイルが次々に呼ばれ、デーモンの起動、終了を行います。"K"で始まるリンクが終了、"S"で始まるリンクが起動のパラメータを持って呼ばれます。もちろん、手動でリンクを張ればいいのですが、これをコマンドで実行できるのが/sbin/chkconfigで、通常のランレベルである3をONにすればよい。詳しくはLinuxメンテナンスブックの3章「スタート時の動作とランレベル」参照。
チェックマークを付けるにはスペースキーを使います。私はこれでずいぶん悩みました。
特に必要はないが、参考書通りということで wu-ftpd をインストールし、他のマシンから接続できることを確認しました。CD-ROMをマウントし(mount /mnt/cdrom)、カレントパスを変更し(cd /mnt/cdrom/RedHat/RPMS)、ファイル名を確認し(ls wu-ftp*)、それをインストール(rpm -ihv "確認したファイル名")します。
WWWサーバソフトです。すでにインストールされているはずです。他機よりブラウザを立ち上げてLinuxサーバをアクセス(http://192.168.3.2)すればサンプルページを見ることができます。
インストール時にセットアップが完了しています。
FTP同様、CD-ROMからインストールする。その後、inetd(各種デーモンをポート要求などの必要に応じて立ち上げてくれる"Super Daemon"で、立ち上げられるデーモンは標準パスが設定済みで立ち上げられるため、作るのが楽らしい)に登録してやります。
/etc/inetd.conf をエディタで開き(vi /etc/inetd.conf)、ipop3dの記述を探し(/ipop3d)、コメントアウトされているはずなので先頭の"#"を外し(x)、書き込み終了(:wq)します。もし、オペミスしたときはESCキーを押してから強制終了(:q!)するといいでしょう。端末のブラウザのsmtp、popサーバーをlinuxサーバーに設定すれば、送ったメールを読むことができます。
教科書通りだとCD-ROM同梱のBINDパッケージはセキュリティ問題があるということだが、現在、まだインターネットにはアクセスできない状態なので、とりあえずCD-ROMからインストールしておき、あとで置き換えることにします。
教科書の誤植と思われるのは、逆引きファイルの1行目のSOAの記述で、0.1.16.172.in-addr.arpa.となっているが、これは最初の"0." (ホスト部)がいらないと思われます。
また、教科書では/etc/resolv.confで参照するネームサーバーを記述できると書かれているが、再起動の度に変更が無効になるため不思議に思っていたのですが、ダイヤルアップ接続の環境では自動的に書き換えられる(LinuxメンテナンスブックP244)そうです。
いよいよ、プロバイダにつなげます。当初、eth0デバイスの設定をifconfigでDHCPによるIPアドレス設定にすればよいものだと思っていました。これはいくつかの理由で不都合があります。
まず、立ち上げ時にいつまでもDHCPによる初期化を待つこと。何らかの原因でプロバイダにつながらなかったりすると起動に失敗します。
次に、パケットフィルタリングによるファイヤーウォールを組もうとしたとき、ゲートウェイ側(プロバイダ側)のIPアドレスが必要になりますが、取り込む手段がない。
ネットを漁ってdhcpcdの存在を知りました。その後、いろいろ試してみたところ
・dhcpcdというデーモンがDHCPサーバーからIPアドレスなどをもらってきて、デバイスにセットしてくれるらしい。rpmパッケージにある。
・dhcpcdをインストールすると、/etc/dhcpcというディレクトリを作り、そこにdhcpcd-eth0.infoを作る。dhcpcd-eth0.exeを同じところに作っておけば、IPの変更時にそれを実行してくれるようだ。また、/etc/resolv.confはdhcpcdによってバックアップが作られてから書き換えられ、コマンド終了時に戻される。
ということが分かりました。
RPMパッケージでのインストールなのですが、/etc/rc.d/init.d下に初期化ファイルを作ってくれないので、自作する必要があります。また、/etc/dhcpc/dhcpcd-eth0.exeにipchains(Linuxをルータとして働かせたり、ファイヤウォールとして使うのに必要)のスクリプトを書いておけば、マスカレードのセットアップもできます。
問題だったのは、マシン起動時に何故かdhcpcd-eth0.exeが起動されないこと。そして、なぜか /etc/rc.d/rc.local が呼ばれないこと。それで、通常のランレベルで呼ばれるrc3.d下のS99localの末尾にdhcpcd-eth0.exeを呼び出す記述を加えました。
参考までに、うちのスクリプトです。
# from here, Added by Kuma.
# 2000/04/03
# Loading IP Masqalade Modules
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_vdolive
/sbin/modprobe ip_masq_quake
# Execute DNS
#/etc/rc.d/init.d/named start
# Execute DHCP Daemon
#/etc/rc.d/init.d/dhcpd start
#wait for IP Masq.
sleep 5s
/etc/dhcpc/dhcpcd-eth0.exe
#(DNSとDHCPの記述がコメントアウトされているのは、chkconfigで起動するようにしたから)
[/etc/rc.d/init.d/dhcpcdd]
# dhcpcdd start or stop dhcpcd by Kuma
#
# chkconfig: - 98 02
# description: dhcpcd is activate dhcp daemon.
# dhcpcd try to execute $EXESCR (="-c <COMMAND>") command.
But don't use.
# because dhcpcd try to execute /etc/dhcpc/dhcpcd-<ethX>.exe if IP
is changed
# reading functions
. /etc/rc.d/init.d/functions
NWSCR="/etc/sysconfig/network-scripts"
ETHIF="eth0"
EXESCR=""
RETVAL=0
SYSCNF="/etc/sysconfig"
#for debug
echo "\$0=$0, \$1=$1"
sleep 3s
[ -x /sbin/dhcpcd ] || exit 0
[ -x $NWSCR/ifcfg-$ETHIF ] || exit 0
# Here We Go.
case "$1" in
start)
# Start dhcpcd daemon
echo -n "Starting DHCP Daemon: "
daemon /sbin/dhcpcd $EXESCR -R $ETHIF
echo
touch /var/lock/subsys/dhcpcdd
;;
stop)
# Stop dhcpcd daemon
echo -n "Shutting down dhcpcd: "
killproc dhcpcd
echo
rm -f /var/lock/subsys/dhcpcdd
/etc/rc.d/init.d/network reload
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
exit $RETVAL
[/etc/dhcpc/dhcpcd-eth0.exeの今のところのバージョン]
#!/bin/sh
# This file is executed by dhcpcd.
#
SYSCNF="/etc/sysconfig"
DHCPC="/etc/dhcpc"
# Backup file exist check
#[ -f $SYSCNF/network.BAK ] || exit 0
echo "Enter dhcpcd-eth0.exe"
if [ -f $DHCPC/dhcpcd-eth0.info ] ; then
echo "Find eth0.info"
else
echo "Cant find eth0.info"
exit 0
fi
# Read Values
#. $SYSCNF/network
. $DHCPC/dhcpcd-eth0.info
# Remake /etc/sysconfig/network
#rm $SYSCNF/network
#touch $SYSCNF/network
#echo "NETWORKING=yes" >>$SYSCNF/network
#echo "FORWARD_IPV4=yes" >>$SYSCNF/network
#echo "HOSTNAME=\"eva02.ootasuido.co.jp\"" >>$SYSCNF/network
#echo "GATEWAY=\"$GATEWAY\""
#cat $SYSCNF/network
# Activate values
#/etc/rc.d/init.d/network reload
#echo "network reload OK"
#cat $SYSCNF/network
echo "Setting IP Masq."
# Set IP Masqalade
if [ -x /sbin/ipchains ]; then
/sbin/ipchains -F
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.3.0/24 -d 0.0.0.0/0 -j MASQ
#IP spoofing protection for input packts
/sbin/ipchains -P input ACCEPT
/sbin/ipchains -A input -p udp -s 0/0 domain -d $IPADDR -j ACCEPT
/sbin/ipchains -A input -s 127.0.0.0/8 -d 0.0.0.0/0 -j DENY -i eth0
/sbin/ipchains -A input -s 127.0.0.0/8 -d 0.0.0.0/0 -j DENY -i eth1
/sbin/ipchains -A input -s $IPADDR -d 0.0.0.0/0 -j DENY -i eth0
/sbin/ipchains -A input -s 192.168.3.2 -d 0.0.0.0/0 -j DENY -i eth1
/sbin/ipchains -A output -p udp -s $IPADDR -d 0/0 domain -j ACCEPT
/sbin/ipchains -A input -s 192.168.3.0/24 -d 0.0.0.0/0 -j DENY -i eth0
/sbin/ipchains -A input -s ! 192.168.3.0/24 -d 0.0.0.0/0 -j DENY -i eth1
#Packet forwerding for Diablo
/sbin/ipvsadm -A -u $IPADDR:6112
/sbin/ipvsadm -a -u $IPADDR:6112 -r 192.168.3.5 -m
echo "IP Masq. OK"
fi
こういった感じです。コメントアウトされて使われてないコードもたくさんありますが、あまり気にしないように(笑)
この状態で、ローカルにぶら下がっている各端末からホームページの閲覧、メールの送受信ができるようになっているはずです。しかし、ディアブロというネットワークゲームをやろうとすると、UDPパケットが通らないといったメッセージを出してバトルネットに接続できません。ネットでいろいろ調べてみたところ、ipautofwというパケットフォワーダで通してやるといいことがわかり、さらに追いかけていくと、ipautofwはRedHat Linuxの前のバージョンに対応していおり、今のバージョンだとCD-ROMのRPMにあるipvsadm というコマンドでフォワーディングができることが分かった。実際の使用方法は上のスクリプトを見てください。
LinuxをWindowsのホストにするsambaをインストールします。CD-ROM同梱のsambaはWindows98、2000の暗号化パスワードに対応していないため、ftpを使い、ネットより2.0.6(2000/04/17現在、英語版のみ)をダウンロードしてインストールします。RPMでは3つのファイルに分かれていましたが、ネットから落とした物は一つだけだったので少々不安もありましたが、ちゃんと動いています。
Macintoshへのサービスはnetatalkを使用します。更新が止まっているらしく、MacOS9(OS-9ではありませんね^_^;;)では少々不具合がでることが分かっています。ダウンロードは ftp://hk-mirror.ftp.ainet.net/pub/direct/redhat/contrib/libc6/i386 から行いました。
Macintosh側で作った漢字のファイルがWindows側で文字化けしたりといったことに対応しています。それと、CGIにも手を出しまして、またもや泥沼してしまいました。ちょっち手抜きして、以下にインストールメモをそのまま記載します^_^;; ちなみに、EVA02はLinuxサーバーのホスト名で、ootasuido.co.jpがドメイン名です。
Win98やNT4、Win2000は暗号化パスワードを使っているため、samba側でパスワードフラグを立て、パスワードファイルを用意しなければならないらしい。redhat対応版だと、パスワードファイルは/etc/smbpasswd。パスワードを作成するツールが付属している。smbpasswd。
netatalkをhttp://mirror.nucba.ac.jp/mirror/SuSE/suse_update/special/で発見。
→どうもRedHat用じゃないみたいで、/etc/rc.configがない、といってエラーになるので削除。
ftp://hk-mirror.ftp.ainet.net/pub/direct/redhat/contrib/libc6/i386から落とす。 →少々エラーが出たが、問題なく動作。
/etc/atalkにある設定ファイルで各ユーザーの設定をする。
AppleVolumes.systemに設定したディレクトリはguestユーザーに現れる。
AppleVolumes.defaultに設定したディレクトリはログインユーザに見せたいフォルダを設定できる。"~"のみの場合はそのユーザのホームディレクトリを指定。
同じフォルダをNetaTalkとsambaを使いWinとMacで見られるようにしているが、Macで作った日本語ファイル名がWin側で化ける。文字コードの関係だろうと思っていたが、http://www.linux.or.jp/JF/JFdocs/jp.netatalk-HOWTO/jp.index.htmlにそれに関する記述があった。
「(訳注:訳出時点での samba の最新バージョン samba-1.9.16p9 には、 日本語コードシステムとして CAP が追加されています。netatalk と samba で同じディレクトリーを公開する場合、samba の日本語コードは CAP に してください。詳しくは samba のソースディレクトリの docs/README.jpn を参照してください) 」
SWATで設定だと、Filename Handlingのcoding systemをcapに、client code pageを932にしたあと、smbdをリスタート。
それと「http://www.alphatec.or.jp/~mirai/mt-2side/unix01.html」からの情報で、「そしてwin上からMac(Netatalk)から転送したときのクリエイターやらの
fileを非表示&削除可を実現」というのが、delete veto files = yes、veto
files = /.AppleDesktop/Network Trash Folder/.AppleDouble/ 。
・透過型Proxyの記事が日経バイト3月号に載っているので、参考にする。
ブラウザのキャッシュを消したりして、効果を確かめた。→/var/log/squidにaccess.log、cache.log、store.logがあり、これでHITしたかどうか確かめられる。
→後になって気がついたが、EVA02のホームページ(www.ootasuido.co.jp)がsquidのエラー画面「Access
Denyed」になり、表示できなくなった。数日悩んだが、日経バイト3月号の記述(/sbin/ipchains
-A input -p tcp -d 0.0.0/0 80 -j REDIRECT 3128)だと、内部のhttpサーバー(Apache。ポート80)のパケットもsquidに転送されることになり、cache.logを見ると「WARNING:Forwarding
loop detected for : GET / HTTP/1.0 (中略) Host: www.ootasuido.co.jp」が出ていた。そこで、/etc/dhcpc/dhcpcd-eth0.exeを書き換え(/sbin/ipchains
-A input -p tcp -s ! 192.168.3.2 -d 0.0.0/0 80 -j REDIRECT 3128)、内部サーバーのパケットは避けるようにしたら、表示できるようになった。
・「KENTとつくろうPerlでCGI」のアクセスカウンタを使おうとしたが、command
not foundになるので、ずいぶん悩んだが、付属CDがDOSテキスト(行末がCrLf)で、bashが行末を認識しないのが原因だった。Linux側で変更する方法がわからず、結局Windows側からFTPを使いAsciiモードで転送して解決した。
実際に動かしてみると、Apacheの設定が、CGIを動かさない設定になっている。
srm.conf中の「AddHandler cgi-script .cgi」の記述のコメントを取る。
access.conf中に各ユーザーのcgi-binディレクトリでCGIが使えるようにするため、
<Directory /home/*/public_html/cgi-bin>
Options ExecCGI
AllowOverride None
</Directory>
という記述を追加する。詳細はP179のApacheの項目。設定後httpd restart。
ApacheからCGIスクリプトを呼び出す時は、実際にはsuEXECとい外部コマンドを通じて行われるが、suEXECはホームページユーザのIDを調べ、100(suEXECコンパイル時に設定)未満だと実行しない。(SuperUserになり済ますのを防ぐためらしい)
とにかくファイルモードとオーナー、グループには注意。スクリプトファイルだけでなく、参照データ、画像データなど。
/etc/httpd/logsにアクセスログ、エラーログがある。
cannot run as forbidden gid‥‥‥‥‥グループIDが100未満なので実行できない
directory is writable by others‥‥‥一般の書き込み権限が許可されていて危険
kumahome 777
kumahome/public_html 755
kumahome/public_html/cgi-bin 755
・kumahomeのCGI(アクセスカウンタ)が動かない理由判明。
エラーメッセージのうち"/etc/httpd/logs/suexec_log"が理由を表示していた。最初はディレクトリについて。"directory
is writable by others:(/home/kumahome/public_html/cgi-bin)"という表示。このディレクトリは"drwxrwxr-x"だったので"drwxr-xr-x"に変更すると次は"file
is writable by others: (/home/kumahome/public_html/cgi-bin/count.cgi)"になり、さらにこれを"-rwxr-xr-x"に変更すると、CGIが動作した。
そもそも、やりたかったのはウィンドウズエミュレータWINEが使いたかったんですが、泥沼にはまりました‥‥‥
WINEを使うにはXwindowが必要です。当然フォントも必要になります。また、Xwindowsを入れたらGnomeなどのデスクトップを導入したいところ。依存関係が複雑で理解を超えてしまったので(笑)、インストーラのお世話になりました。インストールCDから立ち上げてアップグレードを選択したのちインストールするパッケージのチェックを入れる。関係有りそうなパッケージをチェックしまくって、先に進むと依存関係がチェックされ必要なパッケージも一緒にインストールすることができます。
再立ち上げ後、クライアント(Win2000等)からインターネットが利用できなくなったので、ipchains -Lしたところ、初期状態。/etc/dhcpc/dhcpcd-eth0.exeが起動していない。理由が分からないまま、/etc/rc.d/init.d/dhcpcddの末尾で/etc/dhcpc/dhcpcd-eth0.exeを起動するように記述しました。これで、常に起動されるはず。ランレベルにも影響されないし。
startxでXwindowを起動すると「ウィンドウマネージャが起動できない」といったメッセージが出て、ウィンドウの類が左上隅から動かない。
Enlightenmentというウィンドウマネージャがあることを知り、とりあえずプロンプトから"Enlightenment"とタイプしてみたら、"libFnlib" がないとかいうエラー。fnlib.rpmをインストールしてからstartxしたらやっとまともにウィンドウが使えるようになりました。しかし、rootでstartxすると「GMCがクラッシュした」とか言われる(それでも不都合なく使えているけど)。root以外の一般ユーザーだとそういうのは出ない。(→ほかの作業をやっているうち、理由が分からないままGMCのクラッシュがでなくなる。dhcpcddやnamedのデーモン登録をS99localから外して、chkconfigで正しく登録したのが関係あるだろうか?)
ランレベルを5に変更(init 5)したら、グラフィカルログイン画面が出た。KDEで立ち上げてみたらうまいこと動いた。その後、rootでgnome使ってもエラーがでなくなったので、こちらにgnome-linuxconfやゲームなどをcd-romからインストール。(と、思ったらたまにクラッシュしたエラーがでる)
Wineが「LinuxからマウントできるWindows区画」を必要としているらしい。LinuxがインストールされているIDE 20Gは満杯なので、手持ちのDC-390とFireball 1GBを載せて、これにWindows98をインストールすることにしました。Win98のインストール自体は難なく終了。一つ困ったのは、4ポートイーサカードなので、デバイスマネージャに4個のポートが現れるけどみな同じ名前なので、どのケーブルがつながったポートか区別が付きません。「NICの複数差しはメーカーを変えろ」という意味がよく分かりました。
再びLinuxを立ち上げ、Linux側からSCSIディスクを認識させようとしたところ、mount
-t vfat -o rw /dev/sda /win98すると「kernel がblockdeviceとして認識できない」とかいうエラーがでてきます。ネットでいろいろ調べてみたけど、Kernel2.2はscsiデバイスもvfatも対応済み。ここで、modprobeの一覧を見たところscsiデバイスのドライバ名が現れたので、試しにAM53C974をロードしてみたら、接続先の情報が表示されました。/etc/rc.d/rc.localの末尾に「/sbin/modprobe
AM53C974.o
」「/bin/mount -a」を書き加えます。これで、とりあえずWindowsの区画がマウントできました。ちなみにTekramのサイトにはLinux対応の情報があります「ftp://ftp.tekram.com/SCSI/390X/linux/Redhat/」。しかしDC-390はRedHat6.2からの対応(現在6.1)でした。このおかげであとではまります。
バックアップフロッピーを作ろうにも、IDE FloppyのLS120がLinuxから使えず、デバイス名もわからないためマウントできませんでした。Japanese FAQではLS120は対応済みとあります。システム起動時のハードウェア関係のログをみた(dmesg)ら「hdc:LS-120 COSM 02 UHD Floppy, ATAPI FLOPPY drive」とありました。試しにFATのフロッピーを入れてマウントしてみたら読めました。mountの-tオプション(file system type)にautoがあったので、fstabにLS120を記述するのに使ったところ、特にエラーもなく使えてます。まだ1.4Mのフロッピーでしか試してないので、100Mが使えるかどうかはまだ分かりません。
gnomeのキーボードレイアウトがUSになってしまうが、以前コンソールで修正した時にXF86の修正方法も調べられていた。XF86Configを書き換えるが(XkbModelをjp106、XkbLayoutをjpに書き換える、とある)エントリが無かったので"Keyboard"の項目の末尾に追加してうまくいった。RedHatはx86setupがキーボードの選択で落ちるのは認識しているがRedHat作ではないため未対応とのこと。
ハードウェア(CMOS)クロックを合わせるには、root権限で# clock -wとすれば、カーネル時刻をCMOSに書き込めます。xntpdで時刻の同期をしているのなら、システムクロックの方が正確ですからね。
rc.localスクリプトからSCSIを認識させるのは、やっぱし美しくないし(笑)、Linux起動時のメッセージに[FAILD]という赤い字がでるのもいやなので、立ち上げ時からSCSIを認識させることにします。DC-390のパッチが6.2以降からの対応だったため、6.2にバージョンを上げることにしました。
CD-Romのイメージファイルをダウンロードし、Rom焼きしてからCDROM立ち上げしてアップグレードインストールします。再立ち上げ後、Win2000からインターネットアクセスできないことがわかったのでトラブルシューティングの始まり。そもそもの目的のSCSIドライブの起動時からの認識はオーケー(AM53C974ドライバが起動時に組み込まれるようだ)なので、DC-390パッチはとりあえずお預けです。→起動時のドライバの指定は/etc/conf.modulesに「alias scsi_hostadapter AM53C974」を書き込むといいようです。6.1の時にいろいろいじってみて記述方法が分からなかったので、あきらめていたのですが、6.2へのアップデートの時に書き換えられたようです。先に分かってたら6.2にする必要がなかったかな。
Win2000からpingが効きません。→eth0、eth1の設定がおかしくなっている。netconfでは訳分からないエラーで設定不能。ifconfigでeth0=192.168.4.1、eth1=192.168.3.2と設定しましたが、おかしな現象が連発します。
1)立ち上げ時、eth0がダウンしている(ifconfigしても出てこない)
2)netconf(linuxconfも同一)でeth0が二つ表示される。
3)dhcpcddが立ち上げ失敗(FAILEDと表示される)→特に/sbin/dhcpcd -d eth0とやるとcore吐き出して立ち上がらない。
2は、/etc/sysconfig/network-scriptsにあるifcfg-eth0の他にifcfg-eth0.BAKが有ったため、誤動作してました。→BAKを削除
1は、dhcpcdが起動するときにeth0をダウンさせているようです。試しに/sbin/dhcpcd
eth0とやると再現できました。
3は、dhcpcdは環境によって動かないことがあるようで、http://www.gee.kyoto-u.ac.jp/LDP/HOWTO/mini/DHCP-3.htmlにその旨書いてあり、代替方法にpumpを使うとあります。実行してみると確かにeth0経由でDHCP情報を得て設定してくれるようで、いままで使えなかったnslookupやnetscapeが使えるようになりました。しかし、pump.confファイルを使おうとすると、manでは使えると書いてあるコメント「#」がエラーになったり、起動時や状態変更時に呼ばれるとされるスクリプトが呼ばれていないようだったり、どうも怪しい。それでも、これらの結果でdhcpクライアントがらみの現象、ということが分かりました。
カーネルを2.2.16にしたらよくなるかと、セキュリティ対策も兼ねてバージョンアップしてみました。変更モジュールは
kernel-doc-2.2.16-3
kernel-utils-2.2.16-3
kernel-headers-2.2.16-3
kernel-source-2.2.16-3
kernel-ibcs-2.2.16-3
kernel-2.2.16-3
kernel-pcmcia-cs-2.2.16-3
kernel-smp-2.2.16-3
しかし、カーネルの更新でも全く状況は変わりなしです。dhcpcdがeth1だと動くようなので、eth0とeth1の接続を交換し、関連ファイル(/etc/rc.d/init.d/dhcpcd、/etc/dhcpc/dhcpcd-eth1.exe)を書き換え。ここまでで、Win2000からpingとnslookupは使えるようになりましたが、Win2000のNetscapeからは「The requested URL could not be retrieved」というsquidのメッセージが表示されます。
/etc/squidにsquid.confが、6.2にしたときにsquil.conf.rpmsaveとして以前のが保存されていました。/etc/squid/oldconfディレクトリを作り、*.confを保存した上で、squid.confをsquid.conf.rpmsaveで置き換えたのち、/etc/rc.d/init.d/squid restartしたところ無事win2000が外に出られるようになりました。
/var/log/boot.logのメッセージでatalkがエラーを出しているのが気になっていましたが、Macでセレクタを起動してみるとeva02(Linux ホスト)が見えません。直接/usr/sbin/atalkdを起動するとsocket:Invalid argumentの表示とともにatalkdがexitしています。現在のVer 1.3.3からVer1.4b2にしたが同じ。実は、kernelのappletalkサービスが動いていませんでした。modprobe appletalkしたらatalkdは起動しました。man modprobeでは/etc/conf.modulesで組み込むモジュールを指定できそうなことを書いてあるのですが、よくわからなかったので/etc/rc.d/init.d/atalkスクリプトのstartのあたりに/sbin/modprobe appletalkという行を入れてとりあえず解決しました。
Win2000のNetscapeで見ることのできないサイトがありました。"http://***.intranets.co.jp/"、"http://www.hifi24.com/"などで、Linux上のNetscapeからは正しく表示されます。皆目見当が付かなかったけど、糸口を順を追っていくと、「***.intranets.co.jpはWin2000のNetscapeでは"intranets.co.jp"になってしまう」→「nslookupでアドレスは正常に引ける」→「もちろんpingも通る」→「nslookupで逆引きをしてみると"www.hifi.24.com"も"***.intranets.co.jp"も別名が出てくる」→(この間configファイルをいろいろチェックしたりいじったりして駄目)「bindパッケージを疑い、バージョンを元に戻してみた(bind-8.2.1-7)が変わらず」→「squidを元に戻す(squid-2.2.STABLE4-8)と解決した」。ということで、原因はsquidにあったようです。透過型プロキシは検証が大変ですね。一見正常に動いて見えるので。
これで、やっと下地がそろいました。wineへの道はまだ遠い‥‥‥‥‥