Criando um drive USB bootável para várias ISOs, funciona com BIOS/CSM e EFI/UEFI

Iniciado por sysmatck, 25 de Julho de 2015, 18:17

tópico anterior - próximo tópico

sysmatck

Olá pessoal, nesta postagem eu vou ensinar como criar um pendrive bootável utilizando o grub2. É um método que exise um pouco de uso da linha de comando, mas possui várias vantagens em relação ao uso de softwares que fazem instalações parecidas. Utilizando o GRUB2, por exemplo, as imagens ISO continuam compactadas, não é necessário retirar os arquivos da imagem. Além disso, você poderá utilizar o drive como um pendrive qualquer, para transportar outros tipos de arquivo, e manter a organização dos arquivos da forma que você quiser...

Eu fiz um vídeo para mostrar o procedimento e explicar detalhadamente: https://www.youtube.com/watch?v=Uh_MCYHCUF4
De qualquer forma, o passo a passo que vou colocar aqui inclui arquivos e um comando que eu não adicionei no vídeo, que é essencial para fazer o drive funcionar nas novas placa-mãe, que utilizam UEFI.

Eu fiz esta postagem também no Ubuntu forum em inglês, quem quiser acompanhar novidades também pode verificar: http://ubuntuforums.org/showthread.php?t=2276498

-------------------------------------------------------------------------------------------------------------
Para este tutorial, existem algumas considerações:

       
  • Você pode formar seu drive (você já fez backup, certo?)
  • Seu dispositivo USB está no caminho de dispositivo /dev/sdb (Confira com o comando sudo fdisk -l ou usando o Gparted)
  • Você está usando o Ubuntu (qualquer variação/sabor) - Pode ser num LiveCD (é preferível inclusive)
  • Você está conectado com o usuário primário do sistema (configurado durante a instalação ou o padrão da sessão LiveCD)
  • Você não tem medo da linha de comando...

Primeiro Passo: Formatar o dispositivo USB

Para criar um sistema compatível com UEFI você precisará utilizar tabela de partições GPT e pelo menos uma partição FAT32. Os passos seguintes farão desta forma. Se sua intenção é utilizar com BIOS apenas, você pode usar uma tabela de parição DOS e pode utilizar inclusive o sistema de arquivos EXT4.

sudo apt-get install gdisk
sudo sgdisk --zap-all /dev/sdb

Depois de executar os comandos, remova e insira novamente o drive USB para que o kernel atualize e reconheça as novas informações...

sudo sgdisk --new=1:0:0 --typecode=1:ef00 /dev/sdb
sudo mkfs.vfat -F32 -n GRUB2EFI /dev/sdb1

Terminamos o passo primeiro, você pode verificar as modificações com o comando sudo parted -l ou no programa Gparted.


Segundo Passo: Copiar arquivos e criar a estrutura de diretórios

Para isso, montaremos o dispositivo USB...
sudo mount -t vfat /dev/sdb1 /mnt -o uid=1000,gid=1000,umask=022

Para facilitar a vida, eu criei um pacote com todos os arquivos necessários para você modificar conforme sua necessiade. Se você não confiar nos meus arquivos, crie seus próprios usando esta página como referência: https://help.ubuntu.com/community/UEFIBooting. Link para baixar: http://webativo.com/uploads/files/usb-pack_efi.zip

Extraia os arquivos dentro do pacote zip e coloque no drive montado. Você pode usar os comandos seguintes, ou fazer pelo seu gerenciador de arquivos preferido...
cd ~/Downloads/
unzip usb-pack_efi.zip
rsync -auv usb-pack_efi/ /mnt


Os arquivos mais importantes são: bootia32.efi para carregar em máquinas 32bits, bootx64.efi para carregar em máquinas 64bits e grub.cfg que configura as imagens ISO ou outras imagens em outras localidades.

No final do procedimento, você terá uma árvore de diretórios como esta:




Terceiro Passo: Instalar o GRUB2 no dispositivo

Basta no terminal digitar o comando:
sudo grub-install --removable --boot-directory=/mnt/boot --efi-directory=/mnt/EFI/BOOT /dev/sdb
obs1: Esse primeiro comando instala apenas para sistemas UEFI
obs2: A instalação do GRUB2 pode acusar alguns erros, apenas ignore

sudo grub-install --removable --force --no-floppy --boot-directory=/mnt/boot  /dev/sdb
obs3: Este segundo comando instala apenas para sistemas BIOS
obs4: Para fazer funcionar em ambos os sitemas, basta utilizar GPT com FAT32 e executar os dois comandos!
obs5: Se você tiver problemas para copiar e colar no caminho /mnt, você pode usar o sudo para fazer isso...


Quarto Passo: Configurar imagens para serem carregadas

Coloque (copie) o arquivo .iso que você quer carregar no diretório /mnt/iso e configure o arquivo grub.cfg da mesma forma dos exemplos já inclusos...

Observe que a variável mais importante a configurar é isofile. Existem vários exemplos na internet de como configurar menus do GRUB2 para uma infinidade de distribuições. Use o caracter # para comentar as linhas que você não quer utilizar, por exemplo, para esconder configurações de uma iso que não está presente em /iso.


Último Passo: Configurar o firmware e testar

Primeiro e mais importante, desativar "secure boot" no seu computador. Aliás, sem desativar, provavelmente você nem conseguirá carregar um SO em LiveCD. Para desativar esta opção, em cada placa é diferente, portanto, procure na internet ou no manual de instruções de sua máquina.

Para bootar por USB, você deverá também configurar o firmware para procurar primeiramente o dispositivo USB (boot order). Se preferir, utilize o menu de boot da sua máquina logo antes do Sistema Operacional começar a carregar!

alevian

Amigo,

Parabéns pelo material, inclusive pelo vídeo.
Tenho um micrinho com EFI e apanho muito com ele. Na verdade, só tenho ali um Ubuntu e um W8.
E nem desativei o "secure boot" para instalar o Ubuntu, já que a Canonical é uma das únicas distribuições que oferece a chave.

Ainda nem consegui fazer com que o W8 libere mais de 50% do HD que ele está consumindo...
(Recentemente vi uma dica aqui, que não tive tempo para testar).

De todo modo, quem sabe uma experiência com um pen drive, possa representar meus primeiros passos na lida com sistemas UEFI e várias distros em um mesmo espaço. Coisa que gostaria de ter nessa maquineta.

(Em outras máquinas, com BIOS, já fiz isso sem problemas!)

Grato e sucesso!
Linux User 586375

NathanRodriguez

Valeu a elaboração do tutorial !

E qual seria a alternativa, o UNetbootin ?
Meu blog: VST Plugins Free

sysmatck

Alternativa que suporte BIOS e UEFI apenas UNetbootin, que eu saiba. É possível copiar toda uma ISO para o drive utilizando o DD, o boot fica certinho também... Mas não tem as vantagens que o GRUB2 oferece...

MatheusWillder

Muito bom!

Algum tempo atrás, resolvi criar um pendrive bootável para o caso de emergências. Fiz tudo pelo YUMI. Quando pediram para eu olhar um notebook com UEFI, vi que o pendrive não iniciava nesse modo. Saí à procura de como iniciar ele em computadores UEFI, mas não achei nada. Não estava com muito tempo nem com muita coragem para procurar muito. Mas como já havia apagado tudo do pendrive, tinha de refazer tudo e tive a ideia de iniciar pela ISO (isso que esta dica mostra), mas não consegui fazer isso.

Então achei o Multisystem.

Ele não inicia usando a ISO, faz como as outras ferramentas, extrai os arquivos da imagem e coloca no pendrive para no boot iniciar o sistema. Massss... Ele roda em computadores UEFI   ;)  Além disso, configurei o menu para ficar bemm charmoso e amigável, e ainda de quebra configurei alguns parâmetros via live-config, como idioma, fuso horário e teclado. Ficou muito bom.

Iniciar pela ISO para mim deixou de ser essencial, pois passei a usar o Debian (stable), que tem lançamentos bem espaçados, diferente do Ubuntu. Algum dia, quando eu tiver com tempo, vejo essa dica.

Mas desde já, obrigado por ela! :D

Pergunta: quando o computador é iniciado pela ISO, toda ela vai para a RAM, não é? Não tenho certeza, mas se for, não vai dar certo para mim, pois algumas  vezes trabalho com alguns computadores que não tem tanta RAM disponível.

Julian Cabral

Na hora que eu dei o comando:
sudo grub-install --removable -force --no-floppy --boot-directory=/mnt/boot  /dev/sdb
deu erro, opção inválida. Dei uma olhada no grub-install --help e vi que tinha uma opção --force, daí acrescentei um - (traço) antes de -force, que ficou --force, daí deu certo.

Creto

Cara só agora vi essa dica, pelo conteúdo, notei ser uma importante dica mesmo, parabéns ao autor!

T+

sysmatck

Citação de: MatheusWillder online 04 de Agosto de 2015, 11:24
Pergunta: quando o computador é iniciado pela ISO, toda ela vai para a RAM, não é? Não tenho certeza, mas se for, não vai dar certo para mim, pois algumas  vezes trabalho com alguns computadores que não tem tanta RAM disponível.

Geralmente pelo GRUB2 não, mas pode ser... Você pode usar parâmetros no kernel para fazer a imagem carregar por total na RAM, isso faz a LiveSession ser mais rápida, mas tem esse problema que você citou. Veja: https://help.ubuntu.com/community/Grub2/ISOBoot

O MultiSystem, pelo que eu entendi, é só um software para automatizar a fabricação de USB com GRUB2. Pelo grub2 você pode configurar também a lingua, fazer mudanças no menu e  etc... Só que manualmente dá mais trabalho...

sysmatck

Citação de: Julian Cabral online 11 de Agosto de 2015, 21:11
Na hora que eu dei o comando:
sudo grub-install --removable -force --no-floppy --boot-directory=/mnt/boot  /dev/sdb
deu erro, opção inválida. Dei uma olhada no grub-install --help e vi que tinha uma opção --force, daí acrescentei um - (traço) antes de -force, que ficou --force, daí deu certo.

Pois é, ficou esse erro no comando lá. Mas eu já corrigi no texto. Obrigado!

sysmatck

Para quem quiser aprofundar nos conhecimentos do GRUB2, tem uma postagem aqui no fórum que mostra como instalar uma iso usando o GRUB2 de uma instalação prévia no HD...

Obviamente vale da mesma forma para o GRUB2 no pendrive. Segue: http://ubuntuforum-br.org/index.php/topic,66202.0.html

Pra quem quiser entender mais o que pode ser passado para o kernel como parâmetro, tem esse documento em inglês: https://www.kernel.org/doc/Documentation/kernel-parameters.txt