Como configurar o novo disco para inicialização UEFI usando o grub2

0

Estou usando um ASUS N53J que atualmente está usando a inicialização do MBR. Eu tenho habilitado UEFI inicialização na BIOS pode parecer inicializar drives USB que foram configurados com tabelas gpt. Embora eu ainda não tenha descoberto como usar uma partição de inicialização EFI dedicada na unidade USB.

Separadamente, conectei um segundo disco rígido ao laptop por meio da conexão SATA externa, criei uma tabela de partição gpt, uma partição esp boot e o sistema de arquivos e as partições de troca.

Quando eu executo grub-mkconfig no disco rígido interno, ele encontra a nova imagem do Linux no disco rígido externo. Eu posso inicializar a imagem externa e confirmar que a partição esp boot é montada em /boot/efi , então parece que eu deveria ser capaz de configurar o grub2. No entanto, se eu executar grub-mkconfig ao executar a partir da unidade externa, sua própria imagem não será encontrada, apenas as imagens do Linux e do Windows na unidade interna.

Eu também não consigo que efibootmgr seja executado. Os tutoriais que eu li também não estão claros tanto no como e no porquê, para que eu possa solucionar meus problemas ou usar comandos que não encontro nos pacotes que acho que estão usando. Alguém tem um bom ponteiro sobre como configurar o disco antes de instalá-lo como o disco de inicialização principal?

Obrigado.

Atualizar 2015-12-30 Eu progredi para fazer um drive USB que irá, pelo menos, iniciar em resgate grub. Eu não sei porque o grub não vai rodar a partir desta unidade, mas pelo menos me permite inicializar manualmente para o meu sistema operacional de destino. Desde que iniciei agora através de uma inicialização UEFI efibootmgr está disponível.

Eu executei uma nova instalação do grub visando a partição esp montada em /boot/efi . Isso foi concluído sem erros. No entanto, quando eu seleciono o sistema de destino para inicializar, o carregador de firmware pára em uma tela em branco. Isso ocorre se o disco está conectado via ESATA ou foi movido para o disco principal na máquina.

a saída de efibootmgr -v é:

BootCurrent: 0003
Timeout: 2 seconds
BootOrder: 0005,0002,0003,0004,0000,0001
Boot0000  Hard Drive    BBS(HD,,0x0)
Boot0001  CD/DVD Drive  BBS(CDROM,,0x0)P1: Slimtype BD  E  DS4E1S    .
Boot0002* ubuntu 15.10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\bootx64.efi)
Boot0003* grub  HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)/File(\Shellx64.efi)
Boot0004* UEFI: SanDisk Cruzer Micro 1.26   PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(2,0)/HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)
Boot0005* ubuntu15.10   HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu15.10\grubx64.efi)

O destino desejado é Boot0005 . Boot0002 é uma experiência copiando grubx64.efi para /boot/efi/bootx64.efi . Tanto Boot0002 quanto Boot0005 se comportam de maneira semelhante.

Boot0003 (grub) é o drive USB e o único meio de inicializar, embora ele só inicie no resgate grub.

Alguma idéia de onde eu deveria explorar ou que informações adicionais podem ajudar no diagnóstico?

Mais progresso:

grub rescue> set  
prefix=(hd0,2)/boot/grub  ... This is the fat32-formatted esp boot partition  

grub rescue>ls (hd0,2)/  
unknown filesystem      ... or similar words to that effect

grub rescue>set prefix=(hd0,1)/boot/grub  ... ext4-formatted partition
grub rescue> insmod fat
grub rescue>ls (hd0,2)/
                    .... the directory is now read

definindo a raiz para o sistema de inicialização de destino e o prefixo para o diretório / boot / grub desse sistema de destino eu posso insmod linux search config file e normal. Se o normal não iniciar a página de opções de inicialização, o seguinte será:

grub rescue>configfile /boot/grub/grub.cfg

Eu posso eventualmente fazer o alvo inicializar a partir do menu.

Minha sinopse é que grubx64.efi na unidade USB não está configurada com os módulos necessários para o método de inicialização que está sendo usado.

Durante o efi-boot no meu sistema de arquivos de destino, criei uma nova unidade USB, também com uma tabela de partições gpt, desta vez com esp boot como partição 1. Eu só mencionei isso para ajudar a ler a tabela de inicialização da bios apresentada posteriormente. / p>

montando a partição USB 2 em um nó apropriado:

mkdir -p /boot/efi

mount (partição USB 1) para (partição USB 2) / boot / efi

grub-install --target=x86_64-efi --efi-directory=(USB partition 2)/boot/efi --removable

gera EFI/BOOT/BOOTx64.EFI . A entrada UEFI: Sandisk na tabela de inicialização do bios é o meio para inicializar através deste carregador

grub-install --target=x86_64-efi --efi-directory=(USB partition2)/boot/efi --bootloader-id=USBboot

gera EFI/USBboot/grubx64.efi . A entrada USBboot também é escrita na bios boot table

cmp -v BOOT/BOOTx64.EFI USBboot/grubx64.efi não gera diferenças
a opção de inicialização agora é inicializada diretamente no sistema de arquivos de destino sem exibir nenhum menu de inicialização do grub. Como a unidade USB não tem o diretório /boot/grub ou grub.cfg , grubx64.exe deve ser configurado para procurar esse diretório no destino em vez de USB.

$ efibootmgr -v
BootOrder: 0007,0004,0005,0002,0003,0008,0000,0001
Boot0000  Hard Drive    BBS(HD,,0x0)
Boot0001  CD/DVD Drive  BBS(CDROM,,0x0)P1: Slimtype BD  E  DS4E1S    .
Boot0002* ubuntu 15.10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\bootx64.efi)
Boot0003* grub  HD(2,GPT,b07e72fd-9168-4924-a17c-b75e55ed685c,0x800,0xfa000)/File(\Shellx64.efi)
Boot0004* ubuntu_15_10  HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu_15_10\grubx64.efi)
Boot0005* ubuntu15.10   HD(1,GPT,8b6800c2-0b24-4f00-aa66-b1378052604e,0x800,0xfa000)/File(\EFI\ubuntu15.10\grubx64.efi)
Boot0007* USBboot   HD(1,GPT,f887bf87-18a9-40e1-9bca-6c4bfd1cbb4a,0x800,0xc8000)/File(\EFI\USBboot\grubx64.efi)
Boot0008* UEFI: SanDisk PciRoot(0x0)/Pci(0x1d,0x0)/USB(1,0)/USB(4,0)/HD(1,GPT,f887bf87-18a9-40e1-9bca-6c4bfd1cbb4a,0x800,0xc8000)

Eu ainda não descobri como até mesmo conseguir resgatar sem inicializar a partir do drive USB externo. Parece que tenho dois problemas:

  1. Eu não entendo completamente como configurar o grub para o uso pretendido, como garantir que os módulos necessários estejam incorporados e que o prefixo esteja definido corretamente.
  2. Eu não tenho a BIOS no ASUS N53J configurado corretamente ou não aceito a configuração do disco rígido como uma configuração de inicialização válida.

Alguma outra ideia? Eu agora isso está ficando bastante longo. Como posso documentar isso para ser mais legível?

Atualização de status

Navegando na Web, descobri grub-mkimage . Eu não comecei a trabalhar com isso e relatarei o progresso assim que o tiver feito, e posso entender os resultados ou fazer uma nova pergunta sobre isso.

    
por mrh53 29.12.2015 / 04:13

1 resposta

0

Depois de experimentar outros discos rígidos, determinei que meus problemas parecem estar relacionados à partição esp, boot do disco rígido original. Quando eu originalmente fiz a partição esp, boot eu tinha aceitado o offset padrão de 1 MB sugerido pelo gparted. Ao explorar por que eu poderia inicializar a partir de drives USB e outro disco rígido conectado via ESATA, o atributo comum na mídia de sucesso era a partição esp, boot sendo a primeira na unidade e com 0 offset.

Minha tentativa de mover a partição esp, boot não foi bem sucedida. No entanto, eu não verifiquei se o UUID e o PARTUUID não foram modificados, portanto, não sei se essa falha ocorreu devido à movimentação não configurando o disco para que o BIOS pudesse descobrir como lê-lo ou se eu não tivesse -configurando o grub.

De qualquer forma, aprendi como:  mova corretamente o sistema de arquivos para o novo disco rígido  configure o problema hdd a partir do zero.  mova o sistema de arquivos de volta  modifique /etc/fstab para refletir o novo UUID para partições montadas  a partição esp, boot tinha uma cópia do Shellx64.efi em seu diretório raiz

Eu então:   reinstalado o disco rígido no compartimento da unidade interna   iniciou o sistema no modo de configuração do BIOS   iniciou Shellx64.efi do BIOS   digitado "c" para chegar ao prompt do grub

grub> linux /vmlinuz root=/dev/sda2
grub> initrd /initrd.img
grub> boot

Isso iniciou o sistema de arquivos (como sempre faria se eu tivesse um meio de fazer o grub). Desta vez, quando eu instalar o grub e grub-mkconfig e reiniciar, o BIOS pode ler grubx64.efi a partir do local adequado em esp, partição de inicialização. Sucesso!

    
por mrh53 03.01.2016 / 17:09