Primeiro, não são apenas os drivers do sistema de arquivos. Também são os drivers de qualquer dispositivo de armazenamento no qual o sistema de arquivos está. E possivelmente mais se você usar o LVM, criptografia, etc.
Independentemente disso, é definitivamente possível construí-los no kernel. Eu sei que o slackware tem pelo menos uma opção de kernel chamada 'enorme' que faz exatamente isso e não requer um initramfs para um hardware típico de PC.
A desvantagem é que tal kernel tem que incluir tudo que qualquer um possa precisar: todo sistema de arquivos possível que possa ser usado como root, os drivers de dispositivo para qualquer sistema de arquivos, etc. Então você acaba com um kernel inchado que contém muitos códigos não usados e desperdiça memória.Eu acho que existem alguns drivers que só podem ser construídos como módulos do kernel, mas isso é mais uma escolha de design do que uma limitação técnica real.
Responder a edições:
-
Provavelmente depende de quem você pergunta e em que contexto. Para mim, é tudo o que é executado no espaço do kernel para incluir todos os drivers. Um desenvolvedor de kernel pode ter uma visão diferente com muitos outros nomes para diferentes partes.
-
Na verdade, a grande maioria do código do kernel é de módulos e drivers carregáveis. Algumas delas são bem grandes. No meu sistema, apenas o btrfs é comprimido em 500 kB. O NFS é quase tão grande. ext4 é de 300 kB. Também há um grande número de dispositivos de armazenamento suportados e você pode precisar de qualquer um deles para obter seu sistema de arquivos raiz. Basta navegar pelo
/lib/modules/*/kernel/drivers/
em um sistema linux e você verá.