RHEL7 / boot excluído do fstab

0

Rodando o RHEL7 Virtual Machine no meu laboratório em casa. / boot é separado de "/".

root@localhost ~# grep part anaconda-ks.cfg -A4
clearpart --none --initlabel
# Disk partitioning information
part pv.251 --fstype="lvmpv" --ondisk=sda --size=12808
part /boot --fstype="xfs" --ondisk=sda --size=512
volgroup rhel --pesize=4096 pv.251
logvol swap  --fstype="swap" --size=512 --name=swap --vgname=rhel
logvol /home  --fstype="xfs" --size=1024 --name=home --vgname=rhel
logvol /  --fstype="xfs" --size=11264 --name=root --vgname=rhel

Eu deletei a entrada "/ boot" do / etc / fstab para ver o que vai acontecer (eu esperava um erro sobre a falta do grub2 ou initramfs). Mas o que acontece é nada! O RHEL7 inicializa e o prompt de login é apresentado a mim e eu consigo fazer o login no sistema. Não consigo descobrir como o grub2, o initramfs e o kernel foram carregados sem / boot?

    
por yaseen 22.05.2016 / 16:13

1 resposta

0

I can not figure out how grub2, then initramfs, and kernel have been loaded without /boot?

Porque todas essas coisas já aconteceram antes do / etc / fstab ser lido.

  1. o firmware carrega o GRUB
  2. O GRUB carrega o kernel & initramfs;
  3. o kernel inicia o init;
  4. o init lê / etc / fstab.
Portanto, nem o firmware nem o GRUB podem depender de / etc / fstab - eles usam seus próprios mecanismos:

  • Os firmwares de BIOS sempre executam o código de inicialização do 0º setor do disco (onde está o MBR). No seu caso, esse 0o setor teria o estágio 1 do GRUB.

  • Os firmwares UEFI mantêm a configuração de inicialização na NVRAM - o instalador do RHEL a configura para procurar grubx64.efi em uma "partição do sistema EFI", que é detectada pelo UUID.

  • Quando o GRUB é iniciado, ele já conhece a partição its , localiza grub.cfg nele e procura pelo kernel Linux baseado no UUID definido lá. (É claro que grub.cfg é frequentemente gerado com base no conteúdo do fstab durante a instalação.)

(O GRUB tem seus próprios drivers para ext4 e até mesmo LVM. Alguns gerenciadores de inicialização, por exemplo, systemd-boot, usam UEFI para acessar arquivos na "partição do sistema EFI". LILO costumava lembrar a posição do kernel no disco, eu acho. )

A outra razão é que o / etc / fstab é uma configuração específica do sistema operacional, portanto, ter o GRUB diretamente dependente disso evitaria que ele inicializasse corretamente sistemas operacionais que não possuem um fstab.

(O mesmo é ainda mais importante para o primeiro passo (carregamento de firmware do GRUB). Basta pensar nisso - se o / etc / fstab fosse necessário para isso, como o firmware inicializaria o Windows?)

Note, no entanto, que /boot precisa estar no fstab - ou montado de alguma outra forma - para que as atualizações do kernel funcionem corretamente. Se você esquecer de montar / boot, a próxima atualização instalará novos módulos, mas não o próprio kernel. Como você não pode misturar diferentes versões de kernel e módulo, o sistema não inicializa corretamente.

    
por 22.05.2016 / 16:31

Tags