PC98シリーズで動作するLinuxであるPlamo98でPC-9821Xpをホームサーバーにしてみました。
Plamo98でPC-9821Xpをホームサーバに!
1.目的
2.機器
2.1 機器構成 2.2 機器設定
2.2.1 IF-2769(SCSIボード)の設定
2.2.2 RSA-98II/S(増設シリアルボード)の設定
2.2.3 LA-98(NIC)の設定
3.インストール
3.1 Plamo Linux 1.4.4のインストール
3.2 カーネルの再構築
3.3 ユーザーの作成
3.4 カーネルのバージョンアップ
3.5 apacheの導入
3.6 ppxpの導入
3.6.1 userlinkのインストール
3.6.2 ppxpのインストール
3.7 squidの導入
3.8 IPマスカレード機能の導入
3.9 bind8の導入(作成中)
3.10 sambaの導入(作成中)
4.結果および問題点(作成中)
1.
目的
今年初めに念願のAthlonを入手し、我が家のPCも自作PC 2台とPC981台となったためPC98をサーバーとして活用することにした。(3台のPCの構成はここにあります。)
サーバーの機能として以下の機能の実現を目的とした。 ・サーバを192.168.1.1としてクラスCを使用する。
・apacheによるcgi実験用のhttpサーバー
・ppxpによる2台のWindows機からのオンデマンドPPP接続
・squidによるプロキシを使った快適なWebブラウジング
・sambaによるWindows機とのフォルダ共有
・IPマスカレードによるルーター機能
・DHCPによるIPアドレスの自動割当
但し、DHCPは現時点ではまだ動作していない。(Plamo2.0では動作した)
また、上記だけでは無駄なダイヤル動作が頻発したため、DNSを導入した。
2.機器
2.1 機器構成
CPU: PC-9821Xp/C8W(DX4-100からAm5x86 160MHzに載せ換え)
SCSI: IF-2769
NIC: LA-98
SIO: RSA-98II/S(注1)
(詳細はここ)
(注1)このPCはシリアルポートが1つで、最大19200bpsまでしか対応
できないので56kbpsモデムには力不足である。
そこで増設シリアルポート(RSA-98II/S)を使用した。
2.2 機器設定
2.2.1 IF-2769(SCSIボード)の設定
SCSIボードのBIOSユーティリティにより以下の設定をした。
モード: 55互換
IRQ: 3
I/Oアドレス: DC00H
2.2.2 RSA-98II/S(増設シリアルボード)の設定
基板のDIP SWおよびデジスイッチにより以下の設定をした。動作モード: 16650互換
IRQ: 5
I/Oアドレス: 0238H
2.2.3 LA-98(NIC)の設定
MS-DOS版の設定ユーティリティにより以下の設定を確認した。
IRQ: 6
I/Oアドレス: 00D0H
3.インストール
3.1 Plamo Linux 1.4.4のインストール
PC-9821XpはCD-ROMブートが出来ないので、ブートFDを作成し「お勧めパッケージセット」でインストールを行った。
(インストールの方法はここでは割愛する)
インストール時のモデムの設定はcua1(RSA-98II/S)とする。
ネットワークの設定は以下のとおりとする。
ホスト名 : pc98xp
ドメイン名 : homenet
IPアドレス : 192.168.1.1
ゲートウェイ : 192.168.1.1 <--- 2000.05.25 改定
ネットマスク : 255.255.255.0
ネームサーバー: 127.0.0.1
3.2 カーネルの再構築
Plamo Linux 1.4.4は、インストール後の状態ではネットワークカード(NIC)を認識できなかったので、カーネルの再構築を行った。
カーネルのアップデートパッチなどをCD-Rに焼いておけばこの状態から最新のLinux/98を導入できたのだが、準備をしていなかったので、とりあえずこの状態でNICを認識させWindows機からFTPで転送することにした。
以下の説明で、プロンプト#はroot、$は一般ユーザーでの作業を表すものとする。
rootでloginし以下の作業を行った。
(1) デフォルトのconfigファイルを作成する。(ConfigsのSCSIを使用)
# cd /usr/src/linux
# cp ./Configs/SCSI ./.config
(2) menuconfigでNICを設定
# make menuconfig
Networking device support --->
<*> NEC PC-9800 C-Bus Ethernet Board
[*] I-O DATA LA-98 support
(3) カーネルを作成
# make dep; make clean; make bzImage
PC-9821Xpではコンパイルに約40分ほどかかった。
(4) 旧カーネルの保存
作成したカーネルが動作しないときの為に旧カーネルを別名で保存する。
# cp /vmlinuz /vmlinuz.old
(5) カーネルを更新
# cp arch/i386/boot/bzImage /vmlinuz
(6) 再起動
# shutdown -r now
(または、CTRL+GRAPH+DEL)
(7) 同一ネットワーク内の他のPCからのアクセスを許可する
/etc/hosts.allowに以下の行を加える。
ALL : 192.168.1.
(8) grub98の起動オプションにNICの設定を追加
末尾にether=6,00d0,1,eth0を追加する。
kernel = /vmlinuz root=/dev/hda4 ro ide0=serialize wd33c93=level2.1 ether=6,00d0,1,eth0
(9) 起動させ、正常ならば/boot/grub/menu.lstを編集する。
3.3 ユーザーの作成
adduserで自分用のユーザーを追加した。作成は英語モードで行った。
# adduser
3.4 カーネルのバージョンアップ
Plamo Linux 1.4.4の標準カーネルでは、PC-9821内蔵のCOM1とRSA-98II/SのCOM2を正しく認識出来なかったので(注2)、カーネルをrev20にアップデートした(注3)。
私が持っているPlamo Linux 1.4.4のカーネルはbeta16であったが、beta17からrev18へのアップデートでパッチでエラーが出たので、KMCからLinux/98 beta15をダウンロードし、rev20へのアップデート作業を行った。
*以下の作業でeth0にLA-98、ttyS0に8251、ttyS1に16650、SCSIに55互換が認識され正常に起動すればカーネルのアップデートは成功です。
(注2)起動時にCOM1,COM2とも16650と表示された。
(注3)起動時にCOM1 8251,COM2 16650と表示された。
rootでloginし以下の作業を行った。
(1) 以下のファイルを/usr/src/にコピー
・lx98-b15.tgz
・beta-015-beta016.diff.gz
・beta-016-beta017.diff.gz
・beta-017-rev018.diff.gz
・rev-018-rev019.diff.gz
・rev-019-rev020.diff.gz
・lx98patch.sh
(Windows機からFTPでHOMEに転送し、rootでコピーした)
(2) lx98patch.shに実行権を付ける
# cd /usr/src
# chmod 744 lx98patch.sh
(3) linuxディレクトリの作成
Plamo Linux 1.4.4の標準状態では、/usr/src/linuxが/usr/src/linux-98
にシンボリックリンクしてあるので/usr/src/linuxを削除する。
(4) lx98-b15.tgzを展開する。
# tar zxvf lx98-b15.tgz
(5) beta15をrev20にアップデートする。
# cd linux
# ../lx98patch.sh ../beta015-beta016.diff.gz
# ../lx98patch.sh ../beta016-beta017.diff.gz
# ../lx98patch.sh ../beta017-rev018.diff.gz
# ../lx98patch.sh ../rev018-rev019.diff.gz
# ../lx98patch.sh ../rev019-rev020.diff.gz
(パッチファイルを連続で指定すれば一括パッチが可能であるが、今回
は個別に実行した)
(6) カーネルの設定
55モードのSCSI,RSA-98II/S,LA-98,IPマスカレードが実行できるよう
にカーネルを構築する。
# make menuconfig
私の設定内容はここを参照してください。
(7) カーネルを作成
カーネルが大きくなるのでbzImageを作成することにした。
# make dep; make clean; make bzImage
(8) モジュールを作成
# make modules
(9) モジュールをインストール
# rm -rf /lib/modules/`uname -r`
# make modules_install
# /sbin/depmod -a
(10) カーネルを更新
# cp arch/i386/boot/bzImage /vmlinuz
(11) 再起動
# shutdown -r now
(または、CTRL+GRAPH+DEL)
3.5 apacheの導入
apache-1.3.12.tar.gzをダウンロードして使用した。
自分のアカウントでloginし、以下の作業を行った。
(rootアカウントでtar ballを展開するとファイルのIDが圧縮時のIDとなるので一般アカウントでの作業が望ましい)
ここでは、$HOME/srcにtar ballをコピーし、そこで展開するものとする。
(1) tar ballの展開
$ cd $HOME/src
$ tar zxvf apache-1.3.12.tar.gz
(2) コンパイル
$ cd apache-1.3.12
$ ./configure --prefix=/usr/local/apache
$ make
(3) インストール
$ su
# make install
上記の作業で、/usr/local/apacheにインストールされた。
(4) httpd.confの設定
以下のことが実現できるようにhttpd.confを設定した。
・$HOME/public_html/cgi-binで*.cgiが実行できる。
httpd.confは今回の設定では/usr/local/apache/confにある。
httpd.confの修正・追加部分のみ記載する。
上記のほかにも、Document rootを/home/httpd/にcgi-binを
/home/httpd/cgi-binに変更したが詳細は割愛する。
・portを8080から変更する
port 80
・以下を追加する
<Directory "/home/*/public_html/cgi-bin"> <--- 2000.05.29 修正
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory> <--- 2000.05.29 修正
・以下部分のOptionsを変更する
<Directory "/usr/local/apache/cgi-bin"> <--- 2000.05.29 修正
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
</Directory> <--- 2000.05.29 修正
・以下の行のコメントを外す
AddHandler cgi-script .cgi
(5) apacheを起動する
# /usr/local/apache/bin/apachectl start
(6) 起動時に動作するように設定する
/etc/rc.d/rc.localに以下の行を追加する。
echo "Starting apache!"
/usr/local/apache/bin/apachectl start
3.6 ppxpの導入
userlink-0.99a.tar.gzとppxp-0.99120923.tar.gzをダウンロードして使用した。3.6.1 userlinkのインストール
自分のアカウントでloginし、以下の作業を行った。
ここでは、$HOME/srcにtar ballをコピーし、そこで展開するものとする。
(1) tar ballの展開
$ cd $HOME/src
$ tar zxvf userlink-0.99a.tar.gz
(2) コンパイル
$ cd userlink-0.99a
$ ./configure
$ make
(3) インストール
$ su
# make install
# /sbin/depmod -a
(4) モジュールの組み込み
# /sbin/modprobe userlink
(5) 動作確認
# /sbin/lsmod
Module Size Used by
userlink 3024 0 (unused)
上記のような表示がされれば正常に組み込まれている。
(6) 起動時に動作するように設定する
/etc/rc.d/rc.localに以下の行を追加する。
echo "Load module userlink"
/sbin/modprobe userlink
3.6.2 ppxpのインストール
自分のアカウントでloginし、以下の作業を行った。
ここでは、$HOME/srcにtar ballをコピーし、そこで展開するものとする。
(1) tar ballの展開
$ cd $HOME/src
$ tar zxvf ppxp-0.99120923.tar.gz
(2) コンパイル
$ cd ppxp
$ ./configure
$ make
(3) インストール
$ su
# make install
(4) ppxpの起動確認
# ppxp
PPXP version 0.99120923
interface: ul0
ppxp>
上記のような表示が出れば正常に動作している。
(5) ppxpの設定
qdailを起動して設定を行う。
ppxp> qdial
以下の設定をする。
Device Name: [/dev/modem](注4)
Dial Type: {Default}
Phone Number(s): [プロバイダの電話番号]
Login Name: [プロバイダのダイアルアップ用ID]
Login Password: [パスワード]
Password(again): [パスワード]
<mode...>で以下の設定をする
Idle time [180] <--- 無通信時の切断時間を180秒とする
DNS Servers: [プロバイダ指定のDNSサーバーIPアドレス]
適当な名前をつけて保存する。(注5)
(注4) /dev/modemが/dev/cua1にシンボリックリンクされている
ことを確認する。
(注5) /usr/local/etc/ppxp/conf/に保存される。
設定ファイルを使用した起動時に自動的にオンデマンド接続が
出来るように設定ファイルに以下の内容を追加する。
auto on
(6) 起動時に動作するように設定する
/etc/rc.d/rc.localに以下の行を追加する。
echo "Start ppxp auto dial"
/usr/local/bin/ppxp 設定ファイル名 -c bye
3.7 squidの導入
squid-2.2.STABLE5-src.tar.gzをダウンロードして使用した。
ここでは、$HOME/srcにtar ballをコピーし、そこで展開するものとする。
(1) tar ballの展開
$ cd $HOME/src
$ tar zxvf squid-2.2.STABLE5-src.tar.gz
(2) コンパイル
$ cd squid-2.2.STABLE5
$ ./configure
$ make
(3) インストール
$ su
# make install
上記の作業で、/usr/local/squidにインストールされた。
(4) squid.confの設定
port、キャッシュ容量などは全て標準のままとした
・acl CONNECT method CONNECTの後に以下を追加
acl homenet src 192.168.1.0/255.255.255.0
・http_access deny allの前に以下を追加
http_access allow homenet
(5) squidのキャッシュを作成する <--- 2000.05.25 追加
# /usr/local/squid/bin/squid -z
(6) squidを起動する
# /usr/local/squid/bin/squid &
(7) 起動時に動作するように設定する
/etc/rc.d/rc.localに以下の行を追加する。
echo "Starting Squid!"
/usr/local/squid/bin/squid &
3.8 IPマスカレード機能の導入
今回、一番苦労したのが、IPマスカレードである。
試行錯誤の末に動作したので、以下の方法が正解かどうかは不安である。
(1) ipfwadm-2.3.0のインストール
カーネル2.1.57はipfwadmを使用するということなので、とりあえず最新
のipfwadm(ipfwadm-2.3.0.tar.gz)をインストールした。
$ cd $HOME/src
$ tar zxvf ipfwadm-2.3.0.tar.gz
$ cd ipfwadm-2.3.0
$ make all
$ su
# make install
(2) IPマスカレード関連のモジュールの組み込み
# /sbin/depmod -a
# /sbin/modprobe ip_masq_ftp
# /sbin/modprobe ip_masq_raudio
# /sbin/modprobe ip_masq_quake
# /sbin/modprobe ip_masq_irc
(3) IPマスカレードの設定
# /sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
# /sbin/ipfwadm -F -p deny
(4) IPフォワード機能の設定
標準では/proc/sys/net/ipv4/ip_forwardingが2になっており
IPフォワード機能は停止されている。これを1に書き換えて
動作させる(再起動後は2に戻ってしまう)
# echo 1 > /proc/sys/net/ipv4/ip_forwarding
(6) 起動時に動作するように設定する
/etc/rc.d/rc.localに以下の行を追加する。
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_irc
/sbin/ipfwadm -F -a m -S 192.168.1.0/24 -D 0.0.0.0/0
/sbin/ipfwadm -F -p deny
echo 1 > /proc/sys/net/ipv4/ip_forwarding
3.9 bind8の導入
telnetやFTPで192.168.1.1に接続するときにもダイアルアップを始るという問題が発生したので/etc/hostsや/etc/hosts.confをいろいろ変更してみたがうまく行かなかった。そこでDNSを導入した。DNSにbind8(bind-8.2.2)を使用した。
(1) bind 8.2.2のインストール
bind-src.tar.gzをダウンロードしインストールした。
$ cd $HOME/src
$ tar zxvf bind-src.tar.gz
$ mv src bind-8.2.2 <--- srcに展開されたのでbind-8.2.2に変更した
$ cd bind-8.2.2
$ make all
$ su
# make install
*続きは作成中です。
3.10 sambaの導入
samba-2.0.5a-jp2.tar.gzをダウンロードして使用した。
ここでは、$HOME/srcにtar ballをコピーし、そこで展開するものとする。
(1) tar ballの展開
$ cd $HOME/src
$ tar zxvf samba-2.2.5a-jp2.tar.gz
(2) コンパイル
$ cd samba-2.0.5a-JP2/source
$ ./configure --prefix=/usr --libdir=/etc --with-lockdir=/var/lock/samba --with-privatedir=/etc \
--with-swatdir=/usr/share/swat --with-smbwrapper --with-automount --with-quotas
(--with-pamを付けるとコンパイルできなかった)
$ make
(3) インストール
$ su
# make install
上記の作業で、/usr/local/sambaにインストールされた。
(4) smb.confの設定
*作成中です。
(5) sambaユーザーの作成
*作成中です。
*続きは作成中です。
4.結果および問題点
DHCPを除き、全てが動作した。
TOPに戻る