View Full Version : Disperazione Grub
leliuccio
06-11-2004, 14:49
Buongiorno! Ho un problema: ho dovuto formattare la partizione win e con questo non ho potuto accedere al menu di grub che mi permetteva di scegliere con quale SO partire... ho messo il dvd di suse 9,1 e ho tentato di ripristinare il grub ma non c'è niente da fare: quello che genera il tool per l'installazione del bootrecord è
GNU GRUB version 0.94 (640K lower / 3072K upper memory)
[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename. ]
grub> root (hd0,1)
Filesystem type is reiserfs, partition type 0x83
grub> install --stage2=/boot/grub/stage2 / d (hd0) / 0x8000 (hd0,1)/grub/stage2
Error 15: File not found
grub> quit
ho provato a mettere (hd0,1)/boot/grub/menu.lst al posto di (hd0,1)/grub/stage2 perchè in effetti questo non esiste. anche /boot/grub/stage2 ma niente... qualcuno sa aiutarmi? non mi va di formattare pure linux ogni volta che devo farlo su win (significherebbe almeno una volta al mese)
è successo anche a me, ma io avevo solo creato una piccola partizione fat32....
da quello che mi hanno spiegato windows quando viene reinstallato scrive sul mbr dell'hard disk e cacella il boot loader (win non pensa di dover convivere con qualcun'altro!)...potresti, se non l'hai già fatto, partire col cd in rescue mode e ripristinare il boot...
all'epoca mi avevano accennato che era possibile creare una mini partizione solo per grub, per evitare il problema. io non saprei farlo, forse qualcuno più esperto ti potrebbe rispondere.
Originariamente inviato da bullone
....da quello che mi hanno spiegato windows quando viene reinstallato scrive sul mbr dell'hard disk e cacella il boot loader (win non pensa di dover convivere con qualcun'altro!)...
Verissimo, purtroppo!
Formattando la partizione di Windows (ma sopratutto reinstallandolo) hai anche cancellato quella parte del MBR (i suoi primi 448 byte) in cui era presente il codice preposto all'esecuzione di Grub durante il boot...
Per leliuccio
Mi è sembrato di capire che, attraverso il cd di boot della SuSE sei riuscito ad entrare in una shell di "recupero" dalla quale hai lanciato Grub.
Bene... procurati un floppy disk, e rilancia il cd della SuSE in modalità "recupero".
Allora, una volta giunto al prompt della shell, NON lanciare grub ma:
1. Metti il floppy nel drive;
2. formattalo:
# fdformat /dev/fd0;
3. crea un filesystem fat12:
# mkdosfs /dev/fd0
4. crea una directory temporanea in cui montare il floppy, es:
# mkdir ./floppy
5. monta il floppy:
# mount -t auto /dev/fd0 ./floppy
6. crea le due dir boot/grub:
# mkdir -p ./floppy/boot/grub/
Ora si tratta di copiare i due file di sistema stage1 e stage2 in
./floppy/boot/grub/
Dove si trovano 'sti file nel filesystem temporaneo (in RAM) di SuSE?
Boh! Bisogna cercarli... per esempio:
# find / -iname "stage*"
L'output di find ti darà il percorso ricercato.
7. copia dei due file di sistema stage1 e stage2 in
./floppy/boot/grub/:
# cp /percorso/degli_stage/.../stage* ./floppy/boot/grub/
Non è necessario, ma è meglio: puoi copiarti anche il tuo vecchio
file menu.lst, previo mount (in un altra dir temporanea) della
partizione Linux ancora presente nell'hard disk:
# cp /.../.../boot/grub/menu.lst ./floppy/boot/grub/menu.lst
8. ora puoi lanciare grub:
# grub
e dare questi tre comandi:
9. grub> root (fd0)
10. grub> setup (fd0)
11. grub> quit
Fatto questo, avrai grub installato nel floppy.
Lascialo inserito e riavvia il pc in modo che il boot venga eseguito
prima dal floppy.
Se tutto è andato a buon fine, come dovrebbe se la partizione Linux non è stata danneggiata e/o spostata, ti ritroverai nel menu dei sistemi operativi oppure, alla peggio, nel prompt di grub, dal quale però è sempre possibile lanciare Linux con gli opportuni comandi.
Intanto prova a fare così...
Se riuscirai col floppy a rilanciare Linux, poi dovrai reinstallare Grub nel MBR, e così potrai fare a meno del floppy (ma non buttarlo, come vedi un floppy di boot con Grub è sempre molto comodo...).
leliuccio
06-11-2004, 20:09
Gibbus sei stato gentilissimo e molto esauriente.
Purtroppo il tutto sta su un portatile in cui non è presente il floppy drive. Me ne scuso perchè non l'avevo specificato.
Sono riuscito tuttavia tramite dvd di suse ad avviare il mio sistema: faccio partire l'installazione, si accorge che c'è un sistema linux già installato e mi da delle opzioni di ripristino tra le quali quella di installazione di grub ed il problema è uguale a quello di cui parlavo nel primo post. Tra le altre opzioni c'è "avvia il sistema precedentemente installato" ed effettivamente viene avviato tranquillamente (con il vecchio kernel però... non so come ma è così). Da li tento nuovamente l'installazione di grub ma niente da fare...
hai provato con la funzione "ripristina sistema operativo" o "ripara", qualocosa del genere. a me, come ti dicevo, il problema del boot load me lo risolse...
eventualmente trova qualche anima pia che ti spieghi come creare grub in una partizione tutta per sè
Originariamente inviato da bullone
...eventualmente trova qualche anima pia che ti spieghi come creare grub in una partizione tutta per sè
Quella è di gran lunga la situazione migliore ;), ma nel caso di installazione di un nuovo boot loader (ad esempio quello di Windows) il codice presente nel
settore di avvio verrebbe sovrascritto ed anche in questo caso non si sarebbe in grado di avviare Linux. Grub, quando si installa, provvede a mettere una parte del suo codice nel MBR (per esempio) ed una altra parte sotto forma di file di sistema (i file stage*). Installando grub in un altra partizione, sono i file stage* che vengono messi lì, ma non la parte "avviabile" di grub, a meno che non si installi grub integralmente in una piccola partizione primaria.
In tal caso sarebbe possibile alloggiare là tutti i file di sistema di grub (stage*) ed i vari vmlinuz*, initrd* etc, nonché il codice eseguibile di grub (nel settore di avvio della suddetta partizione). Però, poiché quel rombiballe di Win vuole solo partizioni primarie per installarsi (o meglio, i suoi file di sistema devono essere messi in una partizione primaria), prima di installare Win occorrerebbe nascondere la piccola partizione primaria in cui risiede grub, altrimenti Windows vi ci si fionderebbe sovrascrivendo... :(
Originariamente inviato da leliuccio
Sono riuscito tuttavia tramite dvd di suse ad avviare il mio sistema: faccio partire l'installazione, si accorge che c'è un sistema linux già installato e mi da delle opzioni di ripristino tra le quali quella di installazione di grub ed il problema è uguale a quello di cui parlavo nel primo post. Tra le altre opzioni c'è "avvia il sistema precedentemente installato" ed effettivamente viene avviato tranquillamente (con il vecchio kernel però... non so come ma è così). Da li tento nuovamente l'installazione di grub ma niente da fare...
Ok, niente floppy dunque. Ma l'importante era riuscire ad avviare Linux, e ci sei riuscito. Ora si tratta di installare il boot loader nel MBR.
In genere le distribuzioni tipo SuSE, Mandrake e Red Hat vogliono che si usino i loro strumenti specifici per manipolare il boot loader, anche se grub in queste distro dovrebbe instalarsi correttamente bypassandoli attraverso la shell (io uso sempre la shell, però tieni conto che ho la Slackware...).
Strumenti grafici
Credo che con la SuSE i tools di supporto siano in Yast (yast control-center, o qualcosa di simile): cerca avvio o boot loader, scegli come boot loader grub e come punto di installazione il MBR dell'hard disk (presumibilmente sarà /dev/hda, ma questo lo sai solo tu). Segui i vari wizard etc.
shell
Se invece vuoi provare direttamente con la shell, beh, il tutto risulta moolto più semplice, perché è sufficiente lanciare lo script grub-install seguito dall'unità in cui vuoi installare grub, cioé:
# grub-install /dev/hdx
Come già detto, /dev/hdx è l'identitificativo del tuo hard disk, scegli bene cosa mettere al posto di x... ripeto, è molto probabile che il tuo disco rigido sia identificato da /dev/hda.
Per quanto riguarda il fatto che ti carichi un "vecchio" kernel (diciamo uno di versione 2.4.xy), significa che quella voce di menu che hai scelto va a pescare
come immagine del kernel un file di tipo vmlinuz-version-2.4.xy (oppure bzImage-), situato in /boot/.
In questa stessa directory (/boot/) deve esserci anche un file vmlinuz*
corrispondente all'immagine del kernel della famiglia 2.6.x.
Ebbene, con un editor devi aprire il file /boot/grub/menu.lst (che punta a
/boot/grub/grub.conf), e crearti una nuova sezione che sarà simile a questa:
title SuSE-post-recupero
root (hd0,1)
kernel (hd0,1)/boot/vmlinuz-versione_kernel ro root=/dev/hda2 [altre opzioni]
initrd (hd0,1)/boot/initrd-versione_kernel.img
In questa sezione ho ipotizzato che Linux si trovi nella seconda partizione primaria (cioè (hd0,1)) e che quindi la partizione di root si trovi in /dev/hda2.
Altro esempio: se invece Linux ce l'hai nella prima unità logica, avresti (hd0,4) e /dev/hda5. Nota lo sfasamento di un'unità tra grub e Linux circa il modo di identificare le periferiche e partzioni: grub parte da 0, Linux da 1...
Correggi questi dati all'uopo, secondo la reale organizzazione del tuo hard disk.
Per quanto riguarda i file vmlinuz* ed initrd*, devono essere coerenti con la versione del kernel che vuoi utilizzare, cioè (prendo spunto dalla MDK):
se voglio utilizzare un kernel 2.6.x allora scelgo (per esempio) l'immagine
vmlinuz-2.6.8.1-10mdk, di conseguenza devo sceglere come "disco ram" il file
initrd-2.6.8.1-10mdk.img
Nota finale.
Quando si installa grub, è sempre meglio provarlo PRIMA su un floppy soprattutto per testarne il corretto funzionamento delle relative voci di menu. Nel caso in cui si faccia qualche pasticcio, il danno risiederebbe solo nel floppy e non nel MBR...
Buona fortuna :D!
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.