Multiboot USB drive (Português) - ArchWiki

Jump to content
From ArchWiki
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:

1. Uma partição do tipo BIOS boot (código do gdisk `EF02`). Esta partição deverá ter 1 MiB de tamanho
2. 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.
3. 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/sdX

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/sdxY` 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=valorM` 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-gitAUR

- 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 || multibootusbAUR

- 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-binAUR

## 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

Category:

- Boot process (Português)

Hidden categories:

- Pages or sections flagged with Template:Style
- Pages or sections flagged with Template:Expansion
- Pages or sections flagged with Template:Accuracy
- Pages with missing package links