Boot lento con Ubuntu? risolviamo il problema!

1 05 2007

ubuntuIn questi giorni di utilizzo di Ubuntu sto scoprendo un pò di cosette, problemucci o ottimizzazzioni, che vorrei condividere con voi…soprattutto le cose che ritengo più utili e di interesse comune…

Oggi parliamo di boot lento con Ubuntu!
Ho notato che i tempi di boot della mia Ubuntu, sebbene comunque veloci rispetto magari a Fedora, sembrava avessero un rallentamento nella fase centrale del boot (la barra di avanzamento rimane bloccata a metà per una decina di secondi o più).

Ho quindi iniziato a cercare di capire dove potesse essere il problema e analizzando l’output in modalità testuale ho visto che il tempo perso era soprattutto durante la fase di configurazione delle interfaccie di rete (“Configuring network interfaces“). Una breve ricerca con il nostro amato Google (gugol per gli amici :) mi ha fatto notare che questo problema non era affatto un problema mio ma un problema mooolto generale per la community di Ubuntisti in giro per il mondo! :-\ Quindi ho deciso di suggerirvi alcune possibili soluzioni che ho raccolto, lasciando a voi la scelta finale… Iniziamo analizzando il problema…

Il problema
Il rallentamento avviene durante la fase di boot, quando gli script di avvio e configurazione delle interfaccie di rete (if-up) accedono al file /etc/network/interfaces.
Due sono i possibili colpevoli individuati:

  1. il file /etc/network/interfaces stesso, contenente una lista di diverse interfaccie di rete, la maggior parte delle quali non presente in alcun sistema. Ecco come si presenta:
    auto lo
    
    iface lo inet loopbackauto eth0
    
    iface eth0 inet dhcp
    
    auto eth1
    
    iface eth1 inet dhcp
    
    auto eth2
    
    iface eth2 inet dhcp
    
    auto ath0
    
    iface ath0 inet dhcp
    
    auto wlan0
    
    iface wlan0 inet dhcp

    notate la presenzadi troppe interfaccie di rete, la maggior parte delle quali non presenti in un sistema standard (eth1, eth2, ath0…)

  2. un recente aggiornamento delle regole di udev che cerca di abilitare/disabilitare in maniera automatica solo le interfaccie di rete con hardware fisico presente.

Le soluzioni
Le soluzioni proposte sono diverse:

  1. modificare il file /etc/network/interfaces commentando tutte le schede di rete eccetto l’interfaccia di loopback lo. Questa soluzione va bene solo per chi non necessita la configurazione delle interfaccie di rete al boot, che vengono gestite una volta in X tramite Network Manager.
    sudo gedit /etc/network/interfaces

    Ecco come si dovrebbe presentare il file dopo la modifica:

    auto lo
    
    iface lo inet loopback#auto eth0
    
    #iface eth0 inet dhcp
    
    #auto eth1
    
    #iface eth1 inet dhcp
    
    #auto eth2
    
    #iface eth2 inet dhcp
    
    #auto ath0
    
    #iface ath0 inet dhcp
    
    #auto wlan0
    
    #iface wlan0 inet dhcp
  2. disabilitare lo script di avvio della rete in fase di boot. Anche questa soluzione è pregiudicata dai fatti di cui sopra.
    Il comando da usare è il seguente:

    sudo update-rc.d -n networking remove

    L’interfaccia di loopback viene comunque abilitata da /etc/init.d/loopback.
    Se successivamente cambiate idea o avete bisogno di ripristinare la situazione precedente potete usare il seguente comando:

    sudo update-rc.d networking start 40 S .
  3. spostare gli script per la configurazione ad un livello più basso dell’attuale, da rcS.d a, ad esempio rc2.d o rc3.d e assegnargli una priorità inferiore a quella di GDM, ad esempio 14, (GDM ha priorità 13 – lo script si chiama infatti S13gdm), così da far avviare gli script solo una volta che sia partito X, senza notare il rallentamento iniziale.
    mv /etc/rcS.d/S40networking /etc/rc2.d/S14networking
  4. applicare la seguente patch al file ifupdown.rules. Questa è la soluzione proposta da uno degli appartenenti alla community di Ubuntu, probabilmente verrà implementata nelle nuove versioni del pacchetto e sembra essere la soluzione ottimale per risolvere il problema.
    diff -Nru /tmp/LEzYmBwnb9/ifupdown-0.6.8ubuntu5/debian/changelog /tmp/PvtgFLTy6t/ifupdown-0.6.8ubuntu6/debian/changelog
    
    --- /tmp/LEzYmBwnb9/ifupdown-0.6.8ubuntu5/debian/changelog	2007-04-04 10:27:35.000000000 +0100
    
    +++ /tmp/PvtgFLTy6t/ifupdown-0.6.8ubuntu6/debian/changelog	2007-04-10 12:44:34.000000000 +0100
    
    @@ -1,3 +1,10 @@
    
    +ifupdown (0.6.8ubuntu6) feisty; urgency=low
    
    +
    
    +  * Change DRIVERS!= to use the start/end trick, since DRIVERS!= doesn't
    
    +    work.  LP: #102675.
    
    +
    
    + -- Scott James Remnant <scott@ubuntu.com>  Tue, 10 Apr 2007 12:44:13 +0100
    
    +
    
     ifupdown (0.6.8ubuntu5) feisty; urgency=low   * Change DRIVER to DRIVERS to suppress a warning, even though I think we
    
    diff -Nru /tmp/LEzYmBwnb9/ifupdown-0.6.8ubuntu5/debian/ifupdown.rules /tmp/PvtgFLTy6t/ifupdown-0.6.8ubuntu6/debian/ifupdown.rules
    
    --- /tmp/LEzYmBwnb9/ifupdown-0.6.8ubuntu5/debian/ifupdown.rules	2007-04-04 10:27:12.000000000 +0100
    
    +++ /tmp/PvtgFLTy6t/ifupdown-0.6.8ubuntu6/debian/ifupdown.rules	2007-04-10 12:44:08.000000000 +0100
    
    @@ -3,8 +3,10 @@
    
     # removable.
    
     # See udev(7) for syntax.
    
    -SUBSYSTEM!="net", GOTO="net_end"
    
    -DRIVERS!="?*", GOTO="net_end"
    
    +SUBSYSTEM=="net", DRIVERS=="?*", GOTO="net_start"
    
    +GOTO="net_end"
    
    +
    
    +LABEL="net_start"
    
    # Bring devices up and down only if they're marked auto.
    
     # Use start-stop-daemon so we don't wait on dhcp

Bene, vi ho proposto diverse soluzioni, lascio a voi provare le diverse nel dettaglio e dirmi risultati e consigli su quale secondo voi è preferibile usare ;)


Azioni

Information

3 responses

31 05 2008
punx

è interessante, ma interfacce si scrive senza la “i”, mentre in tutto il blog è con “i”

ciao

31 05 2008
DrBrex

ti ringrazio per l’appunto linguistico, ora si che è un’altra storia!

6 09 2008
Hop-B

Che “interfaccia tostia”

Lascia un commento