Tecnologia e non solo

agosto 16, 2008

Grub? Gulp!

Filed under: Guida pericolosa — telperion @ 3:43 pm

Grub è sempre una fonte di problemi causa il suo complicato modo di numerare i dischi.
Provo a fare un po di luce sull’argomento senza aver la pretesa di spiegarvi tutto chiaramente, ma con la speranza di indicarci “il sentiero” per iniziare a capirci qualcosa.

Grub è estremamente potente ed adattabile, bisogna solo decodificarlo, ci provo.

Legenda degli esempi.

Connettori: connessioni della scheda madre

hd: DISCO = disco collegato

GRUB: disco visto da grub (hdx) root (hdx,partizione) con le partizioni che iniziano da zero

libata: se avete un kernel che non usa ide (deprecato) i dischi sono tutti sdx

ide: se avete un kernel che usa il modulo ide, i dischi attaccati alle interfaccie EIDE saranno sempre hdx saranno sempre in testa alla lista e verranno visti in questo ordine

EIDE-0,0	(hda)	primaria master
EIDE-0,1	(hdb)	primaria slave
EIDE-1,0	(hdc)	secondaria master
EIDE-1,1	(hdd)	secondaria slave

Negli esempi considero un scheda madre con UNA interfaccia EIDE (master-slave) e QUATTRO SATA, come gran parte delle schede madri recenti. I dischi vengono collegati non in ordine per far capire che la numerazione non dipende dal connettore ma dall’ordine con cui vengono trovati i dischi.

Eventuali CD DVD e rimovibili USB non sono influenti la numerazione è succesiva agli hd collegati.
Notate come grub numera SOLO i dischi collegati partendo da EIDE e poi i SATA.
Aggiungere dischi (se non DOPO quelli presenti) crea scompiglio alla numerazione.

Esempio con un disco eide ed un sata

connettori	hd		GRUB		libata		ide
EIDE-0,0	DISCO		(hd0)		sda		hda
EIDE-0,1
SATA-1
SATA-2		DISCO		(hd1)		sdb		sda
SATA-3
SATA-4

Esempio con un disco eide sul canale secondario ed un sata

connettori	hd		GRUB		libata		ide
EIDE-0,0
EIDE-0,1	DISCO		(hd0)		sda		hbd
SATA-1
SATA-2		DISCO		(hd1)		sdb		sda
SATA-3
SATA-4

due dischi eide

connettori	hd		GRUB		libata		ide
EIDE-0,0	DISCO		(hd0)		sda		hda
EIDE-0,1	DISCO		(hd1)		sdb		hdb
SATA-1
SATA-2
SATA-3									
SATA-4

due sata

connettori	hd		GRUB		libata		ide
EIDE-0,0
EIDE-0,1
SATA-1		DISCO		(hd0)		sda		sda
SATA-2		
SATA-3
SATA-4		DISCO		(hd1) 		sdb		sdb

se aggiungete un disco al connettore sata 2 cambia l’ordine del il disco in sata4:

connettori	hd		GRUB		libata		ide
EIDE-0,0
EIDE-0,1
SATA-1		DISCO		(hd0)		sda		sda
SATA-2		DISCO		(hd1)		sdb		sdb			
SATA-3	
SATA-4		DISCO		(hd2) 		sdc		sdc

ora aggiungiamo ancora un disco eide (ha la precedenza e cambia l’ordine di tutti i dischi)

connettori	hd		GRUB		libata		ide
EIDE-0,0	DISCO		(hd0)		sda		hda
EIDE-0,1
SATA-1		DISCO		(hd1)		sdb		sda
SATA-2		DISCO		(hd2)		sdc		sdb	
SATA-3
SATA-4		DISCO		(hd3) 		sdd		sdc

Riassumendo grub numera SOLO i dischi che trova partendo da ZERO iniziando da quelli eventualmente collegati alle intefacce EIDE poi i SATA quindi i rimovibili USB.
CD e DVD sono elencati a parte e non vanno considerati.
I dischi EIDE se il kernel usa il vecchio modulo IDE sono denominati in maniera fissa hda hdb hdc hdd a seconda dell’interfaccia fisica a cui collegati, altrimenti vengono chiamati sdx (dove x è una lettera) a seconda dell’ordine in cui sono collegati.

Aggiungendo un disco è necessario riverificare gli fstab menu.lst e potrebbe essere necessario reinstallare il bootblock per farlo puntare al disco corretto.

Bisogna poi considerare il disco che è impostato dal BIOS della scheda madre per fare il boot, che non necessariamente è il primo della lista (e quindi si rischia di installare il boot block di grub nel disco sbagliato)

Consideriamo

connettori	hd		GRUB		libata		boot order bios
EIDE-0,0	DISCO		(hd0)		sda		*
EIDE-0,1
SATA-1		DISCO		(hd1)		sdb		
SATA-2		DISCO		(hd2)		sdc			
SATA-3
SATA-4		DISCO		(hd3) 		sdd

in questo caso il boot block và installato in (hd0)
grub> setup (hd0)
ma se

connettori	hd		GRUB		libata		boot order bios
EIDE-0,0	DISCO		(hd0)		sda		
EIDE-0,1
SATA-1		DISCO		(hd1)		sdb		*
SATA-2		DISCO		(hd2)		sdc			
SATA-3
SATA-4		DISCO		(hd3) 		sdd

allora il boot block va instalato in (hd1) indipendentemente dal disco dove si trovano gli stage di grub (la cartella /boot/grub che lancia il/i sistemi). (vedi nota1)

Verificate anche che il file /boot/grub/device.map contenga la mappatura corretta, per l’ultimo esempio (oppure sia vuoto)

(hd0)	/dev/sda
(hd1)	/dev/sdb
(hd2)	/dev/sdc
(hd3)	/dev/sdd

perchè il map rilevato da grub volendo può essere alterato da questo file.

In fstab e menu.lst UUID semplifica un po le cose identificando le partizioni in maniera univoca, il prezzo che si paga è una diminuzione della comprensibilità e in caso di formattazione (anche solo della swap) il mancato riconoscimento della partizione se non si aggiorna l’UUID in /etc/fstab e in /boot/grub/menu.lst

Le partizioni con s.o. windows devono essere la prima del disco. Perchè possano bootare il disco che le contiene deve essere il PRIMO (C per windows). Qualsiasi disco può essere promosso momentaneamente PRIMO per il boot di windows, scambiandolo con un altro, per poi ripristinare la situzione precedente. A questo ci pensa grub con l’istruzione map in menu.list esempio:

# This entry automatically added by the Debian installer for a non-linux OS
# on /dev/sdb1
title		Microsoft Windows XP Professional
root		(hd1,0)
savedefault
makeactive
map		(hd0) (hd1)
map		(hd1) (hd0)
chainloader	+1

In questo caso windows è installato nella prima partizione del secondo disco (hd1,0)
il primo map fa diventare hd1 hd0 e consente il boot di windows, il secondo riporta tutto alla normalità.
Ovvio che se windows è installato in (hd0,0) non è necessaro map, ma avete visto che ad esempio basta aggiungere un disco eide ed il nostro sata aumenta subito di numero.

L’argomento vedete non è difficile, solo complesso, se entrate nell’ottica e vedete i dischi come li vede grub, non ha più segreti e poi potete fare quello che volete.

Per lavorare/ripristinare su un grub gia installato:
wiki.ubuntu-it.org/AmministrazioneSistema/Grub/Ripristino
consigliato il terzo metodo con chroot.

Il complesso manuale:
www.gnu.org/software/grub/manual/

-nota1
Quando si altera l’ordine di boot da bios il disco di boot diventa (hd0) in fstab ma resta (esempio) sdb
quindi verificate con attenzione la numerazione e l’ordine dei dischi, poi modificate fstab.
Particolarmente utile l’editor in linea del grub premendo “e” e editando a mano la riga.

12 commenti

  1. Ho usato per anni lilo, tanto che fino a poco tempo fa (due o tre anni) ad ongi installazione sostituivo grub con lilo. Quando qualcosa si conosce bene e qualcos’altro no, si preferisce la prima. Poi quasi per prova o chiamiamola voglia di “capire” come funzionava grub e diciamocelo francamente visti tutti i feedback positivi a suo favore, ho fatto il grande passo. Non me ne sono pentito assolutamente, però una cosa devo dirla in tutta semplicità: mi sta sui maroni il casino “inventato” dai suoi sviluppatori per quel dannato file di configurazione. Cancelletti che non fungono da commenti, doppi cancelletti che lo sono e minchiate del genere. Tanto per citare e so che tu @telperion hai già avuto modo di apprezzare vorrei citare una lamentazione con la quale concordo in pieno :

    NdT avviso il link sottostante contiene

    turpiloquio, linguaggio spinto, blasfemia, cunnilingus, fellatio, sessismo, razzismo, protagonismo, scambismo, e D. J. Bernstein.

    se non siete d’accordo NON CLICCATE. Fine di NdT.

    http://www.lamentazioni.org/2008/uno_in_particolare/grub-e-programmatori-di-merda/

    anzi sembra quasi che quel post sia una copia spiaccicata del mio pensiero, chissà se posso far rivalere qualche forma di copyright😀 (scherzo).
    Comunque con un po’ di buona volontà e un po’ di tempo si riesce a padroneggiare anche quel fottuto, dannato, file di conf.

    Commento di imu — agosto 16, 2008 @ 6:59 pm

  2. @imu:
    ciao
    sai come si dice, se ci sono 4 pagnotte e chiedi ad un programmatore di contarle ti dice 0, 1, 2, 3.
    Anche le “4 libertà” di Stallman sono la 0, la 1, la 2, e la 3.
    Si lo avevo letto con relativo scompisciamento, l’Asbesto molesto.
    LOL

    Commento di telperion — agosto 16, 2008 @ 7:41 pm

  3. @telperion
    Partire da “0” non è un male, ma far ripartire da “0” le abitudini della gente si. Con i dischi è elementare prendere famigliarità ma cambiare abitudini dopo che per anni abbiamo usato il cancelletto per commentare … oltretutto “credo(lol)” sia ancora in uso😀

    Commento di imu — agosto 16, 2008 @ 7:52 pm

  4. @imu
    cancelletti a parte
    il gran caos è Grub parte da zero e linux da 1
    hd0,0 = sda1
    hd0,5 = sda6
    per la nostra somma felicità di masochisti.😀

    Commento di telperion — agosto 16, 2008 @ 8:24 pm

  5. lilo tutta la vita,
    zero problemi di dischi, di numerazione, di casini, di partizioni non viste, oppure viste e non lette.
    quando una cosa e` fatta male e` fatta male. D`accordissimo con Imu.
    p.s.= ciao imu :}

    Commento di luna — agosto 18, 2008 @ 3:09 am

  6. ho visto che te ne intendi pertanto provo ad abusare della tua pazienza per chiederti una mano:
    ho un vecchio pc con un disco IDE impostato come master sul canale primario ed un SATA collegato ad un adattatore montato su uno slot pci della scheda madre.
    Dal BIOS del PC non è possibile impostare la periferica IDE di boot pertanto il boot deve avvenire per forza dal disco master del primo canale ide. Non so tuttavia se si riesca a fare il boot anche dal disco sata in quanto non ho mai provato.
    Sulla prima partizione del disco IDE è installato linux (Ubuntu 8.04).
    Come probabilmente saprai, l’ultima versione di Ubuntu usa UUID per identificare le partizioni.
    Il mio problema è questo: ad ogni successivo riavvio del PC accade che le virtual device (/dev/sda e /dev/sdb) dei due dispositivi possono risultare invertite come se venissero riattribuite casualmente ad ogni riaccensione.
    Per chiarire con un esempio: se prima di spegnere il PC il disco IDE era sda e quello SATA sdb, alla siccessova riaccensione può succedere che IDE diventi sdb e SATA sda. Non posso dunque avere la certezza che IDE sia sempre sda (come invece credo dovrebbe essere e necessiterei che fosse) e SATA sdb.
    Mi sai per caso spiegare il perché di questa cosa e come posso eventualmente risolvere il problema?

    Tieni presente che Grub è installato sull’MBR del disco IDE (lo stesso dove si trova anche linux) e gli stage di grub si trovano sempre sullo stesso disco nella stessa partizione dove è montato / (all’interno ovviamente di /boot/grub).
    In menu.lst si usa UUID per determinare la partizione da avviare.
    La device map mi pare corretta ed è:
    (hd0) /dev/sda
    (hd1) /dev/sdb
    …quindi è come se all’accensione del PC a volte IDE fosse riconosciuto prima di SATA (e fosse mappato dunque come hd0) e a volte no (e venisse mappato dunque come hd1)…tuttavia ho riscontrato che non è neppure così perché GRUB vede IDE correttamente (sempre come hd0) e SATA sempre come hd1 pertanto come è possibile che nonostante il file device.map sia impostato come indicato sopra, l’attribuzione di sda e sdb avvenga arbitrariamente ad ogni riavvio?

    Commento di bingel — ottobre 9, 2008 @ 12:09 am

  7. @bingel
    Hai mica una entry nel menu.lst che swappa i dischi
    esempio:

    map (hd0) (hd1)
    map (hd1) (hd0)

    che devono essere sempre accoppiate.

    Al limite prova a lasciare vuoto device map (fai un backup) del file.

    Commento di telperion — ottobre 9, 2008 @ 9:28 am

  8. nessuno swap per i dischi in menu.lst
    Provo a svuotare device.map poi ti faccio sapere …nel frattempo nessun’altra idea?

    Commento di bingel — ottobre 10, 2008 @ 12:38 am

  9. ma per ripristinare grub da live indipendentemente dal metodo (1-2-3) vale anche per grub2????? io sto usando quello attualmente………:)

    Commento di carcass — gennaio 31, 2009 @ 11:32 am

  10. @carcass

    mai usato grub2 quindi non saprei, cerca su google.

    Commento di telperion — gennaio 31, 2009 @ 4:55 pm

  11. @telperion

    “Per lavorare/ripristinare su un grub gia installato:”

    E’ cambiato il link, quell’altro punta a grub2. Ciao😉

    http://wiki.ubuntu-it.org/AmministrazioneSistema/Grub/Legacy/Ripristino

    Commento di aleida — novembre 29, 2009 @ 9:35 pm


RSS feed for comments on this post.

Blog su WordPress.com.

%d blogger cliccano Mi Piace per questo: