LPIC 1 - 101.1 IDENTIFICAR E EDITAR CONFIGURAÇÕES DE HARDWARE

Neste tópico os usuários terão que conhecer os comandos que gerenciam e exibem informações sobre o hardware do sistema, bem como configurar seus periféricos.

Para isso, teremos que saber um pouco mais sobre os diretórios /proc , /sys e o /dev, conhecer os comandos lsmod, lspci, lsusb, identificar os tipos de dispositivos em massa, saber se os módulos estão carregados corretamente no sistema, diferenciar dispositivos coldplug e hotplug e entender conceitualmente sysfs, udev e dbus.


Peso 2

Dispositivos Coldplug e Hotplug

Coldplug diz respeito aos dispositivos que só podem ser inseridos ou removidos quando a máquina está desligada: processador, memoria, placas PCI e dispositivos IDE. Em alguns servidores de alta performance, CPU e módulos de memoria já suportam hotplugs para esses componentes.

Hotplugs são dispositivos que podem ser inseridos ou removidos com a máquina em funcionamento. Os dispositivos hotplugs mais comuns são os dispositivos USB.
OBS: O sistema hotplug foi incorporado ao Linux somente a partir do kernel 2.6.

O sistema Udev

Como dito mais acima, para a prova de certificação LPI 101, temos que conhecer conceitualmente o udev.
O udev (Userspace devfs) é um sistema de arquivo que gerencia dispositivos no diretório /dev. Ele cria/remove esses dispositivos dinamicamente. Como o udev tem também a função de hotplug, ele detecta os dispositivos a medida em que você vai adicionando-os a sua máquina (impressora, pendrive, câmeras) e os deixa utilizáveis para o sistema e para o usuário.

Após a detecção do dispositivo pelo kernel, essas informações são armazenadas no diretório /sys através do sistema sysfs e é gerado um evento que é lido pelo daemon do udev. Após ser informado pelo daemon, o udev identifica o dispositivo conectado, carrega o módulo correto e cria um arquivo especial no diretório /dev.

Os eventos informados ao udev pelo daemon podem ser adição, remoção ou alteração de algum dispositivo. Esse processo de detecção e preparação dos dispositivos para uso, não é exclusividade só dos devices hotplugs: com os dispositivos coldplug acontece o mesmo processo.

Exemplo: Quando executamos o comando udevadm monitor





















Com esse comando, o sistema mostra o log em tempo real das descobertas de alteração de hardware pelo sistema. Nas 4 primeiras linhas, eu ativei a minha placa de rede wi-fi. Perceba que o evento ficou como change, pois não removi a placa, apenas a havia desligado. Da 5º linha em diante, eu desconectei o meu mouse usb e em seguida o conectei novamente. O log mostra o evento como remove e add.

Você ainda pode definir os nomes dos dispositivos do seu cartão de memória, pendrive, camera, discos rígidos. Para isso, basta você criar regras do udev.

Para maiores informações bem mais aprofundadas sobre o udev, clique nesse link e nesse.

O sistema sysfs

O sistema sysfs (sys file system) é responsável por organizar informações sobre os dispositivos conectados a máquina, no diretório /sys. Após a detecção do hardware pelo kernel, o sysfs permite que o ambiente de usuário e programas utilizem o hardware detectado através de system calls.
Essas informações são organizadas através de uma hierarquias de diretórios dentro do /sys.
O sysfs foi introduzido no kernel 2.6.

Os diretórios mais comuns são:
block, bus, class, devices, firmware, fs, kernel, module, power.

/sys/block - são os dispositivos que estão armazenados em blocos e que seu acesso se dá de forma aleatória (radom access). As informações contidas nesse diretório são tamanho do dispositivo, status e etc, sobre discos rígidos, unidades de cd's/dvd's, dispositivos de loopback.

/sys/bus - armazena os barramentos suportados pelo kernel, que contém ainda os devices e os drivers, onde o diretório device estão todos os dispositivos encontrados pelo kernel e no diretório drivers, estão todos os drivers dos barramentos carregados pelo sistema 

/sys/class - diretório que classifica todos os dispositivos suportados pelo kernel (rede, bluetooh, scsi...)

/sys/devices - contém todos os devices suportados e encontrado pelo kernel bem como informações de status e configurações.

/sys/modules - mostra subdiretórios dos módulos que foram carregados pelo kernel na memória.

Para mais informações, acesse aqui e aqui.

Dbus

Responsável por realizar operações quando algum evento ocorre: abrir o gerenciador de arquivos (nautilus/tunnar) quando um pendrive é conectado à máquina, ou abrir um programa de música quando inserimos um cd de áudio.

Fonte.

Os diretórios /proc, /sys e /dev

Agora que sabemos um pouco sobre como funciona o sistema quando o hardware é detectado, vamos saber um pouco mais sobre os diretórios que armazenam as informações sobre os dispositivos detectados pelo kernel.

Após detecção e identificação, o sistema sysfs e udev utilizam as informações sobre os dispositivos e armazenam em diretórios específicos, cada um com sua função.

/proc - é o diretório onde estão as informações sobre o hardware da máquina, processos em execução na memória ou até mesmo alguma mudança no kernel. É importante ressaltar que os arquivos que se encontram no /proc não são arquivos reais, que ocupam espaço no disco rígido. Eles são arquivos virtuais que indicam o estado da máquina naquele momento.

Fazendo uso das informações do /proc

Para colhermos informações de módulos, cpu, memória etc, podemos rodar alguns comandos dependendo da nossa necessidade.

Se quisermos obter os módulos carregados no sistema, digitamos o comando:
cat /proc/modules

A saída será algo assim:



Para obtermos informações sobre o processador:
cat /proc/cpuinfo














Informações sobre IRQ

cat /proc/interrupts























Uma coisa bem legal que podemos fazer para ver mais detalhes de um processo em execução, é dar o comando ps (veremos sobre esse comando mais para a frente), e de posse do número do PID, obtermos mais detalhes sobre o processo em questão.

Resultado do comando ps:









E em seguida dar o comando cat /proc/número_do_PID/status. Exemplo:

cat /proc/5813/status





















Para mais informações sobre o /proc, clique aqui.


O diretório /sys

O /sys tem função especifica de armazenar informações de dispositivos. Após a identificação do dispositivo, o kernel cria o nome do dispositivo no diretório /sys e notifica o sub sistema udev para que seja criado um arquivo do dispositivo no /dev.

O diretório /dev

É responsável por armazenar informações sobre todos os dispositivos da máquina, em especial, unidades de armazenamento. Os arquivos que se encontram nesse diretórios não são legíveis para humanos: o que existe nesse diretório são arquivos virtuais que identificam os dispositivos encontrados pelo sistema. Após a detecção, ele "libera" esses arquivos para uso de hardwares e softwares.

Se o /dev é formado por informações dos dispositivos do hardware da máquina, podemos concluir que, se ele não estiver montado no sistema, ele estará vazio. Simples :)

Nomenclatura dos dispositivos no diretório /dev

Para a identificação dos dispositivos localizados em /dev, o sistema utiliza a nomenclatura da seguinte forma:

XXY[N], onde:

XX - identifica o tipo de dispositivo (hd, sd, tty, vcs, fd...);
Y - corresponde ao número do dispositivo;
N - para identificar o número das partições no caso de discos rígidos

Para a prova, vamos no ater para a identificação dos discos rígidos, tanto para HD's IDE, Sata ou SCSI.

HD's IDE (Integrated Driver Eletronics) tem a seguinte identificação:

/dev/hda1 - primeira partição do disco conectado como master na IDE primária;
/dev/hda2 - segunda partição do disco conectado como master na IDE primária;
/dev/hdb1 - primeira partição do disco conectado como slave na IDE primária;
/dev/hdb2 - segunda partição do disco conectado como slave na IDE primária;
/dev/hdc3 - terceira partição do disco conectado como master na IDE secundária
       .
       .
       .

Essas numerações são alteráveis por meio de jumpers no próprio HD ou no BIOS da controladora.
OBS: Eu sempre confundia a nomenclatura hda, hdb....etc. Mas para aprender de vez, basta fazer assim: sempre que tiver hdA, a letra A refere-se ao HD na IDE primária, jumpeado como MASTER. Se for hdB, significa que outro HD está conectado na IDE primária, jumpeado como SLAVE. O restante da numeração [1,2,3...] é quantas partições esses HD's possuem.

Para HD's SATA (Serial Ata - Serial Advanced Technology Attachment ) e SCSI (Small Computer System Interface):

/dev/sda1 - primeira partição do primeiro disco;
/dev/sda2 - segunda partição do primeiro disco;
/dev/sdb1 - primeira partição do segundo disco;
/dev/sdb2 - segunda partição do segundo disco;
/dev/sdb3 - terceira partição do segundo disco.
       .
       .
       .

Outros dispositivos:

/dev/fd0 - primeiro drive de disquete;
/dev/ht0 - primeiro drive de fita IDE;
/dev/lp0 - impressora paralela;
/dev/ttySO - primeira porta serial.

PS: Para enviar os dados para o "nada", ou seja, para o além, utiliza-se o diretório /dev/null.

Para uma lista de todos os dispositivos sata/scsi, basta darmos o comando cat /proc/scsi/scsi











Meu disco rígido sata e minha gravadora de dvd-rom :)


Comandos de inspeção

Agora que conhecemos um pouco dos sistemas que identificam o hardware da máquina, bem como alguns arquivos e diretórios, vamos aprender a inspecionar as informações dos dispositivos.
Os comandos mais comuns são: lspci, lsusb, lsmod.

O comando lspci

Mostra todos os dispositivos conectados ao barramento PCI (Peripheral Component Interconnect), como controladoras de disco, placas externas, controladoras USB, etc.

Saída do comando lspci












Com esse comando, listamos os dispositivos detectados pelo sistema, mas isso não que dizer que estejam funcional, "pois para cada componente de hardware, é necessário um componente de software que controla o dispositivo." 2012, Siqueira, 4º Edição. Podemos fornecer algumas opções com o próprio lspci para vermos os módulos dos dispositivos desejados.

Vamos ver o módulo da minha placa de rede cabeada

lspci -s 05:00.0 -v













Repare em:
Subsystem: Dell Device - dispositivo foi identificado
Kernel driver in use e kernel modules: r8169 - módulo correspondente da minha placa de rede.

Essa situação indica que o dispositivo está funcionando normalmente.


O comando lsmod

Mostra os módulos carregados atualmente. As informações mostradas vem do arquivo /proc/modules.

Saída do comando lsmod























Significado das 3 colunas do lsmod:

Module: nome do módulo
Size: memória, em bytes, ocupada pelo módulo
Used by: módulos dependentes

Vamos ver se o módulo da minha placa de rede cabeada (r8169) está aqui? Para isso, digitamos o comando:

lsmod | grep r8169













Aí está!

O comando lsusb

Mostra os dispositivos usb conectados à máquina.

Saída do comando lsusb










Para vermos mais detalhes, informamos o ID do dispositivos com a opção -d junto com o parâmetro -v:

lsusb -v -d 0cf3:3005





















Essa listagem é bem longa, mas contém muitas informações sobre o dispositivo.


Modprobe

Permite carregar módulos e dependências manualmente.

A sintaxe do comando:

modprobe módulo opções_do_módulo

Onde:
módulo - nome do módulo
opções do módulo - varia. Nem todo módulo possui opções.

Módulos x Drivers

Talvez você esteja se perguntando o que são os módulos. Módulos são a mesma coisa que os drivers utilizados no Windows. A grande diferença é que, para o Windows, os próprios fabricantes desenvolvem e disponibilizam seus drivers para o sistema da Microsoft, enquanto que para o GNU/Linux, os próprios desenvolvedores produzem esses drivers. Esse é um dos casos em que alguns dispositivos funcionam no Windows e no GNU/Linux não.


Com isso, terminamos o primeiro tópico para o exame LPI-101. Pratiquem bem os comandos, lembrem de algumas nomenclaturas e significados de alguns termos como IDE, SATA, udev, sysfs, etc.

Good luck!

Comentários