Fundamentos do sistema Linux - hardware

A forma como o sistema operacional trabalha com o hardware é fator decisivo no desempenho e estabilidade do sistema. Um processador pode ser muito rápido por possuir diversos recursos, mas se o sistema operacional não tiver suporte a esses recursos, não será possível extrair o máximo de desempenho do processador. Nesse artigo veremos como o Linux interage com o hardware do computador.

[ Hits: 111.191 ]

Por: Davidson Rodrigues Paulo em 16/12/2005 | Blog: http://davidsonpaulo.com/


Dispositivos



O Linux se refere aos itens de hardware como dispositivos (devices), e os referencia como arquivos. Os arquivos de dispositivo ficam no diretório /dev/. Dentro desse diretório existem vários arquivos, um para cada dispositivo, além de subdiretórios que agrupam dispositivos de mesmo tipo.

Veja abaixo alguns exemplos de arquivos de dispositivo:
  • /dev/fd0: Primeira unidade de disquete;
  • /dev/hda1: Primeira partição do primeiro disco rígido IDE;
  • /dev/psaux: Mouse PS/2;
  • /dev/dsp: Placa de som;
  • /dev/sdb3: Terceira partição do segundo disco SCSI;
  • /dev/ttyS0: Primeira porta serial de comunicações, geralmente aquela utilizada pelo mouse serial (COM1);
  • /dev/usb/lp0: Primeira impressora ligada USB;
  • /dev/video0: Primeira placa de captura de vídeo;
  • /dev/lp0: Primeira porta paralela, geralmente usada por impressoras;
  • /dev/tty1: Primeiro terminal virtual (console);
  • /dev/tty0: Interface de framebuffer;
  • /dev/null: Dispositivo nulo, usado para descartar saídas de programas;
  • /dev/zero: Dispositivo de geração de bits 0;
  • /dev/random: Dispositivo de geração de bits aleatórios.

Tratar os dispositivos como arquivos facilita o processo de enviar e retirar informações do hardware, pois basta usar direcionadores de fluxo de forma apropriada.

Por exemplo, o seguinte comando envia para a impressora ligada na porta paralela o conteúdo do arquivo texto.txt, para impressão direta, sem spool:

$ cat texto.txt > /dev/lp0

Criando novos dispositivos


As distribuições GNU/Linux atuais possuem sistemas que criam automaticamente os arquivos de dispositivos para os novos itens de hardware que são instalados.

Entretanto, como já dito, isso só é válido para o hardware que possui suporte nativo no kernel Linux. Os demais vão requerer uma instalação manual, incluindo, eventualmente, a criação do arquivo de dispositivo correspondente no diretório /dev/.

Para isso, vamos utilizar duas ferramentas: o MAKEDEV e o mknod.

MAKEDEV


O MAKEDEV fica localizado em /sbin/, possuindo um link simbólico dentro do diretório /dev/. Ele é utilizado para criar, remover e atualizar novos arquivos de dispositivo no diretório /dev/.

Para usá-lo, basta acessar o diretório /dev/ e executá-lo com os devidos parâmetros.

# cd /dev
# ./MAKEDEV [opções] [parâmetros]


As opções do MAKEDEV são:
  • -n: Não atualiza os arquivos de dispositivo, apenas exibe as ações que seriam feitas;
  • -d: Apaga os dispositivos existentes;
  • -v: Exibe mensagens informando o que está sendo feito durante a execução do MAKEDEV.

Os principais parâmetros são:
  • update: Atualiza os dispositivos, criando arquivos para os novos e apagando os que não existem mais;
  • generic: Cria uma lista genérica de dispositivos, o básico para o uso do sistema;
  • ram: Cria os dispositivos de ramdisk;
  • initrd: Cria a ramdisk que será carregada pelo sistema operacional durante a inicialização;
  • cpu ou microcode: Cria os dispositivos da interface de atualização do microcódigo do processador no diretório /dev/cpu/;
  • rom: Cria os dispositivos de memória ROM (somente leitura);
  • console: Cria novos consoles virtuais (terminais);
  • std: Cria os dispositivos do tipo mem, kmem, port, zero, null, core, full, random, urandom, tty e loop.

Existem outras categorias de dispositivos que podem ser criados com o MAKEDEV. Para ver a lista completa, veja a sua página de manual:

$ man MAKEDEV

mknod


O mknod é usado para criar manualmente um arquivo de dispositivo dos tipos caracter ou bloco. Os dispositivos de bloco são os que trabalham com armazenamento de dados, como unidades de disco rígido, CD-R/RW, disquete, etc., e utilizam buffer. Os dispositivos de caracter não trabalham com buffer, utilizando transferência direta.

Um exemplo real de uma situação em que é necessária utilizar o mknod é na instalação de softmodems, aqueles modems on-board do tipo AMR (HSP56 e similares).

Para criar um novo dispositivo, acesse o diretório /dev/, e utilize o mknod seguido dos parâmetros adequados.

# cd /dev
# mknod [opções] [nome] [tipo] [maior] [menor]


As principais opções são:
  • -m: Determina as permissões do arquivo gerado;
  • --help: Exibe os principais parâmetros do mknod;
  • --version: Exibe a versão do mknod.

Em [nome], coloque o nome do arquivo de saída. Pode ser qualquer nome formado de apenas uma palavra, sem espaços ou caracteres especiais, e de preferência todo em minúsculas.

Os tipos que podem ser usados são:
  • b: Cria um dispositivo de bloco;
  • c ou u: Cria um dispositivo de caracter;
  • p: Cria um FIFO, que possibilita monitorar o tráfego de informações através de um determinado dispositivo.

Depois, temos que colocar o número maior e o menor do dispositivo. Para isso, veja o arquivo /proc/devices, procure o dispositivo que você criar, e anote o número que aparece na primeira coluna.

Vejamos um exemplo:

# cat /proc/devices

Character devices:
  1 mem
  2 pty
  3 ttyp
  4 /dev/vc/0
  4 tty
  4 ttyS
  5 /dev/tty
  5 /dev/console
  5 /dev/ptmx
  6 lp
  7 vcs
 10 misc
 13 input
 14 sound
 29 fb
116 alsa
128 ptm
136 pts
180 usb
254 devfs

Block devices:
  1 ramdisk
  2 fd
  3 ide0
 22 ide1
A título de exemplo, vamos criar um dispositivo USB chamado usb0 e outro chamado usb1. Analisando o arquivo /proc/devices, vemos que o número maior dos dispositivos usb é 180. O número menor fica sendo o número do dispositivo que se está criando.

Dessa forma, para criar os dispositivos usb0 e usb1, usamos:

# mknod -m 666 usb0 c 180 0
# mknod -m 666 usb1 c 180 1


Quando esse procedimento for necessário, preste bastante atenção às informações que você terá em mãos, e certamente terá sucesso na criação de um novo dispositivo.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Dispositivos
   3. Módulos
   4. Detecção de hardware
Outros artigos deste autor

Fundamentos do sistema Linux - Permissões

Fundamentos do sistema Linux - Gerenciadores de inicialização

Compilando o Squid e criando o pacote para Slackware

Participe da revista Viva o Linux

Resolvendo dependências no Slackware com slackpkg

Leitura recomendada

Como escolher sua distribuição GNU/Linux

Variáveis padrão para usar em seus scripts em shell

Conversão de códigos e sistemas numéricos

Linus Benedict Torvalds

Escritório 100% GNU/Linux: viável e econômico

  
Comentários
[1] Comentário enviado por dk_millares em 16/12/2005 - 08:49h

ae Davidson muito interessante seu artigo,ainda não conhecia nada sobre hardware no linux;muitas pessoas aprende a instalar uma placa de som por exemplo mas são dicas que na verdade nem sabem oque estão fazendo(já conteceu comigo),pois na hora do desespero o usuario iniciante tenta a primeira dica que falarem para ele,muitas vezes dá certo mas o usuario acaba sem saber oque fez e pra que servia "aquilo".
A partir deste artigo da para pegar uma boa noção sobre hardware no linux,claro que vale a vontade pra correr atras de algo mais.
abraços

[2] Comentário enviado por bosetti em 16/12/2005 - 09:17h

concordo, realmente muito bom o artigo... ajuda muito...
e por falar em ajudar...
davison, eu tenho um computador praticamente igual o seu, só que athlon xp 1.8 hehehe, e a placa de vídeo é a mesma, e gostaria de saber qual driver você usa para ela, eu uso o "savage", não parece ter muita aceleração nem nada, mas pelo menos funciona, o problema é o seguinte, euconfigurei ele para rodar em 24bits de cor, mas parece rodar somente em 16, pois dá para percever algumas falhas nos tons das cores, caso isso também aconteça com você, ou tenha resolvido, me dá uma dica aí do que fazer...
a propósito, já falei que o seu artigo tá muito bom?? hehe

[]'s
Rafael Bosetti

[3] Comentário enviado por agk em 16/12/2005 - 10:10h

Muito bom, excelente artigo. Para um bom funcionamento do sistema o primeiro passo é conhecer bem o hardware para poder configurá-lo corretamente.

[4] Comentário enviado por wavemmx em 16/12/2005 - 11:33h

ótimo seu artigo .Parabens!!
O diretório /proc não existe fisicamente no hd ,ele é criado pelo kernel (virtualmente) e la vc pode ver as informações do funcionamento do seu kernel
falow!!!

[5] Comentário enviado por m_arco em 16/12/2005 - 11:47h

Olá davidsonpaulo,
achei muito útil seu artigo, sem dúvidas, o suporte a hardwares atuais é muito importante para o crescimento da comunidade linux.
Tenho uma pergunta e talvez você possa me orientar...

Li na introdução do seu artigo que o gerenciamento de memória do sistema operacional pode o tornar eficaz como ineficaz, dependendo se está adaptado ao sistema ou não, o caso é o seguinte:

Tenho um slackware instalado em minha máquina, 1024Mb de memória DDR400, processador AMD Athlon XP 2800, placa mãe Soyo Kt400 Dragon Ultra. Mesmo com esses dispositivos de hardware, que creio serem ótimos para as minhas necessidades, as vezes ocorre travamentos no sistema, mas creio que estes sejam travamentos absurdos, pois em nenhum dos casos estava utilizando tanto dos processos assim, você poderia me indicar algum artigo ou material que eu possa ler para resolver este meu "probleminha" de gerenciamento de memória?

Muito obrigado pela ajuda...

Att. Marco!>

[6] Comentário enviado por feraf em 16/12/2005 - 12:43h

m_arco, tive problemas similares em uma Soyo K7V-Dragon Plus, na época top de linha, mas depois de um tempo ele começou a travar repetidamente. Desconfiei ser um problema de hardware quando meu HD parou de funcionar. Foi o que me fez trocar de placa-mãe (agora tenho uma Asus), e está funcionando perfeitamente. Ainda não sei ao certo qual problema da placa antiga, desconfio que seja um problema na IDE (a placa em questão foi uma das primeiras a ter Raid). Bem, de qualquer forma, um técnico pode ajudar (ou não, no meu caso tive que trocar a placa).
Boa sorte,
Felipe

[7] Comentário enviado por percival em 16/12/2005 - 13:12h

Opa, já foi pro meu Favoritos.

Muito bom artigo.

[8] Comentário enviado por cesperanc@ em 16/12/2005 - 16:10h

Parabéns pela compilação do artigo... Já mereceste 100 pontos :D

[9] Comentário enviado por laranjeira em 16/12/2005 - 19:30h

Parabens.........

[10] Comentário enviado por devas em 17/12/2005 - 19:29h

Meu nome José sou de Bragança-Para
gostaria de recebe ajuda para manipular o systema Lunux
melhor e seus comandos.
Tudo estou migrando agora para ele.

estarei muito grato
jose2582@hotmail.com

[11] Comentário enviado por hlegius em 17/12/2005 - 20:04h

Excelente artigo davidsonpaulo!
Muito bem explicado com muitos exemplos! Show de bola, continua assim cara!

Abraços!

[12] Comentário enviado por piazinhodolinux em 19/12/2005 - 15:45h

bah cara, show de bola!!!

[13] Comentário enviado por Marciofs em 19/12/2005 - 15:52h

Ola
por favor estou com problemas p/ instalar minha placa de rede que uma marvel Yukon tem no cd o driver linux mas sou iniciante e não sei o que devo fazer
desde ja agradeso

[14] Comentário enviado por removido em 22/12/2005 - 10:16h

Excelente artigo. Tratou muito bem o assunto e veio na hora certa ;-D

[]'s

[15] Comentário enviado por acollucci em 23/12/2005 - 15:50h

Kra gostei mto do sei artigo... Principalmente que tem mto a ver com outro que eu escrevi, onde falava a grande vantagem do linux na area de hardwares naum convencionais.. assim como robos e maquinas eletromecanicas.. Parabens pelo artigo, ja esta nos meu favoritos

[16] Comentário enviado por removido em 23/12/2005 - 15:55h

Bozolinux Rulez! :)

[17] Comentário enviado por casterman em 29/12/2005 - 10:09h

legal a parte que fala sobre criação de devices !!!

[18] Comentário enviado por mardecores em 14/05/2006 - 23:20h

Olá! Estou migrando para o Linux e gostaria de dicas de configuração de modem intel 537 data fax voice v.90 - pois não consigo acessar a internet pelo linux.
Grato, mardecores.

[19] Comentário enviado por gsi.vinicius em 07/08/2006 - 13:20h

opa, intaum respondendo ao mardecores acima....as distros kurumin tem nativo a esse modem.....é só vc entrar em um menu e selecionar esse modem!!!!!

De qq forma, entre no www.guiadohardware.net e vá na sessão de tutoriais , tem um chamado instalação de softmodens (atualizado) onde vc encontra informações de onde baixar os drivers e como instalar..

outra url interessante é http://linmodems.technion.ac.il/ ..onde vc pode encontrar informações preciosas sobre instalação de softmodens

[20] Comentário enviado por diogobc em 09/09/2006 - 03:33h

nossa muito bom mesmo este artigo e despertou uma curiosidade em mim..
sabe eu tenho a mesma placa mãe com os mesmos dispositivos listados acima no artigo só qe com uma NVIDIA fx5500 no agp e toda vez qe ligo a maquina qdo esta caregando os modulos de drivers aparece uma linha com uma mensagem de erro nos modules do agp porem nunca tive nenhum problema apesar dessa mensagem uso kernel 2.4 slack 10.2 ;D alguem ae sabe uma probabilidade do pq dessa mensagem ?
se alguem tiver alguma ideia me avisa aki ou envia um e-mail: diogoboarettoc@gmail.com

abracos
Diogo

[21] Comentário enviado por vvvdracula em 09/02/2007 - 10:52h

esse artigo é um ótimo guia para pessoas leigas como eu
valeu pela ajuda
;)

[22] Comentário enviado por zeza em 19/06/2007 - 09:08h

vlw aew cara

t+

[23] Comentário enviado por doradu em 08/02/2010 - 18:36h

vou ler de vez em quando com mais calma


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts