Inicialize o Windows 7 iso do grub2

12

Quero fazer isso porque quero instalar o Windows 7 e o menu do BIOS não aparece; pula para o menu grub2 no início, mas isso é outra história ... Existe uma maneira de inicializar o iso de instalação do Windows 7 diretamente do grub2?

user208513
fonte
11
"o menu do meu BIOS não aparece" Mas você tentou entrar no BIOS?
Mitch
E se eu formatar o disco rígido? O Windows inicializará então? :)

Respostas:

7

Inicializando o Windows XP com grub4dos

A inicialização do ISO real com o grub legacy ou grub2 não funcionará, mas nas versões mais antigas do Windows (por exemplo, XP) é possível descompactar a pasta i386 do ISO para o pendrive e, em seguida, usar o grub4dos para chamar o gerenciador de inicialização:

title windows installer via setupldr.bin
find --set-root /i386/setupldr.bin
chainloader /i386/setupldr.bin

ou

title windows installer via /bootsect.bin
find --set-root /i386/setupldr.bin
chainloader /bootsect.bin

Isso pode não funcionar com versões mais recentes do Windows ou com hardware mais recente, mas também existe a opção de ..

Inicializando o Windows 7 com grub2

Com o grub2, aparentemente algo assim poderia funcionar no 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
}

A opção A assume que o seu dispositivo USB inicializável / HDD é o primeiro dispositivo e possui uma tabela de partições no estilo msdos. Ajuste para corresponder à sua configuração. Se o seu dispositivo de inicialização tiver uma tabela de partição GPT, provavelmente será necessário usá-lo (hd0,gpt1)(em geral, é mais complicado configurar o GPT).

A opção B usa o UUID exclusivo da unidade, que pode ser visto no Linux com sudo blkidou no OSX com, por exemplo diskutil info disk0s1(ou Utilitário de Disco> Informações).

A entrada final pode parecer, por exemplo, com isto:

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
}
ccpizza
fonte
Agradável. Mas usei --set = root --fs-uuid UUIDHERE (ordem alterada) (no entanto, não sei dizer se era necessário ou não). Obrigado
Jan Kyu Peblik
@JanKyuPeblik Você poderia inicializar a partir da ISO?
Anwar
Essa é a minha lembrança, sim. Eu não estaria interessado nas outras coisas.
Jan Kyu Peblik
5

Sim, você pensaria que algo assim funcionaria:


menuentry "Boot Windoze" {
  search -f "--set-root /Winblows.iso"
  drivemap "/Winblows.iso" '(hd32)'
  drivemap '--hook' ''
  set root='(hd32)'
  chainloader +1
}

Mas o Windows não aceita nada disso.

Se você tiver pelo menos 4 GB de RAM, poderá optar por carregar o DVD inteiro no memdisk e inicializá-lo. Para fazer isso, baixe o SysLinux e extraia o memdiskarquivo em seu bootdiretório. Então você precisa adicionar código ao Grub2 algo assim


menuentry "Boot Windoze" {
  search -f "--set-root /Winblows.iso"
  insmod memdisk
  linux16 /boot/memdisk iso
  initrd16 /Winblows.iso
}

No entanto, nem vou testar o código, pois colocar mais de 3 GB de dados na RAM está completamente errado (do ponto de vista idealógico). Não, eu realmente queria o que você quer, mas no final, instalei a instalação do Windows em uma partição em um USB usando a ferramenta de download de USB / DVD do Windows 7 e carreguei em cadeia para isso. Desculpe, não parece haver outra maneira que eu possa ver.

Warpspace
fonte
Primeiro código irá inicializar o Windows, mas não conseguem depois de algum tempo como janelas não sei onde o iso é montado
totti
Segundo código pode não funcionar, uma vez que não vai trabalhar com iso do Ubuntu
totti
O OP está se referindo especificamente ao Windows 7. Conseguiu testar isso?
Warpspace
Você pode não gostar do Windows, mas a publicação de "Winblows" e "Windoze" aqui é pouco profissional. -1.
0xC0000022L
11
Como não sou um programador de bootstrap profissional, posso viver com "não profissional". Eu acho que você pode ter significado "desrespeitoso". Sim, esse comentário foi há 6 anos. Eu mudei muito desde então (e o Windows também)
Warpspace
5

Tecnicamente, a instalação a partir do .isoarquivo do Windows não pode ser possível. Você pode inicializar a partir do .isogrub usando, mas depois disso o Windows perderá o contato com o local montado ou ele não será capaz. Portanto, tanto o grubWindows como o Windows devem saber montar e inicializar. Atualmente, o Windows não suporta.

Portanto, você precisa extrair / copiar o conteúdo da .isoraiz de uma partição e carregá-la em cadeia usando grub.

totti
fonte
2
boa idéia para compartilhar conhecimento, mas você pode adicionar uma resposta direta à pergunta de maneira técnica. ou seja, reutilizar o texto atual como um aviso de isenção de responsabilidade, mas você pode expandir o "você pode inicializar a partir do .iso" em entradas de menu ou algo assim. dessa maneira, você explicaria exatamente quais métodos imaginou para alcançar o que foi solicitado, embora você saiba que não funciona para o propósito assumido. isso também desambiguaria a contagem de soluções que você considerou.
N611x007