Estou interessado em aprender como o Linux lida com partições de inicialização separadas. Na verdade, não estou interessado em fazer isso, mas gostaria de saber como isso funciona.
Considere um disco rígido sda
, que possui duas partições sda1
e sda2
. Digamos que sda2
é a root
partição /
que contém o sistema operacional Linux.
Meu entendimento é que o gerenciador de inicialização GRUB2
está montado no /boot
. Quando o diretório /boot
está em uma partição separada sda2
, no entanto, como é que isso pode acontecer antes de /
ser realmente montado?
Como a interação entre o BIOS, o registro de inicialização mestre e o GRUB (ou os arquivos /boot
) ocorre com êxito nesse caso? Será que os dados /boot
não estão realmente montados no /
sistema de arquivos nesse estágio inicial?
Nota: esta pergunta trata da montagem da partição raiz, mas não discute uma partição de inicialização separada.
/boot
não está se referindo a um diretório montado na partição raiz?run-init
que exclui todos os arquivos no initramfs e, em seguida, chroots no sistema de arquivos raiz.UEFI
cada vez mais mais e mais popurlar ;-) @strugeeEu não acho que você esteja entendendo bem aqui. Na página da Wikipedia do GNU GRUB :
excerto
Na versão 2 do GRUB, ocorre o seguinte:
excerto
NOTA: Quando você vê o menu típico do GRUB2 em que seleciona qual OS / Kernel inicializar, está fazendo referência ao
/boot/grub
diretório do sistema neste momento.Referências
fonte
O Linux (o kernel) não se importa com quantas partições de inicialização você possui. Carregar o kernel do disco é o trabalho do bootloader (por exemplo
grub
,grub2
,lilo
) e essas ferramentas também não se preocupam com o número de locais um kernel pode ser localizado. Eles se preocupam apenas com o local específico.Como exemplo, minha partição de inicialização é
/dev/md1
, que é um espelho RAID mdadm suportado pelas partições físicas/dev/sde1
e/dev/sdf1
. Eu posso montá-los individualmente, se quiser, e, como tal, tecnicamente conta como tendo duas partições de inicialização, embora elas devam conter os mesmos dados.Ter duas partições para / boot para mim é um problema de disponibilidade, mas elas podem ser igualmente diferentes / partições de inicialização. O próximo passo é como o gerenciador de inicialização sabe? Aqui está como:
Este é um trecho de uma
grub2
configuração e você notará que as únicas diferenças sãoroot=hd0,1
eroot=hd1,1
que estabelecem qual partição de inicialização que a entrada faz referência.Agora, você será guiado por uma bota para que você possa entender o que está acontecendo aqui.
grub2
) está configurado para saber qual dispositivo e partição contém seu kernel. O Grub2 acessa essa partição diretamente e carrega seu kernel na memória.O carregador de inicialização não se importa com quantas partições de inicialização você possui, apenas se importa onde elas estão e você deve informar essas informações.
O kernel não se importa com quantas partições de inicialização você possui, porque nunca precisa vê-las (você só precisa tê-lo disponível para adicionar novos kernels, por exemplo).
fonte