Newsgroup: it.comp.os.linux.ubuntu
Titolo: Samba funziona bene, ma non al reboot

 
Riavvio ubuntu 11.10 e samba non va!!
però se digito:
   sudo service smbd restart
 
si mette a funzionare perfettamente come mi aspetto con tutte le 
condivisioni e le impostazioni corrette.
 
1) testparm non riporta nessun problema
2) le directory condivise hanno i permessi adeguati ad essere navigate 
dagli utenti... (dopo il restart del servizio sono infatti accessibili) 
e comunque per prova gli ho fatto un giro di 777
3) gli utenti sono presenti negli utenti linux
4) Gli utenti sono presenti anche in samba caricati con la loro password 
tramite pdbedit. Per verivicare comunque pdbedit -L mi lista 
correttamente gli utenti, anche se giustamente non mi mostra le 
password. Comunque se fossero sbagliate non vedo perchè dopo un restart 
del servizio dovrebbero mettersi a funzionare.
 
5) nel log.... Qui sto indagando per ora non dico nulla.
 
La mia prima impressione è che samba parta prima dei servizi di rete, 
oppure prima che sia montato il disco che contiene le directory da 
condividere (montaggio di un normale ext4 che avviene normalmente al 
boot tramite fstab)
 
 
 
 
 
 
 
 
 
 

 boot tramite fstab)
 
Trovato... Forse, ma non so come risolverlo (a meno di non schedulare un 
restart del servizio a qualche secondo dal riavvio)
 
Allora:
analizzando tramite diff un log (livello 9) di samba alla partenza e uno 
su restart del servizio vedo 2 significative differenze!
 
La prima: al reboot non carica correttamente cups. Mancano una ventina 
di righe di inizializzazione cups. Credo però che non sia questo il 
problema, penso sia invece una conseguenza del difetto che noto subito dopo!
 
La seconda: non riconosce eth0!!!! (cercare chiave dentro a log.smbd 
"interpret_interface"). Questa chiave si trova subito dopo il problema 
di cups, viene utilizzata 2 volte, una per ogni interfaccia di rete.
La prima volta sulla chiamata alla scheda "lo" e questa funziona 
correttamente. La seconda volta su eth0. ED E' Questa che fallisce dopo 
un reboot!!!. Nelle riga successiva alla chiave si nota che non riesce a 
fare "add interface eth0 ib=....."
 
Direi che dipende dal fatto che l'indirizzo della scheda di rete lo 
gestisco attraverso il network manager di kde e non attraverso al file 
di configurazione in /etc/network. Quindi quando samba parte la scheda 
di rete non è ancora configurata.
 
 
Solo che visto che su questa macchina preferirei mantenere la rete sul 
networkmanager (perchè mi risulta più comoda da gestire) non so come 
risolvere.
 
Ma qualcuno che usa samba non ha lo stesso problema?
 

 Ma qualcuno che usa samba non ha lo stesso problema?
 
La butto lì.
Potresti modificare gli init script di Samba (dovrebbero essere
/etc/init/smbd.conf ed /etc/init/nmbd.conf) in modo che vengano
eseguiti dopo networkmanager. Ma sulla sintassi non saprei
illuminarti :)
 
-- 
Marco `Quizzlo' Paolone
 Linux User #401479

marcopao...@gmail.com
 (Marco `Quizzlo' Paolone):

Intanto bisogna vedere se ha il sistema con /etc/init.d o il nuovo (che
non ricordo come si chiama).  Saputo questo, se il problema fosse solo
l'ordine di attivazione si può modificare facilmente.


kubuntu 11.10 aggiornato (non ci dovrebbero essere ppa che influiscono 
sullo startup)
 
Ho letto in giro che di default i servizi sulla 11.10 sono lanciati in 
parallelo (ok, ma IMHO è un bug far partire samba prima delle interfacce 
di rete).
 
si puo' cambiare questo comportamento da /etc/init.d/rc mettendo 
CONCURRENCY=none.
OPS!!! RITIRO TUTTO E' GIA "=none". Eventualmente per abilitare l'avvio 
parallelo bisogna mettere "=startpar"
 
Allora... la roba in init.d c'è, ma i servizi vanno riavviati con
service smbd restart
 
c'è una migrazione in corso e non so se hanno finito nelle precedenti 
versioni alcuni bisognava riavviarli con
"service nomeservizio restart" mentre altri con:
"/etc/init.d/nomeservizio restart"
 
Comunque negli script non ci ho capito abbastanza da metterci le mani.
 
PER RISOLVERE ho creato lo script restartsmbd.sh (in fondo al post) che 
lancio al boot tramite crontab con la seguente riga:
 
@reboot /home/mioutente/mieiscript/restartsmbd.sh &
 
mi testa per 120 volte (con un ritardo di un secondo per ciclo)
se "ifconfig eth0" risponde con una scheda di indirizzo 192.168.qualcosa
Quando la trovo attende altri 2 secondi per sicurezza poi riavvia samba 
ed esce dal ciclo.
 
Dai log che produce in pippo.txt Vedo che il restart viene effettuato al 
secondo ciclo. Quindi immagino che l'interfaccia di rete vada su dopo 
almeno 1 secondo rispetto al servizio di cron!
Il grep che mi verifica se samba è tra i processi e me lo mette nel log 
indica effettivamente che samba è PARTITO prima che l'interfaccia di 
rete sia configurata.
 
Se qualcuno vuole riutilizzare lo script è libero di farlo.
Adattare alla propria rete la riga:
"  grep_line="$(/sbin/ifconfig eth0 | /bin/grep 192.168)"  "
e dopo aver verificato che funziona magari remmare le righe che 
producono il log in /home/pippo.txt
 
SCRIPT
Copiare dentro un file restartsmbd.sh
sudo chmod +x restartsmbd.sh
------- Inizio restartsmbd.sh --------
#!/bin/bash
 
for((i=0;$i<=120;i=$(($i+1))));do
     #debug attivazione rete
	echo $i 2>&1>>/home/pippo.txt
	/bin/date 2>&1>>/home/pippo.txt
	/sbin/ifconfig eth0 2>&1>>/home/pippo.txt
	/bin/ps aux |/bin/grep smbd 2>&1>>/home/pippo.txt
	grep_line="$(/sbin/ifconfig eth0 | /bin/grep 192.168)"
	echo $grep_line
	echo $grep_line 2>&1>>/home/pippo.txt
	if [ -z "$grep_line" ]; then
		#se eth0 non è su aspetto
		/bin/sleep 1
		echo "PASSO $i" 2>&1>>/home/pippo.txt
		echo passo
	else
		#altrimenti aspetto altri 2 secondi per sicurezza che sia tutto ok
		#e poi faccio ripartire samba
		echo ok
		echo "OK Pronti VIA $i" 2>&1>>/home/pippo.txt
		/bin/sleep 2
		### NOTA sudo -i ha l'effetto di
		### settare correttamente l'ambiente
		### (forse era opportuno lanciare l'intero
		### script in sudo -i, avrei evitato di
		### dover scrivere i path dei programmi
		sudo -i /usr/sbin/service smbd restart 2>&1>>/home/pippo.txt
		break
	fi	
done
/sbin/ifconfig eth0 2>&1>>/home/pippo.txt
/bin/ps aux |grep smbd 2>&1>>/home/pippo.txt
------- FINE restartsmbd.sh --------
 
 

for((i=0;$i<=120;i=$(($i+1))));do
 
Qui basta scrivere
 
for((i=0;i<120;i++));do

"
 
start on local-filesystems
stop on runlevel [!2345]
 
respawn
 
pre-start script
	RUN_MODE="daemons"
 
	[ -r /etc/default/samba ] && . /etc/default/samba
 
	[ "$RUN_MODE" = inetd ] && { stop; exit 0; }
 
	install -o root -g root -m 755 -d /var/run/samba
end script
 
exec smbd -F
--
 
il riferimento a /etc/default/samba dice solo che è configurato come 
deamon e non su inetd.