101.1 - Identificar e editar configurações de hardware
Peso: 2
Áreas chaves de conhecimento
Section titled “Áreas chaves de conhecimento”- Habilitar e desabilitar periféricos integrados
- Diferenciar entre vários tipos de dispositivos de armazenamento
- Determinar os recursos de hardware para os dispositivos
- Ferramentas e utilitários para listar várias informações de hardware
- Ferramentas e utilitários para manipular dispositivos USB
- Compreensão conceitual de sysfs, udev e dbus
Lista parcial de arquivos, termos e utilitários utilizados
Section titled “Lista parcial de arquivos, termos e utilitários utilizados”/sys//proc//dev/modprobelsmodlspcilsusb- BIOS (Basic Input/Output System)
- UEFI (Unified Extensible Firmware Interface)
- IRQ (Interrupt Request)
- DMA (Direct Memory Access)
- PCI (Peripheral Component Interconnect)
- USB (Universal Seria Bus)
Na configuração da BIOS é possível alterar e desativar periféricos integrados, ativar proteção básica contra erros e alterar configurações de hardware como o IRQ e o DMA. Também é possível definir qual dispositivo de armazenamento possui o carregador de inicialização correto e deve ser o primeiro na ordem de inicialização do dispositivo.
São canais de interrupção física usadas por periféricos (como teclado, mouse e placa de som) para “chama a atenção da CPU”. Por exemplo:
- Quando você pressiona uma tecla, ele envia um sinal de IRQ.
- A CPU pausa a tarefa atual, atende a sua solicitação e depois retorna ao que estava fazendo.
Permite que certos subsistemas de hardware acessem a memória principal independentemente da CPU.
- Em transferências de dados comuns, a CPU lê os dados de um dispositivo e os escreve na memória RAM.
- O DMA permite que periféricos (como controladores de disco ou de rede) transfiram grandes blocos de dados diretamente para a memória RAM, liberando a CPU para continuar executando outras operações sem ficar sobrecarregada.
Comandos para inspeção
Section titled “Comandos para inspeção”Comandos essenciais para identificar dispositivos conectados em um sistema Linux.
lspci: Mostra todos os dispositivos conectados ao barramento PCI.lsusb: Lista os dispositivos USB atualmente conectados à máquina.
A saída dos comandos lspci e lsusb lista todos os dispositivos PCI e USB identificados pelo sistema operacional. Porém, o dispositivo pode não estar totalmente operacional porque cada peça de hardware requer um componente de software. Esse componente é chamado de módulo do kernel e pode fazer parte do kernel do Linux ou ser adicionado separadamente.
Geralmente, os comandos relacionados ao hardware requerem privilégios de root para serem executados.
Lista todos os dispositivos PCI.
Por padrão, o comando mostra uma breve lista de dispositivos.
$ lspci00:00.0 Host bridge: Intel Corporation Device a702 (rev 01)00:01.0 PCI bridge: Intel Corporation Raptor Lake PCI Express 5.0 Graphics Port (PEG010) (rev 01)00:01.1 PCI bridge: Intel Corporation Device a72d (rev 01)00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-S UHD Graphics (rev 04)00:04.0 Signal processing controller: Intel Corporation Raptor Lake Dynamic Platform and Thermal Framework Processor Participant (rev 01)Para mostrar mais detalhes de um dispositivo específico, use a opção -s para fornecer o endereço do dispositivo e a opção -v para exibir mais informações do que o padrão:
$ lspci -s 00:02.0 -v00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-S UHD Graphics (rev 04) (prog-if 00 [VGA controller]) DeviceName: Onboard - Video Subsystem: AIstone Global Limited Device 5002 Flags: bus master, fast devsel, latency 0, IRQ 163, IOMMU group 0 Memory at 6203000000 (64-bit, non-prefetchable) [size=16M] Memory at 4000000000 (64-bit, prefetchable) [size=256M] I/O ports at 6000 [size=64] Expansion ROM at 000c0000 [virtual] [disabled] [size=128K] Capabilities: [40] Vendor Specific Information: Len=0c <?> Capabilities: [70] Express Root Complex Integrated Endpoint, IntMsgNum 0 Capabilities: [ac] MSI: Enable+ Count=1/1 Maskable+ 64bit- Capabilities: [d0] Power Management version 2 Capabilities: [100] Process Address Space ID (PASID) Capabilities: [200] Address Translation Service (ATS) Capabilities: [300] Page Request Interface (PRI) Capabilities: [320] Single Root I/O Virtualization (SR-IOV) Kernel driver in use: i915 Kernel modules: i915, xe00:02.0 VGA compatible controller: Intel Corporation Raptor Lake-S UHD Graphics (rev 04) (prog-if 00 [VGA controller]): GPU Intel UHD integrada, arquitetura Raptor Lake.prog-if 00 [VGA controller]indica que é um controlador VGA padrão.DeviceName: Onboard - Video: informa que o vídeo está embutido na placa-mãe.Subsystem: AIstone Global Limited Device 5002: A AIstone Global Limited é quem fez o subsistema (provavelmente o notebook ou a placa-mãe).Flags:bus master: Significa que a GPU pode iniciar transferências de dados no barramento por conta própria, sem depender da CPU.fast devsel: Indica resposta rápida no barramento.latency 0: É a latência mínima.IRQ 163: É a linha de interrupção atribuída.IOMMU group 0: Indica o grupo de isolamento de memória (relevante para virtualização/passthrough de GPU).
Memory at 6203000000 (64-bit, non-prefetchable) [size=16M],Memory at 4000000000 (64-bit, prefetchable) [size=256M],I/O ports at 6000 [size=64]eExpansion ROM at 000c0000 [virtual] [disabled] [size=128K]: São os espaços que o sistema reserva para a GPU se comunicar com o resto do computador. Tem funções diferentes: uma de 16 MB para comandos e controle, uma de 256 MB para os dados gráficos (framebuffer, onde a imagem é montada), uma pequena de 64 bytes para compatibilidade com hardware antigo, e uma ROM de vídeo legada que está desativada porque o UEFI moderno a substitui.Capabilities: São os recursos extras que o dispositivo PCI anuncia ao sistema.Kernel driver in use: i915: O driver em uso é oi915.Kernel modules: i915, xe: Além do driveri915, o móduloxetambém está disponível.
A opção -k mostra qual o módulo do kernel está sendo usado.
$ lspci -s 02:00.0 -k02:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5060 Max-Q / Mobile] (rev a1) Subsystem: AIstone Global Limited Device 6050 Kernel driver in use: nvidia Kernel modules: nouveau, nvidia_drm, nvidia02:00.0 VGA compatible controller: NVIDIA Corporation GB206M [GeForce RTX 5060 Max-Q / Mobile] (rev a1): O dispositivo é uma GPU NVIDIA GeForce RTX 5060 na versão Max-Q (variante mobile, com menor consumo de energia). O chip é o GB206M, da arquitetura Blackwell.rev a1é a revisão do hardware.Subsystem: AIstone Global Limited Device 6050: Identifica o fabricante do notebook/placa que integrou essa GPU. A AIstone Global Limited é quem fez o subsistema (provavelmente o notebook ou a placa-mãe onde a GPU está).Kernel driver in use: nvidia: O driver proprietário da NVIDIA está atualmente carregado e controlando a GPU.Kernel modules: nouveau, nvidia_drm, nvidia: Três módulos do kernel estão disponíveis (não necessariamente todos em uso) para esse dispositivo:nouveau(driver open-source genérico),nvidia_drm(camada DRM do driver proprietário, usada para Wayland e KMS), envidia(o driver proprietário principal, que é o que está de fato em uso).
Lista todos os dispositivos USB.
$ lsusbBus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD WebcamBus 001 Device 004: ID 8087:0033 Intel Corp. AX211 BluetoothBus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. HubBus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer BladeBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 002 Device 003: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub| Campo | Exemplo | Significado |
|---|---|---|
Bus XXX | Bus 001 | Barramento USB do sistema. 001 = USB 2.0, 002 = USB 3.0 |
Device XXX | Device 006 | Número sequencial do dispositivo no barramento, atribuído na ordem de detecção. 001 é sempre o root hub |
ID XXXX:XXXX | 0781:5567 | Primeiro valor = Vendor ID (fabricante), segundo = Product ID (produto). Usados para identificar o dispositivo e carregar o driver |
| Descrição | SanDisk Corp. Cruzer Blade | Nome do fabricante e do produto, obtidos de um banco de dados de IDs USB |
Use o comando lsusb com a opção -d para fornecer o ID do dispositivo e a opção -v para exibir uma saída mais detalhada.
$ lsusb -d 0781:5567 -v
Bus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer BladeNegotiated speed: High Speed (480Mbps)Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 [unknown] bDeviceSubClass 0 [unknown] bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x0781 SanDisk Corp. idProduct 0x5567 Cruzer Blade bcdDevice 1.00 iManufacturer 1 SanDisk iProduct 2 Cruzer Blade iSerial 3 04017213031323022312 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 0x0020 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0x80 (Bus Powered) MaxPower 200mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 2 bInterfaceClass 8 Mass Storage bInterfaceSubClass 6 SCSI bInterfaceProtocol 80 Bulk-Only iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x02 EP 2 OUT bmAttributes 2 Transfer Type Bulk Synch Type None Usage Type Data wMaxPacketSize 0x0200 1x 512 bytes bInterval 1Device Qualifier (for other device speed): bLength 10 bDescriptorType 6 bcdUSB 2.00 bDeviceClass 0 [unknown] bDeviceSubClass 0 [unknown] bDeviceProtocol 0 bMaxPacketSize0 64 bNumConfigurations 1Device Status: 0x0000 (Bus Powered)Detalhe de algumas linhas:
Bus 001 Device 006: ID 0781:5567: O pendrive está no barramento USB 1, como o 6º dispositivo detectado.0781é o ID do fabricante (SanDisk) e5567é o ID do produto (Cruzer Blade).Negotiated speed: High Speed (480Mbps): indica que ele negociou USB 2.0 High Speed. Esse é o máximo que esse pendrive suporta.Device Descriptor/bcdUSB 2.00: O dispositivo segue a especificação USB 2.0.Device Descriptor/iSerial: Número de série único04017213031323022312. O serial permite distinguir dois pendrives idênticos.Device Descriptor/Configuration Descriptor/bmAttributes 0x80 (Bus Powered): O pendrive é alimentado pela porta USB, não tem fonte própria.Device Descriptor/Configuration Descriptor/MaxPower 200mA: Consome no máximo 200 mA da porta USB.
O comando lsusb com a opção -t exibe a saída na forma de uma árvore hierárquica.
$ lsusb -t/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/16p, 480M |__ Port 001: Dev 005, If 0, Class=Hub, Driver=hub/2p, 480M |__ Port 005: Dev 003, If 0, Class=Video, Driver=uvcvideo, 480M |__ Port 005: Dev 003, If 1, Class=Video, Driver=uvcvideo, 480M |__ Port 005: Dev 003, If 2, Class=Video, Driver=uvcvideo, 480M |__ Port 005: Dev 003, If 3, Class=Video, Driver=uvcvideo, 480M |__ Port 009: Dev 006, If 0, Class=Mass Storage, Driver=usb-storage, 480M |__ Port 014: Dev 004, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 014: Dev 004, If 1, Class=Wireless, Driver=btusb, 12M/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci_hcd/10p, 20000M/x2 |__ Port 001: Dev 003, If 0, Class=Hub, Driver=hub/2p, 5000MNem todos os dispositivos tem um módulo correspondente associado. Em alguns dispositivos, a comunicação pode ser feita diretamente pelo aplicativo. A saída do comando lsusb -t mostra quando existe um módulo correspondente no final da linha do dispositivo, como em Driver=btusb.
O comando lsusb -s [bus]:[device] filtra a saída por barramento ou dispositivo.
Mostra apenas o dispositivo 03 do barramento 01:
$ lsusb -s 01:03Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD WebcamMostra todos os dispositivos do barramento 01:
$ lsusb -s 01:Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hubBus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD WebcamBus 001 Device 004: ID 8087:0033 Intel Corp. AX211 BluetoothBus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. HubBus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer BladeMostra o dispositivo 03 de qualquer barramento:
$ lsusb -s :03Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD WebcamBus 002 Device 003: ID 05e3:0620 Genesys Logic, Inc. GL3523 HubLista todos os módulos carregados no Kernel Linux.
$ lsmodModule Size Used byisofs 57344 1sg 45056 0uas 32768 0usb_storage 94208 2 uasbtrfs 2166784 0...video 81920 5 nvidia_wmi_ec_backlight,asus_wmi,xe,i915,nvidia_modesetnvme_auth 24576 1 nvme_coreidma64 20480 0usb_common 16384 4 xhci_hcd,usbcore,uvcvideo,typec_ucsicrc32c_intel 16384 3i2c_smbus 16384 1 i2c_i801fan 24576 0button 24576 0battery 28672 1 asus_wmiwmi 28672 4 video,nvidia_wmi_ec_backlight,asus_wmi,wmi_bmofpinctrl_alderlake 32768 1A saída do comando lsmod é dividida em 03 colunas:
Module: Nome do módulo.Size: Quantidade de RAM usada pelo módulo, em bytes.Used by: Módulos dependentes.
modprobe
Section titled “modprobe”O comando modprobe permite carregar ou descarregar módulos do kernel Linux de forma inteligente. O modprobe resolve dependências automaticamente, se o módulo A precisa do módulo B, ele carrega o módulo B primeiro.
Carrega o módulo nvidia e todos as suas dependências:
$ modprobe nvidiaRemove o módulo nvidia e todos os módulos que dependiam dele (se não estiverem em uso por mais ninguém):
$ modprobe -r nvidiaRemove o módulo nvidia e todos os módulos que dependiam dele (se não estiverem em uso por mais ninguém):
$ modprobe -r nvidiamodinfo
Section titled “modinfo”A saída do comando modinfo mostra uma descrição, o arquivo, o autor, a licença, a identificação, as dependências e os parâmetros disponíveis para o módulo fornecido.
$ modinfo nvidiafilename: /lib/modules/6.12.86+deb13-amd64/updates/dkms/nvidia.ko.xzimport_ns: DMA_BUFalias: char-major-195-*description: NVIDIA core GPU kernel moduleversion: 595.71.05supported: externallicense: Dual MIT/GPLfirmware: nvidia/595.71.05/gsp_tu10x.binfirmware: nvidia/595.71.05/gsp_ga10x.binsoftdep: pre: ecdh_generic,ecdsa_genericsrcversion: 9F2A41AD86A10E6F036471Calias: of:N*T*Cnvidia,tegra264-displayC*alias: of:N*T*Cnvidia,tegra264-displayalias: of:N*T*Cnvidia,tegra234-displayC*alias: of:N*T*Cnvidia,tegra234-displayalias: pci:v000010DEd*sv*sd*bc06sc80i00*alias: pci:v000010DEd*sv*sd*bc03sc02i00*alias: pci:v000010DEd*sv*sd*bc03sc00i00*depends: drm...parm: NVreg_CreateImexChannel0:intparm: NVreg_GrdmaPciTopoCheckOverride:intparm: NVreg_EnableSystemMemoryPools:intparm: NVreg_UseKernelSuspendNotifiers:intparm: rm_firmware_active:charO comando modinfo com a opção -p exibe todos os parâmetros disponíveis e ignore as outras informações:
$ modinfo -p nouveauvram_pushbuf:Create DMA push buffers in VRAM (int)kms_vram_pushbuf:Place EVO/NVD push buffers in VRAM (default: auto) (int)tv_norm:Default TV norm. Supported: PAL, PAL-M, PAL-N, PAL-Nc, NTSC-M, NTSC-J, hd480i, hd480p, hd576i, hd576p, hd720p, hd1080i. Default: PAL *NOTE* Ignored for cards with external TV encoders. (charp)mst:Enable DisplayPort multi-stream (default: enabled) (int)tv_disable:Disable TV-out detection (int)ignorelid:Ignore ACPI lid status (int)duallink:Allow dual-link TMDS (default: enabled) (int)hdmimhz:Force a maximum HDMI pixel clock (in MHz) (int)config:option string to pass to driver core (charp)debug:debug string to pass to driver core (charp)noaccel:disable kernel/abi16 acceleration (int)modeset:enable driver (default: auto, 0 = disabled, 1 = enabled, 2 = headless) (int)atomic:Expose atomic ioctl (default: disabled) (int)runpm:disable (0), force enable (1), optimus only default (-1) (int)NVreg_RegistryDwords:A semicolon-separated list of key=integer pairs of GSP-RM registry keys (charp)Arquivos em /etc/modprobe.d/
Section titled “Arquivos em /etc/modprobe.d/”O /etc/modprobe.d/ é o diretório onde ficam arquivos de configuração que controlam o comportamento do modprobe. Cada arquivo tem extensão .conf e pode conter diferentes tipos de diretivas.
blacklist: Impede que um módulo seja carregado automaticamente, mas não proíbe o carregamento manual.- Exemplo:
blacklist nouveau.
- Exemplo:
install: Substitui o carregamento do módulo por um comando personalizado.- Exemplo:
install nouveau /bin/false. Ao carregar o módulonouveauserá executado/bin/false(que não faz nada), impedindo até o carregamento manual.
- Exemplo:
options: Define parâmetros que serão passados ao módulo quando ele for carregado.- Exemplo:
options nvidia NVreg_UsePageAttributeTable=1.
- Exemplo:
alias: Cria um nome alternativo para o módulo.- Exemplo:
alias usb-storage uas.
- Exemplo:
softdep: Define dependências opcionais (não obrigatórias).- Exemplo:
softdep nvidia pre: nvidia_modeset nvidia_uvm.
- Exemplo:
Exemplo de um arquivo de configuração de um módulo
Section titled “Exemplo de um arquivo de configuração de um módulo”Arquivo de configuração /etc/modprobe.d/nvidia-graphics-drivers-kms.conf.
# This file was generated by nvidia-driver-595# Set value to 0 to disable modesettingoptions nvidia_drm modeset=1
# Preserve video memory on suspend/resumeoptions nvidia NVreg_PreserveVideoMemoryAllocations=1options nvidia NVreg_TemporaryFilePath=/varArquivos de informações e de dispositivo
Section titled “Arquivos de informações e de dispositivo”Os diretórios /proc e /sys são pseudosistemas de arquivos, ou seja, eles não estão gravados em nenhum disco físico. Eles existem somente na memória RAM enquanto o sistema está em execução.
O diretório /dev está diretamente relacionado aos dispositivos em um sistema Linux padrão.
Diretório /proc
Section titled “Diretório /proc”O diretório /proc contém as informações de processos em execução e recursos de hardware.
Alguns arquivos importantes em /proc:
/proc/cpuinfo: Detalhes sobre cada CPU do sistema (modelo, velocidade, flags, etc.)./proc/interrupts: Lista de interrupções (IRQs) por dispositivos de I/O em cada CPU./proc/ioports: Regiões de portas de I/O registradas e em uso./proc/dma: Canais de DMA (Direct Memory Access) em uso./proc/meminfo: Informações detalhadas sobre o uso de memória RAM.
Diretório /sys
Section titled “Diretório /sys”O diretório /sys tem o objetivo de armazenar informações sobre dispositivos e dados do kernel relacionados ao hardware.
Diretório /dev
Section titled “Diretório /dev”O diretório /dev contém arquivos de dispositivo, uma abstração fundamental do Unix/Linux onde tudo é tratado como arquivo, incluindo hardware físico. Cada dispositivo conectado ao sistema tem uma entrada aqui.
/dev/hda,/dev/hdb: Discos IDE legados (mestre/escravo)./dev/sda,/dev/sdb: Discos SATA, SCSI, SSD, USB./dev/mmcblk0: Cartão de memória SD./dev/nvme0n1: SSDs NVMe (barramento PCIe)./dev/fd0: Disquete.
Obs.: A partir da versão 2.4 do kernel Linux, a maioria dos dispositivos de armazenamento passaram a ser identificados com o prefixo
sd.
Convenção de nomenclaturas para partições
Section titled “Convenção de nomenclaturas para partições”-
/dev/sda: Primeiro disco. -
/dev/sda1: Primeira partição do primeiro disco. -
/dev/sda2: Segunda partição do primeiro disco. -
/dev/sdb: Segundo disco. -
/dev/sdb1: Primeira partição do segundo disco. -
/dev/mmcblk0p1: Primeira partição do cartão SD. -
/dev/nvme0n1p1: Primeira partição do SSD NVMe.
Dispositivos especiais importantes
Section titled “Dispositivos especiais importantes”/dev/null: Descarta tudo o que recebe./dev/zero: Gera bytes nulos infinitamente./dev/random: Gerador de números aleatórios (usa entropia do sistema)./dev/urandom: Gerador pseudoaleatório (mais rápido)./dev/tty: Terminal atual do processo./dev/stdin: Entrada padrão./dev/stdout: Saída padrão./dev/stderr: Saída de erro padrão./dev/loop0: Dispositivo de loop (para montar arquivos como se fossem discos).
O Udev (Userspace Device Manager) é responsável pela identificação e configuração dos dispositivos já presentes durante a inicialização da máquina (coldplug) e dos dispositivos identificados enquanto o sistema está em execução (hotplug). O Udev utiliza o SysFS, o pseudosistema de arquivos montado em /sys, para informações relacionadas ao hardware.
- O kernel detecta o hardware e emite eventos.
- o udev recebe os eventos e consulta o
/syspara obter detalhes do dispositivo. - O udev então cria (ou remove) os arquivos correspondentes em
/dev.