O Udev preenche /dev automaticamente com base nos drivers que são carregados no kernel e nos dispositivos que esses drivers detectam. Os nomes dos dispositivos e suas permissões são baseados em um conjunto de regras que os administradores podem ajustar. A maioria dos sistemas Linux deve usar o udev; a exceção são sistemas (geralmente incorporados) onde a configuração de hardware é conhecida no momento em que o sistema é configurado e não será alterado posteriormente.
Você normalmente chamaria udev razoavelmente cedo na sua sequência de inicialização. Uma das poucas coisas que você deve (deve?) Fazer antes disso é montar /proc e /sys . Depois de iniciar o daemon, chame udevadm trigger --action=add; udevadm settle para fazer o udev processar todos os eventos pendentes do kernel ( trigger ) e aguarde até que os eventos sejam processados antes de continuar ( settle ). Você pode então prosseguir para localizar o dispositivo que contém o sistema de arquivos raiz.
Além do binário udevd , você precisará das outras partes de udev em seu initrd. Isso inclui arquivos de configuração em /etc/udev , a configuração básica
em /lib/udev , bem como binários auxiliares, como scsi_id também em /lib/udev . Você precisa de todos os programas que são chamados das regras do udev que você inclui no initrd.
No final do initrd, antes de transferir o controle para a partição raiz real, você precisará parar udevd como qualquer outro programa do initrd. Isso não remove nenhum dispositivo de /dev . Use mount --move /dev /root/dev para mover o /dev montado para a raiz real.
O Gentoo tem um guia initramfs e um página wiki do initramfs que menciona o udev entre outras coisas. O initramfs é o sucessor moderno do initrd, usando um arquivo cpio em vez de uma imagem do sistema de arquivos e com uma interface de processo diferente (em um initrd, /linuxrc deve sair, enquanto em um initramfs, /init deve exec do init a raiz real); a maioria dos sistemas mudaram atualmente (mesmo que o arquivo ainda possa ser chamado de initrd).