Em computadores que estão em conformidade com a seqüência do BIOS de inicialização do IBM PC:
- O MBR (setor absoluto 0) do disco é carregado pelo BIOS na memória 0000: 7C00.
- Esse código é executado.
Forme o IBM ao W7
O código usado pelo IBM PC para inicializar pode ser visto aqui: Primeira versão do MBR da IBM® Personal Computer ™ DOS 2.00
Esse código tem muitas versões que também são apresentadas nas páginas do Starman.
Um ponto de partida sobre essas muitas versões pode ser esta página: do MS-DOS 3.30 até o MS-Windows ™ 95 (A)
Um dos códigos MBR mais comuns é o seguinte: MBR para: MS-Windows ™ 95B, 98 , 98SE e ME
A maioria das versões de código usadas apenas para carregar o próximo VBR (Volume Boot Record). O VBR da partição marcada como inicializável na tabela de partição e, em seguida, transferir a execução para ela.
(Por favor, entenda que o VBR não é o setor de disco absoluto 0 ou W7 MBR )
Pesquise esta nota sobre o montador na página W7 MBR :
; The following code uses INT 13, Function 42h ("Extended Read") to read the
; first sector (VBR) of the bootable partition into Memory at location 0x7c00.
Windows ™ 7 (e Vista) VBR (Volume Boot Record)
É interessante ler isso na página do W7VBR :
; The following code uses INT 13, Function 42h ("Extended Disk Read") to read
; 1 sector at a time of the remaining 15 sectors of the Boot Record Area into
; Memory; starting at location 7E00.
Como você pode confirmar, o código de inicialização iniciado no MBR (setor de disco 0) carregou o VBR (registro de inicialização de volume) e muitos (15 em W7) os seguintes setores.
GRUB
Mas estamos falando sobre o GRUB aqui, então, vá para a página do GRUB :
E pesquise por este código:
[7C44] -> Note: A very important location for anyone using GRUB!
This (4-byte) Quad-Word contains the location of GRUB's
stage2 file in sectors! It's called "stage2_sector" in
the stage1.S code. If GRUB is installed in the MBR by a
distro that always includes a number of sectors from
stage2 immediately following the GRUB MBR, you will see
the bytes 01 00 00 00 in this location; otherwise, it
will point to stage2 in the "/boot/grub" directory.
Isso é quase sempre 01 00 00 00
(ou apenas: o próximo setor).
O que isso significa é que o BIOS carrega o setor absoluto 0 (MBR), o código do GRUB instalado no MBR continua lendo os seguintes setores. Até o tamanho de core.img
(GRUB2) em distros recentes (cerca de 60 setores, ou ~ 30 kB). As unidades atuais deixam um Mega-byte livre após o MBR, portanto, não há problema. Os discos EFI têm uma partição separada para todo esse código e há ainda menos problemas (por tamanho, isto é).
Resposta
O estágio de gravação do GRUB legado2 ou, opcionalmente, o estágio 1.5 em alguns casos de canto, para o MBR e vários / muitos dos 62 setores a seguir.
E isso também é explicado nas imagens em página Grub da Wikipédia .
Do site GNU 10 arquivos de imagem do GRUB :
stage1
This is an essential image used for booting up GRUB. Usually, this is
embedded in an MBR or the boot sector of a partition. Because a PC boot
sector is 512 bytes, the size of this image is exactly 512 bytes.
All stage1 must do is to load Stage 2 or Stage 1.5 from a local disk.
Because of the size restriction, stage1 encodes the location of Stage 2
(or Stage 1.5) in a block list format, so it never understand any
filesystem structure.
NOTA : O stage2 pode ser gravado em outro disco físico. A partir da página do GRUB :
[7C40] -> 80 ("Boot Drive") NOTE: For those of you with multi-OS
booting systems, if your Linux installation with GRUB's
See: remaining software (stage2, menu file, etc.) is located
7C5A somewhere other than on the Primary Master drive, this
value will be 81, 82, etc. depending upon which drive
that Linux OS's /boot/grub directory is located. In the
stage1.S file, it's called the GRUB_INVALID_DRIVE byte
and commented as: "the disk to load stage2 from." (The
word INVALID has something to do with the code logic.)