Isso é possível se CONFIG_BLOCK for indefinido, pois init/do_mounts.c contém mount_root , que é executado após o kernel não executar /init no initramfs, o seguinte:
#ifdef CONFIG_BLOCK
{
int err = create_dev("/dev/root", ROOT_DEV);
if (err < 0)
pr_emerg("Failed to create /dev/root: %d\n", err);
mount_block_root("/dev/root", root_mountflags);
}
#endif
Fonte: link
Nesse caso, mount_root é bem-sucedido sem ter feito nada e o kernel continua tratando o initramfs como uma raiz fs adequada.
Infelizmente, transformar CONFIG_BLOCK off não é prático para a maioria dos usos. O que me levou a acreditar que isso deveria funcionar é que, no patch para a placa de desenvolvimento específica com a qual estou trabalhando, a condição foi substituída por:
#if defined(CONFIG_BLOCK) && !defined(CONFIG_INITRAMFS_SOURCE)
Seria bom adicionar suporte para root=initramfs que faz com que mount_root retorne sem fazer nada, e isso deve ser um patch trivial de uma linha. Eu não tenho idéia se seria aceitável a montante, no entanto.