Per prima cosa, se leggete queste righe e siete riusciti ad installare la Slackware sul vostro sistema, è necessario che sappiate (se non lo sapete già) che il bootloader di default della Slack non è GRUB come in quasi tutte le altre distribuzioni, ma LiLo (Linux Loader), un bootloader molto più vecchio, che non esiterei a definire "obsoleto". Le prime versioni di LiLo risalgono al 1992, più o meno alla nascita delle due distribuzioni "antiche" per eccellenza: Slackware e Debian.
GRUB ha molte più funzionalità ed una maggior flessibilità di utilizzo, che lo rende una scelta assai preferibile rispetto a LiLo. Esso nasce nel 1999 ad opera di Free Software Foundation durante il progetto GNU.
Di differenze tra LiLo e GRUB ce ne sono molte, ma le più importanti riguardano la struttura, la flessibilità e la compatibilità generale con Linux.
È un bootloader molto semplice il cui uso è più indicato per computer datati ed in grado di gestire egregiamente configurazioni IDE di qualsiasi tipo: mostra però i suoi limiti quando i dischi rigidi superano certe dimensioni. Infatti all'avvio solo i driver del BIOS sono disponibili per l'accesso ai dischi, e LiLo si basa quasi esclusivamente su di essi con tutti i limiti che ciò comporta. LiLo può avere gravi difficoltà nell'accedere a partizioni di avvio situate oltre il cilindro numero 1023; in poche parole, in computer con BIOS vecchi e dischi grandi LiLo potrebbe non leggere le partizioni oltre la prima.
Ogni volta che viene apportata qualche modifica al file di configurazione (solitamente /etc/lilo.conf) lilo deve essere reinstallato su disco (sia essa un'installazione su MBR, su floppy o su filesystem) per rendere effettive le modifiche. Questo può causare problemi, specialmente quando un utente cambi il filesystem di root da cui caricare il kernel e modifichi lilo.conf, senza però reinstallare il bootloader.
Uno dei maggiori problemi di LiLo è la sua "relativa incompatibilità" con udev, inventato per rendere più semplice l'esportazione dei nodi di periferica dal kernel allo spazio utente e l'assegnazione di un nome preciso ed unico ai blocchi nella directory /dev. Infatti, durante la sua installazione su MBR, LiLo va a leggere i blocchi di dischi e partizioni dichiarati in /dev (generati da udev) e li confronta con i contenuti di /proc/partitions (dichiarati dal kernel). Se non corrispondono, lilo rifiuta di installarsi. E questo può accadere quando una regola di udev (che dà i nomi alle periferiche, tra cui ci sono tutte le partizioni ed i dischi) assegna alla stessa partizione un nome diverso -in /dev- da un nome standard dichiarato dal kernel Linux (esportato e leggibile con cat /proc/partitions).
GRUB è un bootloader molto versatile, flessibile e configurabile, che riesce a gestire partizioni e dischi di qualsiasi tipo, IDE, SATA o USB, è indipendente dal BIOS e ogni volta che vengono modificate le liste di sistemi operativi non è necessario reinstallarlo sul disco, ma la sua gestione dinamica della configurazione gli permette di rileggere le liste aggiornate ad ogni avvio, dando un maggior senso di indipendenza.
GRUB incorpora una shell semplice di comandi che può essere usata per leggere, modificare o creare regole di avvio sul momento, anche da zero, ed un utente avanzato può persino fare a meno del file di configurazione (sebbene non abbia molto senso). In questo caso occorre sapere dove caricare che cosa e come.
GRUB supporta il caricamento di sistemi operativi remoti, permettendo quindi di lavorare su un terminale senza disco rigido, disponendo solo di filesystem di rete. Oltre a questo, esso può elencare oltre un centinaio di voci di sistemi operativi nel suo menu grazie ad una semplice barra di scorrimento.
GRUB non ha i problemi di LiLo per quanto riguarda il confronto dei nomi delle partizioni.
Per tutte le ragioni che ho elencato sopra è assai raccomandabile, appena possibile, sostituire LiLo con GRUB in distribuzioni che lo montino di default, tra cui la Slackware. In questo articolo vi spiegherò come farlo su di essa.
Esistono due modi per installare GRUB sulla Slackware. Il primo, il più delicato, è la compilazione le cui basi sono descritte in questo articolo. Il secondo è l'installazione di un pacchetto Slackware .tgz (o .txz per le versioni più recenti, oltre la 13.0). In quest'articolo tratterò entrambe.
Prima però va detto che esistono due versioni "major" di GRUB nella Rete, ed è importante differenziarle: esse sono GRUB (chiamata anche GRUB Legacy o GrUB, Grand Unified Bootloader) e GNU GRUB (o GRUB2). Personalmente vi raccomando caldamente di installare GRUB2 invece che GRUB Legacy.
Darò per scontato che voi, usando la Slackware, conosciate la password di root e sappiate come diventarlo. Per tutto il resto dell'articolo tratterò i comandi come dati con privilegi di root, salvo dove diversamente specificato.
La domanda può non essere immediata, ma le risposte sono varie e tutte valide, alcune semplici ed altre più tecniche.
Prima di tutto GRUB2 è più recente di GRUB Legacy, e quest'ultimo non è più aggiornato. Inoltre GRUB2 è molto più flessibile di GRUB Legacy e i file di configurazione permettono una gestione molto più dettagliata del processo di boot, rendendo GRUB Legacy stesso "obsoleto".
Una risposta molto tecnica, ma molto significativa, risiede in un parametro dei filesystem ext2/3/4 che si chiama inode size.
Questa schermata è l'output del comando
/sbin/dumpe2fs -h <partizione>
Tra le righe potete distinguere, evidenziato in rosso, il parametro Inode size, caratteristico per ogni filesystem ext2/3/4 e determinato in fase di formattazione della partizione. Potete visualizzare direttamente il valore del parametro con
/sbin/dumpe2fs -h <partizione> 2>/dev/null | grep -i "inode size" | awk '{ print $3 }'
Se il valore è diverso da 128 non potete installare GRUB Legacy su MBR. Questo perché GRUB Legacy ha una limitazione interna che gli impedisce di leggere dati su filesystem con Inode size diverso da 128, e poiché tra i dati ci sono anche gli stage del bootloader, GrUB non è in grado di localizzarli su disco, facendo fallire l'installazione. Questa limitazione non esiste in GRUB2, e può essere facilmente installato su qualsiasi filesystem Linux.
Se avete un filesystem ext e volete installare GRUB Legacy, ma avete un Inode size diverso da 128, l'unica possibilità che avete è riformattare la partizione radice dove risiedono gli stage di GrUB, ma passando un'opzione supplementare a mke2fs:
mke2fs -I 128 -j <partizione>
Questo creerà un filesystem con Inode size a 128, scavalcando il default.
(Per default, tutte le distribuzioni Slackware recenti -dalla 13.0 in poi- usano versioni di mke2fs che generano automaticamente filesystem con inode size = 256. Avete molte scelte davanti a voi, ma dovete sapervi regolare sulla base dei dati che vi ho fornito.)
In sunto, se userete GRUB2 non avrete problemi di sorta.
Se non volete compilare GRUB2 potete passare alla pagina "Installare GRUB2 da pacchetto Slackware".
Potete (anzi, vi consiglio di) fare tutti i passi, fino alla compilazione di GRUB2 compresa, come utente normale, ed in seguito tornare root per installare il software.
La prima cosa da fare è reperire i sorgenti del bootloader. Li potete trovare in gnu.org. Scegliete sempre la versione più recente, specialmente se lavorate con Slackware 13.0 o successive. Prenderemo in considerazione il pacchetto grub-1.98.tar.gz. Potete scaricarlo nella directory dell'utente corrente.
Alla fine del download potete seguire i consigli di base sulla compilazione, creando così una directory in cui custodire i pacchetti ed una, separata, in cui depositare i sorgenti decompressi. Personalmente vi consiglio sempre questo modo di lavorare, così riuscirete a tenere in ordine i dati.
Per esempio, se siete nella vostra directory home, potete creare due cartelle:
mkdir sources packages
In cui, rispettivamente, mettere i sorgenti decompressi e compilare i software (sources), e in cui lasciare i pacchetti scaricati (packages). Vi consiglio anche sempre di conservare i sorgenti compressi, così potrete ripristinare l'albero qualora facciate disastri.
Quindi, se avete salvato il pacchetto nella vostra home, muovetelo in packages con
mv <pacchetto>.tar.gz packages/
E poi invocate tar per decomprimere i sorgenti al posto giusto:
tar -xzf packages/<pacchetto>.tar.gz -C sources/
Oppure, se è compresso con bzip2,
tar -xjf packages/<pacchetto>.tar.bz2 -C sources/
A questo punto avrete nella vostra directory sources una cartella con lo stesso nome del pacchetto decompresso, in cui potrete cominciare a lavorare. Nel nostro caso, la cartella si chiamerà grub-1.98. Entrate con un
cd sources/grub-1.98
La prima fase è la configurazione, ma per fortuna GRUB2 si accontenta di poco. Per fare le cose in un modo pulito e preciso vi invito ad usare questa riga di configurazione:
./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc
Se avete un sistema Slackware completo non dovreste ricevere alcun errore.
Ora dovete semplicemente invocare
make
E lasciare che compili il software. Se non avete ricevuto errori in configurazione non dovreste riceverne nemmeno ora. Nel caso non fosse così, l'errore più frequente nella compilazione di GRUB ha a che fare con l'opzione -Werror passata di default dal Makefile di GRUB2 a gcc durante la compilazione, che causa errori anche in presenza di semplici (e a volte innocui) warning. In questo caso potreste vedere la scritta
warnings treated as errors
Ed un'uscita prematura dal processo di compilazione. Se vi dovesse capitare questo dovete ripetere l'intero procedimento di configurazione, prima ripulendo l'albero dei sorgenti con
make distclean
Quindi riconfigurare, aggiungendo l'opzione --disable-werror:
./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --disable-werror
Ed infine ripetendo il make.
Bene, ora avete i sorgenti compilati, pronti per essere installati: per fare questo dovete diventare superuser. Potete usare sudo o (ve lo consiglio) diventate direttamente superuser usando su.
Appena avrete i privilegi di amministratore potrete installare GRUB2 con
make install
E potrete passare direttamente alla configurazione del bootloader.
Installare GRUB2 da pacchetto è molto più semplice e veloce, perché potete saltare in toto il processo di compilazione. La cattiva notizia è che pacchetti .tgz o .txz di GRUB2 in giro non ce ne sono molti. Per questo mi sono preso la libertà di compilare e pacchettizzare GRUB2 per voi. Potete scaricarli da questo link
Prima di tutto, se volete installare qualcosa dovrete avere privilegi di amministratore, come per la compilazione. Per usare pkgtool vi consiglio di elevarvi a root tramite su, vi risparmierete dei mal di testa.
pkgtool va solitamente invocato senza argomenti, nella directory dalla quale volete installare uno o più pacchetti. Per installare GRUB2 vi troverete delle schermate come le seguenti.
Spostate la selezione con le frecce direzionali sulla tastiera. Per spostarvi tra OK e Cancel premete Tab.
Se volete installare uno o più pacchetti dalla directory corrente selezionate Current e OK. Se i pacchetti si trovano in directory differenti selezionate Other.
A questo punto dovrete ricordare la directory ed inserirla manualmente, con percorso relativo o assoluto. Ma se vorrete installare i pacchetti dalla directory corrente (opzione Current) passerete direttamente alla schermata sotto.
Yes installerà il pacchetto evidenziato; No salterà al pacchetto seguente e Quit uscirà da pkgtool a qualsiasi livello. Semplicemente selezionando Yes avrete installato GRUB2. Nel caso non ci siano altri pacchetti Slackware nella stessa directory pkgtool uscirà subito dopo aver installato il software. In caso contrario non dovrete fare altro che selezionare Quit per uscire subito, o No per passare in rassegna i pacchetti rimanenti senza installarli.
Adesso arriva la parte più semplice, che è la configurazione di GRUB2. In tutto una configurazione standard prevede tre soli comandi, ma se volete potete aggiungerne un quarto, che è
dd if=/dev/zero of=/dev/hda bs=446 count=1
Dove /dev/hda è il disco su cui volete installare GRUB2, visto dal kernel Linux. Questo passaggio è opzionale e pericoloso, se non sapete con precisione quale nome ha il disco su cui installerete il bootloader. Lo possono usare gli utenti più esperti e serve a ripulire il MBR da un eventuale bootloader estraneo (come LiLo o una versione precedente di GRUB), soltanto per essere sicuri che non sorgano errori o conflitti in fase di caricamento. Se non siete sicuri di quel che fate potete semplicemente saltarlo e andare direttamente ai passi successivi.
mkdir /boot/grub
Questo genera la directory di default della configurazione di GRUB2, che andrà a contenere tutti i moduli dei filesystem e gli stage oltre al primo.
grub-mkconfig >/boot/grub/grub.cfg
Genera in /boot/grub i file grub.cfg secondo le regole in /etc/grub.d, e device.map, che contiene i dischi rigidi riconosciuti da GRUB in fase di generazione di grub.cfg.
Appena avrete il nuovo grub.cfg vi consiglio di darci un'occhiata e rimuovere tutte le menuentry che giudicate inutili o ridondanti.
Semplicemente
grub-install /dev/hda
Dove /dev/hda è il disco rigido dove avete generato la configurazione e dove volete installare GRUB2. Ricordate sempre di installare GRUB2 sul MBR, quindi date sempre il nome del disco e non un nome di partizione.
Una volta aggiunto, installato e configurato GRUB2 sulla vostra Slack avete di fronte una scelta con due opzioni: mantenere LiLo sul vostro sistema o toglierlo tramite pkgtool. Onestamente non c'è motivo per tenere due bootloader nello stesso computer, uno dei quali assolutamente obsoleto, quindi vi descriverò il semplice procedimento per rimuovere LiLo dalla Slackware. Se invece desiderate mantenere LiLo, potete saltare del tutto questa pagina.
Richiamate pkgtool, sempre senza argomenti, per aprire la schermata iniziale:
Selezionate Remove per aprire la lista dei pacchetti installati nel sistema. Scorrete la lista con PgUp e PgDown, o con le frecce direzionali in su o in giù per trovare la riga di LiLo.
Selezionatela premendo una volta Spazio, vedrete un asterisco comparire alla sinistra del nome del pacchetto.
Ora non dovete fare altro che premere Invio (se la selezione in basso è su OK, altrimenti spostatela con Tab) e pkgtool rimuoverà il pacchetto, file per file.
Il pacchetto è stato rimosso. Premete Invio per tornare alla schermata principale, e selezionate Exit per uscire da pkgtool.
MegaLab.it rispetta la tua privacy. Per esercitare i tuoi diritti scrivi a: privacy@megalab.it .
Copyright 2008 MegaLab.it - Tutti i diritti sono riservati