Linux Tutorial – Puntata 9

di jolek78

Care/i fruitrici e fruitori del blog, in questi post – ogni domenica mattina – si parlerà del sistema operativo GNU/Linux e degli strumenti per utilizzarlo al massimo delle potenzialità. Cercheremo di spiegare come funziona, cosa è il kernel, come costruirsi una vpn, come settare un firewall e giocare col terminale, usare adb e altro. Se il capitalismo della sorveglianza ci vuole passivi consumatori-consumatrici di servizi noi si risponde con un po’ di “cultura informatica” e un MARAMEO (quasi affettuoso). Buona lettura!

Dove e cosa sono i device su linux? Non è esattamente facile rispondere a questa domanda, ci sono varie sfaccettature. Prima di tutto potremmo dire che esistono sia device fisici che virtuali. Che entrambi sono conservati in forma di file dentro il sistema operativo – everything is a file – e che, sopratutto che tutti, ma proprio tutti, sono conservati dentro la directory /dev. Li esploreremo in tre (o forse quattro) puntate, e proveremo a fare qualche riflessione. Fate partire dunque la vostra macchina virtuale, fate il login, aprite la console, munitevi di tanto caffè,  e buon divertimento!

 

DEV (1)

bottega@bottegadelbarbieri  /  ls -lha 
total 84K
drwxr-xr-x 20 root root 4.0K Feb 27 08:56 .
drwxr-xr-x 20 root root 4.0K Feb 27 08:56 ..
lrwxrwxrwx 1 root root 7 Feb 27 08:53 bin -> usr/bin
drwxr-xr-x 5 root root 4.0K Apr 10 14:58 boot
drwxrwxr-x 2 root root 4.0K Feb 27 08:56 cdrom
drwxr-xr-x 20 root root 4.2K Apr 22 18:37 dev   <<<<<<<<
drwxr-xr-x 140 root root 12K Apr 8 06:30 etc
drwxr-xr-x 3 root root 4.0K Feb 27 08:56 home
lrwxrwxrwx 1 root root 7 Feb 27 08:53 lib -> usr/lib
lrwxrwxrwx 1 root root 9 Feb 27 08:53 lib32 -> usr/lib32
lrwxrwxrwx 1 root root 9 Feb 27 08:53 lib64 -> usr/lib64
lrwxrwxrwx 1 root root 10 Feb 27 08:53 libx32 -> usr/libx32
drwx------ 2 root root 16K Feb 27 08:53 lost+found
drwxr-xr-x 2 root root 4.0K Feb 9 18:48 media
drwxr-xr-x 2 root root 4.0K Feb 9 18:48 mnt
drwxr-xr-x 2 root root 4.0K Feb 9 18:48 opt
dr-xr-xr-x 182 root root 0 Apr 22 18:36 proc
drwx------ 3 root root 4.0K Feb 9 19:08 root
drwxr-xr-x 30 root root 940 Apr 22 18:49 run
lrwxrwxrwx 1 root root 8 Feb 27 08:53 sbin -> usr/sbin
drwxr-xr-x 2 root root 4.0K Feb 27 09:10 snap
drwxr-xr-x 2 root root 4.0K Feb 9 18:48 srv
dr-xr-xr-x 13 root root 0 Apr 22 18:36 sys
drwxrwxrwt 13 root root 4.0K Apr 22 18:49 tmp
drwxr-xr-x 14 root root 4.0K Feb 9 18:52 usr
drwxr-xr-x 14 root root 4.0K Feb 9 19:08 var

Alla creazione di questo standard, era importante creare una casa comune dove poter conservare tutti i device. La struttura infatti che stiamo vedendo è estremamente razionale, e segue alla perfezione il filo logico che storicamente parte da Unix e finisce oggi ai sistemi Linux. Listiamo ora il contenuto:

bottega@bottegadelbarbieri  /  ls -lha /dev/ |wc -lmc
212 12008 12008

che significa

212   >  files
12008 >  caratteri
12008 >  bytes

Devices || /dev/loop* || /dev/sd* || /dev/dm*
Listiamo per trovare soltanto i dischi:

bottega@bottegadelbarbieri  /  find /dev/ -group disk -exec ls -lha {} \; 
brw-rw---- 1 root disk 253, 2 Apr 22 18:37 /dev/dm-2
brw-rw---- 1 root disk 253, 1 Apr 22 18:37 /dev/dm-1
brw-rw---- 1 root disk 253, 0 Apr 22 18:37 /dev/dm-0
brw-rw---- 1 root disk 8, 6 Apr 22 18:37 /dev/sda6
brw-rw---- 1 root disk 8, 5 Apr 22 18:37 /dev/sda5
brw-rw---- 1 root disk 8, 2 Apr 22 18:37 /dev/sda2
brw-rw---- 1 root disk 8, 1 Apr 22 18:37 /dev/sda1
brw-rw---- 1 root disk 8, 0 Apr 22 18:37 /dev/sda
crw-rw---- 1 root disk 21, 1 Apr 22 18:37 /dev/sg1
brw-rw---- 1 root disk 7, 7 Apr 22 18:37 /dev/loop7
brw-rw---- 1 root disk 7, 6 Apr 22 18:37 /dev/loop6
brw-rw---- 1 root disk 7, 5 Apr 22 18:37 /dev/loop5
brw-rw---- 1 root disk 7, 4 Apr 22 18:37 /dev/loop4
brw-rw---- 1 root disk 7, 3 Apr 22 18:37 /dev/loop3
brw-rw---- 1 root disk 7, 2 Apr 22 18:37 /dev/loop2
brw-rw---- 1 root disk 7, 1 Apr 22 18:37 /dev/loop1
brw-rw---- 1 root disk 7, 0 Apr 22 18:37 /dev/loop0
crw-rw---- 1 root disk 10, 237 Apr 22 18:37 /dev/loop-control

/dev/loop*
loop devices. Definiti come “pseudo devices”, cioè un sistema di astrazione che permette al filesystem di aggiungere un livello virtuale da associare e far apparire come una sorta di blocco fisico. Tipico e’ in ubuntu l’utilizzo degli pseudo devices per gestire snap, il mai troppo demonizzato (a ragione!) sistema universale d’installazione dei pacchetti di canonical.

/dev/sd*
small devices. Tecnicamente sono i dischi utilizzati dalla nostra macchina virtuale per inserire dati, programmi, files, log e via discorrendo. Sono effettivamente le partizioni del nostro sistema, ognuna delle quali è utilizzata per scopi differenti. Per averne dimostrazione:

bottega@bottegadelbarbieri  /  sudo sfdisk -l
[sudo] password for bottega: 
Disk /dev/sda: 15 GiB, 16106127360 bytes, 31457280 sectors
Disk model: VBOX HARDDISK 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xd226ba8e

Device Boot Start End Sectors Size Id Type
/dev/sda1 * 2048 1050623 1048576 512M b W95 FAT32
/dev/sda2 1052670 31455231 30402562 14.5G 5 Extended
/dev/sda5 1052672 2549759 1497088 731M 83 Linux
/dev/sda6 2551808 31455231 28903424 13.8G 83 Linux
[...]

/dev/dm*
mapper devices. Tecnicamente sono astrazioni logiche per mappare le partizioni lvm di cui abbiamo parlato nella puntata 5. Per poterlo visualizzare attraverso la console:

bottega@bottegadelbarbieri  ~  lsblk --output NAME,KNAME,TYPE,SIZE,MOUNTPOINT |grep dm-*
└─sda6_crypt dm-0 crypt 13.8G 
├─vgxubuntu-root dm-1 lvm 12.8G /
└─vgxubuntu-swap_1 dm-2 lvm 980M [SWAP]

AutoFS || /dev/autofs
autofs è un programma che mantiene aggiornato il montaggio automatico delle directory esterne sul sistema, siano esse samba, nfs, o altro.

bottega@bottegadelbarbieri  ~  sudo ls -lha /dev/autofs 
crw-r--r-- 1 root root 10, 235 Apr 25 05:01 /dev/autofs

Esso agisce sulla base delle informazioni scritte in differenti file:

/etc/auto.master
/etc/auto.net
/etc/auto.misc
/etc/auto.smb
/etc/auto/mnt
/etc/autofs.conf

Nulla a che fare con il montaggio statico delle directory che sono listate in /etc/fstab

bottega@bottegadelbarbieri  ~  cat /etc/fstab |grep -v "#"
/dev/mapper/vgxubuntu-root / ext4 errors=remount-ro 0 1
UUID=efc51c8f-4202-458a-9210-239d075aee17 /boot ext4 defaults 0 2
UUID=880E-018C /boot/efi vfat umask=0077 0 1
/dev/mapper/vgxubuntu-swap_1 none swap sw 0 0

Per avere informazioni su autofs, basterà:

bottega@bottegadelbarbieri  ~  sudo /etc/init.d/autofs status
● autofs.service - Automounts filesystems on demand
Loaded: loaded (/lib/systemd/system/autofs.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2021-04-25 06:41:00 BST; 20min ago
Docs: man:autofs(8)
Process: 741 ExecStart=/usr/sbin/automount $OPTIONS --pid-file /var/run/autofs.pid (code=exited, status=0/SUCCESS)
Process: 1344 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS)
Main PID: 747 (automount)
Tasks: 4 (limit: 2273)
Memory: 3.3M
CGroup: /system.slice/autofs.service
└─747 /usr/sbin/automount --pid-file /var/run/autofs.pid

Quando analizzeremo il montaggio di una directory esterna in nfs, ci renderemo conto che /etc/fstab potrà essere utilizzato ugualmente per assolvere allo stesso scopo

Block || /dev/block
Questa altro non è che un’altra directory dove sono conservati i link ai block devices che abbiamo analizzato in precedenza

->  simbolo del link

bottega@bottegadelbarbieri  ~  ls -lha /dev/block/
total 0
drwxr-xr-x 2 root root 380 Apr 25 06:40 .
drwxr-xr-x 20 root root 4.2K Apr 25 06:40 ..
lrwxrwxrwx 1 root root 6 Apr 25 06:40 11:0 -> ../sr0
lrwxrwxrwx 1 root root 7 Apr 25 06:40 253:0 -> ../dm-0
lrwxrwxrwx 1 root root 7 Apr 25 06:40 253:1 -> ../dm-1
lrwxrwxrwx 1 root root 7 Apr 25 06:40 253:2 -> ../dm-2
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:0 -> ../loop0
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:1 -> ../loop1
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:2 -> ../loop2
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:3 -> ../loop3
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:4 -> ../loop4
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:5 -> ../loop5
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:6 -> ../loop6
lrwxrwxrwx 1 root root 8 Apr 25 06:40 7:7 -> ../loop7
lrwxrwxrwx 1 root root 6 Apr 25 06:40 8:0 -> ../sda
lrwxrwxrwx 1 root root 7 Apr 25 06:40 8:1 -> ../sda1
lrwxrwxrwx 1 root root 7 Apr 25 06:40 8:2 -> ../sda2
lrwxrwxrwx 1 root root 7 Apr 25 06:40 8:5 -> ../sda5
lrwxrwxrwx 1 root root 7 Apr 25 06:40 8:6 -> ../sda6

Nella prossima puntata centreremo la nostra attenzione sui devices tty, ovvero le console che rappresentano la nostra sessione di lavoro. Ci sara da divertirsi, credetemi.

Alla prossima settimana!
jolek78

>> Indice <<
Puntata 8 < > Puntata 10

Il logo “tux-linux-by-deiby-ybied” e’ stato realizzato da laboratoriolinux in licenza Creative Commons BY-NC-SA 2.0

Fabio
Un tizio che pensava di essere uno scienziato. Si ritrovò divulgatore scientifico. Poi si addormentò e si svegliò informatico. Ma era sempre lui.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *