Então o mknod
comando, o que isso faz?
/dev/random$ mknod -m 666 random c 1 8
Eu entendo que -m
especifica permissões e, em mknod
geral, cria um inode
no sistema de arquivos que pode ser um arquivo, diretório, dispositivo, fifo, etc ... mas realmente não entendo o que os últimos 3 argumentos fazem.
Os últimos três argumentos são type, major, minor. Eles determinam o que um dispositivo realmente representa; o nome é convenção, mas não determina a funcionalidade. Se você criá-lo como
/dev/wubbalubbadubdub
ainda seria/dev/random
tão longo quanto type, major, minor diz que é assim.Tipo
c
é um dispositivo de caractere (em oposição a um dispositivo de bloco).Os números maiores/menores são, em essência, números mágicos. Não há como entendê-los além de consultar a documentação relevante do kernel.
https://www.kernel.org/doc/Documentation/admin-guide/devices.txt
Portanto, no seu caso, você tem um dispositivo de caractere, maior 1, menor 8, documentado como tal:
Isso é tudo o que há para isso. Se você quiser
/dev/random
tem que usarc 1 8
. Se você quer que seja/dev/urandom
, éc 1 9
. É assim que é historicamente enumerado no kernel.Na maioria das vezes, você apenas usa os nós de dispositivo fornecidos pelo kernel, devtmpfs, udev ou a estrutura estática /dev fornecida pela sua distribuição; você raramente precisa criá-los sozinho e, mesmo assim, pode haver ajudantes para isso, para que você não precise descobrir os números mágicos corretos sozinho.
Você também pode usar o mknod para criar FIFOs, mas o mkfifo deve ser mais fácil de usar para eles.