A maneira como eu resolveria esse problema é ter o que é chamado de "initrd". Eu não sei o quão familiar você ficou com o initrd ao fazer o Linux a partir do zero, mas eles têm uma página sobre o initrd aqui:
O que o initrd faz é agir como um pequeno sistema de arquivos raiz no qual o kernel inicia após carregar o kernel. Este sistema de arquivos simples tem todos os arquivos que o kernel precisa para montar o sistema de arquivos raiz e carregar outros drivers que o sistema precisa para inicializar. Uma vez que o sistema de arquivos de inicialização real é montado no initrd, o initrd faz com que o sistema de arquivos raiz, o sistema de arquivos, termine e o kernel inicie o processo init no sistema de arquivos raiz real.
É, de fato, possível fazer um sistema micro-Linux que nunca sai do initrd; Eu fiz isso há alguns anos atrás ao fazer uma distro Linux com um disquete do zero.