101.1 Lição 1
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
101 Arquitetura do sistema |
Objetivo: |
101.1 Determinar e definir configurações de hardware |
LIção: |
1 de 1 |
Introdução
Desde os primeiros anos da computação eletrônica, os fabricantes de computadores pessoais e empresariais vêm integrando uma série de peças de hardware em suas máquinas. Essas peças, por sua vez, devem ser suportadas pelo sistema operacional. Por isso, é preciso que existam padrões estabelecidos para os conjuntos de instruções e a comunicação dos dispositivos, semelhante à camada de abstração padronizada fornecida pelo sistema operacional a um aplicativo. Esses padrões facilitam a criação e a manutenção de um sistema operacional não vinculado a um modelo de hardware específico. No entanto, a complexidade do hardware subjacente integrado às vezes requer ajustes na maneira como os recursos devem ser expostos ao sistema operacional, para que ele possa ser instalado e funcionar corretamente.
É possível realizar alguns desses ajustes mesmo sem um sistema operacional instalado. A maioria das máquinas oferece um utilitário de configuração que pode ser executado quando a máquina é ligada. Até meados dos anos 2000, o utilitário de configuração era implementado na BIOS (Basic Input/Output System), o padrão de firmware contendo as rotinas básicas de configuração para as placas-mãe x86. A partir do final da primeira década dos anos 2000, as máquinas baseadas na arquitetura x86 começaram a substituir a BIOS por uma nova implementação chamada UEFI (Unified Extensible Firmware Interface), que tem recursos mais sofisticados para identificação, teste, configuração e atualização de firmware. Apesar da mudança, não é incomum que se chame o utilitário de configuração de BIOS, já que ambas as implementações cumprem o mesmo objetivo básico.
Note
|
Trataremos em mais detalhes das diferenças entre a BIOS e a UEFI em uma lição posterior. |
Ativação do dispositivo
O utilitário de configuração do sistema aparece quando pressionamos uma tecla específica ao ligar o computador. Essa tecla varia de fabricante para fabricante, mas geralmente é Del ou uma das teclas de função, como F2 ou F12. A combinação de teclas a ser usada é frequentemente exibida na tela inicial.
No utilitário de configuração da BIOS, é possível ativar e desativar os periféricos integrados, ativar a proteção básica contra erros e alterar configurações de hardware como o IRQ (solicitação de interrupção) e o DMA (acesso direto à memória). Nas máquinas modernas, é raro que seja necessário alterar essas configurações, mas às vezes é preciso fazer ajustes para solucionar problemas específicos. Existem tecnologias de RAM, por exemplo, que são compatíveis com taxas de transferência de dados mais rápidas do que os valores padrão, e portanto é recomendável alterá-los para os valores especificados pelo fabricante. Algumas CPUs oferecem recursos que às vezes não são necessários para aquela instalação específica, podendo assim ser desativados. Isso reduz o consumo de energia e contribui para aumentar a proteção do sistema, já que os recursos da CPU que contenham bugs conhecidos também podem ser desativados.
Se a máquina estiver equipada com vários dispositivos de armazenamento, é importante definir qual deles possui o carregador de inicialização correto e deve ser o primeiro na ordem de inicialização do dispositivo. O sistema operacional pode não carregar se o dispositivo incorreto aparecer primeiro na lista de verificações de inicialização da BIOS.
Inspeção de dispositivos no Linux
Uma vez que os dispositivos são corretamente identificados, cabe ao sistema operacional associar os componentes de software correspondentes exigidos por eles. Quando um recurso de hardware não está funcionando como esperado, é importante identificar onde exatamente está o problema. Quando uma peça de hardware não é detectada pelo sistema operacional, é mais provável que o defeito esteja na peça ou na porta à qual está conectada. Quando a peça é detectada, mas não funciona corretamente, pode haver um problema no lado do sistema operacional. Portanto, uma das primeiras etapas ao lidar com problemas relacionados a hardware é verificar se o sistema operacional está detectando corretamente o dispositivo. Existem duas maneiras básicas de identificar recursos de hardware em um sistema Linux: usar comandos especializados ou consultar arquivos específicos em sistemas de arquivos especiais.
Comandos para inspeção
Os dois comandos essenciais para identificar dispositivos conectados em um sistema Linux são:
lspci
-
Mostra todos os dispositivos atualmente conectados ao barramento PCI (Peripheral Component Interconnect). Os dispositivos PCI podem ser um componente conectado à placa-mãe, como um controlador de disco, ou uma placa de expansão instalada em um slot PCI, como uma placa de vídeo externa.
lsusb
-
Lista os dispositivos USB (Universal Serial Bus) atualmente conectados à máquina. Embora existam dispositivos USB para praticamente qualquer finalidade imaginável, a interface USB é amplamente usada para conectar dispositivos de entrada — teclados, dispositivos apontadores — e mídias de armazenamento removíveis.
A saída dos comandos lspci
e lsusb
consiste em uma lista de todos os dispositivos PCI e USB identificados pelo sistema operacional. No entanto, o dispositivo pode não estar totalmente operacional ainda, porque cada peça de hardware requer um componente de software para controlar o dispositivo correspondente. Esse componente de software é chamado de módulo do kernel e pode fazer parte do kernel oficial do Linux ou ser adicionado separadamente.
Os módulos do kernel do Linux relacionados a dispositivos de hardware também são chamados de drivers, como em outros sistemas operacionais. Os drivers para Linux, no entanto, nem sempre são fornecidos pelo fabricante do dispositivo. Enquanto alguns fabricantes fornecem seus próprios drivers binários para serem instalados separadamente, muitos drivers são criados por desenvolvedores independentes. Historicamente, dispositivos que funcionam no Windows, por exemplo, podem não ter um módulo de kernel equivalente para Linux. Atualmente, os sistemas operacionais baseados em Linux têm um forte suporte de hardware e a maioria dos dispositivos funciona sem dar trabalho.
Os comandos diretamente relacionados ao hardware geralmente requerem privilégios de root para serem executados, exibindo apenas informações limitadas quando executados por um usuário normal; portanto, pode ser necessário fazer login como root ou executar o comando com sudo
.
A seguinte saída do comando lspci
, por exemplo, mostra alguns dispositivos identificados:
$ lspci 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI 04:04.0 Multimedia audio controller: VIA Technologies Inc. ICE1712 [Envy24] PCI Multi-Channel I/O Controller (rev 02) 04:0b.0 FireWire (IEEE 1394): LSI Corporation FW322/323 [TrueFire] 1394a Controller (rev 70)
A saída desses comandos pode ter dezenas de linhas, de forma que o exemplo anterior e o seguinte incluem apenas as partes que nos interessam. Os números hexadecimais no início de cada linha são o endereço exclusivo do dispositivo PCI correspondente. O comando lspci
mostra mais detalhes sobre um dispositivo específico se seu endereço for fornecido com a opção -s
, acompanhada da opção -v
:
$ lspci -s 04:02.0 -v 04:02.0 Network controller: Ralink corp. RT2561/RT61 802.11g PCI Subsystem: Linksys WMP54G v4.1 Flags: bus master, slow devsel, latency 32, IRQ 21 Memory at e3100000 (32-bit, non-prefetchable) [size=32K] Capabilities: [40] Power Management version 2 kernel driver in use: rt61pci
A saída agora mostra muito mais detalhes sobre o dispositivo no endereço 04:02.0
. Trata-se de um controlador de rede cujo nome interno é Ralink corp. RT2561/RT61 802.11g PCI
. Subsystem
está associado à marca e modelo do dispositivo — Linksys WMP54G v4.1
— e pode ser útil para fins de diagnóstico.
O módulo do kernel pode ser identificado na linha kernel driver in use
, que mostra o módulo rt61pci
. De todas as informações coletadas, é correto supor que:
-
O dispositivo foi identificado.
-
Um módulo do kernel correspondente foi carregado.
-
O dispositivo deve estar pronto para uso.
Outra maneira de verificar qual módulo do kernel está sendo usado para o dispositivo especificado seria usar a opção -k
, disponível nas versões mais recentes do lspci
:
$ lspci -s 01:00.0 -k 01:00.0 VGA compatible controller: NVIDIA Corporation GM107 [GeForce GTX 750 Ti] (rev a2) kernel driver in use: nvidia kernel modules: nouveau, nvidia_drm, nvidia
Para o dispositivo escolhido, uma placa NVIDIA GPU, lspci
informa que o módulo em uso é chamado nvidia
, na linha kernel driver in use: nvidia
, e todos os módulos correspondentes do kernel estão listados na linha kernel modules: nouveau, nvidia_drm, nvidia
.
O comando lsusb
é semelhante a lspci
, mas lista exclusivamente as informações relativas à USB:
$ lsusb Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Bus 001 Device 028: ID 093a:2521 Pixart Imaging, Inc. Optical Mouse Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter Bus 001 Device 011: ID 04f2:0402 Chicony Electronics Co., Ltd Genius LuxeMate i200 Keyboard Bus 001 Device 007: ID 0424:7800 Standard Microsystems Corp. Bus 001 Device 003: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 002: ID 0424:2514 Standard Microsystems Corp. USB 2.0 Hub Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
O comando lsusb
mostra os canais USB disponíveis e os dispositivos conectados a eles. Como no caso do lspci
, a opção -v
exibe uma saída mais detalhada. Um dispositivo específico pode ser selecionado para inspeção, bastando fornecer seu ID com a opção -d
:
$ lsusb -v -d 1781:0c9f Bus 001 Device 029: ID 1781:0c9f Multiple Vendors USBtiny Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.01 bDeviceClass 255 Vendor Specific Class bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 8 idVendor 0x1781 Multiple Vendors idProduct 0x0c9f USBtiny bcdDevice 1.04 iManufacturer 0 iProduct 2 USBtiny iSerial 0 bNumConfigurations 1
Com a opção -t
, o comando lsusb
mostra os mapeamentos do dispositivo USB atual na forma de árvore hierárquica:
$ lsusb -t /: Bus 01.Port 1: Dev 1, Class=root_hub, Driver=dwc_otg/1p, 480M |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/3p, 480M |__ Port 2: Dev 11, If 1, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 2: Dev 11, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 20, If 0, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 1, Class=Wireless, Driver=btusb, 12M |__ Port 3: Dev 20, If 2, Class=Application Specific Interface, Driver=, 12M |__ Port 1: Dev 7, If 0, Class=Vendor Specific Class, Driver=lan78xx, 480M |__ Port 2: Dev 28, If 0, Class=Human Interface Device, Driver=usbhid, 1.5M |__ Port 3: Dev 29, If 0, Class=Vendor Specific Class, Driver=, 1.5M
É possível que nem todos os dispositivos tenham um módulo correspondente associado. A comunicação com determinados dispositivos pode ser feita diretamente pelo aplicativo, sem a intermediação de um módulo. Ainda assim, existem informações importantes na saída de lsusb -t
. Quando existe um módulo correspondente, seu nome aparece no final da linha do dispositivo, como em Driver=btusb
. O dispositivo Class
identifica a categoria geral, como Human Interface Device
, Wireless
, Vendor Specific Class
, Mass Storage
, dentre outros. Para verificar qual dispositivo está usando o módulo btusb
, presente na lista anterior, os números de Bus
e Dev
devem ser fornecidos à opção -s
do comando lsusb
:
$ lsusb -s 01:20 Bus 001 Device 020: ID 1131:1001 Integrated System Solution Corp. KY-BT100 Bluetooth Adapter
É comum que haja um grande conjunto de módulos de kernel carregados em um sistema Linux padrão a qualquer momento. Para interagir com eles, o melhor jeito é usar os comandos fornecidos pelo pacote kmod
, um conjunto de ferramentas para realizar tarefas comuns com os módulos do kernel Linux, como inserir, remover, listar, verificar propriedades, resolver dependências e aliases. O comando lsmod
, por exemplo, mostra todos os módulos carregados no momento:
$ lsmod Module Size Used by 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 microcode 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
A saída do comando lsmod
é dividida em três colunas:
Module
-
Nome do módulo.
Size
-
Quantidade de RAM utilizada pelo módulo, em bytes.
Used by
-
Módulos dependentes.
Alguns módulos exigem que outros módulos funcionem corretamente, como é o caso dos módulos para dispositivos de áudio:
$ 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
A terceira coluna, Used by
, mostra os módulos que exigem que o módulo na primeira coluna funcione corretamente. Muitos módulos da arquitetura de som do Linux, prefixados por snd
, são interdependentes. Ao procurar por problemas durante um diagnóstico do sistema, pode ser útil descarregar módulos específicos atualmente carregados. O comando modprobe
pode ser usado para carregar e descarregar módulos do kernel: para descarregar um módulo e seus módulos relacionados, desde que não estejam sendo usados por um processo em execução, use o comando modprobe -r
. Por exemplo, para descarregar o módulo snd-hda-intel
(o módulo para um dispositivo de áudio HDA Intel) e outros módulos relacionados ao sistema de som:
# modprobe -r snd-hda-intel
Além de carregar e descarregar módulos do kernel enquanto o sistema está em execução, é possível alterar os parâmetros do módulo quando o kernel está sendo carregado, o que não é muito diferente de passar opções para os comandos. Os módulo aceitam parâmetros específicos, mas na maioria das vezes recomenda-se usar os valores padrão, não sendo necessários parâmetros extras. No entanto, em alguns casos precisamos usar parâmetros para alterar o comportamento de um módulo e fazê-lo funcionar conforme o esperado.
Usando o nome do módulo como único argumento, o 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. Para que os parâmetros personalizados de um módulo se tornem persistentes, inclua-os no arquivo /etc/modprobe.conf
ou em arquivos individuais com a extensão .conf
no diretório /etc/modprobe.d/`
. A opção -p
fará com que o comando modinfo
exiba todos os parâmetros disponíveis e ignore as outras informações:
# modinfo -p nouveau vram_pushbuf:Create DMA push buffers in VRAM (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) nofbaccel:Disable fbcon acceleration (int) fbcon_bpp:fbcon bits-per-pixel (default: auto) (int) 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)
O exemplo de saída mostra todos os parâmetros disponíveis para o módulo nouveau
, um módulo do kernel fornecido pelo nouveau project como alternativa aos drivers proprietários das placas de GPU da NVIDIA. A opção modeset
, por exemplo, permite controlar se a resolução e a profundidade da tela serão definidas no espaço do kernel em vez do espaço do usuário. Quando adicionamos options nouveau modeset =0
ao arquivo /etc/modprobe.d/nouveau.conf
, o recurso modeset do kernel é desativado.
Se um módulo estiver causando problemas, o arquivo /etc/modprobe.d/blacklist.conf
pode ser usado. Por exemplo, para impedir o carregamento automático do módulo nouveau
, a linha blacklist nouveau
deve ser adicionada ao arquivo /etc/modprobe.d/blacklist.conf
. Essa ação é necessária quando o módulo proprietário nvidia
é instalado e o módulo padrão nouveau
deve ser posto de lado.
Note
|
É possível modificar o arquivo |
Arquivos de informação e de dispositivo
Os comandos lspci
, lsusb
e lsmod
atuam como front-ends para ler as informações de hardware armazenadas pelo sistema operacional. Este tipo de informação é mantido em arquivos especiais nos diretórios /proc
e /sys
. Esses diretórios são pontos de montagem para sistemas de arquivos que não estão presentes em uma partição de dispositivo, mas somente no espaço de RAM usado pelo kernel para armazenar a configuração do tempo de execução e informações sobre os processos em execução. Esses sistemas de arquivos não se destinam ao armazenamento convencional de arquivos e, portanto, são chamados de pseudosistemas de arquivos e existem apenas enquanto o sistema estiver em execução. O diretório /proc
contém arquivos com informações sobre processos em execução e recursos de hardware. Alguns dos arquivos importantes em /proc
para a inspeção de hardware são:
/proc/cpuinfo
-
Lista informações detalhadas sobre a(s) CPU(s) encontradas pelo sistema operacional.
/proc/interrupts
-
Uma lista de números de interrupções por dispositivo de entrada e saída em cada CPU.
/proc/ioports
-
Lista as regiões de portas de Entrada/Saída registradas atualmente e em uso.
/proc/dma
-
Lista os canais registrados de DMA (acesso direto à memória) em uso.
Os arquivos dentro do diretório /sys
têm funções semelhantes às do /proc
. No entanto, o diretório /sys
tem o objetivo específico de armazenar informações do dispositivo e dados do kernel relacionados ao hardware, ao passo que /proc
também contém informações sobre diversas estruturas de dados do kernel, incluindo processos em execução e configurações.
Outro diretório diretamente relacionado aos dispositivos em um sistema Linux padrão é o /dev
. Cada arquivo dentro de /dev
é associado a um dispositivo do sistema, particularmente dispositivos de armazenamento. Um disco rígido IDE legado, por exemplo, quando conectado ao primeiro canal IDE da placa-mãe, é representado pelo arquivo /dev/hda
. Cada partição desse disco será identificada por /dev/hda1
, /dev/hda2
e assim por diante, até a última partição encontrada.
Os dispositivos removíveis são manipulados pelo subsistema udev, que cria os dispositivos correspondentes em /dev
. O kernel do Linux captura o evento de detecção de hardware e o passa para o processo udev, que por sua vez identifica o dispositivo e cria dinamicamente os arquivos correspondentes em /dev
, usando regras predefinidas.
Nas distribuições Linux atuais, o udev é responsável pela identificação e configuração dos dispositivos já presentes durante a inicialização da máquina (detecção coldplug) e dos dispositivos identificados enquanto o sistema está em execução (detecção hotplug). O Udev utiliza o SysFS, o pseudosistema de arquivos montado em /sys
para informações relacionadas ao hardware.
Note
|
Hotplug é o termo usado para se referir à detecção e configuração de um dispositivo enquanto o sistema está em execução, como quando inserimos um dispositivo USB. O kernel do Linux suporta recursos de hotplug desde a versão 2.6, permitindo que a maioria dos barramentos do sistema (PCI, USB, etc.) disparem eventos de hotplug quando um dispositivo é conectado ou desconectado. |
À medida que novos dispositivos são detectados, o udev pesquisa uma regra correspondente nas regras predefinidas armazenadas no diretório /etc/udev/rules.d/
. As regras mais importantes são fornecidas pela distribuição, mas é possível adicionar novas para casos específicos.
Dispositivos de armazenamento
No Linux, os dispositivos de armazenamento são genericamente chamados de dispositivos de bloco, porque os dados que contêm são lidos em blocos de dados armazenados em buffer com diferentes tamanhos e posições. Cada dispositivo de bloco é identificado por um arquivo no diretório /dev
, sendo que o nome do arquivo depende do tipo de dispositivo (IDE, SATA, SCSI, etc.) e de suas partições. Os dispositivos de CD/DVD e de disquete, por exemplo, receberão nomes específicos em /dev
: uma unidade de CD/DVD conectada ao segundo canal IDE será identificada como /dev/hdc
(/dev/hda
e /dev/hdb
são reservados para os dispositivos mestre e escravo no primeiro canal IDE) e uma unidade de disquete antiga será identificada como /dev/fdO
, /dev/fd1
, etc.
A partir da versão 2.4 do kernel Linux em diante, a maioria dos dispositivos de armazenamento passou a ser identificada como dispositivos SCSI, independentemente do tipo de hardware. Os dispositivos de bloco IDE, SSD e USB são prefixados com sd
. Para os discos IDE, o prefixo sd
é usado, mas a terceira letra é escolhida dependendo da unidade ser mestre ou escrava (no primeiro canal IDE, o mestre será sda
e o escravo será sdb
). As partições são listadas em ordem numérica. Os caminhos /dev/sda1
, /dev/sda2
, etc. são usados para a primeira e a segunda partições do dispositivo de bloco identificado primeiro e /dev/sdb1
, /dev/sdb2
, etc. identificam a primeira e a segunda partições do dispositivo de bloco identificado a seguir. A exceção a esse padrão ocorre com cartões de memória (cartões SD) e dispositivos NVMe (SSD conectados ao barramento PCI Express). Para os cartões SD, os caminhos /dev/mmcblk0p1
, /dev/mmcblk0p2
etc. são usados para a primeira e a segunda partições do dispositivo identificado primeiro e /dev/mmcblk1p1
, /dev/mmcblk1p2
, etc. identificam a primeira e a segunda partições do dispositivo identificado em segundo lugar. Os dispositivos NVMe recebem o prefixo nvme
, como em /dev/nvme0n1p1
e /dev/nvme0n1p2
.
Exercícios Guiados
-
Suponha que um sistema operacional não consegue inicializar após um segundo disco SATA ser adicionado ao sistema. Sabendo que as peças não são defeituosas, qual poderia ser a causa possível desse erro?
-
Você acaba de adquirir um novo computador de mesa e gostaria de conferir se a placa de vídeo externa conectada ao barramento PCI é realmente a anunciada pelo fabricante. Porém, se abrir o gabinete do computador, a garantia será anulada. Qual comando pode ser usado para listar as informações da placa de vídeo detectadas pelo sistema operacional?
-
A linha a seguir faz parte da saída gerada pelo comando
lspci
:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Qual comando deve ser executado para identificar o módulo do kernel em uso neste dispositivo específico?
-
Um administrador deseja experimentar parâmetros diferentes para o módulo do kernel
bluetooth
sem reiniciar o sistema. No entanto, qualquer tentativa de descarregar o módulo commodprobe -r bluetooth
resulta no seguinte erro:modprobe: FATAL: Module bluetooth is in use.
Qual a possível causa desse erro?
Exercícios Exploratórios
-
É comum encontrar máquinas legadas em ambientes de produção, por exemplo quando certos equipamentos usam uma conexão desatualizada para se comunicar com o computador controlador, sendo assim necessário estar particularmente atento a algumas peculiaridades dessas máquinas mais antigas. Certos servidores x86 com firmware BIOS mais antigo, por exemplo, não inicializam se um teclado não for detectado. Como esse problema específico pode ser evitado?
-
Os sistemas operacionais criados em torno do kernel do Linux também estão disponíveis para uma ampla variedade de arquiteturas de computadores além do x86, como os computadores de placa única baseados na arquitetura ARM. Um usuário atento notará a ausência do comando
lspci
nessas máquinas, como o Raspberry Pi. Que diferença em relação às máquinas x86 justifica essa ausência? -
Muitos roteadores de rede incluem uma porta USB que permite a conexão de um dispositivo externo, como um disco rígido USB. Sabendo que a maioria deles usa um sistema operacional baseado em Linux, qual seria o nome de um disco rígido USB externo no diretório
/dev/
, supondo-se que não haja nenhum outro dispositivo de bloco convencional no roteador? -
Em 2018, a vulnerabilidade de hardware conhecida como Meltdown foi descoberta. Ela afeta quase todos os processadores de diferentes arquiteturas. As versões mais recentes do kernel Linux podem informar se o sistema atual está vulnerável. Como obter essas informações?
Resumo
Esta lição aborda os conceitos gerais de como o kernel do Linux lida com recursos de hardware, principalmente na arquitetura x86. A lição inclui os seguintes tópicos:
-
Como as configurações definidas nos utilitários de configuração da BIOS ou UEFI podem afetar a interação do sistema operacional com o hardware.
-
Como usar as ferramentas fornecidas por um sistema Linux padrão para obter informações sobre o hardware.
-
Como identificar dispositivos de armazenamento permanentes e removíveis no sistema de arquivos. Os comandos e procedimentos abordados foram:
-
Comandos para inspecionar o hardware detectado:
lspci
andlsusb
. -
Comandos para gerenciar os módulos do kernel:
lsmod
andmodprobe
. -
Arquivos especiais relacionados ao hardware, seja os arquivos encontrados no diretório
/dev/
ou nos pseudosistemas de arquivos/proc/
e/sys/
.
Respostas aos Exercícios Guiados
-
Suponha que um sistema operacional não consegue inicializar após um segundo disco SATA ser adicionado ao sistema. Sabendo que as peças não são defeituosas, qual poderia ser a causa possível desse erro?
A ordem dos dispositivos de inicialização deve ser definida no utilitário de configuração da BIOS, caso contrário a BIOS pode não conseguir executar o carregador de inicialização.
-
Você acaba de adquirir um novo computador de mesa e gostaria de conferir se a placa de vídeo externa conectada ao barramento PCI é realmente a anunciada pelo fabricante. Porém, se abrir o gabinete do computador, a garantia será anulada. Qual comando pode ser usado para listar as informações da placa de vídeo detectadas pelo sistema operacional?
O comando
lspci
lista informações detalhadas sobre todos os dispositivos atualmente conectados ao barramento PCI. -
A linha a seguir faz parte da saída gerada pelo comando
lspci
:03:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2208 [Thunderbolt] (rev 05)
Qual comando deve ser executado para identificar o módulo do kernel em uso neste dispositivo específico?
O comando
lspci -s 03:00.0 -v
oulspci -s 03:00.0 -k
-
Um administrador deseja experimentar parâmetros diferentes para o módulo do kernel
bluetooth
sem reiniciar o sistema. No entanto, qualquer tentativa de descarregar o módulo commodprobe -r bluetooth
resulta no seguinte erro:modprobe: FATAL: Module bluetooth is in use.
Qual a possível causa desse erro?
O módulo
bluetooth
está sendo usado por um processo em execução.
Respostas aos Exercícios Exploratórios
-
É comum encontrar máquinas legadas em ambientes de produção, por exemplo quando certos equipamentos usam uma conexão desatualizada para se comunicar com o computador controlador, sendo assim necessário estar particularmente atento a algumas peculiaridades dessas máquinas mais antigas. Certos servidores x86 com firmware BIOS mais antigo, por exemplo, não inicializam se um teclado não for detectado. Como esse problema específico pode ser evitado?
O utilitário de configuração da BIOS tem uma opção para desativar o bloqueio do computador quando um teclado não é encontrado.
-
Os sistemas operacionais criados em torno do kernel do Linux também estão disponíveis para uma ampla variedade de arquiteturas de computadores além do x86, como os computadores de placa única baseados na arquitetura ARM. Um usuário atento notará a ausência do comando
lspci
nessas máquinas, como o Raspberry Pi. Que diferença em relação às máquinas x86 justifica essa ausência?Ao contrário da maioria das máquinas x86, um computador baseado em ARM, como o Raspberry Pi, não possui um barramento PCI; portanto, o comando
lspci
é inútil. -
Muitos roteadores de rede incluem uma porta USB que permite a conexão de um dispositivo externo, como um disco rígido USB. Sabendo que a maioria deles usa um sistema operacional baseado em Linux, qual seria o nome de um disco rígido USB externo no diretório
/dev/
, supondo-se que não haja nenhum outro dispositivo de bloco convencional no roteador?Os kernels do Linux modernos identificam os discos rígidos USB como dispositivos SATA, de modo que o arquivo correspondente será
/dev/sda
, já que não existe nenhum outro dispositivo de bloco convencional no sistema. -
Em 2018, a vulnerabilidade de hardware conhecida como Meltdown foi descoberta. Ela afeta quase todos os processadores de diferentes arquiteturas. As versões mais recentes do kernel Linux podem informar se o sistema atual está vulnerável. Como obter essas informações?
O arquivo
/proc/cpuinfo
tem uma linha que mostra os bugs conhecidos para a CPU correspondente, como por exemplobugs: cpu_meltdown
.