UEFI / GPT e movendo C: \ partição

2

Eu lembro que quando os mobos costumavam usar o BIOS e o gerenciador de inicialização estava localizado no MBR, mover a partição do Windows fazia com que o sistema não inicializasse. Eu acabei de mover (acidentalmente) a partição C (tentando redimensioná-la) no PC de um amigo que tem uma tabela de partição GPT e uma placa-mãe UEFI e - para minha surpresa e deleite, o PC começou perfeitamente sem reclamar da mudança do primeiro setor da partição (e meu amigo não está com raiva de mim). Eu acredito que é porque os bootloaders UEFI usam UIDs das partições em vez de endereços.

Isso me faz pensar se isso significa que posso mover livremente a partição do sistema operacional em um sistema GPT. Isso também se aplica apenas ao Windows ou ao GRUB?

    
por Manchineel 25.04.2017 / 12:38

1 resposta

4

I believe that's because UEFI bootloaders use the partitions' UIDs instead of addresses.

Isso é parcialmente, mas não completamente, correto. Carregadores de inicialização no modo BIOS, como sua instrução acima implica, geralmente dependem de números de setores para ajudar a identificar o código subseqüente. Ou seja, o BIOS lê o MBR e executa o código que ele contém. O MBR é muito pequeno para manter um gerenciador de inicialização realmente flexível, portanto, ele passa o controle para código localizado em outro lugar, geralmente identificando-o pelo seu número de setor localizando uma partição com um sinalizador de inicialização definido e executando o código no EBR ) dessa partição. Este código do carregador de inicialização secundário pode repetir esse processo, mais uma vez, muitas vezes, dependendo dos números do setor. Assim, mover partições ou redimensioná-las de seus pontos de início pode tornar um sistema operacional não inicializável, pois o próprio código do carregador de inicialização é movido.

No EFI, por outro lado, os carregadores de boot não são armazenados no MBR ou nas EBRs das partições. Em vez disso, os carregadores de boot são armazenados como arquivos de programa EFI na partição do sistema EFI (ESP) . Esses arquivos de programa podem ser tão grandes conforme necessário (até os limites impostos por tamanhos de arquivo, tamanho de RAM, etc.), para que o carregador de inicialização não precise ser dividido da maneira estranha que os carregadores de inicialização do BIOS normalmente dividem. Além disso, o EFI entende as partições, diferentemente do BIOS, portanto, um carregador de inicialização no modo EFI pode fazer referência a partições se necessário.

Embora um gestor de arranque EFI possa localizar uma partição pelo seu GUID ou de alguma outra forma, essa não é a chave distinção que é importante para sua pergunta. Carregadores de inicialização no modo BIOS geralmente quebram quando você move partições porque o próprio código do carregador de boot se move; mas no EFI, o gerenciador de partida está em um arquivo, não no código que está bloqueado em um setor específico. Portanto, mover a partição do SO não move o código do carregador de boot. Mesmo se você moveu o ESP (onde o carregador de boot reside), o EFI entende partições e o sistema de arquivos FAT, e assim pode continuar localizando o carregador de boot, desde que as informações de identificação do ESP e o nome do carregador de boot não mudem como um resultado.

This makes me wonder if this means that I can freely move the OS partition on a GPT system. Also does this only apply to Windows or to GRUB too?

Como regra geral, é mais seguro mover partições em sistemas baseados em EFI do que em sistemas baseados em BIOS. Eu não diria que é absolutamente 100% seguro, no entanto. Primeiro, há sempre o risco de uma operação de movimentação de partições resultar em danos no sistema de arquivos. Isso é apenas uma advertência padrão sempre que discutimos tais operações. A questão mais importante é que os carregadores de inicialização podem fazer o que quiserem da maneira que quiserem. Embora eu não saiba de nenhum exemplo disso, um carregador de inicialização baseado em EFI poderia contar com números de setores brutos para identificar o kernel de um sistema operacional, o que tornaria inseguro mover a partição na qual o kernel reside. Se o gerenciador de partida utilizar recursos como números de partição para identificar uma partição com um kernel e, se a movimentação da partição alterar o número da partição, o processo de inicialização poderá falhar após a movimentação da partição. OTOH, mover a partição pode não criar problemas se o número da partição não for alterado. Assim, a segurança da operação de movimentação da partição depende do carregador de inicialização e dos detalhes do que acontece quando você move a partição.

    
por 25.04.2017 / 17:58