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).