Início
Introdução
Executar um programa no boot significa rodá-lo em um ambiente minimalista (bare-metal ou com bootloader), independente do SO. Isso é útil para diagnósticos, recuperação ou tarefas personalizadas. Requisitos:
Conhecimento básico de programação (C/Assembly).
Ferramentas como NASM, GCC, GRUB ou Windows ADK.
Teste em ambiente virtual (ex.: QEMU).
Acesso administrativo (sudo no Linux, administrador no Windows).
Aviso: Desative Secure Boot no UEFI se necessário (entre no setup do BIOS/UEFI pressionando Del, F2 ou F10 durante o boot, e desative na seção de boot). Teste com cuidado para evitar problemas. Faça backup do sistema antes de prosseguir.
Executando no Linux (Usando GRUB ou Outras Abordagens)
O GRUB é o bootloader padrão no Linux e permite configurações flexíveis. Outras opções incluem partições personalizadas, firmware ou sistemas minimalistas. Abaixo, os passos são detalhados com comandos específicos e verificações.
1. Usar o Bootloader GRUB
Prepare o ambiente: Abra um terminal e obtenha permissões de root com
sudo -i. Instale ferramentas necessárias:apt install grub-customizer nasm(Ubuntu/Debian) ou equivalente (ex.:dnf install grub2-tools nasmno Fedora).Crie o programa: Escreva um programa bare-metal em Assembly (ex.: boot.asm). Exemplo:
bits 16 org 0x7C00 mov ah, 0x0E mov al, 'H' int 0x10 mov al, 'i' int 0x10 cli hlt times 510-($-$$) db 0 dw 0xAA55Compile com
nasm -f bin boot.asm -o /boot/programa.bin.Edite o GRUB: Abra
nano /etc/grub.d/40_custom. Adicione:menuentry "Meu Programa Personalizado" { insmod part_gpt insmod ext2 set root='hd0,gpt1' # Ajuste para sua partição de boot chainloader /programa.bin }Salve (Ctrl+O, Enter, Ctrl+X).
Atualize o GRUB: Execute
update-grub. Verifique o output para erros. O arquivo grub.cfg será atualizado em /boot/grub/.Teste: Reinicie com
reboot. Pressione Shift no boot para abrir o menu GRUB. Selecione "Meu Programa Personalizado". Se falhar, use um live USB comboot-repair.Reversão: Remova a entrada de /etc/grub.d/40_custom e execute
update-grub.
Limitações: O programa deve ser minimalista, sem dependências de bibliotecas.
2. Criar uma Partição de Boot Personalizada
Verifique o disco: Use
fdisk -lpara listar partições. Identifique o disco (ex.: /dev/sda).Crie partição: Execute
fdisk /dev/sda, pressione 'n' (nova), 'p' (primária), escolha tamanho (ex.: +100M), defina tipo como EFI (ef) se UEFI, grave com 'w'.Formate:
mkfs.fat -F32 /dev/sdaX(para EFI) oumkfs.ext2 /dev/sdaX. Monte:mkdir /mnt/boot; mount /dev/sdaX /mnt/boot.Compile o programa: Compile boot.asm para /mnt/boot/programa.bin com
nasm -f bin boot.asm -o /mnt/boot/programa.bin.Instale GRUB:
grub-install --target=i386-pc --boot-directory=/mnt/boot /dev/sdaX. Crie /mnt/boot/grub/grub.cfg com a entrada do programa.Configure UEFI: Reinicie, entre no setup UEFI, priorize a nova partição.
Teste: Use
qemu-system-x86_64 -drive file=/dev/sdaX,format=rawpara simular.
3. Modificar o Firmware (BIOS/UEFI)
Instale EDK II:
git clone https://github.com/tianocore/edk2.git. Configure:make -C BaseTools.Crie app EFI: Escreva código C/Assembly (ex.: exibir mensagem via UEFI protocols). Coloque em edk2/SeuModulo/.
Compile:
build -p Plataforma/Plataforma.dsc -m SeuModulo/SeuModulo.inf.Integre: Baixe o firmware do fabricante (ex.: ASUS). Use UEFITool para inserir o .efi.
Atualize: Copie para USB FAT32, flash via UEFI setup.
Teste:
qemu-system-x86_64 -bios seu_firmware.rom.
Riscos: Pode "brickar" o hardware. Mantenha backup do firmware.
4. Usar um Sistema Operacional Minimalista
Instale Buildroot:
wget https://buildroot.org/downloads/buildroot-latest.tar.gz, extraia, configure commake menuconfig.Adicione programa: Inclua seu binário como pacote, configure init em rootfs_overlay/etc/init.d/S01seuprograma.
Compile:
makegera rootfs.tar ou ISO.Grave:
dd if=output/images/rootfs.iso of=/dev/sdX bs=4M.Teste: Configure UEFI para boot do dispositivo.
Exemplo Prático: Hello World no Boot
Compile com nasm -f bin boot.asm -o boot.bin e integre ao GRUB.
Executando no Windows (Usando BOOTMGR ou Outras Abordagens)
O Windows usa o Boot Manager (BOOTMGR), menos flexível que o GRUB. Use entradas personalizadas, WinPE, bootloader alternativo ou USB. Abaixo, passos detalhados.
1. Usar o Windows Boot Manager
Prepare o ambiente: Abra o Prompt de Comando como administrador (Win+R, digite "cmd", Ctrl+Shift+Enter). Instale NASM (baixe de nasm.us, adicione ao PATH).
Crie o programa: Escreva boot.asm (exemplo abaixo). Compile:
nasm -f bin boot.asm -o C:\boot.bin.Gere uma GUID: Execute
bcdedit /create /d "Meu Programa" /application BOOTSECTOR. Anote a GUID exibida (ex.: {12345678-...}).Configure o BCD: Execute:
Verifique com
bcdedit /enum all.Grave o binário: Copie boot.bin para C:\ (ex.:
copy boot.bin C:\).Teste: Reinicie (pressione F8 ou Shift+Restart para menu de boot). Selecione "Meu Programa". Use USB de recuperação se falhar.
Reversão:
bcdedit /delete {sua-guid}.
2. Criar um Ambiente WinPE
Baixe o ADK: No site da Microsoft, baixe o Windows ADK para sua versão (ex.: Windows 11).
Instale: Escolha "Deployment Tools" e "Windows Preinstallation Environment".
Crie base WinPE:
copype amd64 C:\WinPE(ou x86 para 32-bit).Adicione programa: Copie seu executável (ex.: programa.exe) para C:\WinPE\media. Edite C:\WinPE\media\sources\startnet.cmd com notepad, adicione:
Crie mídia:
MakeWinPEMedia /UFD C:\WinPE F:(USB em F:) ouMakeWinPEMedia /ISO C:\WinPE C:\WinPE.iso.Configure UEFI: Insira USB, reinicie, priorize USB no setup UEFI.
Teste: Verifique se o WinPE executa o programa.
3. Modificar o Firmware (UEFI)
Instale EDK II: Baixe do GitHub, configure com Visual Studio ou GCC.
Crie app EFI: Escreva código C usando UEFI protocols.
Compile: Use build tool do EDK II.
Integre: Use UEFITool para inserir .efi no firmware do fabricante.
Atualize: Flash via USB no UEFI setup.
Teste:
qemu-system-x86_64 -bios seu_firmware.rom.
4. Usar um Bootloader Alternativo (GRUB)
Instale Grub2Win: Baixe do site oficial, instale como admin.
Configure: Abra Grub2Win, edite grub.cfg para incluir:
Copie binário: Coloque boot.bin na raiz do disco (ex.: C:\).
Teste: Reinicie, selecione no menu GRUB.
5. Usar Dispositivo Externo (USB/CD)
Compile programa: Crie boot.bin com NASM.
Crie mídia: Baixe Rufus, use DD mode para gravar boot.bin em USB.
Configure UEFI: Priorize USB no boot order.
Teste: Reinicie, verifique execução.
Exemplo Prático: Hello no Boot
Compile com nasm -f bin boot.asm -o boot.bin e use com BCD ou USB.
Considerações Gerais
Ambiente: Bare-metal; gerencie hardware diretamente.
Segurança: Teste em QEMU; evite vulnerabilidades.
Hardware: Compatível com x86/x64.
Casos de Uso: Diagnóstico, recuperação.