Etnablog.altervista.org :)

Visitatore: 1313278
Welcome ospite
Menu di accessibilità:
Dimensione carattere:

Home > Linux > Boot del sistema e avvio automatico di applicazioni
Contenuto della pagina:
25 Maggio 2007

Boot del sistema e avvio automatico di applicazioni

Guida: Passare da Windows a Linux (tredicesima parte) 

Cosa succede quando accendete il vostro pc?

L'avvio del pc viene detto "boot" o "bootstrap".

La prima cosa che fa il "BIOS" del pc all'avvio è di cercare le periferiche avviabili leggendo i "settori di avvio" (o "MBR") di floppy e hard disk.

L'MBR (Master Boot Record) è un'area molto piccola del vostro hard disk, in cui linux posiziona un programmino detto "boot loader".

Il "boot loader" si occupa di caricare il "kernel", ovvero il cuore del vostro sistema operativo.

I due principali "boot loader" di linux sono "LILO" e "GRUB" (GNU GRand Unified Bootloader). Ubuntu Feisty usa GRUB ed è proprio di GRUB che vi parlerò adesso.

L'MBR contiene lo "stage 1" di GRUB, che passa immediatamente la palla allo "stage 2" che invece è collocato nel disco vero e proprio (in una cartella tipo /boot/grub/).

Lo stage 2 contiene il menù di avvio con la lista (/boot/grub/menu.lst) dei kernel avviabili.

Considerate che Linux aggiorna molto spesso i suoi kernel, o perchè ne correggono difetti, o perchè vi aggiungono nuovi driver, o perchè vi introducono nuove funzionalità; quindi una volta al mese è probabile che, fra gli aggiornamenti che scaricherete in automatico del vostro linux, vi ritroverete kernel nuovi, pronti per essere usati da voi.

Ogni volta che voi installate un kernel Linux nuovo, questo verrà posizionato nella directory "/boot/" ed automaticamente verrà aggiornata anche la lista dei kernel disponibili per GRUB (file "/boot/grub/menu.lst").

Nella lista dei kernel da avviare, potete persino inserire Windows. In questo modo potrete sempre scegliere se avviare da Win o da Linux, liberamente.


Mi sembra doveroso aggiungere due cosette ancora su GRUB:

quando voi installate Ubuntu installate anche GRUB.

..Ma se installate Windows (o effettuate un ripartizionamento che spinge Windows a ricontrollare la MBR) DOPO avere installato GRUB (e Linux), Windows modificherà e renderà inutilizzabile GRUB.

Il problema però si risolve facilmente riavviando il sistema dal vostro LiveCD (il cd usato per installare Ubuntu) e facendo una apposita sequenza di comandi di ripristino di GRUB.

State tranquilli comunque perchè GRUB è affidabilissimo. L'unica volta che mi ha dato questo problema è stato (così come vi ho appena detto..) proprio quando ho cercato di ridimensionare la partizione di Windows per dare più spazio a Linux (operazione svolta peraltro egregiamente dal programma "gparted"). All'avvio di Windows (per provare se funzionava tutto a posto) lui mi sconvolse GRUB ma ripristinai tutto in pochi minuti con l'apposita procedura. La colpa purtroppo non è nè di Linux nè di GRUB, è Windows che è geloso e vuole avere per se tutti i miei dischi di sistema..

Una volta scelto da GRUB il kernel da caricare, il suo lavoro finisce qui, e da qui in poi il lavoro di avvio è svolto dal kernel, che cercherà di accedere a tutti i componenti dell'hardware, hard disk, schede di rete, scheda audio e tutto il resto.

In pratica il kernel cerca tutte le periferiche che sono compatibili con i suoi "drivers", che sono le "interfacce attraverso cui vengono pilotate le periferiche" (solo le periferiche compatibili col kernel possono funzionare).

Infine il kernel caricherà le applicazioni presenti nel "runlevel" tra cui vi è anche "GDM" (il "gestore di login" o "Gnome Display Manager") che è quella pagina in cui si può effettuare il login dell'utente (vedi oltre in questa sezione).

Da GDM mettendo il nome utente e password si può finalmente accedere a GNOME o altra "sessione" (vedi oltre in questa sezione).

Completato l'avvio, ecco alcuni comandi utili che potremmo eseguire da shell per avere qualche informazione riguardo alle operazioni di avvio del kernel:


dmesg | lessIl comando dmesg ripropone i messaggi visualizzati dal kernel durante l'avvio del sistema, consentendo di controllarli con tutta calma. Il comando less invece viene utilizzato, in generale quando si vuole velocemente prendere visione di un lungo file di testo.
who -rMostra quale è l'attuale runlevel in esecuzione.
runlevelCome who -r, ci mostra il runlevel in esecuzione.


Se il vostro avvio è diventato lento, potrebbe essere utile per voi cercare di capire dove è che il vostro sistema perde tempo in avvio. C'è un modo per farvi mostrare tutte le operazioni che il vostro sistema compie durante l'avvio.

Fate gedit /boot/grub/menu.lst per modificare GRUB.

Individuate la riga in cui è specificato il kernel, dovrebbe essere simile a questa:
 

kernel /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7 42c7ba ro quiet splash

 
Commentatela e riscrivetela sotto senza "quiet" e "splash" facendola quindi diventare:
 


#kernel /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7 42c7ba ro quiet splash
kernel /boot/vmlinuz-2.6.17-10-generic root=UUID=5ee00750-e638-423f-9d5d-44fdd7 42c7ba ro

 

In questo modo all'avvio di linux potete osservare e studiare in quale operazione il sistema perde piu tempo all'avvio.
Se volete visualizzare tali operazioni ma nel contempo non volete rinunciare alla barra di scorrimento tipica dell'avvio, togliete quiet ma lasciate splash.


Come avrete visto, in quel codice scritto sopra, vi uno strano "UUID" seguito da codici strani. L'UUID è una sigla che serve ad identificare univocamente una periferica, nel nostro caso identifica la partizione che contiene il kernel considerato.

Si sarebbe potuto mettere, al posto di quel codice, anche "/dev/hda1" o "/dev/hdc1" o altro ma francamente a me ha dato meno problemi GRUB indicando direttamente l'UUID.

L'UUID della partizione che vi interessa ("/dev/hda1" o "/dev/hdc1" o altro) potete vederlo dal pannello in Gnome "Gestione periferiche", cercando nella partizione che vi interessa (o da shell, facendo " sudo vol_id -u /dev/XXX ". Se non avete il comando vol_id installate da Synaptic il pacchetto "volumeid").

L'unica accortezza da tenere è che se modificate le partizioni (le ridimensionate con "gparted" o simili) è probabile che l'UUID cambi e quindi anche il file /boot/grub/menu.lst andrà risistemato manualmente.


* * *

Potete scegliere voi stessi di mettere delle applicazioni che voi usate spesso in avvio "automatico" quando accendete il pc.

In generale, non conviene avviare in automatico applicazioni che non vi servono sempre, non tanto perchè possono rallentare inutilmente il sistema, anche di poco, ma quanto per i problemi di sicurezza che potrebbero portarvi.
Per controllare, disabilitare o abilitare applicazioni all'avvio, scaricate da synaptic e usate il pacchetto bum (boot up manager).

Se vi interessa mettere le mani sul boot di linux, in generale, è bene che sappiate cosa sono i runlevels.
Un runlevel è uno stato del sistema in cui possono venire compiute solo determinate operazioni. I runlevel sono sette, enumerati da 0 a 6, sebbene esistano anche il 7, l'8 ed il 9 che però i normali Unix (e Linux con loro) non utilizzano.

Runlevel 0: /etc/rc0.d Questo runlevel avvia la sequenza di arresto del sistema (shutdown).
Runlevel 1: /etc/rc1.d Questo runlevel rappresenta la modalità singolo utente, nessun altro utente può collegarsi, il servizio di rete è disabilitato.
Runlevel 2: /etc/rc2.d Per l'utente, Il 2 è il runlevel di default qui su Feisty.
Runlevel 3: /etc/rc3.d Per l'utente.
Runlevel 4: /etc/rc4.d Per l'utente.
Runlevel 5: /etc/rc5.d Per l'utente.
Runlevel 6: /etc/rc6.d Il runlevel 6 è quello di reboot.

Lo 0, l'1 ed il 6 sono riservati e corrispondono rispettivamente a: arresto del sistema (0), single-user mode (1) e reboot (6).
I runlevels dal 2 al 5 qui su ubuntu sono uguali, e potete modificarli se ne avete l'esigenza.
In Feisty c'è un sistema tutto nuovo per l'avvio del sistema, che non si basa più, come di solito in linux, sul file /etc/inittab (sistema "sysvinit"), ma su un sistema noto come upstart, che gestisce i demoni secondo le configurazioni impostate nella cartella /etc/event.d/.

Il runlevel di avvio usato di default in Feisty è il 2. Per cambiarlo bisogna editare manualmente il file /etc/event.d/rc-default.
In questo file /etc/event.d/rc-default infatti vi è il comando "telinit" che è serve a impostare il runlevel.

Gli script che di fatto permettono di gestire l'avvio o lo stop di un servizio sono in realtà nella directory /etc/init.d/ (in questa cartella sono conservati i file binari, eseguibili, dei demoni installati) e possono essere utilizzati direttamente dall'utente per gestire i singoli processi.

I file presenti nelle cartelle dei runlevels /etc/rcX.d (X è il numero del runlevel) sono in realtà dei link ("symlink") agli script nella cartella /etc/init.d/.
Tali link sono preceduti da una S ("start") o una K ("Kill"), seguite da un numero. Le applicazioni precedute da "S" verranno avviate nel relativo runlevel.

Attualmente la documentazione in rete per upstart è piuttosto scarsa, ed in realtà, a meno che non abbiate delle necessità particolari, è piuttosto difficile che abbiate mai la necessità di ritoccare i file di configurazione di upstart e i demoni da avviare.

* * *

Qualunque sia il runlevel usato, vi possono essere delle operazioni che voi eseguite spesso in riga di comando, e magari preferireste che il sistema all'avvio le eseguisse in automatico.

Aggiungete il comando che vi interessa nel file /etc/rc.local inserendolo prima della riga "Exit 0".

* * *

C'è un altro metodo per avviare applicazioni in automatico in GNOME, è un metodo molto semplice ed è quello che più vi consiglio.

Basta andare nel menu "Sistema --> Preferenze --> Sessioni --> Programmi d'avvio" e qui aggiungere il comando che intendiamo avviare.

Il sistema automaticamente aggiungerà il comando da voi inserito in un file nella cartella "/home/NomeUtente/.config/autostart/".

Ad esempio, basta aggiungergli "/usr/bin/gdesklets" per fare in modo che le gdesklets (sono dei piccoli tools per GNOME, da installare con Synaptic), vengano avviate in automatico ad ogni avvio di GNOME.

Torna al menù principale della "Guida su Linux"

Descrizioni usate nelle foto: 
Postato da: Etnablog in Linux alle 1:17

Permalink | Commenti(3)
Inserisci commento

Commenti:

Ciao, sono nuovo di linux e nel mio pc ho attualmente installato sia windows xp che ubuntu...
Vedo che te ne intendi parecchio sull' argomento quindi vorrei cogliere l' occasione per domandarti in quale modo dovrei editare il menu.lst di grub in modo da mettere in cima alla lista di grub windows anzichè linux, in modo che se non tocco niente mi parta in automatico windows anzichè linux (il motivo è un pò lunghetto da spiegare :D )...
Pensavo che forse potrebbe bastare prendere il "blocco" dove scrive di windows e semplicemente spostarlo in cima alla lista nel file menu.lst, ma volevo esserne sicuro prima di mettere le mani in quel file, per evitare che poi all' avvio non succedano casini perchè ci sono errori :D...
Ti sarei grato infinitamente se mi rispondessi al mio indirizzo e-mail: tomino87@yahoo.it...
So che questo è un blog e ti chiedo scusa in anticipo se invece di commentare rispondo con una domanda...
A presto (spero),

Piero

 

Postato da: Piero il 09 Ottobre 2007 alle 14:34

ciao, ti rispondo io..
basta che sposti il blocco che racchiude Windows in cima alla lista..

;)

 

Postato da: Pietro il 03 Aprile 2008 alle 9:40

Oppure, se hai paura di spostare qualcosa di troppo (capita ;-)) trova (PARTENDO DALLO 0) qual è nella lista di avvio il numero di Windows.
Esempio: se la tua lista di avvio è la seguente

Ubuntu
Fedora
Mandriva
Wi ndows

Ubuntu sarà il numero 0, Fedora l'1, Mandriva il 2 e Windows il 3.

A questo punto, nel file menu.lst, cerca la voce "default X" (dove X corrisponde a un numero, di solito 0) e modifica questo numero con il numero di windows.
In questo modo Windows non sarà in cima alla lista, ma comunque sarà selezionato all'avvio ;-)

Buona fortuna

 

Postato da: Alessandro Rinaldi il 13 Maggio 2008 alle 14:26

Solo gli utenti registrati possono lasciare commenti
*1 user online
Caricamento pagina: 0.02 s