fbpx
Whatsapp (31) 3069-8315
atendimento@certificacaolinux.com.br
Conheça o Sysfs no Linux

Conheça o sistema no Linux encarregado de reconhecer o hardware

O sysfs é um recurso do Kernel para exportar informações úteis sobre o sistema para os processos (programas) dos usuários através de um sistema de arquivo em memória.

O sysfs organiza as informações do Kernel em diretórios de forma rigorosa e baseada na organização interna das estruturas de dados do Kernel.

Os arquivos que são criados neste sistema de arquivos são principalmente em ASCII (texto puro) com um valor por arquivo.

Estas características asseguram que as informações passadas pelo sysfs aos programas sejam precisas e utilizadas facilmente.

Uma vez que a estrutura do sysfs é composta de diretórios, arquivos e links simbólicos, a navegação dentro dele é fácil e intuitiva. O sysfs geralmente é montado no diretório /sys.

Os principais diretórios do sysfs são: block, bus, class, devices, firmware, fs, kernel, module e power.

BLOCK

O diretório block contém subdiretórios para cada sistema de arquivos de bloco (discos rígidos, principalmente) existentes no sistema.

Dentro dos diretórios dos dispositivos, há diversos arquivos que indicam, ente outras coisas, o tamanho do dispositivo, status etc .

BUS

Este diretório contém subdiretórios para cada tipo de barramento suportado pelo Kernel. E cada subdiretório contém os diretórios devices e drivers.

O primeiro contém uma lista de todos os dispositivos encontrados que são do tipo de barramento indicado.

O segundo contém os drivers de dispositivos daquele tipo de barramento.

CLASS

O diretório class contém representações de cada classe de dispositivo que está registrado no Kernel.

As classes indicam o tipo de dispositivo que elas representam. Por exemplo: classe de impressoras, classe de discos etc.

Cada subdiretório de classe terá um diretório para cada tipo de dispositivo encontrado pertencente àquela classe. Por exemplo: a classe “net” contém os dispositivos “eth0” e “eth1”.

E, dentro de cada diretórios de dispositivo, são encontrados arquivos e diretórios associados ao tipo de dispositivo a que ele pertence.

DEVICES

O diretório devices contém a hierarquia global dos dispositivos encontrados e suportados pelo Kernel.

Sua hierarquia de diretórios obedece a organização dos dispositivos em qual tipo de conexão elétrica eles estão conectados. Apenas dois dispositivos são a exceção da regra: dispositivos de plataforma (platform) e de sistema (system).

O primeiro diretório é relativo aos dispositivos periféricos inerentes à plataforma de processamento e barramento do hardware. Por exemplo: dispositivos inerentes a portas de entrada e saída, controladores seriais e paralelos, etc.

Já o system representa os dispositivos não periféricos que não se encaixam em qualquer outra classificação. Por exemplo: CPUs, APICs, temporizadores etc.

FIRMWARE

O diretório firmware contém interfaces para verificar e atribuir objetos específicos de firmware. Firmware são códigos executados durante o processo de carga da máquina, como software da BIOS.

MODULE

O diretório module contém subdiretórios com todos os módulos de Kernel carregados para a memória.

Os módulos são pedaços de programas que podem ou não fazer parte do Kernel, de forma que são lidos e executados de acordo com a necessidade do usuário.

Por exemplo: se você não utiliza com frequência o drive para um HD externo USB, pode optar por carregar o módulo que habilita suporte a discos externos somente quando for fazer uso deste tipo de mídia. Este tipo de arquitetura modular permite que o Kernel fique mais leve, ocupando menos memória e também menos processamento, deixando a CPU mais tempo livre para executar os programas dos usuários.

Um Kernel enxuto permite que o sistema tenha uma eficiência melhor, mas não impede que outras funcionalidades sejam agregadas sob demanda na forma de módulos do Kernel.

É importante saber que todos os diretórios de módulo contêm um arquivo chamado refcnt que conta o número de referências ou número de usuários que fazem uso do módulo específico.

POWER

O diretório power representa o subsistema de gerenciamento de energia. Possui alguns arquivos que representam o método que o sistema irá utilizar para entrar em modo de suspensão ou economia de energia.

É importante você saber que as informações contidas neste sistema de arquivos são organizadas de forma que diversos programas e utilitários fazem uso delas para interagir melhor com o Kernel.

HALD

O hald é um programa que fica em execução em modo de servidor (daemon) que mantém um banco de dados sobre os dispositivos conectados ao sistema, em tempo real.

Este programa fica conectado no Kernel através do D-BUS escutando as mensagens referentes aos dispositivos e provê uma biblioteca de programação API para que outros programas possam descobrir, monitorar e fazer uso dos dispositivos.

O HALD facilita o trabalho dos programadores oferecendo um meio fácil e rápido de interagir com os dispositivos sem precisar fazer acesso direto a eles.

UDEV

O gerenciamento dinâmico de dispositivos (udev) é responsável por manter a estrutura de diretório do /dev (diretório que contém os links que representam os dispositivos) de forma a permitir que somente dispositivos conectados sejam listados na estrutura do /dev.

Geralmente este gerenciador é executado na forma do programa chamado udevd em modo de servidor (daemon) que fica escutando os eventos do Kernel para encontrar quando um dispositivo é removido ou adicionado ao sistema.

Quando se percebe um evento de dispositivo no Kernel ele compara com as regras relacionadas no sysfs para identificar o dispositivo e, depois disso, cria ou remove o link simbólico do dispositivo no diretório /dev.

D-BUS

D-BUS é um projeto de software livre mantido pela freedesktop.org. Seu principal objetivo é criar um barramento de troca de mensagens entre os programas.

Ele permite que os programas interajam entre si de forma que o programador não precisa conhecer a instância do outro programa em que ele deseja se conectar.

Desta forma, o D-BUS oferta uma biblioteca de programação que permite a troca de mensagens entre as aplicações através de protocolos padronizados, utilizando-se do XML para fazer a ligação entre programas distintos.

O D-BUS suporta diversas linguagens de programação de alto nível como Qt, GLib, Java, C#, Python, etc.

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Use o lspci para ver o hardware no Linux

Conheça o comando lspci para ver o hardware que o Linux foi capaz de reconhecer.

O lspci é útil para mostrar todas as informações sobre os barramentos PCI do sistema e os dispositivos conectados a eles.

Suas opções mais comuns são:

  • -v  Mostra informações detalhadas sobre todos os dispositivos.
  • -vv           Mostra ainda mais informações sobre os dispositivos.
  • -n Mostra os códigos dos fabricantes e dispositivos.
  • -x  Mostra os primeiros 64 bytes da configuração PCI em hexadecimal.
  • -xxx         Mostra toda a configuração PCI em hexadecimal.

# lspci

0000:00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX – 82443BX/ZX/DX Host bridge (rev 01)

0000:00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX – 82443BX/ZX/DX AGP bridge (rev 01)

0000:00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

0000:00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

0000:00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

0000:00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)


O Kernel do Linux possui um robusto sistema de reconhecimento de hardware e suporte a diversos dispositivos. Este sistema foi implementado principalmente através do sysfs, udev e do d-bus.

Veja como utilizar o comando lspci com esta pequena aula prática:

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Como o Linux Lida com o Hardware

Conheça a função dos arquivos /proc/pci, /proc/dma, /proc/interrupts e /proc/ioports

Para que tudo esteja funcionando corretamente, é necessário que os dispositivos estejam alocando recursos do computador.

Estes recursos podem ser portas de entrada e saída, requisições de interrupção (IRQ) e acesso direto a memória (DMA). Vejamos estes conceitos.

Portas de Entrada/Saída (Input / Output)

As portas de entrada e saída são endereços de memória reservados no microprocessador para os dispositivos realizarem entrada e saída de informações.

Estes endereços de memória são utilizados para troca de dados entre o processador e os dispositivos de forma simplificada.

Os dispositivos podem usar mais de uma porta de entrada/saída ou uma faixa de endereços. Por exemplo, uma placa de som padrão usa as portas 0x220, 0x330 e 0x388.

Cada dispositivo possui um endereço de porta única que não podem ser compartilhados entre outros dispositivos.

Os endereços de E/S em uso no sistema podem ser visualizados com o comando:

# cat /proc/ioports
0000-001f : dma1
0020-003f : pic1
0040-005f : timer
0060-006f : keyboard
0070-007f : rtc
(…)

Requisição de Interrupção (IRQ)

Os IRQs são chamadas que os dispositivos podem fazer para requerer atenção especial do processador.

A maioria dos computadores oferece apenas 16 interrupções de hardware para os mais diversos dispositivos.

Pode parecer pouco para as modernas configurações com os mais diferentes dispositivos. Felizmente os IRQs podem ser compartilhados.

As interrupções do sistema podem ser visualizadas no Kernel com o comando:

# cat /proc/interrupts CPU0

0:          604694      XT-PIC   timer

1:          35746        XT-PIC keyboard

2:          0                XT-PIC cascade

3:          13546        XT-PIC orinoco_cs

11:        15              XT-PIC ALi Audio Accelerator

14:        38759        XT-PIC ide0

Acesso Direto a Memória (DMA)

A DMA é usada para permitir a transferência de dados entre dispositivos e a memória sem a intervenção do processador.

Este acesso é feito através de canais (channels). A maioria dos computadores tem dois controladores de DMA. O primeiro controla os canais 0, 1, 2, 3 e o segundo os canais 4, 5, 6, 7, totalizando 8 canais.

Os canais de DMA em uso no sistema podem ser visualizados com o comando:

# cat /proc/dma
4: cascade

É importante que você saiba que estes recursos são limitados e precisam ser gerenciados para que conflitos entre os dispositivos sejam evitados.

Alguns dispositivos como portas seriais e paralelas já utilizam os recursos no padrão a seguir:

TABELA – Referência de dispositivos no Linux

Nome do Dispositivo no Linux Nome do Dispositivo no Windows Porta E/S DMA IRQ
ttyS0 COM1 0x3F8 4
ttyS1 COM2 0x2F8 3
ttyS2 COM3 0x3E8 4
ttyS3 COM4 0x2E8 3
lp0 LPT1 0x378 7
lp1 LPT1 0x278 5
/dev/hda1 C: 0x1F0 14
/dev/fd0 A: 0x3F0 2 6

No exame LPIC-1 pode ser que você tenha que resolver algum possível conflito de recursos em portas seriais ou paralelas.

Hotplug x Coldplug

Existem dispositivos que podem ser conectados ou removidos com o computador ligado e em pleno funcionamento, que são categorizados como hotplug.

Para estes o Kernel será capaz de perceber sua presença ou ausência e carregar os drivers, scripts e programas necessários ao seu correto funcionamento.

Nesta categoria se enquadram: teclado, mouse, webcam, hd externo USB, cd-rom externo USB, impressoras, caixas de som, microfones, monitores, celulares, pendrives etc.

Já os dispositivos que obrigatoriamente devem ser conectados e removidos com o computador desligado são chamados de coldplug.

Qualquer tentativa de alterar seu estado poderá causar travamento ou mesmo queima do equipamento. São eles: CPU, Memória RAM, discos rígidos internos, placas internas (som, vídeo etc).

Dispositivos de Armazenamento

O Linux suporta diversos tipos de armazenamento de dados em massa. Estes dispositivos podem ser categorizados em óticos, magnéticos ou em memória.

Os discos óticos são os CD-ROMs (700Mb), DVDs (4,7-8,5 Gb) e Blu-Rays (25-50Gb). Não são rápidos como os HDs, mas têm grande durabilidade se acondicionados em locais apropriados e não permitem gravar os dados diversas vezes. 

Os discos magnéticos têm grande capacidade de armazenamento de dados, que pode chegar a 8 Terabytes.

Alguns modelos são híbridos, pois possuem discos magnéticos e grandes memórias flash para armazenar os dados mais lidos ou até mesmo o sistema operacional. São sensíveis a solavancos e quedas.

Ainda na categoria de dispositivos magnéticos, temos as fitas magnéticas, bastante utilizadas para backup de dados. Permitem gravar dados de forma sequencial com baixo custo.

Seu uso é cada vez menor devido ao baixo preço dos discos, computação em cloud e outras estratégias de cópia de segurança mais avançadas.

Os “discos” em memória são na realidade bancos de memória flash chamados de Solid State Drive (SSD) – drive de estado sólido – encapsulados em uma caixa do tamanho de um HD e não possuem partes móveis como os discos óticos e magnéticos. Seu tempo de acesso aos dados é incrivelmente veloz se comparado aos discos magnéticos e óticos, são resistentes a quedas e solavancos, consomem menos energia, dentre outros benefícios.

No entanto a capacidade de armazenamento não ultrapassa 1 Terabyte, e seu custo é elevado em comparação com os discos magnéticos. São muito utilizados em Ultrabooks e em servidores de alta-performance.

Dispositivos PCI

Durante o processo de carga do sistema, o Kernel detecta os dispositivos PCI conectados no micro. A lista das placas de expansão encontradas poderá ser lida através do arquivo especial /proc/pci.

# cat /proc/pci

PCI devices found:

Bus 0, device 0, function 0:

Host bridge: PCI device 10b9:1644 (Acer Laboratories Inc. [ALi]) (rev 1).

Prefetchable 32 bit memory at 0xf0000000 [0xf3ffffff].

Bus 0, device 1, function 0:

PCI bridge: Acer Laboratories Inc. [ALi] M5247 (rev 0).

Master Capable. No bursts. Min Gnt=8.

Bus 0, device 2, function 0:

USB Controller: Acer Laboratories Inc. [ALi] M5237 USB (rev 3).

IRQ 11.

Quer aprender mais sobre os arquivos especiais do Linux no /proc? Conheça nosso curso de LPIC-1

Aprenda muito mais sobre Linux em nosso curso online. Você pode fazer a matrícula aqui com trial de 7 dias grátis. Se você já tem uma conta, pode acessar aqui.

Gostou? Compartilhe 🙂

Open chat