Eu estava lendo sobre o processo de inicialização de um computador e descobri que o computador carrega o código do bootloader do arquivo MBR
. Então eu queria dar uma olhada no meu MBR
assim:
sudo dd if=/dev/sda of=mbr bs=512 count=1
Abri-o com o Vim e executei :%!xxd
para obter uma visualização hexadecimal do arquivo. Este arquivo se parece com isso
Pelo que encontrei na Internet, os primeiros 446 bytes desse registro deveriam ser o código do carregador. Mas no meu caso são apenas zeros. Não acho que o bootloader deva ser assim, mas meu computador carrega perfeitamente. Porque isto é assim? Por que há apenas zeros MBR
(exceto na tabela de partição, suponho), mas meu computador carrega. Eu tenho GRUB
como bootloader.
Responder1
Você provavelmente já leu um texto desatualizado. Os computadores de hoje não inicializam via MBR. Mais precisamente, estamos em um período de transição, alguns usam MBR, outros não.
Uma das causas é o fato de o MBR não permitir particionar unidades maiores que 2 TiB.
Sim, você dd'ed um local onde o MBR normalmente está localizado, mas não há código lá e a tabela de partição contém apenas uma entrada, que abrange toda a unidade. Isso é chamado de MBR protetor, seu disco possui um layout de tabela de partição GUID (GPT) (ou seja, usa outro sistema de particionamento) e seu computador provavelmente inicializa via UEFI. Você provavelmente tem uma pequena partição com sistema de arquivos FAT32, chamada EFI System Partition (ESP) e contém o arquivo EFI/BOOT/bootx64.efi - esse arquivo é um carregador de boot (grub, ou algum carregador de stub que executa imediatamente o grub), que é executado por firmware. Ou você poderia ter configurado o firmware para inicializar um executável EFI arbitrário, mas ele ainda deveria estar presente no ESP.
Você pode confirmar que inicializou o UEFI no Linux, se o seu sistema carregado tiver um diretório /sys/firmare/efi não vazio.