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.
- o firmware carrega o GRUB
- O GRUB carrega o kernel & initramfs;
- o kernel inicia o init;
- o init lê / etc / fstab.
-
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 quegrub.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.