Multiboot USB drive (Português)

Status de tradução:
Esse artigo é uma tradução de
Multiboot USB drive
. Data da última tradução: 2021-03-25. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
GRUB (Português)
Syslinux
Archiso (Português)
Uma unidade flash de múltipla inicialização USB permite inicializar múltiplos arquivos ISO a partir de um único dispositivo. Os arquivos ISO podem ser copiados para o dispositivo e inicializados diretamente sem a necessidade de extraí-los. Existem vários métodos disponíveis, mas eles podem não funcionar para todos arquivos ISO.
Usando GRUB e dispositivos de loopback
This article or section needs language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
multiple
style
issues (Discuss in
Talk:Multiboot USB drive (Português)
)
Vantagens:
a necessidade de uma única partição;
todos arquivos ISO podem ser localizados no mesmo diretório;
adicionar arquivos ISO é muito simples.
Desvantagens:
nem todas as imagens ISO são compatíveis;
o menu de inicialização original para o arquivo ISO não será exibido;
pode ser difícil encontrar uma entrada de inicialização funcional.
Preparação
This article or section needs expansion.
Reason:
Quanto espaço adicional é necessário para o bootloader? (Discuss in
Talk:Multiboot USB drive (Português)
)
Crie pelo menos uma partição e um sistema de arquivos suportado pelo
GRUB
na unidade USB. Veja
Partitioning
e
File systems#Create a file system
. Escolha o tamanho baseado no tamanho total dos arquivos ISO que desejar armazenar na unidade, mais um espaço adicional para o bootloader.
Instalando o GRUB
Instalação única
Monte o sistema de arquivos localizado na unidade USB:
# mount /dev/sdXY /mnt
Crie o diretório /boot:
# mkdir /mnt/boot
Instale GRUB na unidade USB:
# grub-install --target=i386-pc --recheck --boot-directory=/mnt/boot /dev/sdX
No caso de você desejar inicializar ISOs em modo UEFI, terá de instalar grub para o alvo UEFI:
# grub-install --target=x86_64-efi --removable --boot-directory=/mnt/boot --efi-directory=/mnt
Para UEFI, a partição deverá ser a primeira da tabela de partições MBR e deverá ser formatada com FAT32.
inicialização híbrida com UEFI GPT + BIOS GPT/MBR
Esta configuração é útil para criar uma unidade USB universal, teoricamente inicializável em qualquer computador.
Em primeiro lugar, você deverá criar uma tabela de partições
GPT
em seu dispositivo. Serão necessárias, pelo menos, 3 partições:
Uma partição do tipo
BIOS boot
(código do gdisk
EF02
). Esta partição deverá ter 1 MiB de tamanho
Uma partição do tipo
EFI System partition
(código do gdisk
EF00
com uma
EFI system partition#Formatar a partição|FAT32 filesystem
). Esta partição poderá ser pequena, como 50 MiB.
Sua partição de dados (use um sistema de arquivos suportado pelo
GRUB
). Esta partição poderá ocupar o espaço restante da unidade USB.
The factual accuracy of this article or section is disputed.
Reason:
Must create
because something
might not be enough
? (Discuss in
Talk:Multiboot USB drive (Português)
)
A seguir você deverá criar uma tabela de partições MBR híbrida, pois definir uma boot flag no setor protetivo da MBR poderá não ser suficiente em alguns casos.
Exemplo de criação de uma tabela de partições MBR híbrida usando
gdisk
:
# gdisk /dev/sdX

Command (? for help): r
Recovery/transformation command (? for help): h

WARNING! Hybrid MBRs are flaky and dangerous! If you decide not to use one,
just hit the Enter key at the below prompt and your MBR partition table will
be untouched.

Type from one to three GPT partition numbers, separated by spaces, to be added to the hybrid MBR, in sequence: 1 2 3
Place EFI GPT (0xEE) partition first in MBR (good for GRUB)? (Y/N): N

Creating entry for GPT partition #1 (MBR partition #1)
Enter an MBR hex code (default EF):
Set the bootable flag? (Y/N): N

Creating entry for GPT partition #2 (MBR partition #2)
Enter an MBR hex code (default EF):
Set the bootable flag? (Y/N): N

Creating entry for GPT partition #3 (MBR partition #3)
Enter an MBR hex code (default 83):
Set the bootable flag? (Y/N): Y

Recovery/transformation command (? for help): x
Expert command (? for help): h
Expert command (? for help): w

Final checks complete. About to write GPT data. THIS WILL OVERWRITE EXISTING
PARTITIONS!!

Do you want to proceed? (Y/N): Y
Não se esqueça de formatar as partições:
# mkfs.fat -F32 /dev/sdX2
# mkfs.ext4 /dev/sdX3
Agora será possível instalar GRUB para suportar ambos EFI + GPT e BIOS + GPT/MBR. A configuração do grub (--boot-directory) poderá ser mantida no mesmo lugar.
Primeiro, você deverá montar a partição do tipo 'EFI system' e a partição de dados da unidade USB.
Um exemplo disso poderia ser como a seguir:
# mount /dev/sdX3 /mnt
# mkdir -p /mnt/boot/EFI
# mount /dev/sdX2 /mnt/boot/EFI
Então, você poderá instalar GRUB para UEFI com:
Nota: na maioria dos casos
EFI_MOUNTPOINT
corresponde ao subdiretório
/mnt/boot/EFI
na unidade USB montada.
# grub-install --target=x86_64-efi --recheck --removable --efi-directory=/
EFI_MOUNTPOINT
--boot-directory=/
DATA_MOUNTPOINT
/boot
E para BIOS com:
# grub-install --target=i386-pc --recheck --boot-directory=/
DATA_MOUNTPOINT
/boot /dev/sd
X
Como opção de reserva, você poderá também instalar o GRUB na sua partição MBR inicializável:
# grub-install --target=i386-pc --recheck --boot-directory=/
DATA_MOUNTPOINT
/boot /dev/
sdX3
Configurando GRUB
Usando um modelo
Existem alguns projetos no git que fornecem alguns arquivos de configuração do GRUB preexistentes, e um
grub.cfg
genérico que poderá ser usado para carregar outras entradas de inicialização sob demanda, exibindo-as somente caso os arquivos ISO especificados - ou pastas que contenham-nos - estiverem presentes na unidade.
Multiboot USB:
https://github.com/hackerncoder/multibootusb
GLIM (GRUB2 Live ISO Multiboot):
https://github.com/thias/glim
Configuração manual
Para a proposta de uma unidade USB inicializável, é mais fácil editar o arquivo
grub.cfg
manualmente do que gerá-lo. Alternativamente, faça as seguintes alterações em
/etc/grub.d/40_custom
ou
/mnt/boot/grub/custom.cfg
e gere o
/mnt/boot/grub/grub.cfg
usando
grub-mkconfig
.
Como é recomendado usar um
nome persistente
ao invés de
/dev/sd
xY
para identificar a partição na unidade USB onde estarão as imagens, defina uma variável conveniente para manter o valor. Se as imagens ISO estiverem na mesma partição do GRUB, use o seguinte para ler o UUID na inicialização:
/mnt/boot/grub/grub.cfg
# caminho para a partição onde estão as imagens ISO (usando UUID)
probe -u $root --set=rootuuid
set imgdevpath="/dev/disk/by-uuid/$rootuuid"
Ou especifique explicitamente a UUID:
/mnt/boot/grub/grub.cfg
# caminho para a partição onde estão as imagens ISO (usando UUID)
set imgdevpath="/dev/disk/by-uuid/
UUID_value
"
Alternativamente, use a LABEL do dispositivo ao invés da UUID:
/mnt/boot/grub/grub.cfg
# caminho para a partição onde estão as imagens ISO (usando LABEL)
set imgdevpath="/dev/disk/by-label/
label_value
"
A UUID ou LABEL necessária poderá ser encontrada usando
lsblk -f
. Não use a mesma LABEL do Arch ISO para a unidade USB, caso contrário o processo de inicialização falhará.
Para finalizar a configuração, uma entrada de inicialização para cada imagem ISO deverá ser adicionada abaixo deste cabeçalho, veja exemplos na próxima seção.
Entradas de inicialização
Assume-se que as imagens ISO estão armazenadas no diretório
boot/iso/
e no mesmo sistema de arquivos onde o GRUB está instalado. Do contrário, será necessário prefixar o caminho para o arquivo ISO com a identificação do dispositivo ao usar o comando
loopback
, por exemplo
loopback loop
(hd1,2)
$isofile
. Como esta identificação de dispositivos não é
persistente
, não será usada em exemplos nesta seção.
Pode-se usar a nomenclatura de dispositivo de bloco persistente dessa forma. Substitua a UUID de acordo com a UUID do seu sistema de arquivos ISO.
# define globalmente (isto é, fora de qualquer menu de entrada)
insmod search_fs_uuid
search --no-floppy --set=
isopart
--fs-uuid
123-456
# depois, usa dentro de cada menu de entrada
loopback loop
($isopart)
$isofile
Dica
For a list of kernel parameters, see
the kernel's command-line parameter documentation
. For more examples of boot entries, see the
GRUB upstream documentation
or the documentation for the distribution you wish to boot.
Lançamento mensal do Arch Linux
Veja também
archiso (Português)
.
menuentry '[loopback]archlinux-2020.10.01-x86_64.iso' {
	set isofile='/boot/iso/archlinux-2020.10.01-x86_64.iso'
	loopback loop $isofile
	linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$imgdevpath img_loop=$isofile earlymodules=loop
	initrd (loop)/arch/boot/intel-ucode.img (loop)/arch/boot/amd-ucode.img (loop)/arch/boot/x86_64/initramfs-linux.img
}
Veja
README.bootparams
para opções de archiso suportados pela linha de comando do kernel.
Memtest86+
Memtest86+
está incluido na ISO mensal.
menuentry '[loopback]archlinux-2020.10.01-x86_64.iso' {
	set isofile='/boot/iso/archlinux-2020.10.01-x86_64.iso'
	loopback loop $isofile
	linux16 (loop)/arch/boot/memtest
}
Archboot
Veja também
Archboot
.
menuentry '[loopback]archlinux-2014.11-1-archboot' {
	set isofile='/boot/iso/archlinux-2014.11-1-archboot.iso'
	loopback loop $isofile
	linux (loop)/boot/vmlinuz_
x86_64
iso_loop_dev=$imgdevpath iso_loop_path=$isofile
	initrd (loop)/boot/initramfs_
x86_64
.img
}
Usando Syslinux e memdisk
Usando o módulo
memdisk
, a imagem ISO é carregada na memória, e seu bootloader é carregado. Certifique-se de que o sistema que irá inicializar esta unidade USB tem uma quantidade de memória suficiente para o arquivo de imagem e para executá-la como um sistema operacional.
Preparação
Certifique-se de que a unidade USB está adequadamente
Partitioning#particionada
e que é uma partição com um sistema de arquivos suportado pelo Syslinux, como por exemplo FAT32 ou ext4. Então, instale o Syslinux nesta partição, veja
Syslinux#BIOS systems
.
Instalação do módulo memdisk
O módulo memdisk não foi instalado no ato da instalação do Syslinux, portanto deverá ser instalado manualmente. Monte a partição onde o Syslinux está instalado para
/mnt/
e copie o módulo do memdisk para o mesmo diretório onde o Syslinux estiver instalado:
# cp /usr/lib/syslinux/bios/memdisk /mnt/boot/syslinux/
Configuração
Após copiar os arquivos ISO para a unidade USB, edite o
Arquivo de configuração do Syslinux
e crie as entradas de menu para as imagens ISO. Uma entrada básica corresponde a algo como:
boot/syslinux/syslinux.cfg
LABEL
some_label
LINUX memdisk
    INITRD
/path/to/image.iso
APPEND iso
Veja
memdisk on Syslinux wiki
para mais opções de configuração.
Caveat para sistemas 32-bit
Ao inicializar um sistema 32-bit a partir de uma imagem maior do que 128MiB, é necessário aumentar o uso máximo de memória de vmalloc. Isto é feito adicionando
vmalloc=
valor
M
aos parâmetros do kernel, onde
valor
é maior do que o tamanho da imagem ISO, em MiB.
[1]
Por exemplo, ao inicializar um sistema 32-bit a partir da
Arch installation ISO
, pressione a tecla
Tab
sobre a entrada
Boot Arch Linux (i686)
no menu e adicione
vmalloc=768M
ao final. Pular este passo resultará no seguinte erro durante a inicialização:
modprobe: ERROR: could not insert 'phram': Input/output error
Ferramentas automatizadas
GRUB2 Live ISO Multiboot (GLIM)
— Um conjunto de arquivos de configuração do GRUB para transformar uma unidade USB formatada em VFAT com imagens ISO de distribuições GNU/Linux em uma unidade USB de inicialização múltipla.
https://github.com/thias/glim
||
not packaged?
search in AUR
liveusb-builder
— Um conjunto de scripts para criar uma unidade USB de inicialização múltipla para distribuições GNU/Linux.
https://github.com/mytbk/liveusb-builder
||
liveusb-builder-git
AUR
MultiBootUSB
— Um software Python cross-platform com interfaces CLI e GUI interfaces que permitem instalar e remover múltiplas imagens live do Linux em uma unidade USB.
https://github.com/mbusb/multibootusb
||
multibootusb
AUR
Ventoy
— Uma ferramenta de código aberto para criar uma unidade USB inicializávelpara arquivos ISO/WIM/IMG/VHD(x)/EFI. Não é necessário formatar o disco várias vezes, apenas copiar os arquivos para a unidade USB e inicialize-a diretamente.
https://www.ventoy.net
||
ventoy-bin
AUR
Veja também
GRUB:
https://help.ubuntu.com/community/Grub2/ISOBoot/Examples
https://help.ubuntu.com/community/Grub2/ISOBoot
GRUB Live ISO Multiboot
- GRUB configurations for booting ISO images
Syslinux:
Boot an ISO image