View Full Version : avviare grub da window7
vito001010110
19-01-2013, 14:00
salve.
ho installato w7 sul pc nella prima partizione.
nella seconda ho deciso di mettere ubuntu e di installare di proposito il grub di linux nella stessa partizione di ubuntu, in modo da non toccare il bootmgr di w7.
in questo modo quando accendo il pc parte solo w7 senza chiedere di ubuntu (tutto previsto :-) ).
adesso per completare il lavoro devo dire a bootmgr che nel pc esiste anche ubuntu, in modo che allo start del pc io posso scegliere.
ho quindi deciso di non usare il grub per avviare il sistema, bensì voglio usare bootmgr di w7.
chi sa come fare?
x_Master_x
19-01-2013, 15:41
In Linux, aprire il terminale e digitare il seguente codice:
dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
Se utilizzi Ubuntu o similare il codice sarà diverso per abilitare i privilegi amministratore:
sudo dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
Come si nota nel comando è presente sda1, ma dipende dalla partizione di boot di Linux e del suo GRUB.
Se è diversa, ovviamente è da cambiare, ad esempio con sda2, sda3 etc.
Una volta finita l'operazione avrai il file linux.bin. Andare sull'hardisk denominato filesystem, recarsi nella cartella tmp
Copia il file su una chiavetta o/e memoria esterna e incollalo nella partizione di Windows, quindi in C:\linux.bin
In Windows, da CMD come amministatore, dai il comando:
bcdedit /create /d "x_Master_x" /application BOOTSECTOR
Sostituire x_Master_x con il nome della distro.
Ti darà come risultato un valore ID tra parentesi graffe, copialo su un Blocco Note con tutte le parentesi. Dai quindi i comandi, sempre con CMD amministratore:
bcdedit /set {NUMERO_ID} device partition=X:
X: Deve corrispondere alla posizione dove è situato il file linux.bin, nel tuo caso è C:
Quindi completa con gli ultimi comandi:
bcdedit /set {NUMERO_ID} path \linux.bin
bcdedit /displayorder {NUMERO_ID} /addlast
bcdedit /timeout 30
Segui correttamente tutti i passaggi e non dovresti avere problemi
vito001010110
19-01-2013, 18:48
grazie delle istruzioni. vorrei due ultime precisazioni prima di continuare:
1-linux.bin sarebbe la posizione del grub di ubuntu, oppure devo proprio andare a cercare questo file ?
2-come sono numerate le partizioni?
il mio HD è cosi partizionato:
1-primaria fat32 ripristino portatile w7
2-primaria S.O: w7
3-partizione estesa o logica con SO ubuntu
4-swap partizione estesa o logica
5-primaria dati e documenti vari
quale numero dovrei dare alla "X"?
grazie
x_Master_x
19-01-2013, 21:16
Ho editato la guida, spero ora sia tutto corretto ;)
vito001010110
20-01-2013, 12:58
grazie della risposta.
ho eseguito le seguenti operazioni:
-dato che ubuntu installato non parte per il momento (il suo grub è nascosto ovviamente). per creare il file "linux.bin" ho avviato dal cd ubuntu la versione di prova.(uguale a quella installata). ho creato il file, copiato dalla cartella tmp di linux in memoria esterna e seguito tutti gli altri comandi su w7.
uno dei comandi va in errore questo:
>>>bcdedit /set {NUMERO_ID} X:\linux.bin >>>>>
IL TIPO DI DATI PER L'ELEMENTO SPECIFICATO NON E' RICONOSCIUTO O NON E' APPLICABILE ALLA VOCE SPECIFICATA.
IMPOSSIBILE TROVARE L'ELEMENTO
di conseguenza quando riavvio il pc non succede nulla e w7 parte normalmente.
-mi sapresti dire come poter risolvere?
-ho notato nel primo comando di linux(dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1) che hai usato SDA1. perche'?? sda1 dovrebbe essere la fast32 dove è presente l'utility per il restore dati di fabbrica...
grazie e saluti
ovviamente su linux e w7 lavoro sempre con privilegi amministratore.
x_Master_x
20-01-2013, 16:58
Lato linux non ti sò aiutare, ho cercato il comando su Google per ricavare quel file.
Per quanto riguarda il lato windows, hai sostituito la X con la lettera C: ( o D: ) e {NUMERO_ID} con il numero che ti ha fornito?
Esempio:
bcdedit /set {14Ad7572-42ee-14db-bd42-cbb2e111eb37} C:\linux.bin
Ovviamente il file deve essere in C:, ma dovresti mettere D: se hai la partizione riservata per il sistema che nel boot diventa C:
vito001010110
20-01-2013, 19:07
purtroppo sia con d che con c non va mi dice IMPOSSIBILE TROVARE.
Ho avviato bcdedit.exe per visualizzare su cmd il file di bootmgr.
mi fa vedere che è stata creata una nuova riga chiamata linux, ma è incompleta, presumo perche non riesce a caricare il file linux.bin-
forse qualcosa in quel file non funziona.
magari perchè ho creato il file da disco di avvio live.
ma cosa c'è dentro questo file???
x_Master_x
20-01-2013, 19:45
Da profano di Linux secondo me il comando:
dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
sda1 deve corrispondere alla partizione di boot di Linux, altrimenti devi mettere sda2/sda3 etc.
Il file linux.bin dovrebbe contenere le informazioni di boot, da quello che ho capito, per fare in modo che Windows carichi quel file per far partire il s.o non-microsoft
x_Master_x
21-01-2013, 16:22
Aggiornato il primo post, corretto un errore per bcdedit /set
Questo comando è sbagliato:
bcdedit /set {NUMERO_ID} X:\linux.bin
Questo è quello corretto:
bcdedit /set {NUMERO_ID} path \linux.bin
domanda da XXXX dollari.
come fa il BCD di windows, da NTFS, a montare una partizione per lui sconosciuta e illeggibile, a dargli una lettera X,locare e lanciare il kernel linux?
ho trovato quest'altra lista di comandi.
ma la cosa, è MOLTO più dura.
1. bcdedit /create /d "UBUNTU LUCID" /application boot sector
2.bcdedit /set {ID} device partition=c:
3.bcdedit /set {ID} /path \linux.bin ( This file I copied from Ubuntu after mounting C: (sda1) using dd if=/dev/sda3 of=/mnt/linux.bin bs=512 count=1 ..sda3 is Ubuntu partition (boot and root same part)
4.bcdedit /displayorder {ID} /addlast
5. bcdedit /timeout=15
difatti, guarda il punto 3. prende il bootloader linuxiano (i primi 512byte), lo fa diventare un file con DD e lo piazza sulla partizione di WINDOWS, usando la live.
x_Master_x
21-01-2013, 16:31
domanda da XXXX dollari.
come fa il BCD di windows, da NTFS, a montare una partizione per lui sconosciuta e illeggibile, a dargli una lettera X,locare e lanciare il kernel linux?
Risposta da $1
Da quello che ho capito, perchè non legge nessuna partizione ( infatti imposti C:\, cioè la partizione di boot di windows ) e non la monta, selezioni come avvio solo il file linux.bin, che contiene tutte le informazioni di boot, la partizione etc.
Di una cosa sono sicuro, sofrtunatamente senza poterlo provare personalmente, in un modo o nell'altro funziona.
Comunque sei tu quello che usa linux, perchè lo chiedi a me? :asd:
EDIT: I comandi che hai postato sono gli stessi al primo post, a parte l'errore di /path che và senza slash
Risposta da $1
Da quello che ho capito, perchè non legge nessuna partizione ( infatti imposti C:\, cioè la partizione di boot di windows ) e non la monta, selezioni come avvio solo il file linux.bin, che contiene tutte le informazioni di boot, la partizione etc.
Di una cosa sono sicuro, sofrtunatamente senza poterlo provare personalmente, in un modo o nell'altro funziona.
Comunque sei tu quello che usa linux, perchè lo chiedi a me? :asd:
si ma Master... sto "linux.bin" non esiste. infatti, come vedi da quello che abbiam trovato, è l'utente che, usando lo strumento
dd
con la live di linux (o con linux installato. ) che crea un'immagine 1:1 di quello che gli dai verso quello che gli chiedi, lui crea
dd if=/dev/sda3 of=/mnt/linux.bin bs=512 count=1
dove:
if=/dev/sda3 | partizione root di linux con GRUB
of=/mnt/linux.bin | partizione NTFS casuale montata su /mnt sotto linux, e linux.bin nome file casuale binario.
i primi 512 bytes. (bs=512).
quindi. una volta fatta la copia del GRUB sotto NTFS, si spera che il BCD lo faccia partire.
imho è una puttanata quanto WUBI.
vito001010110
21-01-2013, 16:46
sono daccordo con master.
alla fine non chiedo a w7 di leggere linux.
piuttosto nella sua stessa lingua (bootmgr) gli dico che durante l'avvio deve andare da un'altra parte.
appena posso provo.
secondo me funziona ma ho paura che w7 diventa instabile.
con le prove che ho fatto fino adesso mi sono accorto che all'avvio alcune cose non vengono caricate correttamente, tipo i driver audio o quelli wireless.
spero che sia una coincidenza e che non c'entri nulla con il mio test.
cmq sono curioso comunque e voglio completare l'operazione . se vedo che nn va utilizzo normalmente il grub e se devo eliminare linux ripristino il bootmgr
x_Master_x
21-01-2013, 16:47
Ho testato il tutto, i comandi lato Windows ora non danno errore:
http://i48.tinypic.com/wtyfy8.jpg
E l'entry nel boot viene creata correttamente:
http://i45.tinypic.com/30n9r44.jpg
Manca solo che vito001010110 o Khronos testino la parte linux e che controllino che il boot avvenga regolarmente, cosa che personalmente non posso provare.
sono daccordo con master.
alla fine non chiedo a w7 di leggere linux.
piuttosto nella sua stessa lingua (bootmgr) gli dico che durante l'avvio deve andare da un'altra parte.
chiedi al BCD di leggere 512 Bytes linuxiani virtualizzati su NTFS.
Provare? non posso, ho Grub 2 che mi avvia windows 8 ^^(come faccia non lo so, l'avvio non è stato toccato dall'upgrade da Seven, ed è partito senza battere ciglio).
x_Master_x
21-01-2013, 16:51
secondo me funziona ma ho paura che w7 diventa instabile...
con le prove che ho fatto fino adesso mi sono accorto che all'avvio alcune cose non vengono caricate correttamente, tipo i driver audio o quelli wireless...
Fidati, non c'entra nulla la questione dei driver, altrimenti a quest'ora il mio si sarebbe dovuto autodistruggere :asd:
In caso di instabilità, errori o non si dovesse avviare il Pc, per ripristinare il boot devi dare i seguenti comandi dalla console di ripristino del DVD di Window:
bootrec /fixmbr
bootrec /fixboot
bootrec /rebuildbcd
E tutto tornerà a funzionare come prima
Provare? non posso, ho Grub 2 che mi avvia windows 8 ^^
Bella scusa :asd:
vito001010110
23-01-2013, 17:00
ho testato il tutto!!!
funziona allla grande.
all'avvio viene mostrata la scelta w7-linux. se scelgo w7 parte senza problemi, se scelgo linux mi riporta al grub di linux dalla quale è possibile scegliere ancora una volta cosa fare partire.
per accelerare i tempi ho deciso di impostare i timeout di bootmgr e di grub a 3 secondi ciascuno.
ho trovato un difetto. se mando in ibernazione w7, il bootmgr non appare e quindi viene ripristinato w7 in auto.
per me non è un problema, va benissimo cosi.
graxzie ancora a tutti, per completezza alle future generazioni mi permetto di riassumere tutti i passaggi che ho fatto:
-------------------------------- su linux --------------------------------------------------------------
su linux aprire terminale e digitare il seguente codice:
dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
se utilizzate ubuntu o similare il codice sarà divewrso per abilitare i privilegi amministratore:
sudo dd if=/dev/sda1 of=/tmp/linux.bin bs=512 count=1
come si nota nel comando è presente "SDA1" ovviamente è da cambiare in base a dove è messo linux e il suo grub, nel mio caso il comando è così, dato che linux ce l'ho in sda6:
sudo dd if=/dev/sda6 of=/tmp/linux.bin bs=512 count=1
una volta finita l'operazione andate sull'hardisk denominato filesystem -> cartella tmp -> copiate il file "linux.bin" in memoria esterna e avviate windows 7, copiatelo su c:\
-------------------------------su windows 7 -------------------------------------------------------------
comandi per windows
bcdedit /create /d "Linux" /application BOOTSECTOR (viene generato un codice da usare in seguito compresi i trattini)
bcdedit /set {NUMERO_ID} device partition=X: (x:= partizione di windows, nel mio caso c:)
bcdedit /set {NUMERO_ID} path \linux.bin
bcdedit /displayorder {NUMERO_ID} /addlast
bcdedit /timeout 30
x_Master_x
23-01-2013, 17:32
Lo sapevo che avrebbe funzionato :D
Appena ho un minuto integro la parte linux scritta nel dettaglio da vito nella guida.
EDIT: Guida aggiornata e spero completa di tutte le informazioni :)
Provo anche io, grazie per la guida!
Un solo appunto: l'opzione bs=512 di dd di solito, se grub è nell'mbr, copia l'intero boot sector compresa la tabella delle partizioni. Quando si vuole copiare solo la parte dell'mbr occupata da grub basta inserire bs=446. Usando solo linux non ho mai avuto l'esigenza di installare grub al di fuori dell'mbr, quindi non ho verificato se l'opzione funzioni nello stesso modo, ma penso di si
Inviato dal mio GT-N5100 utilizzando Tapatalk
x_Master_x
23-06-2015, 09:28
Bisognerebbe provare ( altrimenti non cambio visto che ora funziona ) ma 446 oltre a rimuovere la tabella delle partizioni non toglie anche il "magic byte" per il boot?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.