Inicialização não-EFI MS-DOS do Windows 7 partição com grub2-gpt

3

Eu tenho a seguinte configuração:

  • UEFI Placa-mãe Asus
  • GPT TABLE e Ubuntu em /dev/sdb
  • MS-DOS TABLE, Windows 7 e Linux Mint em /dev/sda

Eu tento inicializar as partições do Windows 7 com o grub2 do Ubuntu 11.10.

Meu Windows "Sistema Reservado" é /dev/sda3 .

A entrada do Windows GRUB é (padrão):

menuentry "Windows 7 (loader) (on /dev/sda3)" --class windows --class os {
        insmod part_msdos
        insmod ntfs
        set root='(hd0,msdos3)'
        search --no-floppy --fs-uuid --set=root 644C5AC04C5A8CA4
        chainloader +1
}
Saída

Parted :

Disk /dev/sda: 500GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start   End     Size    Type      File system  Flags
 1      32.3kB  296MB   296MB   primary   ext2
 2      296MB   423GB   423GB   extended
 5      296MB   20.3GB  20.0GB  logical   ext4
 6      20.3GB  363GB   342GB   logical   ext4
 7      363GB   423GB   60.1GB  logical   ntfs
 3      423GB   423GB   105MB   primary   ntfs         boot
 4      423GB   500GB   77.2GB  primary   ntfs


Disk /dev/sdb: 1500GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name  Flags
 1      17.4kB  20.0MB  20.0MB  fat16                 boot
 2      20.0MB  50.9GB  50.9GB  ext4
 4      50.9GB  1103GB  1052GB  btrfs
 5      1103GB  1156GB  52.7GB  ext4
 6      1156GB  1233GB  77.2GB  ntfs
 7      1233GB  1233GB  105MB   ntfs
 3      1496GB  1500GB  4271MB  linux-swap(v1)

Depois de tentar inicializar o Windows a partir do grub2, recebo a mensagem:

error: invalid EFI file path

    
por dzift 01.01.2012 / 19:26

1 resposta

7

Você não pode fazer isso.

Deve ser óbvio que qualquer aplicativo de pré-inicialização, como o programa de boot loader para um sistema operacional, é strongmente acoplado ao firmware da máquina; assim como um programa de aplicativos comum está vinculado ao sistema operacional cujos serviços ele emprega. Um programa de carregador de inicialização EFI não pode ser executado em uma máquina, a menos que essa máquina forneça serviços de firmware EFI. Um programa de carregador de bootstrap estilo PC / AT antigo não pode ser executado em uma máquina a menos que essa máquina forneça os serviços de firmware antigos de PC / AT.

O verbo chainloader no GRUB incorpora isso. Ele não está documentado, mas faz coisas diferentes, dependendo de como o GRUB está hospedado - ou seja, qual firmware da máquina o GRUB está (esperando estar) sendo executado. Na versão do GRUB hospedada em sistemas PC / AT antigos, ele espera receber um conjunto de blocos de disco ou um arquivo, e carrega e executa (o primeiro setor de) o que é fornecido na forma de um antigo PC / AT VBR. programa de bootstrap. Na versão hospedada pelo EFI do GRUB, ele espera receber nomes de arquivos e carrega e executa os arquivos como aplicativos EFI comuns.

Você tem a versão hospedada por EFI do GRUB. Você passou +1 para chainloader como o nome do arquivo, mas isso simplesmente não é um caminho válido para um arquivo de imagem do aplicativo EFI de pré-inicialização. O GRUB não conseguiu construir o caminho do dispositivo EFI para o arquivo de imagem, porque você deu a ele um caminho sintaticamente incorreto. Daí a mensagem de erro.

Um uso correto de chainloader no GRUB hospedado pelo EFI nomeia um arquivo. Para o Microsoft Windows NT 6.1, esta será a versão EFI do Boot Manager da Microsoft que mora ao lado do armazenamento BCD na partição do sistema EFI:

chainload (hd1,gpt1)/EFI/Microsoft/Boot/bootmgfw.efi

Claro, isso não funcionará para você, porque você não instalou o Windows NT 6.1 nesta máquina - mas em outra máquina e transferiu o disco rígido para este - ou não instalou o EFI-bootstrappable sua versão, de alguma forma persuadindo o Windows NT 6.1 a executar a versão não-EFI de seu utilitário de instalação em sua máquina EFI. Como eu sei? Como a Microsoft não permitiria que você instalasse em um disco rígido não particionado por EFI em uma máquina EFI como você feito, e porque você tem tanto uma partição de sistema EFI adequada (a partição FAT no seu segundo disco rígido) e seu equivalente de Pobre Homem quando você teria só precisava do primeiro caso contrário.

Como tal, o Windows NT 6.1 não foi instalado com a versão hospedada pela EFI do Boot Manager da Microsoft, o armazenamento BCD está no lugar errado, e haverá vários outros problemas - relacionados ao Windows NT esperando um hardware / combinação de firmware e ter sido configurado com os drivers e configurações apropriados para isso e, de repente, ser inicializado em outra combinação de hardware / firmware - no armazenamento para você mais tarde.

    
por 02.01.2012 / 19:29