Live USB: Por que o sistema operacional Windows requer um MBR para ser instalado?

1

Eu sempre consegui criar dispositivos USB linux inicializáveis usando apenas dd . Mas quando se trata de Windows , o computador não inicializa a partir do USB .. - Eu não sei porque não funciona dessa maneira, mas o mais importante é: Por que é necessário escrever o MBR em o dispositivo, a fim de obter o boot do Windows corretamente?

    
por Kais 13.10.2017 / 23:44

3 respostas

3

Sua premissa é incorreta. Nem todas as distribuições do Linux podem inicializar apenas por dd da imagem na unidade flash. Por exemplo, nas antigas versões do Ubuntu você tem que usar uma ferramenta para criar uma unidade USB de instalação / live do Ubuntu. No Ubuntu 5.x ou 6.x você precisa usar CDs separados para sessões ao vivo e para instalação.

A maioria das distribuições Linux atualmente usam ISOs híbridos para que você pode simplesmente escrever todo o ISO no disco e ele funcionará. No entanto, isso não significa que todas as distribuições Linux suportam isso. O Knoppix acabou de mudar para o ISO híbrido na última versão (8.1)

What is a Hybrid Image?

We are used to downloading ISO images from Ubuntu mirrors whenever a new release comes out. At the same time when these images can be burnt directly to a CD-ROM disc, for creating a startup installation USB, one needs to use specific USB creation tools like 'Startup Disk Creator' (included by default in Ubuntu), 'UNetbootin', etc. With hybrid images, you can simply write the data -including the filesystem- of the image to a USB drive by using the 'dd' command. Notice that just copying its content, after mounting it, won't work, as it wouldn't copy the MBR and the partition table, as well as additional sectors at the end of the image.

Um ISO normal terá todos os zeros no começo. Um ISO híbrido conterá um MBR no início para que o BIOS pense que é um setor de inicialização válido e carregue-o

Hybrid Setup for BIOS and EFI from CD/DVD and USB stick

The EL Torito Boot Catalog can offer in the same ISO filesystem alternative boot images for PC-BIOS and for EFI.

But El Torito is interpreted by the firmware only if presented on an optical medium: CD, DVD, BD. For booting PC-BIOS and EFI from USB stick or other hard-disk-like devices, there is need for an MBR and, if desired, for a GPT.

http://wiki.osdev.org/El-Torito#Hybrid_Setup_for_BIOS_and_EFI_from_CD.2FDVD_and_USB_stick

Os bootloaders Linux suportam a inicialização a partir do MBR e do GPT nos sistemas BIOS e UEFI, portanto, não haverá problemas. No entanto, a unidade flash USB não pode mais ser gravada no Windows porque é reconhecida como uma unidade de CD ou DVD. Você precisa limpar a unidade e recriar usando o esquema MBR ou GPT, como esta . Você ainda precisa de ferramentas para fazer pendrives Linux inicializáveis se você quiser usar a unidade para armazenamento de dados normal, bem como para inicializar ou se você quiser inicializar ao vivo com dados persistentes .

OTOH O Windows não usa um ISO híbrido e normalmente os fabricantes de instaladores USB apenas copiam o boot.wim, install.wim e outros arquivos necessários, em seguida, flash bootloader do Windows para a unidade. Como o gerenciador de inicialização do Windows requer GPT em sistemas UEFI e MBR em sistemas BIOS, se você estiver inicializando a unidade flash MBR no UEFI, isso não funcionará.

Para mais informações:

por 14.10.2017 / 07:49
3

O MBR só é necessário se o firmware de inicialização for BIOS ou em um modo de compatibilidade do BIOS. Se o firmware estiver no modo UEFI completo sem suporte de compatibilidade, o Windows espera que o disco de inicialização seja particionado como GPT.

O suporte de inicialização do Windows para partições de disco pode ser encontrado em

System        BIOS + MBR   UEFI + GPT                  BIOS + GPT                   UEFI + MBR
Windows 7     Supported    Supported; (64-bit only)   Boot volume not supported     Boot volume not supported
Windows Vist  Supported    Supported; (64-bit only)   Boot volume not supported     Boot volume not supported
Windows XP    Supported    Not supported              Boot volume not supported     Boot volume not supported
    
por 14.10.2017 / 00:51
1

Sua premissa é incorreta.
O MBR é sempre necessário se o PC tiver um BIOS.
Se você conseguiu criar um disco ou unidade flash inicializável usando dd , use o MBR existente desse dispositivo ou o comando dd escreveu uma nova cópia para o primeiro setor.

O MBR instalado no primeiro setor é necessário para cada dispositivo que emula uma unidade de disco rígido pela arquitetura do PC e pelo BIOS. Esse requisito não está relacionado a nenhum sistema operacional.

I have always managed to create bootable linux usb devices using only dd.

Se você usou dd para copiar uma imagem ISO hydrid para uma unidade flash USB, então definitivamente há um MBR nessa imagem.
Considerando que, se você tentou usar uma imagem ISO comum, essa unidade flash USB não inicializaria. Veja
qual é a diferença entre o mecanismo de inicialização usb e o mecanismo de inicialização via disco ótico?

But when it comes to Windows, the computer fails to boot from USB ..

USB é um barramento, não um dispositivo.
Você precisa de um dispositivo para inicializar.
Certamente você encontraria uma diferença ao inicializar a partir de um disco rígido USB ou SDD versus uma unidade flash USB.

Why it is required to write the MBR into the device in order to get Windows boot properly?

Provavelmente porque, por padrão, o Windows não trata (ou formata) unidades flash USB como equivalentes a um disco rígido. Para uma unidade flash USB, o Windows grava um setor de inicialização de dispositivo que não possui tabela de partição, como uma unidade de disquete.
O Linux, por outro lado, trata uma unidade flash USB como um HDD e sempre grava um MBR com uma tabela de partições.

Quando você afirma que "escreve o MBR no dispositivo" , sem dúvida está usando um sistema Linux em vez do Windows.

ADENDO

Como prova de que o Windows não instala uma tabela de partição para uma unidade flash USB, aqui está um dump hexadecimal do primeiro setor de uma unidade flash USB que foi primeiro "limpa" com dd if=/dev/zero of=/dev/sdb count=1 e formatada em um Win7 sistema usando os parâmetros padrão.

Note que há uma string de texto onde a tabela de partições deve ser.

    
por 14.10.2017 / 03:18