# [OT] Casino con avvio da disco esterno [Risolto]

## canduc17

...ed ecco che ho combinato un'altro dei miei casini.  :Sad: 

Allora, sul mio portatile ASUS avevo installato sia Gentoo che Windows XP.

Siccome il bios permette il boot da USB ed ho un bel disco fisso esterno nuovo fiammante ho pensato: perchè non provare ad installarci su la nuova Ubuntu 7.10 per vedere com'è?

Dopo un'installazione indolore ecco il casino: il sistema non parte più se non con il disco esterno attaccato!

Nel nuovo grub (che credo installato nella partizione di boot del disco esterno) compaiono anche windows e Gentoo e partono senza problemi, ma ho paura che il nuovo grub sia gestito da ubuntu e non da Gentoo.

Si è tipo sputtanato il master boot record del disco interno del portatile, che ora punta l'avvio solo alla partizione di boot del disco esterno?!

Tutti i dati sul disco fisso interno sono ancora lì, compreso il vecchio grub...ma se avvio il portatile senza disco esterno attaccato grub mi risponde:

```
GRUB Loading stage1.5.

GRUB loading, please wait...

Error 21
```

Come faccio a ripristinare il mio vecchio grub per avere il disco esterno subordinato al grub di Gentoo e non viceversa???

Grazie per eventuali aiuti...

----------

## Kerberos

Dunque l'errore 21 come avrai già intuito è l'errore di disco non trovato.

Così ad occhio e croce ti consiglierei di mettere una distro live, montare la partizione di boot e poi da lì dare un grub-install e poi reimpostare i parametri di root e setup, se non sai quali mettere in root dai un "find /boot/grub/stage1".

----------

## canduc17

Cosa vuol dire "reimpostare i parametri di root e setup"?

Metere a posto il grub.conf?

Perchè quello vecchio ce l'ho ancora, basta che lo salvi prima di reinstallare grub...

----------

## Cazzantonio

Devi avviare con il livecd gentoo.

Poi devi entrare con chroot nella gentoo installata sul tuo hd, in pratica devi seguire i passi descritti nel manuale di installazione che hai già eseguito durante la prima installazione.

Ti spiego nei dettagli:

1) 

```
mount /dev/<dove hai installato la root di gentoo> /mnt/gentoo
```

2) se ti sei voluto male e hai davvero installato la partizione di boot a parte allora fai

```
mount /dev/<dove hai la partizione di boot> /mnt/gentoo/boot
```

3) Controlla di avere i device dell'harddisk anche in /mnt/gentoo/dev, altrimenti fai (supposto che l'hd su cui tieni gentoo sia /dev/hda)

```
cp -a /dev/hda* /mnt/gentoo/dev
```

4) chroota

```
chroot /mnt/gentoo /bin/bash
```

5) lancia la console di grub

```
grub
```

6) specifica la root (la partizione di boot), ad esempio (hd0,0) (leggi il manuale di grub: info grub) e reinstalla grub

```
root (hd0,0)

setup (hd0)

exit
```

7) riavvia

----------

## cloc3

 *canduc17 wrote:*   

> 
> 
> Nel nuovo grub (che credo installato nella partizione di boot del disco esterno) compaiono anche windows e Gentoo e partono senza problemi, ma ho paura che il nuovo grub sia gestito da ubuntu e non da Gentoo.
> 
> 

 

orpo. lo devi sapere, se è installato sulla mbr del disco esterno o su quella del disco interno!.

alla peggio, scollega il disco esterno e guarda cosa succede.

quanto al tuo problema, ho fatto da poco esperienza con una installazione su disco esterno di una ubuntu e ho incontrato dei casini simili al tuo.

ubuntu nasconde la configurazione di grub dietro ad un tasto Avanzato che grida vendetta e inganna sistematicamente l'utente.

se poi desideri installare grub sull'hd esterno, anzichè su quello interno, capita di frequente che ubuntu defiisca una configurazione sbagliata.

non ha senso, invece, distinguere la configurazione di ubuntu da quella di gentoo. grub è un sistema operativo autonomo. tu devi solamante dirgli dove pescare i file di configurazione che poi fa tutto lui.

veniamo al dunque. hai posto vari problemi e provo a separare le cose:

1. per partire da disco esterno, devi configurare opportunamente la bios. sul portatile asus che avevo l'altro giorno, ad esempio, bisognava selezionare removable devices come primo disco d'avvio (e togliere il cdrom avviabile che mi faceva un sacco di confusione).

2. la bios del mio portatile cercava sull'hd esterno una partizione con la flag bootable. la flag bootable non serve a linux, ma serviva alla mia bios. si sistema con fdisk o con cfdisk.

3. al momento della selezione della periferica esterna, questa appare alla bios come disco (hd0), mentre al momento dell'installazione di grub è riconosciuta come disco (hd1). questo problema inganna sistematicamente l'installer di ubuntu e non c'è soluzione che aggiustare a mano.

4. tu hai sporcato l'mbr del primo disco. adesso, o reinstalli grub o, all peggio, lo ripari con il cdrom di windows

per capire quale è la configurazione che ti serve non occorre reinstallare grub sul disco esterno. quando grub parte, pigia il tasto e che ti mette in modalità editor. pigialo di nuovo per selezionare la prima riga e cambia il numero dell'hd (per esempio: root (hd0,0) ). in linea di principio, il resto della configurazione dovrebbe essere corretto, altrimenti aggiustalo a dovere. Per avviare, pigia b. se ti dà errore, leggilo e risistema di conseguenza.

se tutto funziona, quella è la configurazione che ti serve.

Ancora un trucco per non perdere l'orientamento durante l'installazione di grub.

Da linea di comando, normalmente, digiti :

```

~ # grub

grub > root (hdx,y)

```

 a questo punto hai selezionato una partizione dalla quale prelevi la configurazione da collocare sull'mbr.

di solito, qui si sbaglia a scegliere il file. per esempio si mette la configurazione di ubuntu anzichè quella di gentoo.

per evitare usa il comando:

```

cat / + autocompletamento(tasto tab)

```

lui ti permetterà di leggere il file menu.lst che stai installando, facendo capire cosa stai leggendo.

scusa la lunghezza. se serve, chiedi ancora.

 :Smile:  naturalmente :

```

man grub

```

----------

## canduc17

Ho seguito le istruzioni di Cazzantonio alla lettera (a parte reinstallare grub) e tutto è tornato alla normalità...

Ora quando avvia ho di nuovo la schermata del grub sul disco interno e riesco a far partire gentoo o windows come prima.

Ma il disco esterno non viene considerato! E dire che la partizione dove è installato grub di ubuntu ha la flag bootable.

 *cloc3 wrote:*   

> al momento della selezione della periferica esterna, questa appare alla bios come disco (hd0), mentre al momento dell'installazione di grub è riconosciuta come disco (hd1). questo problema inganna sistematicamente l'installer di ubuntu e non c'è soluzione che aggiustare a mano. 

 

Come fò?

----------

## cloc3

 *canduc17 wrote:*   

> 
> 
> Come fò?

 

lo sapevo.

le spiegazioni troppo estese sono controproducenti.

ci riprovo per passi. intanto monta la tua partizione esterna in una cartella qualsiasi (per esempio /media/sda1 ) e fa una cosa tipo questa:

```

s939 ~ # echo pluto>/media/sda1/boot/pippo

s939 ~ # grub

Probing devices to guess BIOS drives. This may take a long time.

grub> root (hd1,0)

 Filesystem type is ext2fs, partition type 0x83

grub> cat /pippo 

pluto

grub> 

```

ecco. mi sta dicendo che root(hd1,0) è la partizione giusta dove ho messo il menu.lst che voglio io. Quando darò setup (hd1), il bootloader sarà installato nel disco corrispondente, senza sporcare nulla.

adesso il disco esterno sarà visto al boot. è solo il prim o passo e non sono sicuro che possa partire correttamente, ma lo vedremo in seguito.

----------

## canduc17

La storia di pippo e pluto funziona esattamente come dici...

Ma anche dopo aver dato

```
setup (hd1)
```

 il mio disco esterno all'avvio non viene proprio visto...

----------

## cloc3

 *canduc17 wrote:*   

> 
> 
> Ma anche dopo aver dato
> 
> ```
> ...

 

allora devi controllare la bios.

seleziona la preferenza all'avvio da bios rispetto alle altre periferiche.

bada di non avere un cdrom avviabile (che sul mio portatile sporcava le acque, in quanto unità rimovibile).

se non basta, usa il tasto F8 o F12 o Fquello-che-è per selezionare manualmente la periferica di avvio.

tutto quello che potevi fare da sistema operativo lo hai fatto.

se non va è colpa sua.

ops. ho notato un refuso nell'istruzione sopra che potrebbe averti indotto in un errore.

sono sicuro che non è stato così, ma puntualizzo per precisione.

il testo giusto (che ho corretto) avrebbe dovuto essere:

```

# echo pluto>/media/sda1/boot/pippo

```

----------

## canduc17

Io avevo fatto

```
echo pluto>/media/sda1/pippo
```

ma è uguale, l'ho messo nella prima partizione del disco esterno, anche se non nella directory boot.

Però l'avvio da disco esterno non parte ugualmente nè automaticamente (l'ho impostato come primario e non ho altri device "concorrenti", come cd bootabili inseriti) nè se lo faccio partire a manazza (spingendo "Esc" all'avvio e selezionando "Removable dev.").

E dire che prima di rimettere a posto grub sul disco interno, partiva perfettamente...[/code]

----------

## cloc3

 *canduc17 wrote:*   

> Io avevo fatto
> 
> ```
> echo pluto>/media/sda1/pippo
> ```
> ...

 

uguale niente.

il gioco di pippo serve per distinguere a livello grub i due dischi.

secondo me tu installi grub in un disco diverso da quello che desideri.

se il file pippo è contenuto nel disco interno, e il disco interno è riconosciuto come (hd1,x) da grub, è evidente che setup (hd1) installa grub nel posto sbagliato.

----------

## canduc17

Come è possibile che grub riconosca il mio disco interno come hd1???

Ho detto prima di aver rimesso a posto grub (interno!) grazie ai comandi suggeriti da Cazzantonio:

```
# mount /dev/hda4 /mnt/gentoo

# mount /dev/hda2 /mnt/gentoo/boot

# chroot /mnt/gentoo /bin/bash

# grub

grub> root (hd0,3)

grub> setup (hd0)

grub> exit

#
```

Nel disco interno del mio portatile ci sono 4 partizioni così costituite (sò che è hd0, anche il grub.conf interno fa riferimento a hd0!):

/dev/hda1 ---> (hd0,0) ---> Windows

/dev/hda2 ---> (hd0,1) ---> Boot di Gentoo

/dev/hda3 ---> (hd0, 2) ---> Swap di Gentoo

/dev/hda4 ---> (hd0, 3) ---> Root di Gentoo

Il disco esterno invece è fatto così (come conferma gparted ed anche il grub.conf del disco esterno, che si chiama poi menu.lst perchè Ubuntu lo chiama così):

/dev/sda1 ---> (hd1,0) ---> Root/Boot di Ubuntu

/dev/sda2 ---> Non so cosa ubuntu ci abbia messo dentro

/dev/sda5 ---> Swap di ubuntu (partizione logica)

Non capisco dove stia il problema...

E anche se inserisco nel grub.conf del disco interno la stringa che si riferisce al kernel del disco esterno (su hd1,0), all'avvio se la seleziono ubuntu non parte: semplicemente grub ritorna alla schermata di scelta del kernel da avviare...

----------

## cloc3

 *canduc17 wrote:*   

> Come è possibile che grub riconosca il mio disco interno come hd1???
> 
> 

 

a te cosa importa?

lascia che lui riconosca quello che gli pare e come pare a lui.

proprio questo è il punto su cui si casca.

mi puoi, per cortesia, postare i comandi di grub per lanciare le tue installazioni linux?

----------

## Scen

Tieni presente che la mappatura dei dispositivi fatta da GRUB si appoggia al BIOS, per cui se cambi l'ordine dei dischi nella configurazione di quest'ultimo, anche GRUB "vedrà" i dischi in ordine diverso; inoltre la mappatura di GRUB (hd*) è completamente slegata dalla mappatura da parte del kernel di Linux (/dev/[h,s]d*). Probabilmente lo sapevi già, ma preferivo puntualizzare  :Wink: 

----------

## cloc3

 *Scen wrote:*   

> Probabilmente lo sapevi già, ma preferivo puntualizzare 

 

e fai bene. è proprio quello il problema.

accade anche che grub legga l'ordine dei dischi in modo diverso a seconda del momento.

in particolare, il dispositivo che sembra hd1 al momento dell'istruzione setup, diventa hd0 al momento del boot, con smarrimento inevitabile del malcapitato che non se lo aspetta.

----------

## canduc17

 *Scen wrote:*   

> Tieni presente che la mappatura dei dispositivi fatta da GRUB si appoggia al BIOS, per cui se cambi l'ordine dei dischi nella configurazione di quest'ultimo, anche GRUB "vedrà" i dischi in ordine diverso

 Questo non lo sapevo...per "cambiare l'ordine dei dischi nella configurazione del BIOS," intendi l'ordine di boot?

 *cloc3 wrote:*   

> accade anche che grub legga l'ordine dei dischi in modo diverso a seconda del momento.
> 
> in particolare, il dispositivo che sembra hd1 al momento dell'istruzione setup, diventa hd0 al momento del boot

 Scusa ma mi vien da sorridere...e uno come fa se è un terno al lotto?

Questo è il grub.conf del disco interno, quello che visualizzo quando accendo il pc, indipendentemente che il disco fisso esterno sia attaccato o meno:

```
default 2

timeout 4

splashimage=(hd0,1)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.20-r7

root(hd0,1)

kernel /boot/candkernel020707 root=/dev/hda4 video=vesafb:ywrap,mtrr,1280x1024-32@70

title=Gentoo Linux 2.6.23-r5 ATI

root(hd0,1)

kernel /boot/candkernel051107 root=/dev/hda4 video=vesafb:ywrap,mtrr,1280x1024-32@70

title=Gentoo Linux 2.6.22-r5 ATI

root(hd0,1)

kernel /boot/candkernel091107 root=/dev/hda4 video=vesafb:ywrap,mtrr,1280x1024-32@70

title Ubuntu 7.10, kernel 2.6.22-14-generic

root (hd1,0)

kernel/boot/vmlinuz-2.6.22-14-generic root=UUID=5233c41c-0a78-401c-8076-24b0e97914de ro quiet splash locale=it_IT

title= Windows XP

rootnoverify (hd0,0)

makeactive

chainloader +1
```

Ovviamente parte tutto tranne il lancio di ubuntu...se lo scelgo succede come ho detto sopra.

Questo è invece il menu.lst di Ubuntu, sul disco esterno:

```
default      0

timeout      10

title      Ubuntu 7.10, kernel 2.6.22-14-generic

root      (hd1,0)

kernel      /boot/vmlinuz-2.6.22-14-generic root=UUID=5233c41c-0a78-401c-8076-24b0e97914de ro quiet splash locale=it_IT

initrd      /boot/initrd.img-2.6.22-14-generic

quiet

title      Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)

root      (hd1,0)

kernel      /boot/vmlinuz-2.6.22-14-generic root=UUID=5233c41c-0a78-401c-8076-24b0e97914de ro single

initrd      /boot/initrd.img-2.6.22-14-generic

title      Ubuntu 7.10, memtest86+

root      (hd1,0)

kernel      /boot/memtest86+.bin

quiet

# This is a divider, added to separate the menu items below from the Debian

# ones.

title      Other operating systems:

root

# This entry automatically added by the Debian installer for a non-linux OS

# on /dev/hda1

title      Microsoft Windows XP Home Edition

root      (hd0,0)

savedefault

makeactive

chainloader   +1

# This entry automatically added by the Debian installer for an existing

# linux installation on /dev/hda4.

title      Gentoo Base System release 1.12.9 (on /dev/hda4)

root      (hd0,1)

kernel      /boot/candkernel091107 root=/dev/hda4 video=vesafb:ywrap,mtrr,1280x1024-32@70 

savedefault

boot

```

----------

## cloc3

 *canduc17 wrote:*   

> Scusa ma mi vien da sorridere...e uno come fa se è un terno al lotto?
> 
> 

 

 :Smile:  sputa pallini fino a quando non ha mangiato la foglia.

ma non è colpa di grub, è colpa della bios.

i tuoi file sono esattamente come li aspettavo. e come erano sul mio portatile quando non funzionava.

tuttavia, alcune cose di quello che dici non mi sono ancora chiare. per esempio, il motivo per cui ubuntu non parta dal disco interno (senza dare alcun messaggio di errore?).

può essere che tu abbia riformattato la partizione di avvio?

prova ad entrare in grub all'avvio con il tasto di editor e e sostituisci il parametro root=UUID=5233c41c-0a78-401c-8076-24b0e97914de con un semplice con un più umano root=/dev/sda2 (dovrebbe stare lì, la root, o sbaglio?). poi dicci l'effetto che fa.

togliti i dubbi su cosa faccia ubuntu su alcune partizioni. basta montarle e guardarci dentro, magari con un occhio alla fstab.

per capire i nomi delle partizioni usate da ubuntu, dai un ls -l /dev/disk/by-uuid. su questo punto, ubuntu è più astuta di gentoo.

quanto al file menu.lts di ubuntu (che il nome di file al quale è lincato il grub.conf di gentoo - controlla) dovrai probabilmente cambiare le righe root (hd1,*) con root (hd0,*), ma magari questo lo vediamo più tardi, per i dubbi che ti dicevo sopra.

----------

## Ic3M4n

sbaglio o nel file di conf sull'hard disk interno per ubuntu non hai messo l'initrd?

----------

## canduc17

 *Ic3M4n wrote:*   

> sbaglio o nel file di conf sull'hard disk interno per ubuntu non hai messo l'initrd?

 Bingo!

Ora che ce l'ho messo riesco a farlo partire.

Grazie a tutti, questo mi basta per cominciare a giocare!  :Very Happy: 

----------

## cloc3

 *canduc17 wrote:*   

> 
> 
> Grazie a tutti, questo mi basta per cominciare a giocare! 

 

ok, ti basta, ma ti sconsiglio di dichiarare risolto il problema.

e poi, non ci puoi lasciare così, senza farci capire il motivo vero per il quale la tua bios non vede l'mbr del disco usb.

se vuoi utilizzare il tuo hd esterno sul computer della morosa, non ci riesci  :Smile: .

dai ancora un occhio alla seconda parte della questione.

oramai una configurazione solida ce l'hai e non puoi fare danni ulteriori.

scusa se non mi sono accorto io della riga mancante.

tanto valeva che non ti chiedessi di postare la configurazione.

----------

## Ic3M4n

io ho avuto per le mani 3 asus. tutti non facevano il boot da usb a meno che il bootloader non fosse sul disco interno o su cd. Il problema è risolvibile, da quanto ne so, aggiornando o downgradando la bios. Il problema è che con una va il suspend, con l'altra non va il boot da usb etc. etc. quindi il problema principale è che come bios fanno un po' schifo.

----------

## canduc17

 *cloc3 wrote:*   

> e poi, non ci puoi lasciare così, senza farci capire il motivo vero per il quale la tua bios non vede l'mbr del disco usb.

 Sicuramente sarebbe interessante capire il perchè, ma non è mia intenzione impiegare altro tempo per questa faccenda, soprattutto alla luce di quello che dice Ic3M4n.

Il problema esposto nel topic era chiaro: non riuscivo a far partire Ubuntu installato su un disco esterno ed ora ci riesco...che poi utilizzi il grub "interno" per chiamare il disco esterno e non avvenga invece una chiamata diretta del bios alla partizione avviabile del disco usb, conta il giusto.

Per questo lascio il tag [Risolto] al topic.

 *cloc3 wrote:*   

> se vuoi utilizzare il tuo hd esterno sul computer della morosa, non ci riesci

 Scusa ma comunque la mia ubuntu è configurata per il mio portatile, perchè dovrei cercare di farlo partire collegato ad un altro pc?

----------

## Ic3M4n

diciamo che una delle possibilità che vengono offerte da linux installato su usb è un po' come avere un livecd. lo metti dove vuoi e lo utilizzi. anche io volevo fare una cosa del genere. purtroppo il boot da usb non sempre riesce causa bios o hardware troppo datato. quindi l'idea sarebbe mettere il kernel su un cd ed utilizzare l'accoppiata cd/usb per l'avvio.

----------

