# eth0 in background [RISOLTO]

## codadilupo

S'ciao Gechi,

ho un preoblema fastidioso: quando accendo il portatile scollegato dalla rete, come é normale, visto che sono in dhcp, mi trovo sempre a dover aspettare parecchio tempo che fallisca la ricerca della rete.

Secondo voi, é possibile, con poche modifiche, fare in modo che il pc non si fermi all' ETH0 UP, ma continui il processo di boot ?

Tipo, imporre un processo background, che non attenda l'esito del processo, per continuare.....

CodaLast edited by codadilupo on Wed Nov 05, 2003 9:35 pm; edited 1 time in total

----------

## fedeliallalinea

Non so se dica qualcosa di utile per il tuo problema (io la lessi tempo fa e non ricordo) ma prova

a leggere questo.

Oppure disabilita il servizio e lo fai partire manualmente quando ti serve.

----------

## Ginko

Io ho risolto il problema utilizzando i profili. Mi spiego, all'accensione del laptop, tramite il prompt di LILO, comunico il profilo di rete che desidero (casa, cliente1, cliente2, no-rete, ecc.), dopodiche' uso questa informazione all'interno degli startup scripts per attuare la relativa configurazione di rete (oltre ad altre cose).

Volendo puoi usare anche gli schemi di PCMCIA ammesso che la tua scheda di rete lo sia.

Di letteratura sul tema ce n'e' abbastanza in giro, ma se ti servono piu' info batti un colpo.

--Gianluca

----------

## codadilupo

 *fedeliallalinea wrote:*   

> Non so se dica qualcosa di utile per il tuo problema (io la lessi tempo fa e non ricordo) ma prova
> 
> a leggere questo.

 

L'avevo letto, ma non so come utilizzarlo: in piu', se non ho capito male, non mi risolve il problema: dovrei startare sempre senza rete, e, successivamente, lanciare la rete: allora tanto vale che...

 *Quote:*   

> Oppure disabilita il servizio e lo fai partire manualmente quando ti serve.

 

... e non mi sembra una soluzione   :Sad: 

Coda

----------

## codadilupo

 *Ginko wrote:*   

> Io ho risolto il problema utilizzando i profili. Mi spiego, all'accensione del laptop, tramite il prompt di LILO, comunico il profilo di rete che desidero (casa, cliente1, cliente2, no-rete, ecc.), dopodiche' uso questa informazione all'interno degli startup scripts per attuare la relativa configurazione di rete (oltre ad altre cose).
> 
> Volendo puoi usare anche gli schemi di PCMCIA ammesso che la tua scheda di rete lo sia.
> 
> Di letteratura sul tema ce n'e' abbastanza in giro, ma se ti servono piu' info batti un colpo.
> ...

 

dunque: la scheda non é una pcmcia, uso grub, e mi servono piu' info, quindi... batto il colpo !  :Wink: 

A parte gli scherzi: ho capito solo che hai risolto, ma non sono assolutamente in grado di replicare la tua soluzione: non programmo, o meglio, non so programmare, quindi, quando leggo un banalissimo script bash, ho bisogno di sapere, step by step, a cosa serve, e dove va a parare: é già tanto se capisco la logica, di uno script, ma modificarlo... ehhhh, ce ne vuole ancora!

Coda

----------

## Drospy

 *codadilupo wrote:*   

> S'ciao Gechi,
> 
> ho un preoblema fastidioso: quando accendo il portatile scollegato dalla rete, come é normale, visto che sono in dhcp, mi trovo sempre a dover aspettare parecchio tempo che fallisca la ricerca della rete.
> 
> Secondo voi, é possibile, con poche modifiche, fare in modo che il pc non si fermi all' ETH0 UP, ma continui il processo di boot ?
> ...

 

Ciao,

io ho risolto così, ho modificato il file /etc/init.d/net.eth0 alla riga 64:

da 

/sbin/dhcpcd ${dhcpcd_IFACE} ${IFACE} >/dev/null || {

a

/sbin/dhcpcd -t 1 ${dhcpcd_IFACE} ${IFACE} >/dev/null || {

ho aggiunto l'opzione t ( timeout ) cioè il tempo di attesa della risposta da parte del dhcp, l'unica controindicazione è che se hai problemi di rete per cui la risposta del dhcp è lenta, la rete potrebbe non salire. In caso aumenta il time-out.

Ciao

----------

## Ginko

 *codadilupo wrote:*   

> dunque: la scheda non é una pcmcia, uso grub, e mi servono piu' info, quindi... batto il colpo ! 

 

Allora, innanzittutto prova a dare un'occhiata a questo post alla fine del quale viene descritto come impostare un profilo utilizzando grub. La soluzione globale descritta e' piuttosto complessa e non te la suggerisco a meno che tu non sappia esattamente quello che stai facendo.

L'idea di base pero' e' buona e puoi prenderne spunto. In pratica tu imposti la variabile d'ambiente $PROFILE medinate grub e poi nello script che fa partire la rete verifichi che tale variabile sia (ad esempio) "nonetwork" nel qual caso non fai partire il demone dhcp.

Il problema principale e' che cosi' facendo modifichi uno script (/etc/init.d/net.eth0) che fa parte di un pacchetto gentoo (sys-apps/baselayout), ossia una volta che fai un upgrade di quel pacchetto, ti perdi le tue modifiche.

Il mio consiglio e' il seguente :

Imposti la rete in /etc/conf.d/net con un indirizzo fisso : 10.0.0.1/255.255.255.252,  nessun default-gw e metti net.eth0 nel runlevel di default.

Nello script /etc/conf.d/local.start metti il seguente codice :

```
if [ ! $PROFILE == "nonetwork" ]; then

  /sbin/dhcpd eth0

fi
```

Il gioco e' fatto!

Saluti

--Gianluca

----------

## MyZelF

Sono tutte soluzioni valide al problema.

Dai un'occhiata anche qui:

https://forums.gentoo.org/viewtopic.php?t=70712

https://forums.gentoo.org/viewtopic.php?t=72757

dove si consiglia anche:

```
*  sys-apps/ifplugd

      Latest version available: 0.13-r1

      Latest version installed: [ Not Installed ]

      Size of downloaded files: 32 kB

      Homepage:    http://www.stud.uni-hamburg.de/users/lennart/projects/ifplugd

      Description: Brings up/down ethernet ports automatically with cable detection

```

(non l'ho ancora provato, ma è nella mia todo list)   :Wink: 

----------

## codadilupo

grassie! Le provo tutte, e poi vi dico  :Wink: 

Coda

----------

## micron

Anche io ho avuto per un po' di tempo lo stesso problema, ho risolto passando un valore di timeout a dhcpcd. Proprio come ha fatto Drospy.

Inoltre ho modificato anche /etc/init.d/net.eth0 aggiungendo:

```

if [ -f /var/cache/dhcpcd-eth0.cache ] ; then

               rm /var/cache/dhcpcd-eth0.cache

fi
```

Tutto questo per velocizzare la connessione ad una rete dove è presente un dhcp server, ma c'è una classe di indirizzi diversi dall'ultima rete a cui dhcpcd si è connesso. 

Senza questa aggiunta il mio dhcpcd tenta di prendersi l'ultimo ip che gli era stato assegnato, nonostante non centri nulla con lla rete in cui si trova.

----------

## MyZelF

 *MyZelF wrote:*   

> (non l'ho ancora provato, ma è nella mia todo list)  

 

Ho provato ifplugd, funziona perfettamente ed è probabilmente una delle soluzioni più comode per risolvere il problema.

Per installarlo (supponendo che l'interfaccia interessata sia eth0):

```

# emerge sys-apps/ifplugd

# rc-update del net.eth0 default

# rc-update add ifplugd default

```

Se l'interfaccia usa DHCP è necessario (e comunque non fa male):

```

# emerge sys-apps/net-tools

```

Editare /etc/conf.d/ifplugd aggiungendo ad ARGS le opzioni -a e -mm:

```

ARGS="-f -u0 -d5 -w -a -mm"

```

Editare /usr/sbin/ifplugd.action in modo che sbatta giù l'interfaccia quando viene disconnesso il cavo:

```

case "$2" in

        up)

                state=start

                ;;

        down)

                state=stop

                /sbin/ifconfig $1 down

                ;;

        *)

                echo "$0: wrong arguments"

                echo "Call with <interface> <up|down>"

                exit 1

                ;;

esac

[ -x /etc/init.d/net.$1 ] && /etc/init.d/net.$1 --quiet $state

exit 0

```

...ed ora godetevi ifplugd che tira sù/giù la rete quando il cavo di rete viene collegato/scollegato.   :Wink: 

----------

## selene_luna3

ehmmm.... ho fatto passo dopo passo come ha detto MyZelF ma... non funziona.. non mi dà errori, ma la rete non la trova, a meno che non riaggiungo net.eth0 al default.... in questo modo però rimane lo stesso problema iniziale..

----------

## Benve

a dire il vero ho fatto anchiu una prova veloce e non aveva funzionato. Pensavo di aver dimenticato qualcosa

----------

## fedeliallalinea

 *selene_luna3 wrote:*   

> ehmmm.... ho fatto passo dopo passo come ha detto MyZelF ma... non funziona.. non mi dà errori, ma la rete non la trova, a meno che non riaggiungo net.eth0 al default.... in questo modo però rimane lo stesso problema iniziale..

 

Non e' una soluzione elegante ma puoi mettere nel tuo /etc/conf.d/net la riga

```
dhcpcd_eth0="-t 5"
```

dove 5 sta per 5 secondi e poi fallisce se non trova. Di default e' 60 sec.

----------

## selene_luna3

Ok grazie, meglio che niente.

----------

## MoEbIuZ

Io uso due righe di bash che potrebbero essere utili in casi simili:

```
#!/bin/bash

#Cerco mygateway, se non lo trovo mi attacco al internet da solo

ping -c 1 mygateway > /dev/null

if [ $? ]

then

  adsl-start

fi

```

Il succo sta nel fatto che ping rende "exit 0" se tutto va bene e la variabile $? contiene lo stato di uscita dell'ultimo programma lanciato.

----------

## randomaze

 *MoEbIuZ wrote:*   

> 
> 
> Il succo sta nel fatto che ping rende "exit 0" se tutto va bene e la variabile $? contiene lo stato di uscita dell'ultimo programma lanciato.

 

Non ci avevo mai pensato...questa me la segno come tip!

----------

## elfo

 *Quote:*   

> ...ed ora godetevi ifplugd che tira sù/giù la rete quando il cavo di rete viene collegato/scollegato.

 

proprio per questo NON uso ifplugd! Dato che l'implementazione di TCP permette un delay di 3 minuti di connessione "rotta" prima di resettare il socket, é pratico poter scollegare il cavo di rete, cambiarlo (per esempio con uno piu' lungo quando, stanchi di stare seduti alla scrivania vi volete fare l'ultima mezz'oretta di internet con il portatile comodamente sdraiati a letto). Se quando lo stacchi tira giu' l'interfaccia la cosa non funzionerebbe per niente.

La mia "soluzione" e' la piu' semplice ma un pochino piu' laboriosa:

in /etc/conf.d/net ho diversi "profili" che corrispondono alla configurazione delle reti a cui mi collego di frequente e non hanno dhcpd. Nel caso edito il file e cambio il profilo "scommentato".

Ho pure diversi /etc/resolv.conf-LUOGO che copio in /etc/resolv.conf a seconda di dove mi trovo.

SE ho bisogno la rete (conf. statica) lancio /etc/init.d/net.eth0 dopo aver modificato e copiato come sopra, senno' lancio sudo dhcpcd eth0.

----------

