Como criar arquivos de dispositivo no Linux usando o comando mknod

Como criar arquivos de dispositivo no Linux usando o comando mknod

Em Linux, Tudo é um arquivo, mesmo dispositivos físicos, como unidades de disco, CD/DVD ROM e discos de disquete, são representados usando arquivos. No entanto, esses arquivos não são arquivos de dados regulares. Em vez disso, esses arquivos especiais são chamados de arquivos de dispositivo e podem gerar ou receber os dados.

Geralmente, todos os arquivos especiais estão presentes sob o /dev diretório. Alguns dos exemplos comuns de arquivos especiais são /dev/null, /dev/zero, /dev/completo, e /dev/sr0.

Os arquivos especiais podem ser do personagem ou bloco do tipo. Como o nome sugere, os arquivos do caractere processam um caractere em uma época em que, à medida que os arquivos do bloco processam vários caracteres por vez.

Neste guia avançado, discutiremos como criar um arquivo de dispositivo usando o mknod comando. Depois de seguir este guia, os usuários do Linux poderão trabalhar com diferentes tipos de arquivos de dispositivo com confiança.

Índice

1
  • Sintaxe do comando mknod
  • 1. Crie tubo sem nome no Linux
  • 2. Crie um tubo nomeado no Linux
  • 3. Crie um arquivo de dispositivo de caractere no Linux
  • 4. Crie um arquivo de dispositivo em bloco no Linux
  • 5. Crie um arquivo de dispositivo com permissões

Sintaxe do comando mknod

A sintaxe do mknod O comando é um pouco diferente dos outros comandos do Linux. A principal diferença é que precisamos especificar os números maiores e menores, criando um personagem e arquivos de dispositivo de bloqueio:

$ mknod [opções] [major] [Minor]… 

Na sintaxe acima, os colchetes ([]) representar os argumentos opcionais, enquanto suportes angulares () representar os argumentos obrigatórios.

No Linux, o número principal é usado para especificar o driver do dispositivo que precisa ser usado. Este número é atribuído ao registrar um driver de dispositivo.

De maneira semelhante, o número menor é usado para especificar o dispositivo real. Podemos encontrar os números maiores e menores reservados na documentação do kernel Linux.

1. Crie tubo sem nome no Linux

No Linux, usamos tubos para ativar a comunicação entre processos. No shell, o tubo é representado usando a linha vertical (|). Ele lê a saída do processo anterior e o envia como entrada para o próximo processo.

Vamos entender isso com um exemplo simples:

$ eco "Tecmint.com "| WC -C 

Neste exemplo, estamos usando o tubo para ler a saída do comando Echo e enviá -lo como entrada para o comando WC para processamento adicional.

Aqui, usamos a linha vertical (|) Para criar um tubo. No entanto, isso cria um tubo sem nome e seu escopo é limitado apenas ao comando atual. No próximo exemplo, veremos como criar um tubo nomeado.

2. Crie um tubo nomeado no Linux

Podemos usar o mknod comando para criar um tubo nomeado. O tubo nomeado reside no sistema de arquivos como qualquer outro arquivo regular. No entanto, seu principal objetivo é permitir a comunicação entre processos entre processos não relacionados.

Primeiro, vamos especificar o tipo de dispositivo como p Para criar um tubo nomeado:

$ mknod /tmp /nome de nome p $ ls -l /tmp /named-pipe 

Agora, vamos tentar ler o arquivo:

$ CAT /TMP /PIPE nomeado 

Aqui, podemos ver que o comando do gato está esperando infinitamente:

Leia o arquivo de tubulação nomeado

Em seguida, vamos abrir outro terminal e escrever alguns dados para o /TMP/Nome-Pipe arquivo:

$ eco "Tecmint.com "> /tmp /nome de nome 

Finalmente, vá até o primeiro terminal para ver o resultado:

Exibir arquivo de tubulação nomeado

Aqui, podemos ver que o eco e gato Os comandos podem se comunicar usando o tubo nomeado.

3. Crie um arquivo de dispositivo de caractere no Linux

De maneira semelhante, podemos usar o tipo de dispositivo como c Para criar um dispositivo de personagem. No entanto, devemos ter que usar os números maiores e menores ao criar um dispositivo de caractere.

Vamos usar o comando ls para encontrar o número maior e menor do /dev/completo dispositivo:

$ ls -l /dev /completo 
Encontre o número de arquivo maior e menor

Na saída acima, o par de números separado por vírgula.e. 1, 7 representar os números maiores e menores, respectivamente.

Em Linux, o /dev/completo dispositivo sempre retorna o Nenhum espaço deixou no erro do dispositivo. Para entender isso, vamos escrever alguns dados para este dispositivo:

$ eco "Tecmint.com "> /dev /completo 
Escreva dados no arquivo de dispositivo

Agora, vamos usar o mknod comando para criar um novo dispositivo que se comporte o mesmo que /dev/completo dispositivo:

$ sudo mknod /tmp /device completo c 1 7 

Em seguida, vamos alterar as permissões de arquivo:

$ sudo chmod 666 /tmp /device completo $ ls -l /tmp /device completo 

Por fim, escreva alguns dados para o dispositivo recém -criado:

$ echo "Tecmint"> /tmp /device completo 
Crie novo arquivo de dispositivo

É importante observar que o dispositivo de personagem recém -criado se comporta como o /dev/completo dispositivo por causa dos mesmos números maiores e menores.

4. Crie um arquivo de dispositivo em bloco no Linux

Além disso, podemos especificar o tipo de dispositivo como b Para criar um dispositivo de bloco. Para criar um dispositivo de bloco, precisamos usar os números maiores e menores.

Em Linux, /dev/sr0 representa o CD/DVD ROM dispositivo. Agora, vamos criar um novo dispositivo de bloco que se comporte o mesmo que /dev/sr0.

Primeiro, vamos descobrir o número maior e menor do /dev/sr0:

$ ls -l /dev /sr0 
Verifique o arquivo de dispositivo Maiores e pequenos números

Na saída acima, podemos ver que seus números maiores e menores são 11 e 0 respectivamente.

Agora, vamos criar um novo dispositivo de bloco com os mesmos números maiores e menores:

$ sudo mknod /tmp /dvd-rom b 11 0 $ ls -l /tmp /dvd-rom 
Crie um novo dispositivo de bloco

Em seguida, vamos montar a imagem ISO do CD/DVD ROM para o /mnt diretório e verifique se a operação de montagem é bem -sucedida:

$ sudo montagem /tmp /dvd -rom /mnt /$ ls -1 /mnt / 
Montar um novo dispositivo de bloco

Neste exemplo, podemos ver que o /tmp/dvd-rom O dispositivo de bloco pode acessar a imagem ISO do CD/DVD ROM.

5. Crie um arquivo de dispositivo com permissões

Às vezes, precisamos modificar a permissão de acesso do arquivo de dispositivo antes de usá -lo. Nesses casos, temos que usar o chmod comando. No entanto, podemos alcançar o mesmo resultado usando o mknod comando em vez de usar dois comandos separados.

Para entender isso, vamos usar o -m opção para definir permissões de acesso ao criar um tubo nomeado:

$ sudo mknod -m 444 /tmp /tubo-with-permissões p 

Agora, vamos verificar se as permissões foram definidas corretamente:

$ ls -l /tmp /tubo-with-permissões 
Crie arquivo de dispositivo com permissões

Neste exemplo, usamos o -m opção com o tubo nomeado. No entanto, podemos usá -lo com o personagem e os dispositivos de bloqueio também.

Você conhece qualquer outro melhor exemplo do mknod comando no linux? Deixe -nos saber suas opiniões nos comentários abaixo.