Como criar mídia ao vivo USB inicializável somente UEFI?

107

Ter mídia ao vivo capaz de inicializar nos dois sentidos pode ser um problema ao instalar o Ubuntu nos computadores Windows 8 atualmente disponíveis.

Em outras palavras, a principal vantagem da criação de mídia ao vivo USB inicializável somente UEFI é: Você sabe que definitivamente foi inicializado e instalado via UEFI.

Como a Valve já está executando os instaladores USB de inicialização UEFI apenas com seu Steam OS baseado em Debian e UNetbootin - a principal alternativa votada para o Startup Disk Creator do Ubuntu - não é compatível com UEFI e, portanto, enganosa, acho que deveríamos ter um tópico separado para criando mídia ao vivo USB inicializável somente UEFI.

LiveWireBT
fonte

Respostas:

133

visão global

A criação de mídia ao vivo USB inicializável apenas por UEFI é bastante simples. Basta copiar os arquivos para a sua unidade USB formatada em FAT32 . É isso aí!

Lembre-se de que, para uma instalação ou inicialização da mídia:

  • Você ainda pode precisar dizer explicitamente ao seu computador para inicializar a mídia via UEFI .
  • Uma tabela de partição GPT, como nas pré-instalações do Windows 8 e posterior, é recomendada.
  • Não se esqueça de criar uma partição depois de criar a tabela de partições.
  • Use os ISOs AMD64 (LTS) mais recentes , porque eles definitivamente contêm carregadores de inicialização UEFI.

Índice

  • Copiar arquivos do método ISO
    1. Exemplo via terminal
    2. Exemplo via GUI
    3. Exemplo no Windows
  • O método de loopback ISO (avançado)
    1. Criando o binário
    2. Criando o arquivo de configuração
    3. Adicionando persistência
    4. Verificando a integridade
    5. Inicialização segura UEFI

1. Copie arquivos do método ISO

Esse método também funciona para outras mídias de instalação que contêm carregadores EFI, como o Windows, por exemplo.

1.1 Exemplo via terminal

Você pode fazer algo como o seguinte, se 604A-00EAfor a sua unidade USB e já tiver p7zipinstalado:

$ 7z x ubuntu-12.04-desktop-amd64.iso -o/media/$USER/604A-00EA/

Você está pronto se tiver apenas uma partição nesta unidade USB, caso contrário, precisará sinalizar a partição como inicializável, por exemplo, via parted:

# parted /dev/sdX set 1 boot on

Onde /dev/sdXestaria sua unidade USB e 1o número da partição que deve ser usada para inicializar.

1.2 Exemplo via GUI

  1. Monte o arquivo .iso e copie o conteúdo para a sua unidade USB. Imprensa Ctrl+ Hno Nautilus para exibir e copiar arquivos ocultos também.

    nautilus mostrando o Disk Image Mounter no menu de contexto quando o arquivo .iso é selecionado

  2. Adicione o sinalizador de inicialização via GParted .

    GParted mostrando como gerenciar sinalizadores de partição

1.3 Exemplo no Windows

  1. O mesmo que acima, apenas copie os arquivos.
  2. Pressione Windows/Super+ X, vá para Gerenciamento de disco e verifique se a partição está marcada como ativa. Nas versões do Windows anteriores ao Windows 8, pressione Windows/Super+ Rpara abrir o menu executar e abrir diskmgmt.msc, que abriria o Gerenciamento de Disco.

2. O método de loopback ISO (avançado)

Em vez de extrair conteúdo de uma imagem ISO, o GRUB e o GRUB2 foram capazes de inicializar a partir de imagens ISO diretamente através de um dispositivo de loopback. Como a imagem ISO é inicializável por UEFI, podemos configurar uma unidade USB contendo vários ISOs com diferentes sistemas operacionais sem criar uma bagunça na unidade USB.

Se você também deseja inicializar o Windows, consulte o SARDU . Lembro de usá-lo no Windows PE por volta de 2005 e parece ter sido atualizado para oferecer suporte a unidades USB e UEFI, mas lembre-se de que essa ferramenta também oferece suporte à inicialização herdada.

O que nós precisamos?

  • Conhecimento muito básico dos arquivos de configuração do GRUB.
  • Conhecimento muito básico de inicialização UEFI e GRUB, pois vamos gerar nossa própria imagem de carregador de inicialização GRUB com vários módulos incluídos.
  • Uma imagem ISO inicializável UEFI, uma unidade USB formatada em FAT e uma máquina que executa Linux.
    • Não, não precisamos de uma instalação UEFI do Linux (que pode ser uma situação de galinha e ovo), uma VM Linux tradicional como a do VirtualBox é adequada.

2.1 Criando o binário

Na sua máquina ou VM Ubuntu, verifique se o pacote grub-efi-amd64-bin está instalado (o grub-efi-ia32-bin também está disponível para arquiteturas Intel de 32 bits em versões mais recentes). O pacote pode ter um nome diferente em outra distribuição. Você pode comparar a lista de arquivos do pacote para encontrar o pacote certo em sua distribuição.

O comando a seguir gerará a imagem do GRUB, nesse caso, um binário EFI que todo computador com firmware UEFI deve executar:

grub-mkimage -o bootx64.efi -p /efi/boot -O x86_64-efi \
 fat iso9660 part_gpt part_msdos \
 normal boot linux configfile loopback chain \
 efifwsetup efi_gop efi_uga \
 ls search search_label search_fs_uuid search_fs_file \
 gfxterm gfxterm_background gfxterm_menu test all_video loadenv \
 exfat ext2 ntfs btrfs hfsplus udf

Todo firmware UEFI padrão deve procurar \EFI\BOOT\um arquivo chamado boot{arch}.efi, então crie as pastas na unidade USB e copie a imagem que acabamos de criar para este local. Outras arquiteturas, em vez de x64, são possíveis, mas vamos simplificar com x64 / amd64.

2.2 Criando o arquivo de configuração

Um exemplo muito básico para um grub.cfgarquivo de configuração que deve ser colocado no mesmo diretório da bootx64.efiseguinte maneira:

set timeout=3
set color_highlight=black/light-magenta

menuentry 'Boot Ubuntu 14.04.2 LTS from ISO' {
        set isofile="/efi/boot/ubuntu-14.04.2-desktop-amd64.iso"
        loopback loop $isofile
        linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile noprompt noeject quiet splash persistent --
        initrd (loop)/casper/initrd.lz
}
submenu 'Useful snippets' {
    menuentry 'Ubuntu' {
            chainloader /efi/ubuntu/grubx64.efi
    }
    menuentry 'Windows' {
            chainloader /efi/Microsoft/Boot/bootmgfw.efi
    }
    menuentry 'Firmware Setup' {
            fwsetup
    }
}

O importante é o bloco de configuração com o título Boot Ubuntu 14.04.2 LTS from ISO. Você pode alterar a cor e o tempo limite conforme sua preferência. Eu escolhi black/light-magentacomo ele ainda parece um pouco Ubuntu-ish, mas é facilmente distinguível ao carregar em cadeia outras configurações. Você pode encontrar mais exemplos de outras distribuições no Arch Wiki e ler o manual do GRUB realmente vale a pena, se você quiser ir além disso.

Voltando ao bloco de configuração, deve ser óbvio que o ISO é referenciado como /efi/boot/ubuntu-14.04.2-desktop-amd64.iso, portanto, copie-o \EFI\BOOT\e substitua-o ubuntu-14.04.2-desktop-amd64.isona configuração pelo nome do arquivo real do seu ISO.

loopback loop $isofileé a linha que carregará nosso arquivo ISO em um dispositivo de loopback a partir do qual podemos inicializar o kernel Linux diretamente. Isso é possível porque nossa imagem do EFI GRUB inclui o módulo de loopback. (Houve um pouco de tentativa e erro para descobrir quais módulos são razoáveis ​​para incluir. Você não deve receber nenhuma mensagem de erro, mas ainda não é perfeito.) Falando no kernel, você pode adicionar parâmetros do kernel toram, parâmetros para diferentes idiomas. (exemplo locale=de_DE bootkbd=de) e como no exemplo:persistent

2.3 Adicionando persistência

Você pode adicionar uma partição conforme descrito em: Como faço para que um live-USB use uma partição para persistência? Ou você pode criar um casper-rwarquivo e colocá-lo na raiz da sua unidade USB.

dd if=/dev/zero of=casper-rw bs=1M count=4094
mkfs.ext4 -m 0 casper-rw

Não testei qual é o máximo absoluto, ele deve estar entre 4094 e 4096 MB. Use uma partição se você pretende usar mais espaço. Observe que todas as alterações no (root) são uma modificação no sistema de arquivos de sobreposição, inclusive excluindo arquivos.

2.4 Verificando a integridade

Você deve procurar respostas para as seguintes perguntas para verificar se o conteúdo do Live ISO na unidade USB está em boas condições:

2.5 Inicialização segura UEFI

A Inicialização Segura se tornará obrigatória nas máquinas Windows 10. Sugiro que você dê uma olhada no PreLoader da Linux Foundation para adicionar a funcionalidade Inicialização Segura a essa configuração. Aqui estão algumas artes ASCII que ilustram os menus do HashTool que o acompanha .


Parabéns, eu diria que agora você dominou a inicialização da UEFI e não deve mais ter medo.

LiveWireBT
fonte
11
deixe-me salientar (a) que todos os PCs enviados nos últimos 5 anos têm mais ou menos esse recurso; (b) que a raiz do instalador .iso pode usar o pendrive completo como armazenamento persistente comum. (use as opções de montagem ro para proteger contra exclusão acidental.) Para PCs modernos e padrões de uso comuns, essa parece ser uma solução melhor do que a solução padrão do live-usb-creator.
user1539216
3
Ao usar o método GUI, encontrei alguns erros de links simbólicos . Isso é relevante? Você pode por favor elaborar?
VRR 04/04
11
Olá, LiveWireBT! Obrigado por uma resposta tão interessante !! Eu segui 2. O método de loopback ISO (avançado) e conseguiu inicializar UEFI a partir da unidade flash USB. Mas, no final da inicialização, recebi a mensagem de erro: Não é possível montar / dev / loop2 em / cow e depois de pressionar enter, vi um prompt (initramfs). Você pode me ajudar com isso?
Zuba
Quero agradecer também por um ótimo guia, foi claro e conciso. Eu nunca pensei em particionar o pen drive e ter vários sistemas operacionais nele. Obrigado novamente!
Hatem Jaber
2
Pelo menos no 16.04, o "copiar todos os arquivos" falha ao inicializar devido ao argumento da linha de kernel grub.cfg "file = / cdrom / preseed / ubuntu.seed". Não existe esse arquivo, provavelmente relacionado ao link simbólico ausente mencionado anteriormente (ubuntu para.). Edite o grub.cfg para remover o arquivo = ... e substituí-la por "-media-path ao vivo = / casper / ignore_uuid"
ubfan1
3

Extrair do arquivo ISO para o FAT32

A extração do conteúdo de um arquivo ISO da área de trabalho do Ubuntu de 64 bits em uma partição com um sistema de arquivos FAT32 e um sinalizador de inicialização fará o trabalho: criar uma unidade ao vivo, que seja inicializada apenas no modo UEFI. É chamado 'Copiar arquivos do método ISO' aqui (na resposta aceita).

Teste se estiver executando no modo UEFI ou BIOS

Mas é fácil testar em um sistema Ubuntu em execução (ao vivo e instalado), se foi inicializado no modo UEFI ou BIOS. Execute esta linha de comando,

test -d /sys/firmware/efi && echo efi || echo bios

Isso facilita o uso de sistemas ativos que podem ser usados ​​nos dois modos de inicialização, o que também pode ser uma vantagem.

Consulte também os links a seguir para obter uma explicação e descrição mais detalhadas do método,

help.ubuntu.com/community/Installation/iso2usb

help.ubuntu.com/community/Installation/iso2usb/diy

sudodus
fonte
2

Usar ddfuncionou para mim, por algum motivo, a versão da GUI não funcionou. Portanto, primeiro, você pode querer monitorar o progresso do dd , outras opções estão usando a opção SIGUSR1 para acionar ddpara relatar seu progresso periodicamente, mas isso é mais complicado do que pv.

Então:

sudo dd if=path/to/image/file | pv | sudo dd of=/dev/device_you_want_to_use

( /dev/device_you_want_to_usenormalmente será /dev/sdb, mas verifique com df!)

sup
fonte
8
Criar mídia dessa maneira não resulta em mídia inicializável somente UEFI . A ênfase está no último parágrafo da pergunta: "Há também uma vantagem na criação de mídia ao vivo USB de inicialização apenas UEFI: você sabe que ela definitivamente foi inicializada via UEFI". Ter mídia que possa inicializar nos dois sentidos é um problema ao tentar entender e configurar uma instalação do Ubuntu inicializável por UEFI.
LiveWireBT
11
Eu vejo. O estranho é que, dessa maneira, consegui produzir uma imagem que inicializou no modo UEFI (eu sei disso, já que o laptop foi configurado para permitir apenas a inicialização do uefi e também por causa da tela inicial). A resposta preferida não funcionou para mim, o computador simplesmente não inicializava com uma imagem criada apenas copiando os arquivos.
sup
5
@sup esse método cria uma mídia que pode ser inicializada por UEFI. O problema é que ele não é apenas inicializável por UEFI, conforme solicitado na pergunta: também pode ser inicializado no modo BIOS.
Darael