Kategóriák: Minden - dispositivos - cpu - hardware

a Felipe Mariani 1 éve

108

101.1 - Linux - Arquitetura de Sistema

A arquitetura de sistemas Linux permite a identificação e edição de configurações de hardware através de utilitários de configuração acessíveis pelas teclas del, f2 e f12. No utilitário de configuração da BIOS, é possível gerenciar periféricos integrados, ativar proteções básicas contra erros e modificar configurações de hardware como IRQ e DMA.

101.1 - Linux - Arquitetura de Sistema

101.1 - Linux - Arquitetura de Sistema

Dispositivos de armazenamento

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

Arquivos de informação e de dispositivo

À 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.
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.
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.
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 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.
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/dma Lista os canais registrados de DMA (acesso direto à memória) em uso.
/proc/ioports Lista as regiões de portas de Entrada/Saída registradas atualmente e em uso.
/proc/interrupts Uma lista de números de interrupções por dispositivo de entrada e saída em cada CPU.
/proc/cpuinfo Lista informações detalhadas sobre a(s) CPU(s) encontradas pelo sistema operacional.
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.

Inspeção de dispositivos no Linux

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

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

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

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

modprobe O comando modprobe pode ser usado para carregar e descarregar módulos do kernel:

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.

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. modprobe -r snd-hda-intel

lsmod É 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

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.

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

Com a opção -t, o comando lsusb mostra os mapeamentos do dispositivo USB atual na forma de árvore hierárquica: lsusb -t

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

O comando lsusb é semelhante a lspci, mas lista exclusivamente as informações relativas à USB: lsusb

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.

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

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

A seguinte saída do comando lspci, por exemplo, mostra alguns dispositivos identificados: lspci

Identificar e editar configurações de hardware

Utilitário de configuração (firmware)
Com as teclas del e de função f2 e f12, invocamos o utilitário de configuração

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.

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.

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

UEFI (Unified Extensible Firmware Interface)

BIOS (Basic Input/Output System)

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