First Creation : 2004/10/26
Last Update: 2010/08/13
今回の趣旨は、ZAURUS で Samba を稼働させ、Windows とファイルを共有させようという企画である。
今までの私だったら、Windows のファイルを Zaurus に取り込もうと思ったら、SDカード、もしくは CFカードを使うか、ZAURUS 付属の USBケーブルでファイルを転送していた。USB経由でのファイル転送は、設定がほとんど不要なので初心者にはありがたかった。しかし、ケーブルを持ち歩くのが不便で SDカードを多用していたら、ある日、取り出した SDカードが Zaurus に戻らなくなってしまったのである。どうやら何度も出し入れしていたため、壊れたようだ。
これを機に Samba を稼動させようと思い立った。Samba の設定をすることで ZAURUS はネットワークに接続され、母艦とのファイル共有がずっと楽になるはずだ。
行程は大きく分けて 3つ。「1. LAN ネットワーク設定」「2. SMB Server 設定」「3. ユーザー設定 ( Linux & Smb )」。まずは LANカードの設定をする。
BUFFALO の LPC-CF-CLT を ZAURUS に差し込んで、以下の設定をした。
IPアドレスを設定する。
ブロードバンドルータを使っている例として、
IPアドレス:192.168.70.100
サブネットマスク:255.255.255.0
ゲートウェイ:192.168.70.1
DNS の設定でルータの IPアドレスを入れないと、名前解決ができず、HP が見れない場合がある。
まあプロバイダの DNS を入れてもいいわけだが。
まず ZAURUS に刺さっているカードを有効にしよう。右下のタスクトレイにある地球のマークから接続だ。その後、Terminal を起動させ、
$ ping 192.168.70.1
のように、ルータや他の PC に対して pingコマンドを実行。応答があればよし、なければ設定がおかしいか、その端末がファイアウォールで ICMP を返さない設定になっているかだ。次にインターネット上にあるサーバーに ping を飛ばしてみて、反応があれば設定は完了となる。
なお、ICMP を返さないサーバーもよくあるので、ping で loss 100% でも ZAURUS からブラウザを立ち上げて HP が見れれば問題はないと思う。
ZAURUS には標準で Samba が入っている。付属の USB ケーブルで Windows PC とファイルのシンクロができるが、あれも Samba を利用しているらしい。
さて、今回やりたいのは LAN経由でのファイル共有だ。というわけで次の設定を行う。
/usr/lib/samba/smb.conf を開き、以下のように変更
[global] # workgroup is either a domain name or a workgroup name netbios name = zaurus workgroup = UNKNOWN # 適当な名前。Windows のワークグループと同じものにしよう。 log file = /dev/null hosts allow = 192.168.70. # セキュリティ的に、上記の LAN の設定で行ったサブネットを入れるとよい # また、特定の PC からしかアクセスしないなら、 # hosts allow = 192.168.70.2, 192.168.70.7 とかやればいい # encrypt passwords is required for Win98, NT and Windows 2000 encrypt passwords = yes coding system = utf8 client code page = 932 force create mode = 0755 strict sync = yes sync always = yes # interface = usb0 interface = eth0 # eth0 を追加すると、イーサデバイス経由での Samba 接続を許可する、みたいな意味 # ifconfig で表示されるデバイス名に対しての許可だ # なお、USBでの接続はしないので usb0 は削除した bind interfaces only=yes # この設定がないとすべてのデバイスから接続されてしまう # しかしながら 2005/02 現在、interface = eth0、bind interfaces only=yes # にしていても、無線LANから接続できたという情報がある # wins support = yes [system] comment = System Folder path = /root/samba read only = no browseable = no guest ok = yes force user = root [home] comment = for User Data path = /home/samba short preserve case = no read only = no guest ok = no # force user = zaurus force user = xxxxxxxx # とりあえず私しか使わないからこれでいい xxxxxx には自分のユーザー名を # force gropu = qpe # グループ単位で許可させることもできる create mode = 0775 # ファイルを作成するとパーミッションが 775 になる directory mode = 0775 # ディレクトリを作成するとパーミッションが 775 になる
今回はさらっと触れるに止めるが、Linux はファイルにパーミッションがある。Windows NT 系を使っている人は知っている人もいるだろう。要はファイルのアクセス権だ。もし上記の設定をした場合、smb で共有したいファイルやフォルダのパーミッションを 775 にしておく必要がある。
# chmod 775 -R bloody-mary/ # bloody-mary というフォルダと、その中のファイルを 775 に設定
いつも Windows にログオンするときのユーザーを Linux に追加する。その方法は Zaurus の場合ちょっと面倒だ。 なぜならユーザーを追加する adduser のコマンドがうまく動いてくれないからだ。 ならばどうするかと言うと、ユーザーファイルを直接書き換えてしまう。
# vi /etc/passwd # ユーザーファイルに以下の一行追加
xxxxxxxx:x:501:500:PC User:/home/zaurus:/home/QtPalmtop/bin/tcsh # IDを 501 にして、500番のグループにするという意味
# vi /etc/shadow # パスワードファイルに以下の一行追加
xxxxxxxx:*:10933:0:99999:7:::
# passwd xxxxxxxx # この後に好きなパスワードを設定する(Linux のパスワードなので好きなものを入れる)
「smbpasswd_0.1-1_arm.ipk」なるものを拾ってきてインストールした。これで
# smbpasswd -a xxxxxxxx
とやって、Windows のパスワードを入力すれば設定はおしまいのはずだが、なぜか smbpasswd がうまく動いてくれない。
・
・(数日経過)
再インストールとかやっているうちに動くようになった。smbpasswd という samba 用のユーザーファイルが出現した。場所は次の位置である。
さて、この状態から
# /etc/rc.d/init.d/samba start
とやれば Samba が起動する。次に Windows PC から、\\192.168.70.100 とかやって zaurus が覗けるかどうか確認。
問題なくファイル共有できた。本当はユーザー名の設定をしなければ 「 2. samba サーバーの設定 」 で終わりなのだが、今回ユーザー設定したことでやたら苦労した気がする。苦労した分、実体験として記憶に刻み込まれた。
Terminal からいちいち /etc/rc.d/init.d/samba start とやるのも面倒な話だ。好きなディレクトリから samba start とやるためにシンボリック・リンクを張るとか、.alias を使う手もありそうだが、その動作をいまいち理解しきれていないのでやるのが怖い。
Windows のショートカットみたいなものなのだろうか? だとしたら、ショートカットを作って本体を消したときにはどうなるのだろう。あまりやりすぎると、どこに何を作ったかわからなくなりそうだ。ゴミが残るのは生理的に好かない。
ならばどうしたかというと、KeyHelper なるソフトを利用した。以下の設定を追加。
[Files] smb.conf = Customize/zeditor /home/root/usr/lib/samba/smb.conf 中略 [Command] SambaStart = @exec /etc/rc.d/init.d/samba start SambaStop = @exec /etc/rc.d/init.d/samba stop
これで楽に起動できるようになった。まあ、ZAURUS 起動時に自動起動するようにしてもいいのだが、メモリの関係もあるし、不要なサービスが知らず知らずのうちに動いているのも怖いので必要なときだけ手動で動かせれば十分だ。