Linux Professional Institute Learning Logo.
Ir para o conteúdo principal
  • Home
    • Todos os recursos
    • LPI Materiais Didáticos
    • Colabore Conosco
    • Publishing Partners
    • Seja um Publishing Partner
    • Quem Somos
    • FAQ
    • Colaboradores
    • Contato
  • LPI.org
101.1 Lição 1
Tópico 101: Arquitetura de Sistema
101.1 Identificar e editar configurações de hardware
  • 101.1 Lição 1
101.2 Início (boot) do sistema
  • 101.2 Lição 1
101.3 Alternar runlevels/boot targets, desligar e reiniciar o sistema
  • 101.3 Lição 1
Tópico 102: Instalação do Linux e administração de Pacotes
102.1 Dimensionar partições de disco
  • 102.1 Lição 1
102.2 Instalar o gerenciador de inicialização
  • 102.2 Lição 1
102.3 Controle de bibliotecas compartilhadas
  • 102.3 Lição 1
102.4 Utilização do sistema de pacotes Debian
  • 102.4 Lição 1
102.5 Utilização do sistema de pacotes RPM e YUM
  • 102.5 Lição 1
102.6 Linux virtualizado
  • 102.6 Lição 1
Tópico 103: Comandos GNU e Unix
103.1 Trabalhar na linha de comando
  • 103.1 Lição 1
  • 103.1 Lição 2
103.2 Processar fluxos de texto usando filtros
  • 103.2 Lição 1
103.3 Gerenciamento básico de arquivos
  • 103.3 Lição 1
  • 103.3 Lição 2
103.4 Fluxos, pipes (canalização) e redirecionamentos de saída
  • 103.4 Lição 1
  • 103.4 Lição 2
103.5 Criar, monitorar e finalizar processos
  • 103.5 Lição 1
  • 103.5 Lição 2
103.6 Modificar a prioridade de execução de um processo
  • 103.6 Lição 1
103.7 Procurar em arquivos de texto usando expressões regulares
  • 103.7 Lição 1
  • 103.7 Lição 2
103.8 Edição básica de arquivos com o vi
  • 103.8 Lição 1
Tópico 104: Dispositivos, sistemas de arquivos Linux e padrão FHS
104.1 Criar partições e sistemas de arquivos
  • 104.1 Lição 1
104.2 Manutenção da integridade de sistemas de arquivos
  • 104.2 Lição 1
104.3 Controle da montagem e desmontagem dos sistemas de arquivos
  • 104.3 Lição 1
104.5 Controlar permissões e propriedades de arquivos
  • 104.5 Lição 1
104.6 Criar e alterar links simbólicos e hardlinks
  • 104.6 Lição 1
104.7 Encontrar arquivos de sistema e conhecer sua localização correta
  • 104.7 Lição 1
How to get certified
  1. Tópico 101: Arquitetura de Sistema
  2. 101.1 Identificar e editar configurações de hardware
  3. 101.1 Lição 1

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:

  1. O dispositivo foi identificado.

  2. Um módulo do kernel correspondente foi carregado.

  3. 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 /etc/modprobe.d/blacklist.conf que já existe no sistema por padrão. Porém, a melhor opção é criar um arquivo de configuração separado, /etc/modprobe.d/<module_name>.conf, contendo ajustes específicos àquele módulo do kernel em particular.

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

  1. 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?

  2. 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?

  3. 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?

  4. 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 com modprobe -r bluetooth resulta no seguinte erro:

    modprobe: FATAL: Module bluetooth is in use.

    Qual a possível causa desse erro?

Exercícios Exploratórios

  1. É 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?

  2. 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?

  3. 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?

  4. 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 and lsusb.

  • Comandos para gerenciar os módulos do kernel: lsmod and modprobe.

  • 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

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

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

  3. 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 ou lspci -s 03:00.0 -k

  4. 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 com modprobe -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

  1. É 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.

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

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

  4. 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 exemplo bugs: cpu_meltdown.

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

Próxima Lição

101.2 Início (boot) do sistema (101.2 Lição 1)

Ir para a próxima lição

Linux Professional Insitute Inc. Todos os direitos reservados. Visite o site dos Materiais Didáticos: https://learning.lpi.org
31/5000 Este trabalho está licenciado sob a Licença Creative Commons Atribuição-Uso Não-Comercial-NãoDerivativos 4.0 Internacional.

A LPI é uma organização sem fins lucrativos.

© 2023 O Linux Professional Institute (LPI) é um organismo de apoio aos profissionais de Open Source e referência mundial em certificação. Com mais de 200.000 pessoas certificadas, somos o principal organismo de certificação independente para Linux e Open Source do mundo. O LPI certificou profissionais de mais de 180 países, oferece exames em diversos idiomas e tem centenas de parcerias de formação em todo o globo.

Nossa missão é proporcionar oportunidades econômicas e criativas para todos, tornando universalmente acessível a certificação de conhecimentos e competências em matéria de Open Source.

  • LinkedIn
  • flogo-RGB-HEX-Blk-58 Facebook
  • Twitter
  • Entre em Contato
  • Política de Privacidade e Cookies

Encontrou um erro ou quer ajudar a aprimorar esta página? Escreva pra nós.

© 1999–2023 The Linux Professional Institute Inc. Todos os direitos reservados.