Unix BIOS / Boot Record na unidade flash USB

0

Eu tenho tentado aprender um pouco mais sobre drives USB, e estou curioso sobre seus MBRs.

Basicamente, abro o arquivo do dispositivo da unidade USB e dou um dump hexadecimal dos primeiros 496 bytes do arquivo. Eu sei que os endereços 0x1fe e 0x1ff contêm os bytes 55 e aa, respectivamente, e que eles marcam o final do "registro mestre de inicialização". No entanto, não tenho certeza do que é o registro mestre de inicialização.

Tanto quanto eu posso dizer, quando um USB é conectado, o BIOS executa as instruções armazenadas no MBR - isso está correto? No entanto, a maioria dos flash drives que vi também tinham setores de inicialização em branco de setores de inicialização repletos de avisos, como "BOOTMGR não presente". Por que raramente existe algum código viável?

Também estou me perguntando em qual processador o código no MBR foi escrito. É 16 bits? 32 bits? 64 bits?

Desculpe se estou exibindo ignorância do assunto; Eu sou relativamente novo no hardware. Agradecemos antecipadamente por suas respostas.

    
por jim 03.08.2014 / 05:43

1 resposta

0

Eu não sei por que você está olhando os primeiros 496 bytes, já que o registro mestre de inicialização (MBR) tem sempre estado 512 bytes em tamanho e está localizado no setor 0 (primeiro setor) do dispositivo de armazenamento.

O que o MBR faz é dizer ao seu sistema operacional sobre a estrutura de partição do seu dispositivo de armazenamento, e também contém também o código executável (o bootloader) que instrui o computador sobre como carregar o sistema operacional.

O bootloader só entra em cena quando você realmente tenta inicializar a partir da sua unidade flash USB. Por exemplo, se você estava tentando instalar o Windows a partir de uma unidade USB que você fez inicializável usando o software como Rufus . Você pode aprender mais sobre a estrutura do MBR lendo o artigo da Wikipedia sobre o MBR .

Veja como é o MBR na minha unidade flash formatada em NTFS:

Vocêprovavelmenteseenganouquandodissequeviusetoresdeinicializaçãovazios.AstringBOOTMGRnotpresentquevocêvênoMBRnãoindicaqueoMBRnãoestejapresentenopendrive.

Naverdade,éamensagemdeerroqueéexibidaaousuárioquandoeletentainicializarapartirdaunidadeflashquandonãoestáconfiguradoparaserinicializável.

OMBRfoiexploradonopassadoporváriosvírusdosetordeinicialização,como Stoned e Brain que mostraria strings como Your computer is now stoned quando o computador foi inicializado.

Quantoàsuaperguntasobreaarquiteturadoprocessadorparaaqualocódigodogerenciadordeinicializaçãofoiescrito,nãoseiexatamentequaléaresposta,massuspeitoqueocódigoseja compilado usando um compilador de 16 bits para ser executado pelo processador em modo real (modo de 16 bits).

Você pode querer olhar para esta pergunta do SuperUser para obter mais informações.

Se você estiver interessado em aprender mais sobre bootloaders, você pode querer tentar construir um você mesmo seguindo as instruções neste artigo extremamente informativo sobre CodeProject:

How to develop your own Boot Loader


Algumas informações adicionais:

por 03.08.2014 / 10:04