Diferença entre partições inicializáveis e não inicializáveis

8

Qual é a diferença entre uma partição inicializável e não inicializável? Eu sei que um usuário não pode inicializar um sistema a partir de uma partição marcada como não inicializável e pode de um marcado inicializável.

Eu quero saber sobre as diferenças subjacentes entre esses sinalizadores de partição.

    
por Sam 04.05.2012 / 19:45

4 respostas

5

Embora tenha sido votado ... possivelmente porque alguém pensou que não estava respondendo a pergunta ... Eu acho que A resposta do @Rony é um bom começo para explicar de que trata a sinalização boot . (Eu estava realmente planejando começar minha resposta com um exemplo semelhante ao que ele forneceu).

Eu estava pronto para falar sobre como o sinal boot , neste momento, é frequentemente ignorado (como mostra o exemplo de @Rony) remanescente histórico de um período em que os discos rígidos eram menores e os bootloaders eram muito menos sofisticado.

Mas então eu descobri que isso já havia sido dito em esta resposta para esta pergunta: Qual é a opção "Sinalizador inicializável" ao instalar uma distro?

Além do mais, havia também um link para um artigo resumido sobre o sinalizador de inicialização que diz

  • " Sua função principal é indicar para um carregador de inicialização do tipo MS-DOS / MS do Windows qual partição inicializar. Em alguns casos, ele é usado pelo Windows XP / 2000 para designar à partição ativa a letra" C : ". "

Bem, isso é embaraçoso ...

Quando afirmei que a boot flag era um " histórico remanescente ", presumi que esse era o caso, porque, claramente, o GRUB não precisava usá-lo. Certamente a Microsoft também teria " movido em ".

A conhecida citação geralmente atribuída a Oscar Wilde acabou sendo verdadeira demais neste caso.

Parece que os carregadores MBR e PBR (Partition Boot Record) usados pelos sistemas operacionais Windows DO esperam que o sinalizador boot seja definido corretamente.

Para testar isso, limpei o sinalizador de inicialização de todas as partições de uma VM do Windows 8. (Veja abaixo. Se você está curioso, aqui está um link para o pastebin de o completo BootInfo Resultado do script )

Drive: sda     
Disk /dev/sda: 26.8 GB, 26843545600 bytes
255 heads, 63 sectors/track, 3263 cylinders, total 52428800 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes

Partition  Boot  Start Sector    End Sector  # of Sectors  Id System

/dev/sda1               2,048       718,847       716,800   7 NTFS / exFAT / HPFS
/dev/sda2             718,848    52,426,751    51,707,904   7 NTFS / exFAT / HPFS

Quando limpei o sinalizador de ambas as partições, recebi a mensagem de erro FATAL: INT18: BOOT FAILURE quando tentei inicializar. (Não tenho certeza se isso é do bootloader do MBR do Windows ou o equivalente de um BIOS da VM).

Apenas para ver o que aconteceria, também defini o sinalizador boot na partição "errada", /dev/sda2 em vez de /dev/sda1 . Isso resultou na janela mostrada na imagem abaixo.

<sigh/>

Essa experiência me faz pensar se a Microsoft ainda está usando o mesmo carregador de setor de inicialização MBR que eles usavam para MS-DOS e Windows 3.0 / 3.1?

    
por 15.05.2012 / 02:47
3

I know that a user cannot boot a system from a partition marked non-bootable and can from one marked bootable.

Do disco rígido do laptop

# fdisk  -l /dev/sda

Disk /dev/sda: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x47b94fbe

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048     1999999      998976   83  Linux
/dev/sda2         2000000     9999999     4000000   82  Linux swap / Solaris
/dev/sda3        10000000    89999999    40000000   83  Linux
/dev/sda4        90000000   976773167   443386584   83  Linux

Do Linux USB inicializável

# fdisk  -l /dev/sdb

Disk /dev/sdb: 8004 MB, 8004304896 bytes
247 heads, 62 sectors/track, 1020 cylinders, total 15633408 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000a5395

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2097151     1047552   83  Linux
/dev/sdb2         2097152    15632383     6767616   83  Linux

Eles não têm uma única partição inicializável, enquanto todos são inicializáveis.

    
por 14.05.2012 / 18:49
2

Apenas um sinalizador na tabela de partições. O MBR pesquisa o sinalizador nas partições e é executado a partir da partição com o sinalizador "boot".

    
por 04.05.2012 / 22:17
0

Ao usar o MBR tradicional da Microsoft, o código no MBR identifica como fazer E / S de disco e passa pelas partições para ver qual delas está marcada com o sinalizador de inicialização. Apenas uma partição deve estar marcada. Em seguida, ele verifica o primeiro setor dessa partição e, se estiver marcado adequadamente, lê o setor e transfere o controle para ele. Se bem me lembro, essa verificação é que o setor termina com 0x55 0xaa.

O resto da responsabilidade pela inicialização cai no código daquele setor e o código que ele carrega, por sua vez.

O GRUB2 usa seu próprio MBR e processo, ignorando esse bit.

    
por 22.05.2012 / 04:52