Primeiro, a menos que você tenha um software em execução para fazer isso, ele não será montado automaticamente. Esse comportamento é inteiramente tratado no userspace, não no kernel, o que é bastante importante, pois montar automaticamente é um pesadelo para a segurança (é possível travar ou pelo menos DoS na maioria dos sistemas com uma imagem de sistema de arquivos cuidadosamente criada).
Agora, sobre o que realmente está acontecendo, her'es a seqüência geral no Linux usando a combinação padrão do udev e udisks para acionar o automount:
- O dispositivo está fisicamente conectado e é enumerado pelo kernel. O kernel reconhece-o como um dispositivo de bloco de algum tipo, configura os drivers apropriados para expor essa interface ao userspace e, em seguida, dispara um uevent para informar o que estiver escutando no espaço do usuário que o novo hardware foi conectado.
- O kernel verifica o dispositivo em busca de partições.
- O Udev vê esse evento e configura os vários nós de dispositivos e links em
/dev
para o dispositivo. Em seguida, ele verifica o dispositivo e suas partições para ver quais sistemas de arquivos estão presentes e onde e armazena esses dados onde outros programas podem consultá-los. - O udisks vê o uevent do kernel, verifica se o udev conclui a configuração e verifica se a varredura feita pelo udev na etapa 3 encontrou algum sistema de arquivos. Em caso afirmativo, e os udisks estão configurados para montar automaticamente sistemas de arquivos recém-conectados, ele emite uma solicitação de montagem para o kernel para cada sistema de arquivos.
- O kernel monta o sistema de arquivos fazendo o seguinte internamente (muito simplificado):
- Primeiro, ele verifica se possui um driver apropriado para o tipo de sistema de arquivos e, se não, tenta carregar um.
- O driver do sistema de arquivos analisa quaisquer metadados exigidos do superbloco do sistema de arquivos (é onde todos os metadados sobre o sistema de arquivos são armazenados).
- Uma cópia na memória do super bloco é criada e preenchida com os dados fornecidos pelo driver do sistema de arquivos e pelo comando mount. Esta estrutura de dados é o que o kernel usa para se referir ao sistema de arquivos internamente. Quaisquer outras referências internas ao sistema de arquivos dentro do kernel apontam para isso.
- O kernel então atualiza sua tabela de montagem interna com uma referência a este super bloco na memória.
Agora, quanto ao modo como o kernel "acompanha o conteúdo", isso é muito mais complicado de explicar adequadamente. Em suma, porém, isso não acontece. Sempre que você vai tentar acessar um arquivo no dispositivo, o kernel procura pela raiz do sistema de arquivos. Há um cache envolvido para acelerar isso, mas não é realmente crítico para nada além de desempenho.