Voglio farlo perché voglio installare Windows 7 e il mio menu BIOS non appare; salta al menu di grub2 all'avvio, ma questa è un'altra storia ... C'è un modo per avviare iso di installazione di Windows 7 direttamente da grub2?
Voglio farlo perché voglio installare Windows 7 e il mio menu BIOS non appare; salta al menu di grub2 all'avvio, ma questa è un'altra storia ... C'è un modo per avviare iso di installazione di Windows 7 direttamente da grub2?
Risposte:
L'avvio dell'ISO effettivo con grub legacy o grub2 non funzionerà, ma con versioni di Windows precedenti (ad es. XP) è possibile decomprimere la cartella i386 dall'ISO alla chiavetta USB, quindi utilizzare grub4dos per chiamare il bootloader:
title windows installer via setupldr.bin
find --set-root /i386/setupldr.bin
chainloader /i386/setupldr.bin
o
title windows installer via /bootsect.bin
find --set-root /i386/setupldr.bin
chainloader /bootsect.bin
Questo potrebbe non funzionare con le versioni di Windows più recenti o con hardware più recente, ma esiste anche l'opzione di ..
Con grub2 apparentemente qualcosa del genere potrebbe funzionare per Windows 7 :
menuentry "Windows 7 (bootmgr)" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
### A: either use this line or the next one, but not both
set root='(hd0,msdos1)'
### B:
### search --no-floppy --fs-uuid --set=root ____INSERT_PARTITION_UUID_HERE___
ntldr ($root)/bootmgr
}
L'opzione A presuppone che la chiavetta USB / HDD avviabile sia il primo dispositivo e abbia una tabella delle partizioni in stile msdos. Regola in base alla tua configurazione. Se il tuo dispositivo di avvio ha una tabella delle partizioni GPT, molto probabilmente dovrai usarlo (hd0,gpt1)
(GPT in generale è più complicato da configurare).
L'opzione B utilizza l'UUID univoco dell'unità, che può essere visualizzato su Linux con sudo blkid
o su OSX con ad es. diskutil info disk0s1
(O Utilità disco> Informazioni).
La voce finale potrebbe apparire come questa:
menuentry "Windows 7 installer" --class windows --class os {
insmod part_msdos
insmod ntfs
insmod ntldr
search --no-floppy --fs-uuid --set=root 0E239BC6-F960-3107-89CF-1C97F78BB46B
ntldr /bootmgr
}
Sì, penseresti che qualcosa del genere funzionerebbe:
menuentry "Boot Windoze" {
search -f "--set-root /Winblows.iso"
drivemap "/Winblows.iso" '(hd32)'
drivemap '--hook' ''
set root='(hd32)'
chainloader +1
}
Ma Windows si limiterà a farlo.
Se ti capita di avere almeno 4 GB di RAM, puoi scegliere di caricare l'intero iso DVD nel memdisk e avviarlo. Per farlo, scarica SysLinux ed estrai il memdisk
file nella tua boot
directory. Quindi è necessario aggiungere codice a Grub2 in questo modo
menuentry "Boot Windoze" {
search -f "--set-root /Winblows.iso"
insmod memdisk
linux16 /boot/memdisk iso
initrd16 /Winblows.iso
}
Tuttavia, non ho nemmeno intenzione di testare il codice, poiché inserire 3+ GB di dati nella RAM è semplicemente sbagliato (da un punto di vista idealogico). No, volevo davvero quello che volevi, ma alla fine ho messo l'installazione di Windows su una partizione su una USB usando lo strumento di download USB / DVD di Windows 7 e l'ho caricata a catena. Mi dispiace che non ci sia nessun altro modo che io possa vedere.
Tecnicamente l'installazione dal .iso
file di Windows non può essere possibile. È possibile eseguire l'avvio .iso
dall'utilizzo di grub, ma dopo ciò Windows perderà il contatto con la posizione montata o non sarà in grado di farlo. Quindi entrambi grub
e Windows dovrebbero essere consapevoli di montare e avviare. Attualmente Windows non supporta.
Quindi è necessario estrarre / copiare il contenuto .iso
nella radice di una partizione e quindi caricarlo a catena usando grub
.