cap3

Capítulo 3 - Hardware

Hardware

Nomes de dispositivos

Seria terrível se ao configurar CADA programa que utilize o mouse ou o modem precisássemos nos referir a ele pela IRQ, I/O, etc... para evitar isso são usados os nomes de dispositivos.

Os nomes de dispositivos no sistema GNU/Linux são acessados através do diretório /dev. Após configurar corretamente o modem, com sua porta I/O 0x2F8 e IRQ 3, ele é identificado automaticamente por /dev/ttyS1 (equivalente a COM2 no DOS). Daqui para frente basta se referir a /dev/ttyS1 para fazer alguma coisa com o modem.

Você também pode fazer um link de /dev/ttyS1 para um arquivo chamado /dev/modem usando: ln -s /dev/ttyS1 /dev/modem, faça a configuração dos seus programas usando /dev/modem ao invés de /dev/ttyS1 e se precisar reconfigurar o seu modem e a porta serial mudar para /dev/ttyS3, será necessário somente apagar o link /dev/modem antigo e criar um novo apontando para a porta serial /dev/ttyS3.

Não será necessário reconfigurar os programas que usam o modem pois eles estão usando /dev/modem que está apontando para a localização correta. Isto é muito útil para um bom gerenciamento do sistema.

Abaixo uma tabela com o nome do dispositivo no GNU/Linux, portas I/O, IRQ, DMA e nome do dispositivo no DOS (os nomes de dispositivos estão localizados no diretório /dev):

* A designação de letras de unidade do DOS não é padrão como no GNU/Linux e depende da existência de outras unidades físicas/lógicas no computador.

Configuração de Hardware

A configuração consiste em ajustar as opções de funcionamento dos dispositivos (periféricos) para comunicação com a placa mãe. Um sistema bem configurado consiste em cada dispositivo funcionando com suas portas I/O, IRQ, DMA bem definidas, não existindo conflitos com outros dispositivos. Isto também permitirá a adição de novos dispositivos ao sistema sem problemas.

É importante conhecer bem a configuração dos dispositivos do sistema para saber identificar e corrigir possíveis problemas de conflitos e o que deve ser modificado, caso seja necessário.

Os parâmetros usados para configurar dispositivos de hardware são a IRQ, DMA e I/O. Nem todo dispositivo usam estes três parâmetros, alguns apenas a I/O e IRQ, outros apenas a I/O, etc.

IRQ - Requisição de Interrupção

Existem dois tipos básicos de interrupções: as usadas por dispositivos (para a comunicação com a placa mãe) e programas (para obter a atenção do processador). As interrupções de software são mais usadas por programas, incluindo o sistema operacional e interrupções de hardware mais usado por periféricos. Daqui para frente será explicado somente detalhes sobre interrupções de hardware.

Os antigos computadores 8086/8088 (XT) usavam somente 8 interrupções de hardware operando a 8 bits. Com o surgimento do AT foram incluídas 8 novas interrupções, operando a 16 bits. Os computadores 286 e superiores tem 16 interrupções de hardware numeradas de 0 a 15. Estas interrupções oferecem ao dispositivo associado a capacidade de interromper o que o processador estiver fazendo, pedindo atenção imediata.

As interrupções do sistema podem ser visualizadas no kernel com o comando cat /proc/interrupts. Abaixo um resumo do uso mais comum das 16 interrupções de hardware:

0 Timer do Sistema - Fixa

01 Teclado - Fixa

02 Controlador de Interrupção Programável - Fixa. Esta interrupção é usada como ponte para a IRQ 9 e vem dos antigos processadores 8086/8088 que somente tinham 8 IRQs. Assim, para tornar processadores 8088 e 80286 comunicáveis, a IRQ 2 é usada como um redirecionador quando se utiliza uma interrupção acima da 8.

03 Normalmente usado por /dev/ttyS1 mas seu uso depende dos dispositivos instalados em seu sistema (como fax-modem, placas de rede 8 bits, etc).

04 Normalmente usado por /dev/ttyS0 e quase sempre usada pelo mouse serial a não ser que um mouse PS2 esteja instalado no sistema.

05 Normalmente a segunda porta paralela. Muitos micros não tem a segunda porta paralela, assim é comum encontrar placas de som e outros dispositivos usando esta IRQ.

06 Controlador de Disquete - Esta interrupção pode ser compartilhada com placas aceleradoras de disquete usadas em tapes (unidades de fita).

07 Primeira porta de impressora. Pessoas tiveram sucesso compartilhando esta porta de impressora com a segunda porta de impressora. Muitas impressoras não usam IRQs.

08 Relógio em tempo real do CMOS - Não pode ser usado por nenhum outro dispositivo.

09 Esta é uma ponte para IRQ2 e deve ser a última IRQ a ser utilizada. No entanto pode ser usada por dispositivos.

10 Interrupção normalmente livre para dispositivos. O controlador USB utiliza essa interrupção quando presente, mas não é regra.

11 Interrupção livre para dispositivos.

12 Interrupção normalmente livre para dispositivos. O mouse PS/2, quando presente, utiliza esta interrupção.

13 Processador de dados numéricos - Não pode ser usada ou compartilhada.

14 Esta interrupção é usada pela primeira controladora de discos rígidos e não pode ser compartilhada.

15 Esta é a interrupção usada pela segunda controladora de discos e não pode ser compartilhada. Pode ser usada caso a segunda controladora esteja desativada.

Dispositivos ISA, VESA, EISA, SCSI não permitem o compartilhamento de uma mesma IRQ, talvez isto ainda seja possível caso não haja outras opções disponíveis e/ou os dois dispositivos não acessem a IRQ ao mesmo tempo, mas isto é uma solução precária.

Conflitos de IRQ ocorrem quando dois dispositivos disputam uma mesma IRQ, e normalmente ocasionam a parada ou mal funcionamento de um dispositivo e/ou de todo o sistema. Para resolver um conflito de IRQs, deve-se conhecer quais IRQs estão sendo usadas por quais dispositivos (usando cat /proc/interrupts) e configurar as interrupções de forma que uma não entre em conflito com outra. Isto normalmente é feito através dos jumpers de placas ou através de software (no caso de dispositivos jumperless ou plug-and-play).

Dispositivos PCI são projetados para permitir o compartilhamento de uma mesma IRQ, pois as manipulam de forma diferente. Se for necessário usar uma interrupção normal, o chipset (ou BIOS) mapeará a interrupção para uma interrupção normal do sistema (normalmente usando alguma interrupção entre a IRQ 9 e IRQ 12).

Listando as placas e outros hardwares em um computador

Administradores e técnicos ao configurar uma máquina precisarão saber quais os hardwares ela possui.

Dispositivos PCI/AMR/CNR podem ser listados executando o comando cat /proc/pci. Outra forma de listar tais dispositivos é usando o lspci, se você precisa de mais detalhes como o mapeamento de memória, use lspci -vv.

O mapeamento de memória de dispositivos podem ser mostrados com o comando cat /proc/ioports, ou usando o comando lsdev.

O barramento USB e dispositivos conectados a ele podem ser listados com o comando lsusb ou com cat /proc/bus/usb/devices.

Hardwares disponíveis na máquina, como placa mãe, clock multiplicador, discos, placas diversas, versões e números seriais de dispositivos podem ser mostrados através do comando lshw. Use lshw -html para produzir a listagem em formato HTML, bem interessante para relatórios :-)

Conflitos de hardware

Ocorre quando um ou mais dispositivos usam a mesma IRQ, I/O ou DMA. Um sistema com configurações de hardware em conflito tem seu funcionamento instável, travamentos constantes, mal funcionamento de um ou mais dispositivos e até mesmo, em casos mais graves, a perda de dados.

Sempre que possível conheça e utilize os valores padrões para a configuração de periféricos, isto pode te livrar de conflitos com outros dispositivos e mal funcionamento do sistema. Alguns programas de diagnóstico ou de auto-detecção podem não localizar seu dispositivo caso ele esteja usando um valor muito diferente do padrão.

Para resolver conflitos de hardware será necessário conhecer a configuração de cada dispositivo em seu sistema. Os comandos cat /proc/interrupts, cat /proc/dma e cat /proc/ioports podem ser úteis para se verificar as configurações usadas.

Lembre-se que o barramento PCI permite o compartilhamento de IRQs entre placas PCI.

Configurando uma placa de rede

1- Identifique a marca/modelo de sua placa. O programa lshw é útil para isto. Caso sua placa seja PCI ou CNR, execute o comando lspci e veja a linha "Ethernet".

2- Depois de identificar a placa, será preciso carregar o módulo correspondente para ser usada no Linux. Em algumas instalações padrões o suporte já pode estar embutido no kernel, neste caso, você poderá pular este passo.

Para carregar um módulo, digite o comando modprobe modulo. Em placas ISA, geralmente é preciso passar a IRQ e porta de I/O como argumentos para alocar os recursos corretamente. O modprobe tentará auto-detectar a configuração em placas ISA, mas ela poderá falhar por algum motivo. Por exemplo, para uma NE 2000: modprobe ne io=0x300 irq=10.

Para evitar a digitação destes parâmetros toda vez que a máquina for iniciada é recomendável coloca-lo no arquivo /etc/modules.conf da seguinte forma:

options ne io=0x300 irq=10 A partir de agora, você pode carregar o módulo de sua placa NE 2000 apenas com o comando modprobe ne. O parâmetro io=0x300 irq=10 será automaticamente adicionado. Em sistemas Debian, o local correto para colocar as opções de um módulo é em arquivos separados localizados dentro de /etc/modutils. Crie um arquivo chamado /etc/modutils/ne e coloque a linha:

options ne io=0x300 irq=10 Depois disso, execute o comando update-modules para o sistema gerar um novo arquivo /etc/modules.conf com todos os módulos de /etc/modutils e substituir o anterior.

Após carregar o módulo de sua placa de rede, resta apenas configurar seus parâmetros de rede para coloca-la em rede.

Configurando uma placa de SOM no Linux

A configuração de dispositivos de áudio no Linux não é uma coisa complicada, se resumindo na configuração de recursos de IRQ (caso a placa seja ISA), carregar o seu respectivo módulo com seus parâmetros e ajustar o mixer. Atualmente existem 2 padrões de som no sistema Linux: OSS (Open Sound System) e ALSA (Advanced Linux Sound Architecture).

O OSS é o primeiro padrão existente no sistema Linux e embutido por padrão no kernel. O ALSA é mais novo, suporta full duplex e outros recursos adicionais, além de manter a compatibilidade com OSS. O ALSA é um padrão mais moderno e garante mais performance para a CPU da máquina, principalmente para a exibição de vídeos, etc.

Na Debian, você pode executar o comando modconf para navegar visualmente entre os módulos disponíveis e carregar os módulos necessários.

Caso o aumix apareça na tela, sua placa de som já está funcionando! Caso acesse o sistema como usuário, não se esqueça de adicionar seu usuário ao grupo audio para ter permissão de usar os dispositivos de som: adduser usuario audio .

Configurando o gerenciamento de energia usando o APM

O APM (Advanced Power Management - Gerenciamento Avançado de Energia) permite que sistemas gerenciem características relacionadas com o uso e consumo de energia do computador. Ele opera a nível de BIOS e tenta reduzir o consumo de energia de várias formas quando o sistema não estiver em uso (como reduzindo o clock da CPU, desligar o HD, desligar o monitor, etc.).

O uso de advanced power management também permite que computadores com fonte de alimentação ATX sejam desligados automaticamente quando você executa o comando halt. Caso sua máquina tenha suporte a ACPI, este deverá ser usado como preferência ao invés do APM por ter recursos mais sofisticados.

Para ativar o suporte a APM no Linux, compile seu kernel com o suporte embutido a APM e também a "Advanced Power Management" (senão sua máquina não desligará sozinha no halt). Caso deseje compilar como módulo, basta depois carregar o módulo apm adicionando no arquivo /etc/modules. Depois disso instale o daemon apmd para gerenciar as características deste recurso no sistema.

Você pode desativar o uso de APM de 3 formas: removendo seu suporte do kernel, passando o argumento apm=off (quando compilado estaticamente no kernel) ou removendo o nome do módulo do arquivo /etc/modules (quando compilado como módulo). Depois disso remova o daemon apmd.

Configurando o gerenciamento de energia usando ACPI

O ACPI (Advanced Configuration and Power Interface - Interface de Configuração e Gerenciamento de Energia Avançado) é uma camada de gerenciamento de energia que opera a nível de sistema operacional. Apresenta os mesmos recursos que o APM, e outros como o desligamento da máquina por teclas especiais de teclado, controle de brilho e contraste de notebooks, suspend para RAM, suspend para disco, redução de velocidade de CPU manualmente, monitoramento de periféricos, temperatura, hardwares, etc.

Desta forma, o ACPI varia de sistema para sistema em questões relacionadas com suporte a recursos especiais, estes dados são armazenados em tabelas chamadas DSDT. O Linux inclui suporte a recursos ACPI genéricos entre placas mãe, recursos específicos devem ser extraídos diretamente da BIOS e disassemblados manualmente para a construção de um kernel com suporte específico a tabela DSDT do hardware (não falarei das formas de se fazer disso aqui, somente do suporte genérico).

É recomendável pelo menos o uso do kernel 2.4.21 para suporte a ACPI. Para compilar estaticamente, marque com Y a opção ACPI, depois marque os módulos que você quer que ele monitore: button (botão power), fan (ventoinhas), etc. Se compilou como módulo, adicione o nome do módulo acpi no arquivo /etc/modules. Não há problema em compilar também o suporte a APM, pois não causará problemas com um kernel com ACPI também compilado.

Caso não saiba quais módulos ACPI seu sistema aceita, marque o suporte a todos e carregue-os. Após isto, entre no diretório /proc/acpi e de um ls entrando nos diretórios e vendo se existem arquivos dentro deles. Remova o módulo correspondente daqueles que não tiver conteúdo.

Após isto, instale o daemon acpid e configure-o para monitorar algumas características do seu sistema. Por padrão o acpid monitora o botão POWER, assim se você pressionar o power, seu sistema entrará automaticamente em run-level 0, fechando todos os processos e desligando sua máquina.

O suporte a ACPI pode ser desativado de 3 formas: Removendo seu suporte do kernel, passando o argumento acpi=off ao kernel (caso esteja compilado estaticamente) ou removendo o módulo de /etc/modules (caso tenha compilado como módulo. Após isto, remova o daemon acpid do seu sistema.

Ativando WakeUP on Lan

Algumas placas mãe ATX possuem suporte a este interessante recurso, que permite sua máquina ser ligada através de uma rede. Isto é feito enviando-se uma seqüência especial de pacotes diretamente para o MAC (endereço físico) da placa de rede usando um programa especial.

Para usar este recurso, seu sistema deverá ter as seguintes características:

Placa mãe ATX

Fonte de alimentação ATX compatível com o padrão 2.0, com fornecimento de pelo menos 720ma de corrente na saída +3v.

Placa de rede com suporte a WakeUP-on-Lan (WOL), você poderá confirmar isto vendo um conector branco de 3 terminais instalado na placa que é o local onde o cabo wake-up é conectado.

Suporte na BIOS também deverá ter a opção para WakeUP-on-Lan.

Com todos esses ítens existentes, instale em uma máquina da rede o pacote etherwake. Depois disso, pegue o MAC address a placa de rede da máquina que tem o wakeup on lan e na máquina da rede onde instalou o pacote execute o seguinte comando:

ether-wake AA:BB:CC:DD:EE:FF Onde AA:BB:CC:DD:EE:FF é o endereço MAC da placa de rede. A máquina deverá ligar e realizar o procedimento padrão de POST normalmente.

Algumas das situações onde o WOL não funciona é quando sua rede é controlada por Switches (devido a natureza de funcionamento deste equipamentos) ou caso esteja atrás de um roteador que não faz proxy arp.

HOME - CURSO