Criando um Pendrive Multiboot no ArchLinux, com Ferramentas administrativas, diversas distrinuições Linux e com Windows.
Iremos usar tanto o sistema UEFI para BOOT como MBR (para sistemas mais antigos).
Primeiro formate o pendrive com uma partição pequena de 40M
como FAT32
, para usar como EFI
. A tabela de partição não precisa ser em GPT, usaremos a tabela DOS
, a tabela GPT é superior a tabela DOS - principalmente pelo tamanho, na GPT pode se ter partições de 9,4ZB e na DOS é somente até 2T. Porém, com a tabela GPT o GRUB não escreve no MBR.
Instale algumas Ferramentas no seu sistema, antes de gerir o pendrive:
sudo pacman -S arch-install-scripts exfatprogs mtools dosfstools libisoburn
Detectando qual unidade é o pendrive:
sudo fdisk -l
Criando a tabela de partição no pendrive:
sudo cfdisk -z /dev/sdX
# Onde X é a letra que corresponde ao seu pendrive.
Ao escolher a tabela DOS crie a primeira partição de 40M
a segunda com o tamanho inteiro, e se quiser ter o Instalador do Windows no pendrive basta, criar uma terceira partição como FAT32
, porém, esta partição tem que ser no tamanho exato da imagem ISO, exemplo, para uma imagem do Windows 8.1, essa partição precisará ter 4,5G.
Não crie mais que três partições, pois a partir da 4ª partição o pendrive ficará lento. Então, só crie 3 partições. A primeira use como FAT32
/EFI. A segunda, será a maior partição como EXT4
e a terceira para Windows Installer como FAT32
.
Supondo que o seu pendrive seja a segunda unidade de disco com a letra B
, lembrando, antes detecte a unidade com sudo fdisk -l
. Então, formate assim:
sudo mkfs.vfat -F32 -n EFI /dev/sdX1
sudo mkfs.ext4 /dev/sdX2
sudo mkfs.vfat -F32 -n WIN_INSTALL /dev/sdX3
Montando às unidades - substitua a letra B
pela letra correspondente do seu pendrive:
sudo mount /dev/sdX2 /mnt
sudo mkdir -p /mnt/boot/EFI
sudo mkdir -p /mnt/WIN_INSTALL
sudo mkdir -p /mnt/ISOs
sudo mount /dev/sdX1 /mnt/boot/EFI
sudo mount /dev/sdX3 /mnt/WIN_INSTALL
sudo chown -R "$USER":users /mnt/
Instale o básico no pendrive, NÂO instale o kernel
sudo pacstrap -i /mnt coreutils efibootmgr exfatprogs grub dosfstools libisoburn mtools sed
Baixe às imagems ISO que deseja que o pendrive tenha no BOOT.
Para Windows, faça o seguinte:
mkdir ~/WIN
sudo modprobe loop
sudo mount -o loop Instalador-do-Windows.iso ~/WIN
cp -rf ~/WIN/* /mnt/WIN_INSTALL/ && sync
sudo umount -R ~/WIN && rm -rf ~/WIN
Se você você for ter uma imagem de alguma distribuição Linux no pendrive, copie no pendrive na pasta ISOs.
cp -f imagem-da-distribuição-linux.iso /mnt/ISOs/
Editando o 40_custom
do GRUB para ter múltiplos boots no pendrive. Use o editor de texto da sua preferência, no exemplo aqui será o vim
sudo vim /mnt/etc/grub.d/40_custom
Exemplo de 40_custom
com o Instalador do Windows na partição do pendrive e ArchLinux ISO, lembrando que você poderá ter qualquer distribuição Linux no pendrive, mas para cada distribuição Linux os parâmetros da ISO são diferentes:
Antes de tudo verifique o UUID de cada partição do pendrive com o comando: sudo blkid
e substitua onde está 1234-5678
pelo UUID correspondente da partição onde estão às ISOs e a partição do Windows Installer.
menuentry "Recovery: ArchLinux-2022.03.iso" --hotkey=0 --class dvd {
insmod part_gpt
insmod search_fs_uuid
set root=UUID=d3c602bf-4a10-4948-b4c4-13f7d3fa0bc2
set isofile="/archlinux-2022.03.01-x86_64.iso"
set dri="free"
search --no-floppy -f --set=root $isofile
probe -u $root --set=abc
set pqr="/dev/disk/by-uuid/$abc"
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz-linux img_dev=$pqr img_loop=$isofile driver=$dri
initrd (loop)/arch/boot/intel-ucode.img (loop)/arch/boot/amd-ucode.img (loop)/arch/boot/x86_64/initramfs-linux.img
}
menuentry "ArchLinux-2020.iso" --class dvd {
insmod part_msdos
insmod search_fs_uuid
set root=UUID=1234-5678
set isofile="/ISOs/ArchLinux-2020.iso" root=UUID=1234-5678
set dri="free"
search --no-floppy -f --set=root $isofile
probe -u $root --set=abc
set pqr="/dev/disk/by-uuid/$abc"
loopback loop $isofile
linux (loop)/arch/boot/x86_64/vmlinuz img_dev=$pqr img_loop=$isofile driver=$dri
initrd (loop)/arch/boot/x86_64/archiso.img
}
menuentry "Windows 10 Installer Partition" --class windows --class os {
insmod part_msdos
insmod chain
insmod exfat
insmod fat
insmod search_fs_uuid
set root=UUID=1234-5678
search --no-floppy --fs-uuid --set=root 1234-5678
chainloader /efi/boot/bootx64.efi root=UUID=1234-5678
}
menuentry "Android (Phoenix-OS)" --hotkey=a --class android-x86 {
insmod part_gpt
insmod search_fs_uuid
set root=UUID=5cbd2559-e23e-4696-9645-08580d8e3fb7
search --file --no-floppy --set=root /PhoenixOS/system.img
linux /PhoenixOS/kernel root=/dev/ram0 androidboot.hardware=android_x86_64 androidboot.selinux=permissive quiet SRC=/PhoenixOS Data=/data vga=788
initrd /PhoenixOS/initrd.img
}
menuentry "Android (BlissOS-v11.13)" --hotkey=1 --class android-x86 {
insmod part_gpt
insmod search_fs_uuid
set root=UUID=5cbd2559-e23e-4696-9645-08580d8e3fb7
search --file --no-floppy --set=root /BlissOS-v11.13/system.img
linux /BlissOS-v11.13/kernel root=/dev/ram0 androidboot.hardware=android_x86_64 androidboot.selinux=permissive quiet SRC=/BlissOS-v11.13 Data=/data vga=788
initrd /BlissOS-v11.13/initrd.img
}
Após às devidas modificações no arquivo 40_custom
- lembrando que você deve alterar conforme o seu caso - entre no Pendrive e faça a atualização do GRUB:
Agora entre no mini sistema arch e vamos gerir o GRUB:
sudo arch-chroot /mnt
grub-install --target=i386-pc --recheck /dev/sdX #Este comando é para instalar o GRUB na MBR
grub-install --verbose --recheck --force --target=x86_64-efi --efi-directory=/boot/EFI --bootloader-id=MULTIBOOT --removable
grub-mkconfig -o /boot/grub/grub.cfg
exit #Ou control + D - para sair do chroot
sudo umount -R /mnt