Crea sito
30 Settembre 2020

Officine Informatiche Roma

ICT SERVICES ROMA – BAZAAR

LINUX LEZ 8 – Determinare e configurare le impostazioni hardware

18 min read

Introduzione

Sin dai primi anni dell’elaborazione elettronica, i produttori di business e personal computer hanno integrato una varietà di parti hardware nelle loro macchine, che a loro volta devono essere supportate dal sistema operativo. Ciò potrebbe essere schiacciante dal punto di vista dello sviluppatore del sistema operativo, a meno che il settore non stabilisca standard per i set di istruzioni e la comunicazione dei dispositivi. Simile allo strato di astrazione standardizzato fornito dal sistema operativo a un’applicazione, questi standard semplificano la scrittura e la manutenzione di un sistema operativo non legato a un modello hardware specifico. Tuttavia, la complessità dell’hardware sottostante integrato a volte richiede aggiustamenti su come le risorse dovrebbero essere esposte al sistema operativo, in modo che possa essere installato e funzionare correttamente.

Alcune di queste regolazioni possono essere eseguite anche senza un sistema operativo installato. La maggior parte delle macchine offre un’utilità di configurazione che può essere eseguita all’accensione della macchina. Fino alla metà degli anni 2000, l’utilità di configurazione era implementata nel BIOS ( Basic Input / Output System ), lo standard per il firmware contenente le routine di configurazione di base presenti nelle schede madri x86. Dalla fine del primo decennio degli anni 2000, le macchine basate sull’architettura x86 hanno iniziato a sostituire il BIOS con una nuova implementazione chiamata UEFI ( Unified Extensible Firmware Interface), che presenta funzionalità più sofisticate per l’identificazione, i test, la configurazione e gli aggiornamenti del firmware. Nonostante la modifica, non è raro chiamare ancora l’utilità di configurazione BIOS, poiché entrambe le implementazioni soddisfano lo stesso scopo di base.

Nota

Ulteriori dettagli sulle somiglianze e le differenze tra BIOS e UEFI saranno trattati in una lezione successiva.

Attivazione del dispositivo

L’utilità di configurazione del sistema viene visualizzata dopo aver premuto un tasto specifico all’accensione del computer. Quale tasto premere varia da produttore a produttore, ma di solito è Delo uno dei tasti funzione, come F2F12. La combinazione di tasti da utilizzare viene spesso visualizzata nella schermata di accensione.

Nell’utilità di configurazione del BIOS è possibile abilitare e disabilitare le periferiche integrate, attivare la protezione degli errori di base e modificare le impostazioni hardware come IRQ (richiesta di interruzione) e DMA (accesso diretto alla memoria). La modifica di queste impostazioni è raramente necessaria sulle macchine moderne, ma potrebbe essere necessario apportare modifiche per risolvere problemi specifici. Esistono tecnologie RAM, ad esempio, compatibili con velocità di trasferimento dati più elevate rispetto ai valori predefiniti, quindi si consiglia di modificarlo con i valori specificati dal produttore. Alcune CPU offrono funzionalità che potrebbero non essere necessarie per l’installazione specifica e che possono essere disattivate. Le funzioni disabilitate riducono il consumo di energia e possono aumentare la protezione del sistema, poiché anche le funzioni della CPU contenenti bug noti possono essere disabilitate.

Se la macchina è dotata di molti dispositivi di archiviazione, è importante definire quale ha il bootloader corretto e dovrebbe essere la prima voce nell’ordine di avvio del dispositivo. Il sistema operativo potrebbe non caricarsi se il dispositivo errato viene visualizzato per primo nell’elenco di verifica dell’avvio del BIOS.

Ispezione del dispositivo in Linux

Una volta identificati correttamente i dispositivi, spetta al sistema operativo associare i componenti software corrispondenti richiesti da essi. Quando una funzionalità hardware non funziona come previsto, è importante identificare dove si sta verificando esattamente il problema. Quando un componente hardware non viene rilevato dal sistema operativo, è molto probabile che la parte – o la porta a cui è collegato – sia difettosa. Quando la parte hardware viene rilevata correttamente, ma non funziona correttamente, potrebbe esserci un problema sul lato del sistema operativo. Pertanto, uno dei primi passi quando si affrontano i problemi relativi all’hardware è verificare se il sistema operativo sta rilevando correttamente il dispositivo. Esistono due modi di base per identificare le risorse hardware su un sistema Linux: usare comandi specializzati o leggere file specifici all’interno di filesystem speciali.

Comandi per ispezione

I due comandi essenziali per identificare i dispositivi collegati in un sistema Linux sono:

lspci

Mostra tutti i dispositivi attualmente collegati al bus PCI ( Peripheral Component Interconnect ). I dispositivi PCI possono essere un componente collegato alla scheda madre, come un controller del disco, o una scheda di espansione inserita in uno slot PCI, come una scheda grafica esterna.

lsusb

Elenca i dispositivi USB ( Universal Serial Bus ) attualmente collegati alla macchina. Sebbene esistano dispositivi USB per quasi tutti gli scopi immaginabili, l’interfaccia USB è ampiamente utilizzata per collegare dispositivi di input – tastiere, dispositivi di puntamento – e supporti di archiviazione rimovibili.

L’uscita di comandi lspcilsusbcostituito da un elenco di tutti i dispositivi PCI e USB identificati dal sistema operativo. Tuttavia, il dispositivo potrebbe non essere ancora completamente operativo, poiché ogni parte hardware richiede un componente software per controllare il dispositivo corrispondente. Questo componente software si chiama modulo kernel e può far parte del kernel Linux ufficiale o essere aggiunto separatamente da altre fonti.

I moduli del kernel Linux relativi ai dispositivi hardware sono anche chiamati driver , come in altri sistemi operativi. I driver per Linux, tuttavia, non sono sempre forniti dal produttore del dispositivo. Mentre alcuni produttori forniscono i propri driver binari da installare separatamente, molti driver sono scritti da sviluppatori indipendenti. Storicamente, le parti che funzionano su Windows, ad esempio, potrebbero non avere un modulo kernel controparte per Linux. Al giorno d’oggi, i sistemi operativi basati su Linux hanno un forte supporto hardware e la maggior parte dei dispositivi funziona senza sforzo.

I comandi direttamente correlati all’hardware richiedono spesso i privilegi di root per l’esecuzione o mostreranno informazioni limitate solo quando eseguiti da un utente normale, quindi potrebbe essere necessario effettuare il login come root o eseguire il comando con sudo. Il seguente output di comando lspci, ad esempio, mostra alcuni dispositivi identificati:

# lspci
01: 00.0 Controller compatibile VGA: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
04: 02.0 Controller di rete: Ralink corp. RT2561 / RT61 802.11g PCI
04: 04.0 Controller audio multimediale: VIA Technologies Inc. ICE1712 [Envy24] Controller I / O PCI multicanale (rev 02)
04: 0b.0 FireWire (IEEE 1394): LSI Corporation FW322 / 323 [TrueFire] 1394a Controller (rev 70)

L’output di tali comandi può essere lungo decine di righe, quindi gli esempi precedenti e successivi contengono solo le sezioni di interesse. I numeri esadecimali all’inizio di ogni riga sono l’indirizzo univoco del corrispondente dispositivo PCI. Il comando lspcimostra ulteriori dettagli su un dispositivo specifico se il suo indirizzo è fornito con l’opzione -s, accompagnato dall’opzione -v:

# lspci -s 04: 02.0 -v
04: 02.0 Controller di rete: Ralink corp. RT2561 / RT61 802.11g PCI
    Sottosistema: Linksys WMP54G v4.1
    Flag: master bus, devsel lento, latenza 32, IRQ 21
    Memoria a e3100000 (32 bit, non prefetchable) [size = 32K]
    Funzionalità: [40] Power Management versione 2
    driver del kernel in uso: rt61pci

L’output ora mostra molti più dettagli del dispositivo sull’indirizzo 04:02.0. È un controller di rete, il cui nome interno è Ralink corp. RT2561/RT61 802.11g PCISubsystemè associato al marchio e al modello del dispositivo -  Linksys WMP54G v4.1 - e può essere utile per scopi diagnostici.

Il modulo del kernel può essere identificato nella riga kernel driver in use, che mostra il modulo rt61pci. Da tutte le informazioni raccolte, è corretto presumere che:

  1. Il dispositivo è stato identificato.

  2. È stato caricato un modulo kernel corrispondente.

  3. Il dispositivo dovrebbe essere pronto per l’uso.

Un altro modo per verificare quale modulo del kernel è in uso per il dispositivo specificato è fornito dall’opzione -k, disponibile nelle versioni più recenti di lspci:

# lspci -s 01: 00.0 -k
01: 00.0 Controller compatibile VGA: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2)
    driver del kernel in uso: nvidia
    moduli del kernel: nouveau, nvidia_drm, nvidia

Per il dispositivo scelto, una scheda GPU NVIDIA lspciindica che il modulo in uso è chiamato nvidia, alla linea kernel driver in use: nvidiae tutti i moduli kernel corrispondenti sono elencati nella riga kernel modules: nouveau, nvidia_drm, nvidia.

Il comando lsusbè simile lspci, ma elenca esclusivamente le informazioni USB:

# lsusb
Bus 001 Dispositivo 029: ID 1781: 0c9f Più fornitori USBtiny
Bus 001 Dispositivo 028: ID 093a: 2521 Mouse ottico Pixart Imaging, Inc.
Bus 001 Dispositivo 020: ID 1131: 1001 Adattatore Bluetooth integrato System Solution Corp. KY-BT100
Bus 001 Dispositivo 011: ID 04f2: 0402 Tastiera Chicony Electronics Co., Ltd Genius LuxeMate i200
Bus 001 Dispositivo 007: ID 0424: 7800 Standard Microsystems Corp.
Bus 001 Dispositivo 003: ID 0424: 2514 Hub USB 2.0 standard Microsystems Corp.
Bus 001 Dispositivo 002: ID 0424: 2514 Hub USB 2.0 standard Microsystems Corp.
Bus 001 Dispositivo 001: ID 1d6b: 0002 Hub principale Linux Foundation 2.0

Il comando lsusb mostra i canali USB disponibili e i dispositivi ad essi collegati. Come per lspci, l’opzione -vvisualizza un output più dettagliato. Un dispositivo specifico può essere selezionato per l’ispezione fornendo il suo ID all’opzione -d:

# lsusb -v -d 1781: 0c9f
Bus 001 Dispositivo 029: ID 1781: 0c9f Più fornitori USBtiny
Descrittore dispositivo:
  bLunghezza 18
  bDescriptorType 1
  bcdUSB 1.01
  bDeviceClass 255 Classe specifica del fornitore
  bDeviceSubClass 0
  bDeviceProtocol 0
  bMaxPacketSize0 8
  idVendor 0x1781 Fornitori multipli
  idProduct 0x0c9f USBtiny
  bcdDevice 1.04
  iManufacturer 0
  iProduct 2 USBtiny
  iSerial 0
  bNumConfigurations 1

Con l’opzione -t, il comando lsusbmostra gli attuali mapping dei dispositivi USB come un albero gerarchico:

# lsusb -t /: Bus 01.Porta 1: Dev 1, Class = root_hub, Driver = dwc_otg / 1p, 480M | __ Porta 1: Dev 2, If 0, Class = Hub, Driver = hub / 4p, 480M | __ Porta 1: Dev 3, If 0, Class = Hub, Driver = hub / 3p, 480M | __ Porta 2: Dev 11, If ​​1, Class = Human Interface Device, Driver = usbhid, 1.5M | __ Porta 2: Dev 11, If ​​0, Class = Human Interface Device, Driver = usbhid, 1.5M | __ Porta 3: Dev 20, If 0, Class = Wireless, Driver = btusb, 12M | __ Porta 3: Dev 20, If 1, Class = Wireless, Driver = btusb, 12M | __ Porta 3: Dev 20, If 2, Class = Application Specific Interface, Driver =, 12M | __ Porta 1: Dev 7, If 0, Class = Classe specifica del fornitore, Driver = lan78xx, 480M | __ Porta 2: Dev 28, If 0, Class = Human Interface Device, Driver = usbhid, 1.5M | __ Porta 3: Dev 29, If 0, Class = Classe specifica del fornitore, Driver =, 1.5M

È possibile che non tutti i dispositivi abbiano un modulo corrispondente associato ad esso. La comunicazione con determinati dispositivi può essere gestita direttamente dall’applicazione, senza l’intermediazione fornita da un modulo. Tuttavia, ci sono informazioni significative nell’output fornito da lsusb -t. Quando esiste un modulo corrispondente, il suo nome appare alla fine della riga per il dispositivo, come in Driver=btusb. Il dispositivo Classidentifica la categoria generale, come Human Interface DeviceWirelessVendor Specific ClassMass Storage, tra gli altri. Per verificare quale dispositivo sta utilizzando il modulo btusb, presente nella lista precedente, sia il numero Busche il Devnumero dovrebbero essere assegnati al -scomando opzione lsusb:

# lsusb -s 01:20 Bus 001 Dispositivo 020: ID 1131: 1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter

È comune avere un ampio set di moduli kernel caricati in un sistema Linux standard in qualsiasi momento. Il modo preferibile per interagire con loro è usare i comandi forniti dal kmodpacchetto, che è un insieme di strumenti per gestire attività comuni con i moduli del kernel Linux come inserire, rimuovere, elencare, controllare le proprietà, risolvere dipendenze e alias. Il lsmodcomando, ad esempio, mostra tutti i moduli attualmente caricati:

# lsmod
Dimensione del modulo utilizzata da
kvm_intel 138528 0
kvm 421021 1 kvm_intel
iTCO_wdt 13480 0
iTCO_vendor_support 13419 1 iTCO_wdt
snd_usb_audio 149112 2
snd_hda_codec_realtek 51465 1
snd_ice1712 75006 3
snd_hda_intel 44075 7
arc4 12608 2
snd_cs8427 13978 1 snd_ice1712
snd_i2c 13828 2 snd_ice1712, snd_cs8427
snd_ice17xx_ak4xxx 13128 1 snd_ice1712
snd_ak4xxx_adda 18487 2 snd_ice1712, snd_ice17xx_ak4xxx
microcodice 23527 0
snd_usbmidi_lib 24845 1 snd_usb_audio
gspca_pac7302 17481 0
gspca_main 36226 1 gspca_pac7302
videodev 132348 2 gspca_main, gspca_pac7302
rt61pci 32326 0
rt2x00pci 13083 1 rt61pci
media 20840 1 videodev
rt2x00mmio 13322 1 rt61pci
hid_dr 12776 0
snd_mpu401_uart 13992 1 snd_ice1712
rt2x00lib 67108 3 rt61pci, rt2x00pci, rt2x00mmio
snd_rawmidi 29394 2 snd_usbmidi_lib, snd_mpu401_uart

L’output del comando lsmodè diviso in tre colonne:

Module
Nome del modulo
Size
Quantità di RAM occupata dal modulo, in byte.
Used by
Moduli dipendenti.

Alcuni moduli richiedono altri moduli per funzionare correttamente, come nel caso dei moduli per dispositivi audio:

# lsmod | fgrep -i snd_hda_intel
snd_hda_intel 42658 5
snd_hda_codec 155748 3 snd_hda_codec_hdmi, snd_hda_codec_via, snd_hda_intel
snd_pcm 81999 3 snd_hda_codec_hdmi, snd_hda_codec, snd_hda_intel
snd_page_alloc 13852 2 snd_pcm, snd_hda_intel
snd 59132 19 snd_hwdep, snd_timer, snd_hda_codec_hdmi, snd_hda_codec_via, snd_pcm, snd_seq, snd_hda_codec, snd_hda_intel, snd_seq_device

La terza colonna, Used bymostra i moduli che richiedono il modulo nella prima colonna per funzionare correttamente. Molti moduli dell’architettura sonora di Linux, preceduti da snd, sono interdipendenti. Quando si cercano problemi durante la diagnostica del sistema, può essere utile scaricare moduli specifici attualmente caricati. Il comando modprobepuò essere usato sia per caricare che per scaricare i moduli del kernel: per scaricare un modulo e i relativi moduli, purché non vengano utilizzati da un processo in esecuzione, modprobe -rdovrebbe essere usato il comando . Ad esempio, per scaricare il modulo snd-hda-intel(il modulo per un dispositivo audio Intel HDA) e altri moduli relativi al sistema audio:

# modprobe -r snd-hda-intel

Oltre a caricare e scaricare i moduli del kernel mentre il sistema è in esecuzione, è possibile modificare i parametri del modulo durante il caricamento del kernel, non così diverso dal passare opzioni ai comandi. Ogni modulo accetta parametri specifici, ma la maggior parte delle volte sono consigliati i valori predefiniti e non sono necessari parametri aggiuntivi. Tuttavia, in alcuni casi è necessario utilizzare i parametri per modificare il comportamento di un modulo in modo che funzioni come previsto.

Usando il nome del modulo come unico argomento, il comando modinfomostra una descrizione, il file, l’autore, la licenza, l’identificazione, le dipendenze e i parametri disponibili per il modulo dato. I parametri personalizzati per un modulo possono essere resi persistenti includendoli nel file /etc/modprobe.confo in singoli file con l’estensione .confnella directory /etc/modprobe.d/. L’opzione -pconsentirà al comando di modinfovisualizzare tutti i parametri disponibili e ignorerà le altre informazioni:

# modinfo -p nouveau
vram_pushbuf: crea buffer push DMA in VRAM (int)
tv_norm: norma TV predefinita.
                Supportato: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J,
                        hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i.
                Predefinito: PAL
                NOTA Ignorato per le schede con codificatori TV esterni. (Charp)
nofbaccel: disabilita l'accelerazione fbcon (int)
fbcon_bpp: bit-per-pixel di fbcon (impostazione predefinita: auto) (int)
mst: abilita DisplayPort multi-stream (impostazione predefinita: abilitato) (int)
tv_disable: disabilita il rilevamento dell'uscita TV (int)
ignorelid: ignora lo stato del coperchio ACPI (int)
duallink: consenti TMDS dual-link (impostazione predefinita: abilitato) (int)
hdmimhz: forza un clock pixel HDMI massimo (in MHz) (int)
config: stringa opzione da passare al driver core (charp)
debug: stringa di debug da passare al driver core (charp)
noaccel: disabilita accelerazione kernel / abi16 (int)
modi: abilita driver (impostazione predefinita: auto, 0 = disabilitato, 1 = abilitato, 2 = senza testa) (int)
atomico: esporre ioctl atomico (impostazione predefinita: disabilitato) (int)
runpm: disable (0), force enable (1), optimus only default (-1) (int)

L’output di esempio mostra tutti i parametri disponibili per il modulo nouveau, un modulo del kernel fornito dal progetto nouveau in alternativa ai driver proprietari per le schede GPU NVIDIA. L’opzione modeset, ad esempio, consente di controllare se la risoluzione e la profondità di visualizzazione verranno impostate nello spazio del kernel anziché nello spazio utente. L’aggiunta options nouveau modeset=0al file /etc/modprobe.d/nouveau.confdisabiliterà la funzionalità del kernel di setset.

Se un modulo sta causando problemi, il file /etc/modprobe.d/blacklist.confpuò essere utilizzato per bloccare il caricamento del modulo. Ad esempio, per impedire il caricamento automatico del modulo nouveau, è blacklist nouveaunecessario aggiungere la linea al file /etc/modprobe.d/blacklist.conf. Questa azione è necessaria quando nvidiaè installato il modulo proprietario e il modulo predefinito nouveaudeve essere messo da parte.

Nota

È possibile modificare il /etc/modprobe.d/blacklist.conffile già esistente sul sistema per impostazione predefinita. Tuttavia, il metodo preferito è quello di creare un file di configurazione separato /etc/modprobe.d/<module_name>.conf, che conterrà impostazioni specifiche solo per il modulo kernel specificato.

File di informazioni e file del dispositivo

I comandi lspcilsusblsmodagiscono come front-end per leggere le informazioni hardware memorizzata dal sistema operativo. Questo tipo di informazioni è conservato in file speciali nelle directory /proc/sys. Queste directory sono punti di montaggio per i filesystem non presenti in una partizione del dispositivo, ma solo nello spazio RAM utilizzato dal kernel per archiviare la configurazione di runtime e le informazioni sui processi in esecuzione. Tali filesystem non sono destinati all’archiviazione di file convenzionale, quindi sono chiamati pseudo-filesystem e esistono solo mentre il sistema è in esecuzione. La /procdirectory contiene file con informazioni relative ai processi in esecuzione e alle risorse hardware. Alcuni dei file importanti /procper l’ispezione dell’hardware sono:

/proc/cpuinfo

Elenca informazioni dettagliate sulle CPU trovate dal sistema operativo.

/proc/interrupts

Un elenco di numeri degli interrupt per IO Device per ciascuna CPU.

/proc/ioports

Elenca le regioni di porte di input / output attualmente registrate in uso.

/proc/dma

Elenca i canali DMA (accesso diretto alla memoria) registrati in uso.

I file all’interno della /sysdirectory hanno ruoli simili a quelli in /proc. Tuttavia, la /sysdirectory ha lo scopo specifico di memorizzare informazioni sul dispositivo e dati del kernel relativi all’hardware, mentre /proccontiene anche informazioni su varie strutture di dati del kernel, inclusi i processi in esecuzione e la configurazione.

Un’altra directory direttamente correlata ai dispositivi in ​​un sistema Linux standard è /dev. Ogni file all’interno /devè associato a un dispositivo di sistema, in particolare i dispositivi di archiviazione. Un disco rigido IDE legacy, ad esempio, quando è collegato al primo canale IDE della scheda madre, è rappresentato dal file /dev/hda. Ogni partizione in questo disco verrà identificata da /dev/hda1/dev/hda2fino all’ultima partizione trovata.

I dispositivi rimovibili sono gestiti dal sottosistema udev , che crea i dispositivi corrispondenti in /dev. Il kernel Linux acquisisce l’evento di rilevamento hardware e lo passa al processo udev, che quindi identifica il dispositivo e crea dinamicamente i file corrispondenti /dev, usando regole predefinite.

Nelle attuali distribuzioni Linux, udev è responsabile dell’identificazione e della configurazione dei dispositivi già presenti durante l’accensione della macchina ( rilevamento coldplug ) e dei dispositivi identificati mentre il sistema è in esecuzione ( rilevamento hotplug ). Udev si basa su SysFS , il pseudo filesystem per le informazioni relative all’hardware montato in /sys.

Nota

Hotplug è il termine utilizzato per indicare il rilevamento e la configurazione di un dispositivo mentre il sistema è in esecuzione, ad esempio quando viene inserito un dispositivo USB. Il kernel Linux supporta le funzionalità hotplug dalla versione 2.6, consentendo alla maggior parte dei bus di sistema (PCI, USB, ecc.) Di attivare eventi hotplug quando un dispositivo è collegato o disconnesso.

Quando vengono rilevati nuovi dispositivi, udev cerca una regola corrispondente nelle regole predefinite memorizzate nella directory /etc/udev/rules.d/. Le regole più importanti sono fornite dalla distribuzione, ma è possibile aggiungerne di nuove per casi specifici.

Dispositivi di memoria

In Linux, i dispositivi di archiviazione sono genericamente chiamati dispositivi a blocchi, poiché i dati vengono letti da e verso questi dispositivi in ​​blocchi di dati bufferizzati con dimensioni e posizioni diverse. Ogni dispositivo a blocchi è identificato da un file nella /devdirectory, con il nome del file in base al tipo di dispositivo (IDE, SATA, SCSI, ecc.) E alle sue partizioni. CD / DVD e dispositivi floppy, ad esempio, avranno i loro nomi indicati di conseguenza in /dev: un’unità CD / DVD collegata al secondo canale IDE verrà identificata come /dev/hdc/dev/hda/dev/hdbriservata ai dispositivi master e slave sul primo canale IDE) e un vecchio disco floppy sarà identificato come /dev/fdO/dev/fd1ecc

A partire dalla versione 2.4 del kernel Linux, la maggior parte dei dispositivi di archiviazione viene ora identificata come se fossero dispositivi SCSI, indipendentemente dal tipo di hardware. I dispositivi IDE, SSD e USB saranno preceduti da sd. Per i dischi IDE, sdverrà utilizzato il prefisso, ma verrà scelta la terza lettera a seconda che l’unità sia un master o uno slave (nel primo canale IDE, il master sarà sdae lo slave sarà sdb). Le partizioni sono elencate numericamente. Percorsi /dev/sda1/dev/sda2ecc. Vengono utilizzati per la prima e la seconda partizione del dispositivo a blocchi identificate per prime e /dev/sdb1,/dev/sdb2, ecc. usato per identificare la prima e la seconda partizione del dispositivo a blocchi identificato per secondo. L’eccezione a questo modello si verifica con schede di memoria (schede SD) e dispositivi NVMe (SSD collegato al bus PCI Express). Per schede SD, i percorsi /dev/mmcblk0p1/dev/mmcblk0p2ecc sono utilizzati per le prime due partizioni del dispositivo identificati prima e /dev/mmcblk1p1/dev/mmcblk1p2ecc utilizzati per identificare la prima e la seconda partizione del dispositivo identificato secondo. I dispositivi NVMe ricevono il prefisso nvme, come in /dev/nvme0n1p1/dev/nvme0n1p2.

Esercitazioni guidate

  1. Supponiamo che un sistema operativo non sia in grado di avviarsi dopo aver aggiunto un secondo disco SATA al sistema. Sapendo che tutte le parti non sono difettose, quale potrebbe essere la possibile causa di questo errore?

  2. Supponiamo che tu voglia assicurarti che la scheda video esterna connessa al bus PCI del tuo computer desktop appena acquisito sia davvero quella pubblicizzata dal produttore, ma l’apertura del case del computer annullerà la garanzia. Quale comando potrebbe essere utilizzato per elencare i dettagli della scheda video, poiché sono stati rilevati dal sistema operativo?

  3. La seguente riga fa parte dell’output generato dal comando lspci:

    03: 00.0 Controller bus RAID: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Fulmine] (rev 05)

    Quale comando dovresti eseguire per identificare il modulo del kernel in uso per questo specifico dispositivo?

  4. Un amministratore di sistema vuole provare diversi parametri per il bluetoothmodulo del kernel senza riavviare il sistema. Tuttavia, qualsiasi tentativo di scaricare il modulo con modprobe -r bluetoothil seguente errore:

    modprobe: FATAL: il modulo Bluetooth è in uso.

    Qual è la possibile causa di questo errore?

Esercizi esplorativi

  1. Non è raro trovare macchine legacy negli ambienti di produzione, come quando alcune apparecchiature usano una connessione obsoleta per comunicare con il computer di controllo, rendendo necessario prestare particolare attenzione ad alcune peculiarità di queste macchine più vecchie. Alcuni server x86 con firmware BIOS precedente, ad esempio, non si avviano se non viene rilevata una tastiera. Come si può evitare questo particolare problema?

  2. I sistemi operativi basati sul kernel Linux sono disponibili anche per un’ampia varietà di architetture di computer diverse da x86, come nei computer a scheda singola basati sull’architettura ARM. Un utente attento noterà l’assenza del lspcicomando su tali macchine, come il Raspberry Pi. Quale differenza con le macchine x86 giustifica tale assenza?

  3. Molti router di rete hanno una porta USB che consente le connessioni di un dispositivo esterno, come un disco rigido USB. Poiché la maggior parte di questi utilizza un sistema operativo basato su Linux, come verrà nominato un disco rigido USB esterno nella /dev/directory, supponendo che nessun altro dispositivo a blocchi convenzionale sia presente nel router?

  4. Nel 2018 è stata scoperta la vulnerabilità hardware nota come Meltdown . Colpisce quasi tutti i processori di molte architetture. Le versioni recenti del kernel Linux possono informare se l’attuale sistema è vulnerabile. Come si possono ottenere queste informazioni?

Sommario

Questa lezione tratta i concetti generali su come il kernel Linux gestisce le risorse hardware, principalmente nell’architettura x86. La lezione affronta i seguenti argomenti:

  • In che modo le impostazioni definite nelle utility di configurazione BIOS o UEFI possono influenzare il modo in cui il sistema operativo interagisce con l’hardware.

  • Come utilizzare gli strumenti forniti da un sistema Linux standard per ottenere informazioni sull’hardware.

  • Come identificare i dispositivi di archiviazione permanenti e rimovibili nel filesystem.

I comandi e le procedure indirizzate erano:

  • Comandi per ispezionare l’hardware rilevato: lspcilsusb.

  • Comandi per gestire i moduli del kernel: lsmodmodprobe.

  • File speciali relativi all’hardware, i file trovati nella /dev/directory o negli pseudo-filesystem in /proc//sys/.

Risposte agli esercizi guidati

  1. Supponiamo che un sistema operativo non sia in grado di avviarsi dopo aver aggiunto un secondo disco SATA al sistema. Sapendo che tutte le parti non sono difettose, quale potrebbe essere la possibile causa di questo errore?

    L’ordine del dispositivo di avvio deve essere configurato nell’utilità di configurazione del BIOS, altrimenti il ​​BIOS potrebbe non essere in grado di eseguire il bootloader.

  2. Supponiamo che tu voglia assicurarti che la scheda video esterna connessa al bus PCI del tuo computer desktop appena acquisito sia davvero quella pubblicizzata dal produttore, ma l’apertura del case del computer annullerà la garanzia. Quale comando potrebbe essere utilizzato per elencare i dettagli della scheda video, poiché sono stati rilevati dal sistema operativo?

    Il comando lspcielencherà informazioni dettagliate su tutti i dispositivi attualmente connessi al bus PCI.

  3. La seguente riga fa parte dell’output generato dal comando lspci:

    03: 00.0 Controller bus RAID: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Fulmine] (rev 05)

    Quale comando dovresti eseguire per identificare il modulo del kernel in uso per questo specifico dispositivo?

    Il comando lspci -s 03:00.0 -volspci -s 03:00.0 -k

  4. Un amministratore di sistema vuole provare diversi parametri per il bluetoothmodulo del kernel senza riavviare il sistema. Tuttavia, qualsiasi tentativo di scaricare il modulo con modprobe -r bluetoothil seguente errore:

    modprobe: FATAL: il modulo Bluetooth è in uso.

    Qual è la possibile causa di questo errore?

    Il modulo bluetoothviene utilizzato da un processo in esecuzione.

Risposte ad esercizi esplorativi

  1. Non è raro trovare macchine legacy negli ambienti di produzione, come quando alcune apparecchiature usano una connessione obsoleta per comunicare con il computer di controllo, rendendo necessario prestare particolare attenzione ad alcune peculiarità di queste macchine più vecchie. Alcuni server x86 con firmware BIOS precedenti, ad esempio, non si avviano se non viene rilevata una tastiera. Come può essere evitato questo particolare problema?

    L’utilità di configurazione del BIOS ha un’opzione per disattivare il blocco del computer quando non viene trovata una tastiera.

  2. I sistemi operativi basati sul kernel Linux sono disponibili anche per un’ampia varietà di architetture di computer diverse da x86, come nei computer a scheda singola basati sull’architettura ARM. Un utente attento noterà l’assenza del lspcicomando su tali macchine, come il Raspberry Pi. Quale differenza con le macchine x86 giustifica tale assenza?

    A differenza della maggior parte delle macchine x86, un computer basato su ARM come il raspberry pi manca di un bus PCI, quindi il comando lspciè inutile.

  3. Molti router di rete hanno una porta USB che consente le connessioni di un dispositivo esterno, come un disco rigido USB. Poiché la maggior parte di questi utilizza un sistema operativo basato su Linux, come verrà nominato un disco rigido USB esterno nella /dev/directory, supponendo che nessun altro dispositivo a blocchi convenzionale sia presente nel router?

    I moderni kernel Linux identificano i dischi rigidi USB come dispositivi SATA, quindi il file corrispondente /dev/sdanon è presente nel sistema come nessun altro dispositivo a blocchi convenzionale.

  4. Nel 2018 è stata scoperta la vulnerabilità hardware nota come Meltdown . Colpisce quasi tutti i processori di molte architetture. Le versioni recenti del kernel Linux possono informare se l’attuale sistema è vulnerabile. Come si possono ottenere queste informazioni?

    Il file /proc/cpuinfoha una riga che mostra i bug noti per la CPU corrispondente, come bugs: cpu_meltdown.

1 thought on “LINUX LEZ 8 – Determinare e configurare le impostazioni hardware

Comments are closed.

Translate »