Não é realmente possível criar um dispositivo sem a ajuda do kernel (escrevendo seu próprio módulo de driver do kernel); embora haja FUSE e menos conhecido e não comumente suportado CUSE para dispositivos de caractere no espaço do usuário, e NBD poderia ser usado para dispositivos de bloco.
Se for suficiente para ser semelhante, você pode usar pipes nomeados usando mkfifo
e, em seguida, ter algum processo que grave dados "aleatórios" neste dispositivo, permitindo que outros processos leiam os mesmos dados de volta a partir dele. Você pode substituir /dev/random
e /dev/urandom
por um canal assim chamado e a maioria dos programas leria alegremente seus dados "aleatórios", já que poucos programas pensam em verificar se estão realmente falando com o dispositivo aleatório real. (até que o ioctl aleatório seja mais usado)
# mkfifo /dev/foobar
# while true; do dd if=/dev/urandom of=/dev/foobar; done &
# hexdump -C -n 16 /dev/foobar
00000000 ec ec 91 4b 9a 62 95 b0 95 7f 44 16 21 8d cd de |...K.b....D.!...|