Skip to content

101.1 - Identificar e editar configurações de hardware

Peso: 2

  • 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/
  • modprobe
  • lsmod
  • lspci
  • lsusb
  • 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 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.

Terminal window
$ lspci
00: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:

Terminal window
$ lspci -s 00:02.0 -v
00: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, xe
  • 00: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] e Expansion 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 é o i915.
  • Kernel modules: i915, xe: Além do driver i915, o módulo xe também está disponível.


A opção -k mostra qual o módulo do kernel está sendo usado.

Terminal window
$ lspci -s 02:00.0 -k
02: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, nvidia
  • 02: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), e nvidia (o driver proprietário principal, que é o que está de fato em uso).

Lista todos os dispositivos USB.

Terminal window
$ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD Webcam
Bus 001 Device 004: ID 8087:0033 Intel Corp. AX211 Bluetooth
Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer Blade
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub
CampoExemploSignificado
Bus XXXBus 001Barramento USB do sistema. 001 = USB 2.0, 002 = USB 3.0
Device XXXDevice 006Número sequencial do dispositivo no barramento, atribuído na ordem de detecção. 001 é sempre o root hub
ID XXXX:XXXX0781:5567Primeiro valor = Vendor ID (fabricante), segundo = Product ID (produto). Usados para identificar o dispositivo e carregar o driver
DescriçãoSanDisk Corp. Cruzer BladeNome 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.

Terminal window
$ lsusb -d 0781:5567 -v
Bus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer Blade
Negotiated 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 1
Device Qualifier (for other device speed):
bLength 10
bDescriptorType 6
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
bNumConfigurations 1
Device 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) e 5567 é 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 único 04017213031323022312. 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.

Terminal window
$ 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, 5000M

Nem 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:

Terminal window
$ lsusb -s 01:03
Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD Webcam


Mostra todos os dispositivos do barramento 01:

Terminal window
$ lsusb -s 01:
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD Webcam
Bus 001 Device 004: ID 8087:0033 Intel Corp. AX211 Bluetooth
Bus 001 Device 005: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 006: ID 0781:5567 SanDisk Corp. Cruzer Blade


Mostra o dispositivo 03 de qualquer barramento:

Terminal window
$ lsusb -s :03
Bus 001 Device 003: ID 2b7e:c664 SunplusIT Inc FHD Webcam
Bus 002 Device 003: ID 05e3:0620 Genesys Logic, Inc. GL3523 Hub

Lista todos os módulos carregados no Kernel Linux.

Terminal window
$ lsmod
Module Size Used by
isofs 57344 1
sg 45056 0
uas 32768 0
usb_storage 94208 2 uas
btrfs 2166784 0
...
video 81920 5 nvidia_wmi_ec_backlight,asus_wmi,xe,i915,nvidia_modeset
nvme_auth 24576 1 nvme_core
idma64 20480 0
usb_common 16384 4 xhci_hcd,usbcore,uvcvideo,typec_ucsi
crc32c_intel 16384 3
i2c_smbus 16384 1 i2c_i801
fan 24576 0
button 24576 0
battery 28672 1 asus_wmi
wmi 28672 4 video,nvidia_wmi_ec_backlight,asus_wmi,wmi_bmof
pinctrl_alderlake 32768 1

A 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.

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:

Terminal window
$ modprobe nvidia


Remove o módulo nvidia e todos os módulos que dependiam dele (se não estiverem em uso por mais ninguém):

Terminal window
$ modprobe -r nvidia


Remove o módulo nvidia e todos os módulos que dependiam dele (se não estiverem em uso por mais ninguém):

Terminal window
$ modprobe -r nvidia

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.

Terminal window
$ modinfo nvidia
filename: /lib/modules/6.12.86+deb13-amd64/updates/dkms/nvidia.ko.xz
import_ns: DMA_BUF
alias: char-major-195-*
description: NVIDIA core GPU kernel module
version: 595.71.05
supported: external
license: Dual MIT/GPL
firmware: nvidia/595.71.05/gsp_tu10x.bin
firmware: nvidia/595.71.05/gsp_ga10x.bin
softdep: pre: ecdh_generic,ecdsa_generic
srcversion: 9F2A41AD86A10E6F036471C
alias: of:N*T*Cnvidia,tegra264-displayC*
alias: of:N*T*Cnvidia,tegra264-display
alias: of:N*T*Cnvidia,tegra234-displayC*
alias: of:N*T*Cnvidia,tegra234-display
alias: pci:v000010DEd*sv*sd*bc06sc80i00*
alias: pci:v000010DEd*sv*sd*bc03sc02i00*
alias: pci:v000010DEd*sv*sd*bc03sc00i00*
depends: drm
...
parm: NVreg_CreateImexChannel0:int
parm: NVreg_GrdmaPciTopoCheckOverride:int
parm: NVreg_EnableSystemMemoryPools:int
parm: NVreg_UseKernelSuspendNotifiers:int
parm: rm_firmware_active:char


O comando modinfo com a opção -p exibe todos os parâmetros disponíveis e ignore as outras informações:

Terminal window
$ modinfo -p nouveau
vram_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)

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.
  • install: Substitui o carregamento do módulo por um comando personalizado.
    • Exemplo: install nouveau /bin/false. Ao carregar o módulo nouveau será executado /bin/false (que não faz nada), impedindo até o carregamento manual.
  • options: Define parâmetros que serão passados ao módulo quando ele for carregado.
    • Exemplo: options nvidia NVreg_UsePageAttributeTable=1.
  • alias: Cria um nome alternativo para o módulo.
    • Exemplo: alias usb-storage uas.
  • softdep: Define dependências opcionais (não obrigatórias).
    • Exemplo: softdep nvidia pre: nvidia_modeset nvidia_uvm.

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.

Terminal window
# This file was generated by nvidia-driver-595
# Set value to 0 to disable modesetting
options nvidia_drm modeset=1
# Preserve video memory on suspend/resume
options nvidia NVreg_PreserveVideoMemoryAllocations=1
options nvidia NVreg_TemporaryFilePath=/var

Arquivos 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.

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.

O diretório /sys tem o objetivo de armazenar informações sobre dispositivos e dados do kernel relacionados ao hardware.

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.


  • /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.


  1. O kernel detecta o hardware e emite eventos.
  2. o udev recebe os eventos e consulta o /sys para obter detalhes do dispositivo.
  3. O udev então cria (ou remove) os arquivos correspondentes em /dev.