Under-Construction

▲Zaurus Top | ↑Up(設定・システム) | ←Prev(telnet で Zaurus にログイン) | →Next(SSH で安全ログイン)


Samba で Zaurus のディスクを共有

更新: automount 追加(2003/11/08)

(2003/06/25)

Samba は、Windows で使われるファイル共有プロトコルの Unix 上での実装。

ここでは zaurus に(標準で)インストールされている samba server を使って、 zaurus のファイルを、パソコンのエディタで編集しようということ。このページ も、出先では zaurus 上で、家では samba 接続して、PC 上で書いている。

そもそも、zaurus のパソコン連携は、samba を使って実現されている。標準では、 zaurus と PC は USB ケーブルで接続されるが、USB 上に TCP/IP のネットワーク を通し(usbdnetと呼ばれる)て、ファイルのやり取りを行っている。

smb.conf の編集

Samba の設定ファイルである、smb.conf を編集する。

  1. ターミナルを起動し、su で root になる。root は パスワードが設定されていない。
    root のシェルは sh なので、使いにくい場合は bash を起動しておけば、補 完が効いて便利。
  2. smb.conf の場所は /usr/lib/samba/smb.conf。 バックアップを取った上で、vi で編集する。
    ポイントは次の通り。
    [global]						
    # workgroup is either a domain name or a workgroup name
    	workgroup = XXXX
    	log file = /dev/null
    	hosts allow = 192.168.1.
    #
    # 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 = usb0 eth0
    #	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 = yes
    	force user = zaurus
    [root]
    	comment = root dir
    	path = /
    	short preserve case = no
    	read only = no
    	guest ok = yes
    

smbpasswd の設定

ここまでの状態で、Windows から zaurus が、パスワードなしで ブラウズ/マウント可能になっている。ところが、母艦 Linux から マウントしようとしたら、パスワードなしではマウントできない模様。 セキュリティ向上も兼ねて smbpasswd でパスワードを設定する。

smbpasswd は http://gadget.mda.or.jp/zaurus/ から .ipk で入手可能。インストールしても、 /usr/bin/smbpasswd コマンドができるだけでアイコンは出てこない。

root の シェルから

smbpasswd -a zaurus
で、パスワードを聞いてくるので2回入力。 samba ユーザとして zaurus が追加され(-a)、 パスワードが設定するされた。

smbpasswd のバイナリは、/usr/local/samba/ の中を 設定ファイルのために使うよう、ハードコーディングされているので、 他のツールと整合を取るためにシンボリックリンクが多い。 幸い、smbpasswd のインストーラが全部やってくれる。

/usr/lib/samba/codepages/ -> /usr/local/samba/lib/codepages/
/usr/lib/samba/smb.conf   -> /usr/local/samba/lib/smb.conf
/usr/local/samba/private/smbpasswd -> /etc/smbpasswd

SambaContoller のインストール

ここまで設定した状態で root のシェルから

/etc/rc.d/init.d/samba start
すれば、smbd が起動し、samba が利用できる。Linux からは次のように。 ただし、マウントしてるかどうか、残り容量などは、dfでは見えない。 df -a してみよう。
smbmount //zaurus/home/ /mnt/samba -o uid=zkon

Windows からは「ネットワークコンピュータ」からたどる。

毎回ターミナルを起動して、root になって、bash を起動して、 コマンド打って、ってのがめんどくさい場合は http://gadget.mda.or.jp/zaurus/の SambaContoller が使える。 .ipkg なのでインストールするだけ。ランチャアイコンを長押しして 「root で実行」にチェックしておけば、あとはGUI でsmbd が起動する。

自動接続

アイコン突っつくのさえ面倒だという人には自動化する方法がある。 Unix なので、スクリプトベースで自由にできる(自己責任だけどね)

最初に思いつくのが、rc.local で起動してしまっておくというのだ。 ただし、リソースが厳しい zaurus では望ましくない。 よって、Wireless LAN で接続したときに、samba を起動することにしよう。 ただし、ホットスポットで街中無線LANしたときも samba が起動してしまうので、この設定を試す人は注意。

CFカードの wireless LAN が起動したときは、/etc/pcmcia/network start が実行 される。よって、次の箇所に samba を仕込む。 切られた時のnetwork stop 時にも対応しておこう。

〜省略〜
    start_fn $DEVICE        
        /usr/bin/ntpdate clock.nc.fukuoka-u.ac.jp
        /etc/rc.d/init.d/samba start
    ;;                      
                            
'stop')                     
                            
    stop_fn $DEVICE         
        /etc/rc.d/init.d/samba stop
〜中略〜
#'suspend'|'resume')
'suspend')
        /etc/rc.d/init.d/samba stop
    ;;

'resume')
        /etc/rc.d/init.d/samba start
    ;;
〜省略〜

標準の /etc/rc.d/init.d/samba はパスが通っておらず使いづらいので、 /usr/sbin にもパスを通しておく。

〜省略〜
                hostname `cat /etc/HOSTNAME`

        # add by KONDOU 2003/06/30
                PATH=$PATH:/usr/sbin

                echo "Starting smbd..."
                smbd -D -l /dev/null
〜省略〜

automount

最近の Unix システムは automount が装備されている。すると、次のことが簡単 にできる。

  1. zaurus に 無線 LAN カードを差し、電源を ON し、ネットワークに接続する。
  2. 「自動接続」節の設定どおり、無線 LAN がアップすると、zaurus 上で samba が起動する。
  3. 母艦のシェルから /misc/zaurus にアクセスすると、そこには、automount でマウントされた zaurus のディスクが見えている。

ではやってみよう。母艦の /etc/auto.master が次のように適切に設定されている、 とする。これは、/etc/auto.misc の設定を、/misc に適用するということだ。

# $Id: auto.master,v 1.2 1997/10/06 21:52:03 hpa Exp $
# Sample auto.master file
# Format of this file:
# mountpoint map options
# For details of the format look at autofs(8).
/misc	/etc/auto.misc	--timeout=60

/misc に対する、automount 設定ファイル、/etc/auto.misc を次のように設定す る。//zaurus/home の部分は、zaurus 上の /usr/local/samba/lib/smb.conf の [home] セクションをマウントしたい、ということを意味している。

# $Id: auto.misc,v 1.2 1997/10/06 21:52:04 hpa Exp $
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# Details may be found in the autofs(5) manpage

kernel		-ro,soft,intr		ftp.kernel.org:/pub/linux
cd		-fstype=iso9660,ro,nosuid,nodev	:/dev/cdrom

# the following entries are samples to pique your imagination
floppy		-fstype=auto		:/dev/fd0
zaurus		-fstype=smbfs		://zaurus/home

あとは、母艦の automount を再起動して、/misc/zaurus にアクセスすればよい。 そこには、zaurus のディスクが見えているはずだ。

豆知識: samba でマウントされているパスは、df では見えない。samba のディス クがマウントされているかどうかは、df -a か、mount コマンドを使うのだ。

TODO

どの Wireless LAN につながったかは、/sbin/iw* コマンドや、 /etc/pcmcia/wireless, wlan-ng で情報が得られるので、 お家 Wireless につながった時のみ、 samba を起動するようにできたらいいな。

しかし、今のところ、使いやすい街中無線LAN(HotSpot)が無いので、 外には無線LANカードを持っていっていないのだ。 外で無線LANが実用的に使えるようになったら考えてみることにしよう。


▲Zaurus Top | ↑Up(設定・システム) | ←Prev(telnet で Zaurus にログイン) | →Next(SSH で安全ログイン)


近藤靖浩