122 lines
5.0 KiB
Markdown
122 lines
5.0 KiB
Markdown
|
## Comandi di ispezione delle periferiche
|
||
|
|
||
|
I comandi `lspic` e `lsusb` elencano tutti i dispositivi PCI e USB identificati dal SO. Ogni parte hardware richiede un componente software per controllare il dispositivo corrispondente, chiamato *kernel modules*. I moduli el kernel LInux relativi ai dispositivi hardware sono anche chiamati *drivers*.
|
||
|
|
||
|
### lscpi
|
||
|
|
||
|
```bash
|
||
|
> lspci
|
||
|
00:00.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 Root Complex
|
||
|
00:00.2 IOMMU: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 IOMMU
|
||
|
00:01.0 Host bridge: Advanced Micro Devices, Inc. [AMD] Family 17h (Models 00h-1fh) PCIe Dummy Host Bridge
|
||
|
00:01.2 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
|
||
|
00:01.3 PCI bridge: Advanced Micro Devices, Inc. [AMD] Raven/Raven2 PCIe GPP Bridge [6:0]
|
||
|
```
|
||
|
I numeri esadecimali all'inizio di ogni riga sono gli indirizzi univoci del corrispondente dispositivo. Per ottenere maggiori dettagli su un dispositivo:
|
||
|
|
||
|
```bash
|
||
|
lspci -s 04:00.0 -v
|
||
|
|
||
|
04:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
|
||
|
Subsystem: Intel Corporation Wi-Fi 6 AX200NGW
|
||
|
Flags: bus master, fast devsel, latency 0, IRQ 33, IOMMU group 0
|
||
|
Memory at fcb00000 (64-bit, non-prefetchable) [size=16K]
|
||
|
Capabilities: [c8] Power Management version 3
|
||
|
Capabilities: [d0] MSI: Enable- Count=1/1 Maskable- 64bit+
|
||
|
Capabilities: [40] Express Endpoint, IntMsgNum 0
|
||
|
Capabilities: [80] MSI-X: Enable+ Count=16 Masked-
|
||
|
Capabilities: [100] Advanced Error Reporting
|
||
|
Capabilities: [14c] Latency Tolerance Reporting
|
||
|
Capabilities: [154] L1 PM Substates
|
||
|
Kernel driver in use: iwlwifi
|
||
|
```
|
||
|
Il **modulo del kernel** puo' essere identificato nella riga `Kernel driver in use:`.
|
||
|
|
||
|
Un modo rapido per verificare quale modulo del kernel e' in uso per il dispositivo specificato:
|
||
|
|
||
|
```bash
|
||
|
lspci -s 04:00.0 -k
|
||
|
|
||
|
04:00.0 Network controller: Intel Corporation Wi-Fi 6 AX200 (rev 1a)
|
||
|
Subsystem: Intel Corporation Wi-Fi 6 AX200NGW
|
||
|
Kernel driver in use: iwlwifi
|
||
|
Kernel modules: iwlwifi
|
||
|
```
|
||
|
|
||
|
### lsusb
|
||
|
|
||
|
```bash
|
||
|
lsusb
|
||
|
|
||
|
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
|
||
|
Bus 001 Device 002: ID 046d:c52b Logitech, Inc. Unifying Receiver
|
||
|
Bus 001 Device 003: ID 8087:0029 Intel Corp. AX200 Bluetooth
|
||
|
Bus 001 Device 004: ID 3434:0381 Keychron Keychron V8
|
||
|
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
|
||
|
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
|
||
|
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
|
||
|
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
|
||
|
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
|
||
|
```
|
||
|
|
||
|
Per maggiori dettagli su un dispositivo specifico:
|
||
|
|
||
|
```bash
|
||
|
lsusb -vd 3434:0381
|
||
|
```
|
||
|
|
||
|
### lsmod
|
||
|
|
||
|
Mostra un elenco di tutti i moduli attualmente caricati:
|
||
|
|
||
|
```bash
|
||
|
lsmod
|
||
|
|
||
|
Module Size Used by
|
||
|
nft_chain_nat 12288 3
|
||
|
xt_MASQUERADE 16384 1
|
||
|
nf_nat 65536 2 nft_chain_nat,xt_MASQUERADE
|
||
|
bridge 389120 0
|
||
|
stp 12288 1 bridge
|
||
|
llc 16384 2 bridge,stp
|
||
|
```
|
||
|
dove `Size` indica la RAM occupata da modulo, byte. Mentre `Used by` indica i moduli dipendenti dal modulo colonna `Module`.
|
||
|
|
||
|
### modprobe
|
||
|
|
||
|
Comando usato per *caricare* o *scaricare* i moduli del kernel.
|
||
|
|
||
|
```bash
|
||
|
modprobe -r module
|
||
|
|
||
|
# se module non sia usato da un processo in esecuzione sul sistema
|
||
|
```
|
||
|
|
||
|
### lscpu e lshw
|
||
|
|
||
|
Mostra informazioni riguardo alla cpu e all'hardware del sistema.
|
||
|
|
||
|
### modinfo
|
||
|
|
||
|
Mostra una descrizione del modulo specificato: `modinfo nvme_core`. Per la lista di tutti i parametri disponibili: `modinfo -p nvme_core`.
|
||
|
|
||
|
I parametri personalizzati possono essere resi persistenti includendoli nel file `/etc/modprobe.conf/` o in file con estensione .conf nella directory `/etc/modprobe.d/`.
|
||
|
|
||
|
Per impedire il caricamento di un modulo inserire la riga `blacklist module` nel file `/etc/modprobe.d/blacklist.conf`.
|
||
|
|
||
|
## File informativi e File dei dispositivi
|
||
|
|
||
|
I comandi precedenti sono dei front-end per leggere le informazioni hardware memorizzate dal SO. Tali informazioni sono presenti in file conservati nelle directory `/proc` e `/sys`.
|
||
|
|
||
|
La directory `/proc` contiene informazioni relative ai processi in esecuzione e alle risorse hardware. Alcuni dei file importanti:
|
||
|
|
||
|
- `/proc/cpuinfo`
|
||
|
- `/proc/meminfo`
|
||
|
|
||
|
`/sys` contiene informazioni relative ai dispositivi hardware.
|
||
|
|
||
|
Ogni file all'interno della directory `/dev/`, invece, e' associato a un dispositivo di sistema, in particolare a un dispositivo di archiviazione. I dispositivi rimovibili sono gestiti da `udev`, che crea i dispositivi corrispondenti in `/dev/`. Quando vengono rilevati dei nuovi dispositivi, `udev` cerca una regola corrispondente nella cartella `/etc/udev/rules.d/`.
|
||
|
|
||
|
## Dispositivi di archiviazione
|
||
|
|
||
|
Generalmente chiamati *block device*, in quanto i dati vengono letti in blocchi di dati. Ogni dispositivo a blocchi e' identificato da un file in `/dev/`. Dalla versione 2.6 del kernel, tutti i dispositivi, indipendentemente dal tipo di hardware, sono identificati come dispositivi SCSI, tramite la sigla `sd`. Le partizioni sono elencate numericamente. L'eccezione sono le *schede SD* e i dispositivi *nvme*.
|