Durante o boot de um sistema Unix, o kernel faz algumas coisas que ele não faz durante a operação normal. Uma dessas coisas é montar um sistema de arquivos no diretório /
; isso é bem diferente das operações normais de montagem, pois a montagem não é acionada por uma chamada de sistema mount
e o diretório de destino não é um diretório existente. Outra coisa é executar um programa como PID 1 , que é diferente da operação normal, pois isso cria um processo sem duplicando um processo existente .
A forma como esta montagem “mágica” do diretório raiz é muito diferente em diferentes variantes do Unix. O kernel escolhe qual dispositivo montar com base nos parâmetros de configuração que podem ser especificados de várias maneiras: configuração em tempo de compilação, configuração de tempo de execução na imagem do kernel, configuração de tempo de execução em algum local de memória predefinido, parâmetros de linha de comando,… funciona em sua máquina, você precisaria examinar a documentação de sua variante Unix e descobrir como sua máquina está configurada.
Para ter uma ideia de como funciona, aqui está uma visão geral de como um kernel moderno do Linux opera. Este não é o exemplo mais simples, porque o Linux tem muito histórico e casos de uso variados.
- O Linux pode começar com um sistema de arquivos “especial” anexado ao caminho
/
, que consiste em arquivos armazenados na RAM. Esse sistema de arquivos especial é chamado de initramfs ; é uma instância do tipo de sistema de arquivos rootfs. O initramfs é preenchido pelo conteúdo transmitido pelo carregador de inicialização por meio de um protocolo dependente da arquitetura, compilado diretamente na imagem do kernel que é carregada na memória pelo carregador de inicialização. - Como alternativa, o Linux pode montar um dispositivo em
/
que faz parte de um conjunto restrito (mas grande) de tipos de volume que são reconhecidos pelo código de inicialização no kernel. Esses tipos de dispositivos incluem qualquer sistema de arquivos em tipos comuns de partições em tipos comuns de discos (qualquer coisa vagamente semelhante a SCSI, incluindo ATA, USB, etc.), bem como discos RAM e montagens NFS. - Dependendo do caminho escolhido, o sistema de arquivos raiz inicial pode ser posteriormente sombreado ou substituído por outro. O sombreamento é o que acontece com um initramfs e é assim que a maioria dos sistemas de desktop e servidor opera (sistemas embarcados, por outro lado, geralmente têm um sistema de arquivos raiz codificado). Substituição é o que acontece com um initrd , que é um tipo particular de disco RAM. O trabalho do initramfs ou initrd é carregar os drivers que fornecem o sistema de arquivos raiz “real” que será usado na operação normal.