Connect with us

Linux

Come creare file di dispositivo a blocchi utilizzando il comando mknod


In Linux, tutto è un file, anche i dispositivi fisici come unità disco, CD/DVD ROM e floppy disk sono rappresentati utilizzando file. Tuttavia, questi file non sono normali file di dati. Invece, questi file speciali sono chiamati file di dispositivo e possono generare o ricevere i dati.

Di solito, tutti i file speciali sono presenti sotto l’estensione /dev directory. Alcuni degli esempi comuni di file speciali sono /dev/nullo, /dev/zero, /dev/completoE /dev/sr0.

I file speciali possono essere del tipo carattere o blocco. Come suggerisce il nome, i file di caratteri elaborano un carattere alla volta mentre i file di blocco elaborano più caratteri alla volta.

In questa guida avanzata, discuteremo come creare un file di dispositivo utilizzando l’estensione mknod comando. Dopo aver seguito questa guida, gli utenti Linux saranno in grado di lavorare con sicurezza con diversi tipi di file di dispositivo.

Sintassi del comando mknod

La sintassi del mknod command è leggermente diverso dagli altri comandi di Linux. La differenza principale è che dobbiamo specificare i numeri maggiore e minore durante la creazione di un file di dispositivo di caratteri e blocchi:

$ mknod [OPTIONS]   [MAJOR] [MINOR] ...

Nella sintassi precedente, le parentesi quadre ([]) rappresentano gli argomenti facoltativi mentre le parentesi angolari (<>) rappresentano gli argomenti obbligatori.

In Linux, il numero principale viene utilizzato per specificare il driver del dispositivo che deve essere utilizzato. Questo numero viene assegnato durante la registrazione di un driver di dispositivo.

In modo simile, il numero minore viene utilizzato per specificare il dispositivo effettivo. Possiamo trovare i numeri maggiori e minori riservati nella documentazione del kernel Linux.

1. Crea pipe senza nome in Linux

In Linux, utilizziamo le pipe per abilitare la comunicazione tra processi. In Shell, il tubo è rappresentato utilizzando la linea verticale (|). Legge l’output del processo precedente e lo invia come input al processo successivo.

Capiamolo con un semplice esempio:

$ echo "tecmint.com" | wc -c

In questo esempio, stiamo usando la pipe per leggere l’output del comando echo e inviarlo come input al comando wc per un’ulteriore elaborazione.

Qui abbiamo usato la linea verticale (|) per creare una pipa. Tuttavia, questo crea una pipe senza nome e il suo ambito è limitato solo al comando corrente. Nel prossimo esempio vedremo come creare una named pipe.

2. Creare una pipa denominata in Linux

Possiamo usare il mknod comando per creare una named pipe. La named pipe risiede nel file system proprio come qualsiasi altro file normale. Tuttavia, il suo scopo principale è consentire la comunicazione tra processi tra processi non correlati.

Innanzitutto, specifichiamo il tipo di dispositivo come p per creare una pipe con nome:

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

Ora proviamo a leggere il file:

$ cat /tmp/named-pipe

Qui possiamo vedere che il comando cat è in attesa infinita:

Leggi il file Named Pipe
Leggi il file Named Pipe

Successivamente, apriamo un altro terminale e scriviamo alcuni dati nel file /tmp/name-pipe file:

$ echo "tecmint.com" > /tmp/named-pipe

Infine, vai al primo terminale per visualizzare il risultato:

Visualizza file pipe con nome
Visualizza file pipe con nome

Qui, possiamo vedere che il eco E gatto i comandi sono in grado di comunicare utilizzando la named pipe.

3. Creare un file di dispositivo a caratteri in Linux

In modo simile, possiamo usare il tipo di dispositivo come c per creare un dispositivo di carattere. Tuttavia, dobbiamo utilizzare i numeri maggiori e minori durante la creazione di un dispositivo di caratteri.

Usiamo il comando ls per trovare i numeri maggiori e minori del /dev/completo dispositivo:

$ ls -l /dev/full
Trova il numero maggiore e minore del file
Trova il numero maggiore e minore del file

Nell’output sopra, la coppia di numeri separati da virgole, ad es 1, 7 rappresentano rispettivamente i numeri maggiori e minori.

In Linux, il /dev/completo dispositivo restituisce sempre il Nessuno spazio rimasto sull’errore del dispositivo. Per capirlo, scriviamo alcuni dati su questo dispositivo:

$ echo "tecmint.com" > /dev/full
Scrivi i dati nel file del dispositivo
Scrivi i dati nel file del dispositivo

Ora usiamo il mknod comando per creare un nuovo dispositivo che si comporti come /dev/completo dispositivo:

$ sudo mknod /tmp/full-device c 1 7

Quindi, cambiamo i permessi del file:

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

Infine, scrivi alcuni dati sul dispositivo appena creato:

$ echo "tecmint" > /tmp/full-device
Crea nuovo file dispositivo
Crea nuovo file dispositivo

È importante notare che il dispositivo carattere appena creato si comporta come il /dev/completo dispositivo a causa degli stessi numeri maggiori e minori.

4. Creare un file di dispositivo a blocchi in Linux

Oltre a questo, possiamo specificare il tipo di dispositivo come b per creare un dispositivo a blocchi. Per creare un dispositivo a blocchi dobbiamo utilizzare i numeri maggiore e minore.

In Linux, /dev/sr0 rappresenta il CD/DVD Rom dispositivo. Ora, creiamo un nuovo dispositivo a blocchi che si comporti come /dev/sr0.

Per prima cosa, scopriamo i numeri maggiori e minori del /dev/sr0:

$ ls -l /dev/sr0
Controllare i numeri principali e secondari del file del dispositivo
Controllare i numeri principali e secondari del file del dispositivo

Nell’output sopra, possiamo vedere che i suoi numeri maggiori e minori sono 11 E 0 rispettivamente.

Ora, creiamo un nuovo dispositivo a blocchi con gli stessi numeri maggiore e minore:

$ sudo mknod /tmp/dvd-rom b 11 0
$ ls -l /tmp/dvd-rom 
Crea nuovo dispositivo a blocchi
Crea nuovo dispositivo a blocchi

Successivamente, montiamo l’immagine ISO dal CD/DVD ROM al file /mnt directory e verificare che l’operazione di montaggio abbia esito positivo:

$ sudo mount /tmp/dvd-rom /mnt/
$ ls -1 /mnt/
Monta nuovo dispositivo a blocchi
Monta nuovo dispositivo a blocchi

In questo esempio, possiamo vedere che il /tmp/dvd-rom dispositivo a blocchi è in grado di accedere all’immagine ISO dal CD/DVD ROM.

5. Creare un file dispositivo con autorizzazioni

A volte, è necessario modificare l’autorizzazione di accesso del file del dispositivo prima di utilizzarlo. In questi casi, dobbiamo usare il chmod comando. Tuttavia, possiamo ottenere lo stesso risultato utilizzando il mknod comando invece di utilizzare due comandi separati.

Per capirlo, usiamo il -m opzione per impostare le autorizzazioni di accesso durante la creazione di una named pipe:

$ sudo mknod -m 444 /tmp/pipe-with-permissions p

Ora, verifichiamo che i permessi siano stati impostati correttamente:

$ ls -l /tmp/pipe-with-permissions
Crea file dispositivo con autorizzazioni
Crea file dispositivo con autorizzazioni

In questo esempio, abbiamo utilizzato il -m opzione con la pipe denominata. Tuttavia, possiamo usarlo anche con i dispositivi carattere e blocco.

Conosci qualche altro miglior esempio di mknod comando in Linux? Fateci sapere le vostre opinioni nei commenti qui sotto.


Ti e piaciuto questo articolo?
Supporta il mio lavoro, facendo una donazione!

Click to comment

Leave a Reply

Esegui l'accesso per Commentare

Di tendenza

Close Popup
Questo sito utilizza i cookie per migliorare servizi ed esperienza dei lettori. Se decidi di continuare la navigazione senza blocchi premi su Accetto, oppure continua tranquillamente la navigazione, nessun dato sulla tua navigazione verrà raccolto.
Close Popup
Privacy Settings saved!
Impostazioni

Quando visiti un sito Web, esso può archiviare o recuperare informazioni sul tuo browser, principalmente sotto forma di cookies. Controlla qui i tuoi servizi di cookie personali.

Questi cookie sono necessari per il funzionamento del sito Web e non possono essere disattivati nei nostri sistemi.

Cookie tecnici
Per utilizzare questo sito web usiamo i seguenti cookie tecnici necessari:
  • wordpress_test_cookie
  • wordpress_logged_in_
  • wordpress_sec
  • swpm_session

Google Adsense
Usiamo la pubblicità di Google solo per mantenere attivi i nostro sito. Con ip anonimizzati.

Rifiuta tutti i Servizi
Save
Accetta tutti i Servizi