Linux : Gestão de hardware

Linux

Um computador ou qualquer dispositivo que corra um determinado sistema operativo, seja ele Linux, Windows, Mac OSX, etc é composto por duas partes, o hardware e o software, ambos com a sua importância. Podemos afirmar que é no hardware que tudo começa, porque é responsável pelos “cálculos” do computador. Neste artigo vamos dissecar o hardware presente num ambiente padrão, com Linux instalado.

Processador

O processador funciona como cérebro e é responsável pelos cálculos ou manipulação de dados. Existem actualmente três tipos: de 32 (x86), de  64(x86_64) bits e os ARM vulgarmente utilizados nos Raspberry Pi, smartphones, tablets, etc.

As informações sobre o processador são mantidas no ficheiro /proc/cpuinfo. Existem vários comandos para ver as suas informações.

Comando uname opção -m mostra a arquitectura.

Screen Shot 2016-01-07 at 12.09.49.png

O comando lscpu mostra informações detalhadas sobre o processador.

Screen Shot 2016-01-07 at 12.11.24.png

RAM

RAM ou random access memory, é responsável por armazenar dados temporários para o processador, instruções para o sistema operativo ou programas em execução.

Um processador de 32 bit pode ter num máximo 4GB de RAM (2^32) enquanto que um de 64 bit pode ter até 16Tb (2^64).

Um sistema Linux, precisa de pelo menos 1GB de RAM para correr a interface gráfica (GUI). Quando o utilizador tem pouco mais que 1GB, o sistema utiliza memória virtual. Em linux, a memória virtual é chamada de swap.

swap é na realidade uma partição criada no disco ao instalar o sistema, partição essa que vai ser utilizada quando o espaço disponível de memória RAM está totalmente ocupado. Apesar de ser vantajoso haver memória virtual, na verdade, caso o seu uso seja excessivo pode degradar a performance do computador, pois o disco é muito mais lento que a memória RAM.

As informações detalhadas sobre a memória RAM disponível no sistema podem ser visualizadas no ficheiro /proc/meminfo.

Podemos também utilizar o comando free para ver um sumário da memória disponível. Tanto física, como virtual.

Screen Shot 2016-01-07 at 12.25.17

Um grande apontamento ao exemplo em cima. Embora a máquina em que foi retirado o print Screen não esteja a utilizar muitos recursos, no output do comando é mostrado um numero baixo de memória livre. Isto porque o kernel guarda memória em buffers e cache para optimizar a performance do sistema operativo.

Firmware

O firmware é um software que é escrito numa memória não volátil (ROM) ou flash, presente em todos os dispositivos que fornecem um serviço para o sistema. O firmware é responsável por fazer o hardware comunicar de forma eficaz entre si e gerir os seus próprios recursos. O mais básico firmware é a BIOS (Basic input output system) que permite gerir o comportamento da motherboard.

Actualmente,  a BIOS está a ser substituída pelo novo sistema UEFI (Unified extensible firmware interface), o que torna mais complicado para os utilizadores de Linux fazer dual-boot, pois este novo sistema integra uma caracteristica de segurança chamada secure boot que se deve desligar nestes cenários.

Armazenamento

O Linux não requer a utilização de um dispositivo de armazenamento.

Existem várias interfaces para dispositivos de armazenamento (discos rígidos):

  • SCSI – Um dos primeiros controladores de discos;
  • IDE – Evolução dos SCSI. Inclui o controlador no disco;
  • SATA;
  • USB – A interface para discos externos e outros periféricos;
  • FLASH – Discos de memória flash. Não mecanicos. Maiores velocidades, durabilidades entre outras vantagens;

Podemos ver as partições com o comando df opção -h (para leitura facil).

Screen Shot 2016-01-08 at 19.17.05.png

Em linux uma partição sda é relativa a um disco, scsisata, ou usb.

Recursos de hardware

Antigamente, o sistema era mais limitado no sentido que para alocar recursos de hardware a certos dispositivos, se utilizavam jumpers. Hoje em dia, tudo isso é feito com uma certa inteligência por parte do hardware.

Existem quatro recursos fundamentais que os dispositivos utilizam para comunicar com o sistema.

  • Portas de input e output;
  • Memoria de input e output;
  • IRQ´s (interrupts);
  • DMA´s (canais de acesso há memória);

Essas informações são encontradas na directoria /proc  nos seguintes ficheiros.

DMA.

Screen Shot 2016-01-08 at 19.24.48.png

IOMEM

Screen Shot 2016-01-08 at 19.25.48.png

IOPORTS

Screen Shot 2016-01-08 at 19.26.27.png

Podemos ver na mesma directoria, na pasta irq um conjunto de pastas relativas a cada irq.

Screen Shot 2016-01-08 at 19.30.29.png

Caso queira, podemos discutir o que significam as informações mostradas nos quatro exemplos anteriores.

Listar hardware

Para ver o hardware utilizamos dois comandos: lsusb, para ver os dispositivos usb;  lspci, para ver os dispositivos pci (pci é um barramento).

Os dois comandos fazem o mesmo com a opção -v (verbose). Mostram mais informação acerca do hardware.

Screen Shot 2016-01-08 at 19.34.25.png

Podemos ainda utilizar a opção -vv que mostra ainda mais informação.

Screen Shot 2016-01-08 at 19.35.55.png

Podemos também procurar por dispositivos através do número de fabricante. Para isso temos de o descobrir com a opção -nn.

Screen Shot 2016-01-08 at 19.38.40.png

Podemos depois utiliza-lo juntamente com a opção -d.

Screen Shot 2016-01-08 at 19.40.37

Módulos do kernel

O kernel, como já devem saber a esta altura é responsável por gerir todo o hardware. É um grande pedaço de software que contem código para fazer o sistema funcionar de forma eficiente.

Uma maneira comum de resolver um grande problema e o que se diz de divide and conquer. No kernel funciona de forma parecida, mas com várias divisões conhecidas como módulos.

O kernel é modular.

Um módulo não é mais que um software que corre com o kernel e lhe adiciona funcionalidades. Imaginemos o seguinte cenário: Uma máquina que foi instalada de raiz. Como é que o sistema operativo sabe como comunicar out-of-the-box com o processador, drive de cd´s, discos etc. Porque essas drives genéricas estão num módulo do kernel.

Existem módulos para várias coisas, como por exemplo, para comunicações, criptografia, para sistemas de ficheiros etc.

Podemos instalar ou remover módulos do sistema. Para ver os que estão instalados utilizamos o comando lsmod.

Screen Shot 2016-01-08 at 19.48.28.png

Por exemplo, o sistema de ficheiros do meu sistema linux é o ext4 e posso ver pelo output que tenho um módulo chamado crc16, para o meu sistema de ficheiros funcionar.

Podemos ver os módulos disponíveis, adicionar e remover módulos ao kernel com o comando modprobe.

Uma vez que é extenso, qualquer dúvida sobre Linux, deixe na caixa de comentários!

Fonte das imagens