Debian on IBM ThinkPad365X
第6章:ファイルサーバーの構築
< samba編 >

第2版 1998.03.10


 とりあえず、今までの作業でやっとシステムが動き出したと言えよう。さて、これからこのDebianをどう使っていくかという話に入る事にする。さすがに、OSをインストールして「はい、おしまい」っていう訳にもいかないですからね。

 まず、最初にこのプアーなマシンを使用してどんな事をやらせるか決めることにしよう。

 もちろん、X Window System を走らせてメインマシンにしたいと思う方もおられると思いますが、このマシンのメモリ(8MByte)を考えるとあまり相応しくないし、何故かこのマシンの場合XF86のプローブで正しく認識せずに画面がむちゃくちゃになるという現象が起こった為、今回は諦めて“ファイルサーバーとインターネットサーバー”に徹してもらうことにしました。

ファイルサーバーの構築

 ファイルサーバーとは言っても、nfsサーバーではなくパソコンのサーバーとして機能させたいと思います。というのも私の所では自慢では無いですけど、Mac3台/PC(Windows95)が2台動いています。それぞれ一応Ethernetでは繋がっていますが、フロッピーが無かったりCD-ROMが無かったりと結構中途半端な状況になっており、またアプリケーションや周辺の関係で用途によってMacを使ったりWindows95を使ったりと結構データがあちこちに分散されています。そこで、これらを1箇所に集めればいちいちフロッピーで持っていったりする必要もなく、バックアップも手軽に出来るはずです。

 という事でまずはPCのファイルサーバーから始めます。debianのパッケージの中にはPC用のファイルサーバーである`samba'とMacintoshのプロトコルを解釈する`netatalk'の両方が用意されているので、この2つをdselectで追加します。

sambaの構築

 sambaとはUNIX上で走るSMBサービスの名称で、これを走らせる事によりWindows95等のファイルサーバー機能を提供することが出来ます。

 先程、dselectでsambaをインストールしたので、基本的にはこれだけでsambaサーバー(smbd)が走る様になっています。しかし、それだけでは正しく走りません。それは、設定ファイル(/etc/smb.conf)がデフォルトのままだからです。

 ここで、必ず決めなければならない事項がいくつかあります。それは、

  1. ワークグループ名
  2. 公開ディレクトリ
  3. ファイル名のコードタイプ

 これらは、全てglobalセクションで定義するもので、今回は次のように決めます。最後のコードタイプはcapとのファイル共存を考えての事です。

  1. ワークグループ名    :workgroup = home
  2. 公開ディレクトリ名   :path = /pub
  3. ファイル名のコードタイプ:coding system = cap

 とグローバルセクション内を変更および追加すれば良いはずなのだが、実はこれだけではダメだったのだ。本来、sambaは英語圏で作成されたものなので、英語圏で使用する分には多分これだけで大丈夫なのだろうけど、日本で運用する場合はWindows95が日本語によるファイル名を良く付けてくれる。(新規フォルダーでさえ日本語名です)従って、日本語ファイルをきちんと利用できるようにする必要があります。

ソースから展開

 そのためにはまずソースを入手し、そのソースからKANJIオプションを付きでコンパイルする事が必要なのです。では、ソースはどこにあるのか?という事ですが、第1章で使用した雑誌の付録には最新のものでは無いですがソースも入っているのです。2枚目のディスクの$CDROM/debian/bo/source/net/ディレクトリの中にsamba_1.9.16p11-3.*というファイルがそれに相当します。
 そこで、まずはDisk2のCDをマウントしてディレクトリを変更します。

# mount /cdrom
# cd /cdrom/debian/bo/source/net

 ここで、ls -al samba*とするとdiff.gzとdcsとorig.tar.gzという名前が付いた3つのファイルが見つかると思います。それぞれ、

diff.gz
Debianのパッケージを作成するためのオリジナルソースからの差分
dsc
Debian のパッケージに関する情報が書かれたファイル
(Debian Source Control File の略です)
orig.tar.gz
アプリケーションが配布されている状態のままのソース
 という内容になっています。

 これらのファイルを展開するには、dpkg-sourceというコマンドを使用します。展開する場合は-xオプションを付けてdscファイルを指定します。が、その前にカレントディレクトリを/usr/srcに移しておきます。何故かdpkg-sourceでは展開場所の指定がなされていないので、そのまま実行すると「書き込めない」というエラーが出てしまうのです。

# cd /usr/src/
# dpkg-source -x /cdrom/debian/bo/source/net/samba_1.9.16p11-3.dsc

 ファイルの指定で長々とややこしいかも知れませんが、シェルの補完機能を使えば比較的簡単でしょう。(数文字打ってはTABキーを押せば違いが発生するまで補完してくれますからね)

 さて、これでソースが展開されました。lsコマンドで見てみましょう。ソースを展開したディレクトリsamba-1.9.16p11と元になったtar.gzファイルがカレントディレクトリ(今回は/usr/src)に見えると思います。このtar.gzファイルはCDにあるものと同じなので、消してしまって結構です。

debian/rulesの修正

 まず、本来の目的である漢字サポートの為に普通ならMakefileの修正を行ないます。(Makefileはsourceディレクトリ内にあります) ところが、今回はdebian用のパッケージを使用したので、本来のMakefileは使わずに、debian/rulesというファイルをvi等で下記のように編集します。

FLAGSM=... という行が有りますので、その行の最後に下記の行を追加します。

-DKANJI=¥"euc¥"

注意:実際には単純に追加するとエラーになってしまいます。そこで、IVARSの部分ではシングルクォーテーションも付加してもともと有った内容と合わせて下のようにしないといけません。

FLAGSM='-DLINUX -DKANJI=¥"euc¥"'
 これで修正が終わりです。

コンパイルの実行

 rulesの修正が終わったので、コンパイルを行なうわけですが、今回はdebian用のソースを使用したので、dpkg-buildpackageを実行します。一応エラーログを残す様に以下の様にteeというプログラムでファイルに落すようにします。

# pwd
/usr/src/samba-1.9.16p11
# dpkg-buildpackage -uc -us 2>&1 | tee err.log

 とするとコンパイルが始まります。warningが幾つか出ますが大丈夫でしょう。ところが、暫くしてからpassword.cのコンパイルで、ヘッダーが無い!のでエラーで落ちてしまいました。どうも#321行目に書かれている security/pam_appl.hというファイルが見つからないようなのです。そして、その前後を見るとどうやらPAM関係のdefineを指定した場合にここを通る様です。そこで、このPAMというのはもしかして、dselectで入れていないのでは?と思い、早速dselectを走らせてサーチ('/'キー)で"pam"を探してみました。すると、libpamは入っていましたが、libpam-devやlibpam-docが入っていなかったので、これを選択してインストールしました。

 そして、再度 dpkg-buildpackageを実行すると今度はエラーも無く終わりました。さて、これで一つ上のディレクトリに.debファイルが出来ていますので、このdebファイルを用いて"dpkg -i"を実行すればインストールができるはずです。

# pwd
/usr/src/
# dpkg-i samba_1.9.16p11-3_i386.deb

 ところが、これを実行すると

dpkg: warning - old pre-removal script returned error exit status 1
dpkg - trying script from the new package instead ...
dpkg: error processing samba_1.9.16p11-3_i386.deb (--install):
subprocess new pre-removal script returned error exit status 1
Errors were encountered while processing:
samba_1.9.16p11-3_i386.deb

 というエラーで落ちてしまった。

 debian-usersのMLログ([http://fukuda.aist-nara.ac.jp/‾yasuhi-a/linux/]で検索で来ます)を見ると、どうやら最初に入っているsambaにはバグが有るらしく、removeが出来ない様なのだ。そこで、samba_1.9.17.p2-0.0.deb[ここから入手可能]を入手してからまずこれをdpkgでインストールし、それから再度dpkg -r でこのsambaを削除する事にした。

 これで、一応sambaのパッケージが無くなったので、先程作ったsamba_1.9.16p11-3_i386.debをインストールすることにする。

 dpkg -i を実行すると、/etc/smb.confをどうするか?という質問が出てくるので、defaultである'N'を採用する事にした。これで、新しく漢字バージョンがインストールされたので、Windows95マシンを起動させて接続出来るか確かめてみよう。が、その前にsambaデーモンを再起動させる必要がある。とは、いってもMicrosoft製品のOSの様にDebianそのものを再起動させる必要は無いです。再起動させるのは、inetdというデーモンの監視者(美夕じゃないよ(^^;)に再起動させるだけです。そのためには、inetdというプロセスに対してSIGHUPというシグナルを送れば良いのです。どうするかというと、下の様にpsコマンドでinetdのプロセス番号を入手して、(この場合129ね)そのプロセスに対してkillコマンドでHUPというシグナルを送るだけです。

# ps aux | grep inetd
root 129 0.0 3.1 ........ /usr/sbin/inetd
  :
# kill -HUP 129

 これで、sambaデーモンは新しくなります。早速Windowsマシンでネットワークコンピュータを開いてみましょう。多分、Debianマシンの名前が見える様になると思います。そして、それを開くとlpというプリンタのアイコンとフォルダが見えるはずです。フォルダの名前には、Windowsでログオンした時の名前が出ているはずです。もし、ログオン時にネットワークパスワードの入力でキャンセルボタンを押した場合はネットワークコンピュータを開いてもマシンが見えないかも知れません。そんなときは、慌てずにスタートボタンからWindowsの終了を選び、一番下の「アプリケーションを終了し、Windowsにログオンし直す」というラジオボタンを選んでから「はい」を押して再ログオンしてユーザー名/パスワードにdebianで登録した名前/パスワードを入力すると良いでしょう。

 やっと、これでなんとかsambaサーバーが立ち上がった訳ですね。いやぁ、長かった...(^^;


第5章に戻る

Indexに戻る

第7章に続く


Copyright(c) 1998 loose All rights reserved.

第2版 1998.03.10 PAMの追加とアップデートの方法を修正
第1版 1998.02.22 初公開