Processo che rallenta il boot

17 risposte [Ultimo contenuto]
Ritratto di Anubi_Debian_3
Offline
Geek
Iscritto: 08/01/2011
Messaggi: 100

Dunque, come da oggetto, avrei un problema con un processo dell'avvio, precisamente quello in cui viene letto /dev per driver e quant'altro ( Waiting for /dev to be fully populated ). Dura troppo ! Il 70 % circa di tutto il boot lo occupa lui. C'è un modo per accorciare questo processo ? C'entrano qualcosa i parametri dati al kernel durante il boot ?

Ritratto di paolo
paolo
(Webmaster)
Offline
Webmaster
Iscritto: 04/10/2004
Messaggi: 1277

Allega un lspci e il dmesg, cosi possiamo esserti d'aiuto.

Grazie

Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network

Ritratto di Anubi_Debian_3
Offline
Geek
Iscritto: 08/01/2011
Messaggi: 100

Subito.

Lspci:

00:00.0 Host bridge: Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller (rev 10)
00:01.0 PCI bridge: Intel Corporation 82G33/G31/P35/P31 Express PCI Express Root Port (rev 10)
00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 01)
00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 01)
00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 01)
00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 01)
00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 01)
00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 01)
00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 01)
00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 01)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev e1)
00:1f.0 ISA bridge: Intel Corporation 82801GB/GR (ICH7 Family) LPC Interface Bridge (rev 01)
00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 01)
00:1f.2 IDE interface: Intel Corporation N10/ICH7 Family SATA IDE Controller (rev 01)
00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 01)
01:00.0 VGA compatible controller: nVidia Corporation Device 0ca5 (rev a2)
01:00.1 Audio device: nVidia Corporation High Definition Audio Controller (rev a1)
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8101E/RTL8102E PCI Express Fast Ethernet controller (rev 02)

Dmseg è troppo lungo, quindi lo metto su pastebin: http://pastebin.ca/2048659

Ritratto di fareyes
fareyes
(Monster)
Offline
Monster
Iscritto: 14/03/2011
Messaggi: 402

Prova ad installare Boot Up Manager (BUM) poi da terminale --> su --> apt-get install bum. Poi lo lanci e ti vedi quello che vuoi/puoi levare. Praticamente disabilita i run level. Ha una comoda GUI con varie opzioni. Attenzione a ciò che levi..!

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Il responsabile è udev: deve creare uno per uno tutti i device file in base all'hardware che rileva. Questo è bellissimo perché si adatta automaticamente quando cambi qualche pezzo del tuo PC. Se però il tuo hardware non cambia mai, è sicuramente più veloce la vecchia directory /dev statica dei tempi pre-udev, che non cambia ad ogni avvio.

La soluzione che ho adottato io per scendere sotto i 20 secondi di avvio sul mio lento PC, è un misto dei due:

  1. una directory /dev pre-popolata staticamente con quei device file che rappresentano l'hardware "immutabile" (HD, audio, video, tty...)
  2. poi udev che si occupa dei dispositivi "hotplug" (cioè le chiavette USB).
Per il primo punto, ho impacchettato tutti i file che mi interessano in un archivio tar con il seguente comando (da dare quando non ci sono chiavette USB collegate)
# cd /dev
# tar cf /etc/staticdevices.tar .

Poi ho cambiato il comportamento predefinito di udev all'avvio: laddove di solito si mette a creare i vari device, gli ho detto di spacchettare l'archivio tar. A grandi linee ho modificato il file /etc/init.d/udev, localizzato il comando udevadm trigger e l'ho sostituito con
tar xf /etc/staticdevices.tar -C /dev
udevadm trigger --subsystem-match=usb

La prima riga fa l'operazione 1: spacchetta i file statici; la seconda fa l'operazione 2: aggiunge i file relativi al solo sottosistema USB.

ATTENZIONE: questo è solo un abbozzo per far capire il concetto. Ho volutamente omesso dei dettagli importanti. Non provate a casa. Se la cosa interessa a qualcuno posso riportare i passi esatti in una guida.

Per gli anglofoni, quest'idea deriva da questa discussione, al paragrafo "Eliminating coldplugging".

Ritratto di paolo
paolo
(Webmaster)
Offline
Webmaster
Iscritto: 04/10/2004
Messaggi: 1277

Matteo, preciso e dettagliato come sempre.

Che ne dici di farne una guida ? Secondo me tutta la questione e' interessantissima.

Grazie

Paolo Mainardi
CTO Twinbit http://www.twinbit.it
Vice Presidente -- ILDN - Italian Linux DIstro Network

Ritratto di Anubi_Debian_3
Offline
Geek
Iscritto: 08/01/2011
Messaggi: 100

@fareyes: Ho BUM da circa due anni e i processi di boot sono già sfoltiti Tongue
@mcortese: Fantastico. Anche se è un abbozzo non mi costa nulla provare.

Edit. Tar "si rifiuta di creare un archivio vuoto". Credo sia un problema di permessi.

Ritratto di fareyes
fareyes
(Monster)
Offline
Monster
Iscritto: 14/03/2011
Messaggi: 402

Se già usi BUM bene, comunque c'è anche (su) sysv-rc-conf che ti mostra tutti i run level e permette di abilitare o no in base alle tue esigenze. E' vagamente simile a bum, ma più preciso e più mirato. Logicamente se vuoi ottenere qualcosa di più devi fare come suggerito prima da mcortese.

Condivido il fatto di creare una guida da ciò che ha descritto mcortese.

Ritratto di Anubi_Debian_3
Offline
Geek
Iscritto: 08/01/2011
Messaggi: 100

Problema: "Giocando" con Init adesso non mi viene più riconosciuta la connessione internet. Sto scrivendo da live...
Problema risolto.

EDIT: Togliendo readahead ( Non ho mai constatato cambiamenti ) Udev non impiega più tanto tempo, adesso il problema è del demone portmap. Non ne o mai sentito parlare. E' possibile rimuoverlo senza problemi ?
Ho rimesso readahead ed adesso il problema è nuovamente di udev...

Ritratto di Anubi_Debian_3
Offline
Geek
Iscritto: 08/01/2011
Messaggi: 100

Nulla di nuovo ? Finisce così ? Ricordo la sfida dell'impostare una colonna sonora a plymouth: quante risposte ! Questa che è anche più utile non ne riceve ?

EDIT: Ma come ho fatto a non pensarci prima ? Avevo trovato un'altra discussione su tale argomento: http://www.mail-archive.com/debian-eeepc-devel@lists.alioth.debian.org/msg01061.html
Ho compresso la suddetta cartella ( Il comando giusto era "tar -cf /etc/staticdevs.tar *" ) ed ho seguito passo passo quella guida. 3 secondi in meno...
Nulla di straordinario...
Tuttavia, nel modificare udev ho notato questa sezione:

# this is experimental and may not work well
if [ "$UDEV_DISABLED" = "yes" ]; then
  udev_root=/etc/udev/.dev
  export UDEV_ROOT=$udev_root
fi
 
udev_root=${udev_root%/}
 
dev_mount_options='mode=0755'
if [ "$tmpfs_size" ]; then
  dev_mount_options="size=${tmpfs_size},${dev_mount_options}"
fi
 
if [ "$udev_root" != "/dev" ]; then
  log_warning_msg "udev_root != /dev/"
 
case "$1" in
    start)
    if [ -e "$udev_root/.udev/" ]; then
	if mountpoint -q $udev_root/; then
	    log_failure_msg "udev is already active on $udev_root."
	    log_end_msg 1
	else
	    log_warning_msg ".udev/ already exists on the static $udev_root!"
	fi
    fi
 
    echo > /sys/kernel/uevent_helper
 
    mount -n -o $dev_mount_options -t tmpfs tmpfs $udev_root
 
    log_daemon_msg "Starting the hotplug events dispatcher" "udevd"
    if udevd --daemon; then
	log_end_msg $?
    else
	log_end_msg $?
    fi
 
    mkdir -p $udev_root/.udev/rules.d/
    create_dev_root_rule $udev_root/.udev/

Sfruttabile ?

Ritratto di mcortese
mcortese
(Moderatore)
Offline
Moderatore
Iscritto: 27/02/2009
Messaggi: 2918

Anubi_Debian_3 ha scritto:

Avevo trovato un'altra discussione su tale argomento:

A quell'epoca Phil stava discutendo la stessa cosa sia sulla mailing list sia su Debian-administration. Il tuo link e il mio si riferiscono alla stessa soluzione.

Anubi_Debian_3 ha scritto:

Ho compresso la suddetta cartella ( Il comando giusto era "tar -cf /etc/staticdevs.tar *" ) ed ho seguito passo passo quella guida. 3 secondi in meno...
Nulla di straordinario...

Diciamo che l'hai archiviata. Una domanda: ma quanto dura il tuo avvio, se un incremento di 3 secondi non è apprezzabile?

Anubi_Debian_3 ha scritto:

Tuttavia, nel modificare udev ho notato questa sezione:
...
Sfruttabile ?

In che senso?