
Ubuntu日本語フォーラム

ログインしていません。
現在Ubuntu 10.04 LTSにて、SAMBAの起動時のエラーに関してこまっています。
※やりたいこと:Windows7のクライアントからUbuntu側のsambaの共有フォルダを扱いたい。
/etc/samba/smb.conf を練習用にと
http://www.server-world.info/query?os=Ubuntu_10.04&p=samba&f=1
をそのままに設定して、一度はWindows7側で見ることができたのですが、
その後にこのサーバの電源を再起動すると、Windows側からのWorkgroupで
見失ってしまいます(XXXXXにアクセスできません)と出ます。
次に
$ sudo service smbd restart
とすると上手く動作します。
一応
$ sudo netstat -tap |grep smbd
tcp 0 0 localhost:netbios-ssn *:* LISTEN 658/smbd
と出ておるのですが、これではブラウズができないようです。
なお再起動したところだと
$ sudo netstat -tap|grep smbd
tcp 0 0 localhost:netbios-ssn *:* LISTEN 1847/smbd
tcp 0 0 [XXXXXXX]:netbios-ssn *:* LISTEN 1847/smbd
のため、どうもこの下の1行分が動いてないのかなと思い
$ lv /var/log/samba/log.smbd
をで起動時の様子をみると
[2013/02/15 16:52:35, 0] printing/print_cups.c:103(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
[2013/02/15 16:52:35, 0] printing/print_cups.c:103(cups_connect)
Unable to connect to CUPS server localhost:631 - Connection refused
とありました。CUPSは印刷設定がすでにしてあります。
このCUPSに接続できんのが問題じゃないのかと思いまして、
また/etc/rc2.dでは
S20smbd S50cups
なんてあったので、これを
$ sudo mv S20smbd S55smbd
とか
$ sudo update-rc.d -f smbd remove
$ sudo update-rc.d smbd default 55
とか
いろいろ試したのですが、やっぱり同じエラーが出てしまいます。どうも順番が変わっていないようなのです。
#smbdを再起動するとブラウズ可能になります。
何か盛大な勘違いをしているような気がして恐ろしいんですが、何が問題なのでしょう。
#rc.localにsudo service smbd restart
って書けばええやん、とは思うのですが、どうにも気持ち悪いので
この件は直接解決したいです。
どなたかご教示お願いします。
オフライン
rewip による投稿:
どうも順番が変わっていないようなのです。
Windows 7マシンにVirtualBoxを入れていまして、そこに Ubuntu-10.40.4-dvd-i386を入れてみました。
答えを持っているわけではないので恐縮ですが、sambaの起動順序が変更できない理由は判った気がします。
Sambaは /etc/init/smb.conf を見て起動されているのだと思います。
私の環境には/etc/rc[S1-6].d/ にSamba関係のスクリプトは入っていないです。
ではどうすればいいのかについてはどなたか詳しい方、教えてください。
オフライン
参考にしたページの通りに設定しているなら、CUPSが原因ではないと思います。
又、smbdをrestartさせれば動作するとの事なので、過去トピックにもある様な事が原因かもしれません。
過去トピックhttps://forums.ubuntulinux.jp/viewtopic.php?id=14525
過去トピックに記述されている様に"log.smbd"の中に同じメッセージが出力されているなら、試してみると良いかもしれません。
ItSANgo様
katsu07様
お返事有難うございます。
現在手元にサーバ機がないので、とりあえず紹介されたリンク等を参考にやってみようかと思います。
それとすみません、説明不足でした。
smbd/nmbdはchkconfig感覚でsysv-rc-confを使って設定していました。
オフライン
rewip による投稿:
また/etc/rc2.dでは
S20smbd S50cups
なんてあったので、これを
$ sudo mv S20smbd S55smbd
とか
$ sudo update-rc.d -f smbd remove
$ sudo update-rc.d smbd default 55
とか
いろいろ試したのですが、やっぱり同じエラーが出てしまいます。どうも順番が変わっていないようなのです。
今もそうですが、10.04では、
・SambaはUpstart job
・CUPSはSysV init
という別の仕組みで起動してきています。SysV initはLinux伝統の/etc/init.d/hogehogeにスクリプトを置いて……というヤツのことです。Upstart jobは/etc/init以下に設定ファイルを書いておくと、init(Upstart)が勝手に処理してくれる、というものです。詳細は以下の3.1.2あたりを見て頂くと分かります。
http://upstart.ubuntu.com/cookbook/
ただこの場合、rc.localにservice smbd restartを書いてしまうのがベターな気がします。
今回のケースのようにSysV initなサービスとUpstart jobの間に依存関係がある場合、解決は割と面倒です。SysV initはupdate-rc.dによる/etc/rcN/S**な順番で起動順を制御するのに対して、Upstartではイベント(emits)を使って順番を制御する、というまったく違う仕組みになっていて、相互にタイミングを制御させる方法がないためです。
で、やる方法としては、以下a/bがあります。
a) /etc/init/smbd.conf の起動スクリプトに適当にsleepか service cups status な感じの判定分を入れて、cupsが上がってからsmbdを上がるように適度に調整する。
b) /etc/init/smbd.conf のstart onの条件をうまく調整して、cupsが上がってからsmbdを上げるようにする……ものの、cupsはSysV initでうまくトリガを撃ってきてくれないので、Upstart eventをうまく見切って調整する必要がある。
周辺パッケージのソースを眺めた範囲では以下で通りそうな気がするんですが、マシンの性能によってはうまく行かなさそうな感触がします。
start on (local-filesystems and net-device-up and runlevel)
どちらもわりとアタマを使う必要がある上に、非常にadhocです(rc.localに書くよりキレイな方法は、あきらめてCUPSをupstart jobに移植してトリガになるイベントを作るってところですが、10.04向けのCUPSをわざわざUpstart jobにするのは不毛そうです)。
あえてやるなら a) がキレイな実装になりそうです。が、相当に面倒なので、rc.localでケアすればいいんじゃないかなぁ、と思います。
ただちょっと気になるのは、smbdは本来Upstart jobなので、S20smbdは本来存在するはずがないことです。これ、存在しているとするとsymlinkだと思うのですが、実体はどこを差しているでしょう……?
オフライン
hito による投稿:
ただちょっと気になるのは、smbdは本来Upstart jobなので、S20smbdは本来存在するはずがないことです。これ、存在しているとするとsymlinkだと思うのですが、実体はどこを差しているでしょう……?
Ubuntu 10.04.4を入れて間もないですが、/etc/init.d/ にsmbd, nmbdがいます。
dpkg -L samba を見る限り、sambaパッケージの一部として提供されているようです。
オフライン
hito様
ItSANgo様
お返事ありがとうございます。
確認しましたが、実機では別件(過去トピック)にあったようなエラーは見つかりませんでした。
そのためか、
$ sudo nano /etc/init/smbd.conf より
start on (local-filesystems and net-device-up and runlevel)
の変更をしてみましたが、そちらも特に効果がなく・・・
とりあえず、UpstartとSysvのイベントが別々に動いていることすら初耳だった自分には
かなり荷が重い問題のようです^^;
残念ですがあまり時間をかけていられる環境でもないので、
# sysv-rc-conf
でsmbd と nmbdを取り外し、お勧め通りにrc.local内のsmbd restartで回避して
様子を見てみることにします。
最後に、
>存在しているとするとsymlinkだと思うのですが、実体はどこを差しているでしょう……?
確認した限りでは、/etc/init.d/smbd を差していました。
オフライン