Baixar Capítulo - Editora Alta Books
Transcrição
Baixar Capítulo - Editora Alta Books
Tópico 101.1: Identificação e configuração de hardware 3 Tópico 101: Arquitetura do sistema 101.1: Identificação e configuração de hardware LPI: Esse é o Tópico 101.1, Peso 2 do exame de certificação LPIC-1 117-101. Nota: Os candidatos deverão estar aptos para fazer configurações básicas de hardware. Configuração básica do BIOS É importante que você domine pelo menos o conhecimento básico apresentado aqui porque ele sempre aparece em todos os exames LPI. No exame, você deverá estar ambientado com conhecimentos sobre o hardware genérico para a plataforma Intel-PC, entender os recursos de alocação do hardware como IRQ, Portas I/O e DMA, entender expansão com cartões PCMCIA e genéricos, nomenclatura SCSI e USB, detecção da interface de rede, e entender os passos básicos para a configuração de modems a placas de som, bem como sua nomenclatura técnica. BIOS e componentes principais Muita gente sabe o que é BIOS, mas não consegue definir muito bem. É simples. BIOS – Basic Input Output System nada mais é do que um programa que já vem gravado no chip do computador o qual é responsável por testar a parte de hardware e dispositivos conectados à placa mãe (main board ou mother board). É o que chamamos de memória ROM – Ready Only Memory, a memória apenas de leitura. BIOS modernas fazem todas as configurações de forma automática, mas alguns dispositivos requerem alguns “acertos”, e isso é feito manualmente para ajustes mais finos. Veja a seguir o quem vem agregado à placa mãe do computador e que também tem interação com a BIOS: • RAM – Randomic Access Memory: É a memória de acesso aleatório. É uma memória de armazenamento temporário, pois quando o computador é desligado perde-se o seu conteúdo; • Processador: É a parte do computador responsável pelos processamentos das instruções matemáticas e lógicas e os programas que são carregados na memória RAM; • Co-Processador: Sua função é trabalhar em conjunto com o processador principal para processar as instruções matemáticas. Nos computadores modernos, ele já vem incluso no processador principal. Placas de aceleração 3D também apresentam seu próprio processador matemático; 4 Tópico 101: Arquitetura do Sistema • • Memória Cache: É a memória de armazenamento auxiliar do Processador. Possui alta velocidade de funcionamento, geralmente a mesma que o processador. Sua função é aumentar o desempenho de processamento. A memória cache pode ser interna ou externa à placa mãe; CMOS: É a memória temporária a qual é alimentada por uma bateria onde ficam armazenadas as configurações do computador feitas pelo programa residente em BIOS. BIOS modernas são muito fáceis de configurar, ao contrário de BIOS antigas onde tínhamos que praticamente “jampear” tudo na mão. Todo computador pode ter a parte BIOS configurada por um programa residente o qual deve ser chamado antes de entrar o sistema operacional. Geralmente, podemos fazer isso de diversas formas usando combinações de teclas como [del], [F12], [control]+[alt]+[esc], etc, porém isso pode depender do fabricante. Figura 101.1.1 e Figura 101.1.2: Configuração da BIOS de um computador (várias opções) e seus componentes internos. Quando da configuração da BIOS, a partir desse ponto você entra no programa de configuração e ajustes do seu equipamento. Porém, tome cuidado, pois dependendo da configuração que fazemos, o computador pode apresentar super aquecimento, ou até mesmo não funcionar, o que precisaria, então, que se refizesse uma configuração adequada. A arquitetura BIOS BIOS – Basic Input and Output System é o sistema básico de entrada e saída, que na verdade nada mais é que a memória ROM – Read Only Memory, memória apenas de leitura (não pode ser apagada) a qual contém as instruções básicas para a inicialização do computador, reconhecimento e ativação dos periféricos conectados à placa mãe. As BIOS mais modernas (a partir do 286) também trazem um programa que é usado para configurar o computador modificando os valores localizados na CMOS (memória temporária alimentada por uma bateria onde são lidas/armazenadas as configurações do computador feitas pelo programa residente na BIOS). As placas controladoras padrão IDE dependem da BIOS em si, mas as placas controladoras padrão SCSI possuem sua própria BIOS que identificam automaticamente os periféricos conectados a ela. O entendimento é simples, ainda mais se você já tiver feito algum curso de hardware ou simplesmente gostar de mexer com a parte mecânica de computadores. Quando Tópico 101.1: Identificação e configuração de hardware 5 abrimos o computador podemos ver dentro dele todos os componentes como a CPU em si, ou seja, qual processador você tem em seu computador, como a memória ROM, a memória CMOS para configuração da BIOS, uma bateria que guarda as configurações, conexões para teclado, mouse, vídeo, placa de rede etc, e os slots para encaixe de cartões, principalmente de memória, sendo que o tipo do slot pode variar dependendo do barramento. Tabela 101.1.1: Quadro dos principais barramentos em um Intel-PC. Barramento Descrição ISA 8 Bits É o Industry Standard Architecture. Esse é um padrão antigo e pode ainda ser encontrado nos velhos computadores PC/XT, se ainda existirem. ISA 16 Bits É a evolução do ISA 8 bits. Permite uma taxa de transferência de 2 MB/s e seu conector é maior. VESA É o Video Electronics Standard Association. Foi feito para placas de vídeo rápidas. Apresenta taxa de transferência que pode chegar a 132MB/s. EISA É o Enhanced Industry Standard Architecture. É mais encontrado em servidores e tem a capacidade de bus mastering, a qual possibilita a comunicação das placas sem a interferência da CPU. MCA É o Micro Channel Architecture (32 bits). Desenvolvido pela IBM e foi usado nos antigos PS/1 e PS/2. PCI É o Peripheral Component Interconnect. Produzido pela Intel, é rápido e tem caracte-rística/velocidade do VESA. Pode se configurar automaticamente através do Plug and Play (PNP). AGP É o Accelerated Graphics Port. É novo e foi criado exclusivamente para a ligação de placas de vídeo. Muito bom para processamento de jogos. PCMCIA É o Personal Computer Memory Card International Association. Apresenta um encaixe (slot) especial usado para conexões de placas externas. Esses cartões podem adicionar mais memória ao sistema, conter um fax-modem, placa de rede, disco rígido, e mais um monte de coisas legais. O padrão IDE O padrão de discos para a grande maioria da plataforma Intel PC é o IDE – Integrated/Intelligent Drive Electronics. Os discos IDE variam em tamanho, indo de meros 20 Mb até 80 GB para uma controladora padrão, porém, os mais modernos do tipo ATA – Advanced Technology Attachment chegam a 137 GB, e maior que isso são todos do tipo SATA – Serial Advanced Technology Attachment, o qual é o sucessor da tecnologia ATA que foi renomeada para PATA – Parallel ATA para se diferenciar da tecnologia SATA. BIOS modernas usam o padrão IDE pelas seguintes razões: • BIOS carrega a parte essencial do sistema operacional durante o processo de inicialização; • BIOS provê a informação correta sobre as mídias instaladas para o sistema operacional. Essa informação nada mais é que o número de cilindros, cabeças e setores do disco. NOTA: Algumas distribuições não conseguem funcionar corretamente se a geometria do disco estiver inconsistente. É possível corrigir isso com uma formatação de baixo nível do disco, mas se o problema continuar é porque o disco já está com os dias contados. 6 Tópico 101: Arquitetura do Sistema A geometria do disco serve, dentre outras coisas, para informar exatamente onde se encontram as informações. Quando o carregador do sistema operacional entra em ação, ele consulta exatamente esses valores. A geometria de disco refere-se à dimensão lógica do disco. Um dos locais onde podemos obter informações sobre o hardware IDE em nosso sistema é em /proc/ide conforme para discos com padrão IDE, ou /proc/scsi para discos com padrão SCSI. Os arquivos drivers, ide0, ide1 e sis contêm informações sobre esses dispositivos e hda e hdc informações sobre o HD/CD IDE. Experimente examinar agora o conteúdo desses arquivos. # ls -l /proc/ide/ total 2 -r--r--r--. 1 root lrwxrwxrwx. 1 root lrwxrwxrwx. 1 root dr-xr-xr-x. 3 root dr-xr-xr-x. 3 root -r--r--r--. 1 root root root root root root root 0 8 8 0 0 0 2010-03-18 2010-03-18 2010-03-18 2010-03-18 2010-03-18 2010-03-18 15:00 15:00 15:00 15:00 15:00 15:00 drivers hda -> ide0/hda hdc -> ide1/hdc ide0 ide1 sis Para disco SCSI use o comando: # ls -l /proc/scsi total 0 -r--r--r--. 1 root root 0 2010-03-18 15:00 device_info -r--r--r--. 1 root root 0 2010-03-18 15:00 scsi dr-xr-xr-x. 2 root root 0 2010-03-18 15:00 sg Veja o conteúdo do arquivo /proc/scsi/scsi. Essa listagem pode ser diferente dependendo do equipamento: # cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: ATA Model: ST380011A Type: Direct-Access Host: scsi1 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: RW/DVD GCC-4320B Type: CD-ROM Rev: 3.16 ANSI SCSI revision: 05 Rev: 1.00 ANSI SCSI revision: 05 Há dois comandos úteis, o hwinfo e o hwscan, os quais têm a função de mostrar informações e varrer dispositivos no computador. Além desses, em algumas distribuições há o discover (Debian), o kudzu (Red Hat), o lsdev (maioria dos sistemas Linux) e o hwsetup-knoppix (Knoppix). Entendendo IRQ, I/O e DMA As IRQs – Interrupt Request (Requisição de Interrupção) são chamadas especiais que os dispositivos fazem ao processador quando precisam de “enlaces” de tempo, ou seja, quando se movimenta o mouse, o dispositivo responsável pelo mouse solicita uma atenção do processador para que o movimento seja feito, e isso ao mesmo tempo pode acontecer quando a impressora está imprimindo, pois ela também solicitou informações ao processador. Tópico 101.1: Identificação e configuração de hardware 7 DICA: Os dispositivos PCI permitem o compartilhamento de IRQs, pois as manipulam de forma diferente, mapeando uma interrupção para uma interrupção normal do sistema que geralmente é interrupção entre a IRQ 9 e IRQ 12. As IRQs servem para sinalizar para a CPU que há dados disponíveis. O processador faz isso dando pequenos espaços de tempos, e isso para o usuário é totalmente transparente. Na plataforma Intel PC temos no máximo 16 (dezesseis) IRQs, que variam de 0 (zero) a 15 (quinze). Parece pouco, mas, felizmente, as IRQs podem ser compartilhados, ao contrário das I/O. As IRQs que sempre são usados pelo sistema e são numeradas como 1, 2, 6, 8, 14, 15, e os que estão livres com mais frequência são 5, 9, 10, 11, 13, e os que podem ser liberados são 3, 4, 7, 12. Os canais DMA, os quais servem para acesso direto à memória e os dispositivos de entrada e saída, têm a função de permitir que alguns dispositivos escrevam diretamente nela, onde cada dispositivo usa o seu próprio canal DMA. Na plataforma PC há dois controladores de DMA, sendo que o primeiro controlador tem quatro canais (0, 1, 2 e 3) e o segundo controlador também quatro (4, 5, 6 e 7), somando-se então 8 (oito) canais. A transferência de dados nos quatro primeiros canais dá-se a uma taxa de 1 byte, ou seja, 8 bits, enquanto nos demais a taxa é de 2 bytes ou 16 bits. Os canais de DMA altos (5, 6 e 7) somente podem ser acessados por dispositivos de 16 bits, e o canal 4 é usado como ligação entre eles, o que chamamos cascade (cascata). Os canais DMA padrão são usados por dispositivos ISA, EISA e VESA, e os dispositivos PCI usam o seu próprio controlador DMA chamado de Bus Mastering, pois assim a transferência é muito mais alta. A taxa de transferência varia de 33 MB/s no modo 2 e 66 MB/s no modo 4. Lembre-se que dos oito canais DMA, o canal 4 sempre está ocupado, pois ele é responsável por fazer a comunicação entre os canais inferiores (0, 1, 2 e 3) com barramento 8/16 bits e os superiores (5, 6 e 7) com barramento de 16 bits. Os endereços de entrada e saída (I/O) são necessários porque cada dispositivo precisa ser endereçado pela CPU, e esses endereços são usados para entrada e saída desses dispositivos. Porém, na arquitetura atual, apenas um único dispositivo pode usar esses endereçamentos num determinado momento, logo, não se permite compartilhamento. Tabela 101.1.2: Quadro dos canais DMA. Canal Barramento Descrição DMA 0 8/16 bits Livre, mas é usado por circuitos de memória RAM. DMA 1 8/16 bits Utilizado por placas de som (canal 8 bits), porta paralela ECP, adaptadoras SCSI, placas de rede ou controladora de scanner. DMA 2 8/16 bits Utilizado pela controladora de disquete e controladoras de fitas. DMA 3 8/16 bits Utilizado pela porta paralela ECP, placa de som, controladoras de fitas, controladoras SCSI ou controladora de scanner antiga. Também pode ser usado pela placa de rede. DMA 4 DMA 5, 6, 7 --8/16 bits Modo Cascade. É usado como ponte para comunicação entre os canais. Livre, porém pode ser usado pela placa de som (canal 16 bits), controladora de scanner ou placa de rede. O canal 5 é usado por dispositivos SCSI. 8 Tópico 101: Arquitetura do Sistema Algumas BIOS fazem alocação de recursos automaticamente com o intuito de evitar conflitos, onde os dispositivos PCI e ISA plug and play compartilham interrupções entre si. Pode acontecer de os dispositivos entrarem em conflito pelo uso ao mesmo tempo desses endereçamentos. Isso resolve-se da seguinte maneira: • Trocar as configurações dos dispositivos via configuração BIOS; • Trocar os jumpers nos cartões/placas de expansão; • Configurar o dispositivo em questão usando um programa específico. Praticando a configuração básica da BIOS Essa parte é de certa forma simples, pois aqui você deverá estar apto a fazer umas configurações básicas de BIOS do sistema. Você deverá entender a diferença em discos IDE e LBA – Large Block Address e discos maiores que 1024 cilindros. Habilitar e desabilitar a integração de periféricos como, por exemplo, o teclado. Faz-se necessário saber os principais comandos do sistema para poder fazer consultas sobre as informações base da BIOS. Esse conhecimento sempre é exigido junto aos exames LPI. O diretório /proc O diretório /proc é um diretório virtual no sistema Linux, pois ele existe apenas quando a máquina está ligada, e geralmente todos os arquivos dentro desse diretório tem 0 (zero) bytes, mas mesmo assim seus arquivos apresentam conteúdo. O maior arquivo dentro desse diretório é o kcore, e geralmente ele apresenta o tamanho próximo do total de memória presente no seu sistema. Veja a seguinte listagem para um sistema com 256 MB de RAM: # ls -l /proc/kcore -r--------. 1 root root 536858624 2010-03-18 15:00 /proc/kcore # ls -lh /proc/kcore -r--------. 1 root root 512M 2010-03-18 15:00 /proc/kcore Cuidado, como esse é um diretório virtual, usado na verdade pelo kernel, não é possível escrever nele pelo método convencional. Caso você faça isso, vai receber uma mensagem de erro. Lembre-se que o /proc é usado exclusivamente pelo kernel para gerenciamento. # touch /proc/teste touch: cannot touch `/proc/teste’: No such file or directory # echo “oi proc” > /proc/oi -bash: /proc/oi: No such file or director Alocação de recursos A alocação de recursos serve para que possamos permitir periféricos e dispositivos conectados ao PC se comunicarem diretamente com os recursos do sistema, em particular a CPU. A alocação de recursos pode ser pesquisada usando os comandos comuns de visualização de arquivos textos como, por exemplo, cat, less, more, porém, os mais usados são o hwinfo, lshal, lspci e o dmesg. Fique atento quanto a esses dois últimos. Tópico 101.1: Identificação e configuração de hardware 9 Esses recursos são: IRQS, I/O e DMA. • IRQs – Interrupt Requests Lines: As IRQs permitem que os diversos tipos de dispositivos conectados ao computador requisitem “enlaces” de tempo para a CPU. Quando isso ocorre, a CPU para a sua atividade do momento e processa a atividade requisitada. Isso acontece o tempo todo; • I/O – Input/Output: Entrada e saída representa um endereço específico do sistema no mapa de memória. A comunicação do dispositivo com a CPU dá-se pela leitura e escrita na memória em endereços específicos; • DMA – Direct Memory Access: Alguns dispositivos podem ter acesso à memória do sistema através dos canais DMA, e isso permite a escrita e o processamento de dados sem o acesso direto à CPU. Listando os recursos alocados O kernel mantém informações relacionadas aos recursos alocados no diretório / proc, conforme já havíamos comentado. Fique atento, pois esse diretório contém informações importantes para o hardware e pode ser facilmente consultado, e na grande maioria das vezes, apenas com o comando cat e similares. Mas há comandos mais específicos os quais analisam as informações desse diretório para gerar uma saída customizada. Alguns dos principais comandos para listar esses recursos são: • dmesg: Mostra as informações do kernel quando da hora da inicialização. É muito útil por podermos analisar passo a passo todo o reconhecimento do hardware feito pelo kernel. Essas mensagens encontram-se no arquivo /var/ log/dmesg; • hwinfo, lshal: Esses dois comandos são muito úteis, pois nos fornecem todas as informações detalhadas do sistema em forma de relatório; • lspci: Mostra informações do chipset de todos os componentes padrão PCI. Esse comando listará também IRQs e I/O se for usado o parâmetro “-v” ou “-vv”; • lsusb: Mostra informações sobre o suporte USB e informações adicionais caso algum dispositivo USB esteja plugado na máquina. Todas as informações/arquivos do diretório /proc são importantes, porém algumas se destacam nesse momento. A numeração dessa listagem representa os diretórios criados por processos no sistema. # cd /proc; echo * 1 10 1076 1078 1079 11 1103 1121 1134 1163 1171 1184 1194 1195 12 1204 1225 1233 1236 1237 13 1328 1362 1365 1380 1393 1398 14 1402 1405 1413 1445 1461 1470 1480 1491 15 1502 1510 1512 1519 1526 (...) acpi asound buddyinfo bus cgroups cmdline cpuinfo crypto devices diskstats dma dri driver execdomains fb filesystems fs interrupts iomem ioports irq kallsyms kcore keys key-users kmsg kpagecount kpageflags latency_stats loadavg locks mdstat meminfo misc modules mounts mtrr net pagetypeinfo partitions sched_ debug schedstat scsi self slabinfo stat swaps sys sysrq-trigger sysvipc timer_ list timer_stats tty uptime version vmallocinfo vmstat zoneinfo Por exemplo, caso queira saber como está mapeada a memória, simplesmente digite o comando cat/proc/meminfo (esse comando apresenta mais informações técnicas) ou, se quiser apenas uma simples checagem, use o comando a seguir. Veja a parte reservada que está sendo usada para swap (área de troca ou temporária) 10 Tópico 101: Arquitetura do Sistema no sistema; mas em máquinas com maior capacidade de memória como 4 GB, 8 GB e 16 GB de memória, ela raramente é usada. O uso dela depende do destino da máquina. Se for para tarefas normais, simples, do dia-a-dia, e a máquina tiver pouca memória, ela será usada. Caso contrário, não. # free total Mem: 510720 -/+ buffers/cache: Swap: 1048568 used 461368 295360 10128 free 49352 215360 1038440 shared 0 buffers 4796 cached 161212 Veja outros parâmetros para brincar com o comando free: • free: Exibe uso de memória em kilobytes (-k padrão); • free -m: Exibe uso de memória em megabytes; • free -g: Exibe uso de memória em gigabytes; • free -b: Exibe uso de memória em blocos; • free -mt: Exibe uso de memória + Swap; • free -s 5: Exibe uso de memória a cada cinco segundos. Para informações de memória com mais detalhes usamos o comando vmstat (use vmstat -d para ver estatísticas do disco) ou o cat /proc/meninfo. Esses dois comandos são úteis para uma inspeção com mais detalhes: # vmstat -S M 498 450 137 208 47 4 157 1023 9 1014 32439 0 6464 80397 5972 73 (...) -s M total memory M used memory M active memory M inactive memory M free memory M buffer memory M swap cache M total swap M used swap M free swap non-nice user cpu ticks nice user cpu ticks system cpu ticks idle cpu ticks IO-wait cpu ticks IRQ cpu ticks # cat /proc/meminfo MemTotal: 510720 MemFree: 48876 Buffers: 4952 Cached: 161384 SwapCached: 284 Active: 141228 Inactive: 213948 Active(anon): 68552 Inactive(anon): 124648 Active(file): 72676 Inactive(file): 89300 Unevictable: 8 Mlocked: 8 HighTotal: 0 HighFree: 0 LowTotal: 510720 (...) kB kB kB kB kB kB kB kB kB kB kB kB kB kB kB kB Um outro comando útil é o slabtop que serve para ver o cache (área secundária) do kernel. Ele mostra o comportamento dos objetos, nome, e consumo em nível de kernel (outros comandos úteis são o iostat e o lsof; use a página de manual para aprender mais sobre eles): # slabtop Active / Total Objects (% used) Active / Total Slabs (% used) Active / Total Caches (% used) Active / Total Size (% used) Minimum / Average / Maximum Object OBJS ACTIVE USE OBJ SIZE : : : : : 554898 / 582805 (95.2%) 4586 / 4586 (100.0%) 63 / 77 (81.8%) 17935.39K / 21606.70K (83.0%) 0.01K / 0.04K / 4.00K SLABS OBJ/SLAB CACHE SIZE NAME Tópico 101.1: Identificação e configuração de hardware 294912 293642 157696 157690 26944 18494 22144 22046 12720 6092 12648 7137 9798 9710 8840 8831 (...) 99% 99% 68% 99% 47% 56% 99% 99% 0.02K 0.01K 0.06K 0.03K 0.13K 0.04K 0.09K 0.05K 1152 308 421 173 424 124 213 104 256 512 64 128 30 102 46 85 4608K 1232K 1684K 692K 1696K 496K 852K 416K 11 kmalloc-16 kmalloc-8 buffer_head kmalloc-32 dentry selinux_inode_security vm_area_struct sysfs_dir_cache Para verificar os pontos de montagens no sistema nesse momento (veja como a saída desse comando é diferente do comando df): # cat /proc/mounts rootfs / rootfs rw 0 0 /dev/root / ext4 rw,relatime,barrier=1,data=ordered 0 0 /dev /dev tmpfs rw,relatime,mode=755 0 0 /proc /proc proc rw,relatime 0 0 /sys /sys sysfs rw,relatime 0 0 /proc/bus/usb /proc/bus/usb usbfs rw,relatime 0 0 devpts /dev/pts devpts rw,relatime,mode=600,ptmxmode=000 0 0 /dev/sda2 /boot ext3 rw,relatime,errors=continue,user_xattr,acl,data=ordered 0 0 tmpfs /dev/shm tmpfs rw,relatime 0 0 (...) Para saber qual é a sua partição de troca (swap) use o comando (dois exemplos): # cat /proc/swaps Formatado normalmente com Ext3. Filename Type Size Used Priority /dev/sda5 partition 1020088 64 -1 # cat /proc/swaps Formatado com LVM. Filename Type Size /dev/mapper/vg_ns1-lv_swap partition Used Priority 1048568 10128 - Tabela 101.1.3: Quadro dos principais diretórios do diretório /proc. Diretório Descrição asound/ Informações sobre a placa de som. bus/ Informações sobre dispositivos como mouse, PCI e USB. driver/ Informações sobre tipos de driver, geralmente USB. fs/ Informações sobre sistema de arquivos (file system) no sistema. Geralmente, nfsd e supermount. ide/ Informações sobre dispositivos IDE no sistema. irq/ Diretório reservado para IRQs. net Informações sobre conexões. sys/ A partir do kernel 2.6 é o novo diretório para configurações plug and play. tty/ Informações sobre dispositivos seriais etc. 12 Tópico 101: Arquitetura do Sistema Já sabemos que cada arquivo dentro do diretório /proc se faz importante, e que todos podem ser lidos com os comandos cat, more e less. Mas tenha uma atenção especial quanto aos seguintes arquivos: • cmdline: Local onde se encontra o kernel e opções de carregamento; • cpuinfo: Informações genéricas sobre processador, modelo, velocidade etc; • dma: Informação sobre DMA; • interrupts: IRQs usadas pelos periféricos; • iomem: Informações sobre a memória; • ioports: Portas de entrada e saída; • modules: Lista todos os módulos do sistema. • partitions: Lista as partições presentes no sistema; • pci: Informações sobre slots PCI e AGP. DICA: Os dispositivos padrão ISA, VESA, EISA e SCSI não permitem o compartilhamento de uma mesma IRQ, pois não foram projetados para isso. Existem algumas “soluções”, mas não são muito eficazes. No processador há endereços de memória reservados que realizam entrada e saída de informações. Nós os chamamos de portas, portanto, portas de entrada e saída – I/O – Input/Output. Essas portas têm como objetivo principal a troca de dados entre o processador e os dispositivos de forma simplificada. Cada dispositivo conectado à CPU apresenta um endereço de porta I/O que não pode ser compartilhado com outros dispositivos. Para visualizar as portas de entrada e saída use o comando a seguir: # cat /proc/ioports 0000-001f : dma1 0020-0021 : pic1 0040-0043 : timer0 0050-0053 : timer1 0060-0060 : keyboard 0064-0064 : keyboard 0070-0071 : rtc0 0080-008f : dma page reg 00a0-00a1 : pic2 00c0-00df : dma2 00f0-00ff : fpu 0170-0177 : 0000:00:07.1 0170-0177 : ata_piix 01f0-01f7 : 0000:00:07.1 01f0-01f7 : ata_piix 02f8-02ff : serial (...) Lembre-se que os dispositivos PCI permitem o compartilhamento da mesma IRQ, pois as manipulam de forma diferente. Eles fazem isso mapeando uma interrupção para uma interrupção normal do sistema que geralmente é interrupção entre a IRQ 9 e IRQ 12. As interrupções do sistema podem ser visualizadas com o seguinte comando: # cat /proc/interrupts CPU0 0: 280 IO-APIC-edge 1: 4035 IO-APIC-edge timer i8042 Tópico 101.1: Identificação e configuração de hardware 4: 7: 8: 9: 12: 14: 15: 16: 19: 21: 1 0 1 0 89242 20969 23503 1 26 0 22: 389 23: 0 NMI: 0 LOC: 476004 RES: 0 CAL: 0 TLB: 0 TRM: 0 SPU: 0 ERR: 0 MIS: 0 13 IO-APIC-edge IO-APIC-edge IO-APIC-edge IO-APIC-fasteoi IO-APIC-edge IO-APIC-edge IO-APIC-edge IO-APIC-fasteoi IO-APIC-fasteoi IO-APIC-fasteoi parport0 rtc0 acpi i8042 pata_via pata_via nouveau@pci:0000:01:00.0 CS4281 ehci_hcd:usb1, uhci_hcd:usb2, uhci_hcd:usb3, uhci_hcd:usb4 IO-APIC-fasteoi VIA8233 IO-APIC-fasteoi eth0 Non-maskable interrupts Local timer interrupts Rescheduling interrupts Function call interrupts TLB shootdowns Thermal event interrupts Spurious interrupts NOTA: Não confunda o comando cat /proc/ioports que lista as portas I/O (entrada e saída) com o comando cat /proc/iomem que lista endereçamento de memória para os dispositivos de entrada e saída. Fique atento, pois aparece em exames LPI. Assim como temos as portas I/O, temos o DMA que é o acesso direto à memória que serve para permitir a transferência de dados entre os dispositivos e a memória sem a intervenção do processador. Isso se dá através de canais (channels) onde a maioria dos computadores apresenta 2 (dois) controladores de DMA. É importante que você saiba que temos um total de 8 (oito) canais onde o primeiro controlador de DMA cuida dos canais 0, 1, 2 e 3 e o segundo cuida dos canais 4, 5, 6 e 7. O DMA é importante, pois ele livra a carga do processador e resulta em uma rápida transferência de dados. Para informações sobre DMA usamos o seguinte comando: # cat /proc/dma 2: floppy 4: cascade Comandos relacionados com as informações sobre dispositivos PCI: • lspci: Lista todos os dispositivos PCI; • cat /proc/pci: semelhante ao comando lspci; • setpci: Configura dispositivos PCI; • pcitweak: Lê, escreve e lista configurações para dispositivos PCI e scanpci: Faz uma varredura e testa dispositivos PCI; • /sbin/hotplug: Script que em algumas distribuições fornece informações sobre dispositivos PCI e USB, assim como módulos ativos. O utilitário hotplug não é mais usado em algumas distribuições. 14 Tópico 101: Arquitetura do Sistema Para listar todos os dispositivos PCI: # lspci -b 00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge 00:01.0 PCI bridge: VIA Technologies, Inc. VT8235 PCI Bridge 00:0c.0 Multimedia audio controller: Cirrus Logic Crystal CS4281 PCI Audio (rev 01) 00:0e.0 Communication controller: Agere Systems V.92 56K WinModem (rev 02) 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge 00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/ A/C PIPC Bus Master IDE (rev 06) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] (rev a2 Para listar todos os dispositivos PCI com detalhamento. Use o parâmetro “-vv” para mais detalhes (o comando scanpci fornece uma saída resumida; verifique se esse comando está presente): # lspci -v 00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge Subsystem: ASUSTeK Computer Inc. A7V8X motherboard Flags: bus master, 66MHz, medium devsel, latency 0 Memory at f8000000 (32-bit, prefetchable) [size=64M] Capabilities: [80] AGP version 3.5 Capabilities: [c0] Power Management version 2 Kernel driver in use: agpgart-via 00:01.0 PCI bridge: VIA Technologies, Inc. VT8235 PCI Bridge (prog-if 00 [Normal decode]) Flags: bus master, 66MHz, medium devsel, latency 0 Bus: primary=00, secondary=01, subordinate=01, sec-latency=0 Memory behind bridge: f2000000-f3efffff Prefetchable memory behind bridge: f3f00000-f7ffffff Capabilities: [80] Power Management version 2 (...) Lembre-se que podemos usar o comando dmesg com “|” (pipes) para buscar somente uma determinada informação do hardware como, por exemplo, a placa de rede do tipo Ethernet (eth0) ou Wireless (wlan0). Veja como poderíamos usar o comando dmesg para esse tipo de pesquisa: # dmesg | grep eth0 eth0: VIA Rhine II at 0xef800000, 00:0c:6e:4e:41:ec, IRQ 23. eth0: MII PHY found at address 1, status 0x7849 advertising 01e1 Link 0000. eth0: link down ADDRCONF(NETDEV_UP): eth0: link is not ready Para mostrar todas as informações de hardware reconhecidas pelo kernel (a listagem é extensa) usamos o comando dmesg sem nenhum parâmetro. A listagem Tópico 101.1: Identificação e configuração de hardware 15 é longa, bem detalhada e, acredite, ela vai te ajudar muito no seu dia-a-dia. Porém, a listagem poderá ser diferente daquela da sua máquina: # dmesg Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version 2.6.31.5-127.fc12.i686.PAE ([email protected]. com) (gcc version 4.4.2 20091027 (Red Hat 4.4.2-7) (GCC) ) #1 SMP Sat Nov 7 21:25:57 EST 2009 KERNEL supported cpus: Intel GenuineIntel AMD AuthenticAMD NSC Geode by NSC Cyrix CyrixInstead Centaur CentaurHauls Transmeta GenuineTMx86 Transmeta TransmetaCPU (...) O retorno do comando lshal pode ter mais de duas mil linhas dependendo do seu hardware. Veja a seguir como buscar informações sobre o kernel e a placa de rede no sistema. O sistema detectado tem uma arquitetura do tipo 686 (confirme com o comando arch), e o driver da placa de rede é 8139: # lshal | grep kernel system.kernel.machine = ‘i686’ (string) system.kernel.name = ‘Linux’ (string) system.kernel.version = ‘2.6.31.5-127.fc12.i686.PAE’ system.kernel.version.major = 2 (0x2) (int) system.kernel.version.micro = 31 (0x1f) (int) system.kernel.version.minor = 6 (0x6) (int) (string) # lshal | grep 8139 udi = ‘/org/freedesktop/Hal/devices/pci_10ec_8139’ info.linux.driver = ‘8139too’ (string) info.product = ‘RTL-8139/8139C/8139C+’ (string) info.udi = ‘/org/freedesktop/Hal/devices/pci_10ec_8139’ (string) pci.product = ‘RTL-8139/8139C/8139C+’ (string) pci.product_id = 33081 (0x8139) (int) info.parent = ‘/org/freedesktop/Hal/devices/pci_10ec_8139’ (string) net.originating_device = ‘/org/freedesktop/Hal/devices/pci_10ec_8139’ (string) net.physical_device = ‘/org/freedesktop/Hal/devices/pci_10ec_8139’ (string) Em algumas situações onde o servidor possui mais de uma interface de rede, o administrador pode sentir a necessidade de saber qual módulo de rede do kernel está ligado a essa interface. Veja a seguir como ele poderia saber que o módulo 8139too está ligado à interface de rede eth0: # lspci -v -s tail -3 | head Kernel Kernel $(lshal | grep eth0 | head -1 | cut -d” “ -f5 | cut -d”/” -f5) | -2 driver in use: 8139too modules: 8139too, 8139cp Nota: Troque eth0 por eth1, eth2, eth3 etc para saber qual módulo está ligado à interface de rede do tipo Ethernet. Essa combinação de comando é muito útil quando há interfaces de rede na máquina de diferentes fabricantes. 16 Tópico 101: Arquitetura do Sistema Endereçamento de recursos O endereçamento de recursos dá-se pelas IRQs presentes no sistema, as quais na plataforma Intel PC têm um total de 16 (dezesseis), na faixa de 0-15, sendo que a IRQ 2 é responsável pelo cascateamento com o segundo controlador. Algumas podem ser compartilhadas, mas outras são fixas para o sistema como, por exemplo, a IRQ 0 (fixa) que é o Timer do Sistema, a IRQ 1 (fixa) que é o teclado e a IRQ 2 (fixa) que é o controlador de interrupção programável. Essa interrupção é interessante, pois ela serve como ponte para outras IRQs, mais especificamente as acima de 8 (9..15). As IRQs indisponíveis no sistema são: • IRQ 0: Timer do sistema, IRQ 1: Teclado; • IRQ 2: Cascateamento para o segundo controlador, IRQ 6: Unidade de disquete; • IRQ 8: Relógio do sistema, IRQ 13: Coprocessador matemático; • IRQ 14: Controlador IDE primário, IRQ 15: Controlador IDE secundário. Tabela 101.1.4: Quadro dos endereços dos principais recursos. Dispositivo I/O Port IRQ DMA 0x03f8 4 --- /dev/ttyS1 (COM 2) 0x02f8 3 --- /dev/ttyS2 (COM 3) 0x03e8 4 --- /dev/ttyS3 (COM 4) 0x02e8 3 --- /dev/lp0 (LPT 1:) 0x378 7 3 (ECP) /dev/lp0 (LPT 2:) 0x278 5 3 (ECP) /dev/lp0 (LPT 3:) 0x3bc 7 3 (ECP) /dev/ttyS0 (COM 1) /dev/fd0 e /dev/fd1 (A: e B:) 0x3f0, 0x3f7 6 2 /dev/fd2 e /dev/fd3 0x370, 0x377 10 3 0xd0000 10 --- 0x220, 0x330, 0x388 11 --- 0x1f0, 0x3f6 14 --- 0x170-0x177, 0x376 15 --- Ethernet (Placa de rede) Sound Card (Placa de som) /dev/hda1 (C:) /dev/hdc (D: ou CDROM) Nota: Em kernel antigo, de versão anterior a 2.2.x, em vez de ser /dev/ttyS[0-4], a nomenclatura será /dev/cua[1-3]. Como podemos ver, não é muito complicado. Tudo é questão de memorização. Por exemplo, a IRQ 14 é usada pela primeira controladora de discos e não pode ser compartilhada, e a IRQ 15 é usada pela segunda controladora a qual não pode ser compartilhada. Configuração básica de dispositivos SCSI O conhecimento requerido nessa parte é estar apto a configurar dispositivos SCSI através da própria BIOS ou de utilitários do sistema Linux. Também é interessante saber as diferenças entre os diversos tipos de dispositivos SCSI – Small Computer System Interfaces. O objetivo dos exames inclui a manipulação do BIOS SCSI para detectar e habilitar as configurações corretas que serão usadas na hora da inicialização. Tópico 101.1: Identificação e configuração de hardware 17 A arquitetura SCSI Dispositivos SCSI podem se comunicar entre si e, geralmente, a comunicação entre eles é muito rápida, a qual pode variar de 5 MB a 320 MB. Os dispositivos SCSI são dispositivos para armazenamento de dados, os quais podem ser CD-ROM, DVD-ROM, HD, Fitas Dat, Scanners, Zip/Jaz Drivers etc. Além da velocidade alta, podemos ter 8 (oito) dispositivos (incluindo a controladora) por barramento para uma controladora SCSI 8 bits e 16 (dezesseis) dispositivos (incluindo a controladora) por barramento para uma controladora SCSI 16 bits. Para que os dispositivos SCSI funcionem em um sistema Linux, o kernel deve dar suporte a isso. Felizmente, isso acontece há muito tempo, porém pode acontecer de ser preciso passar alguns parâmetros adicionais para se obter mais desempenho desses dispositivos. Estes dispositivos são classificados em 3 categorias: • SCSI I: Usa um cabo de 25 condutores para a ligação de periféricos. Normalmente usado em scanners, impressoras e outros dispositivos; • SCSI II: Também chamado de Fast SCSI. Usa um cabo de 50 condutores para a ligação de periféricos. Permite que sejam ligados até 7 periféricos em uma mesma controladora. É o mais comum encontrado hoje em dia; • SCSI III: Também chamado de Fast SCSI SE ou LVD. Usa um cabo de 68 condutores para ligação de periféricos. Permite que sejam ligados até 16 periféricos em uma mesma controladora. É importante saber que um cabo SCSI pode ter o comprimento de até cinco metros de extensão. Os periféricos SCSI são identificados através de números chamados de identificador SCSI ou SCSI ID. Estes números vão de 0 a 6 para o padrão SCSI II e de 0 a 15 para o padrão SCSI III. DICA: Para discos SCSI, fitas e CDs nenhum software adicional é requerido, uma vez que o protocolo para esses dispositivos fazem parte do protocolo SCSI. Hoje em dia é só conectar e reiniciar que o sistema Linux reconhece automaticamente. Dispositivos SCSI Já sabemos que o comando cat /proc/pci mostra os dispositivos PCI e o comando cat /proc/scsi/scsi mostra todos os dispositivos SCSI que atualmente estão carregados pelo kernel. Observe que os dispositivos têm um identificador que é o SCSI ID; e ele também aparece nessa listagem. Um ponto importante que é bom sabermos é que todos os dispositivos USB são tratados como dispositivos SCSI pelo sistema Linux. # cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware, Model: VMware Virtual S Type: Direct-Access Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: RW/DVD GCC-4320B Type: CD-ROM Host: scsi3 Channel: 00 Id: 00 Lun: 00 Rev: 1.0 ANSI SCSI revision: 02 Rev: 1.00 ANSI SCSI revision: 05 Tópico 101.1: Identificação e configuração de hardware 19 própria controladora monitora o estado do disco e disponibiliza um log numa área reservada, que pode ser lida pelo sistema operacional. O comando smartctl pode ser usado para extrair um relatório detalhado sobre o disco IDE/SCSI presente no sistema. Esse comando pode ser executado em ambos os tipos de discos IDE (/dev/hd??) e SCSI (/dev/sd??): # smartctl -i /dev/sda ou smartctl -i /dev/hda Informação resumida. # smartctl -a /dev/sda ou smartctl -a /dev/hda Informação detalhada. smartctl version 5.38 [i386-redhat-linux-gnu] Copyright (C) 2002-8 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION SECTION === Model Family: IBM Travelstar 48GH, 30GN, and 15GN family Device Model: IC25N010ATDA04-0 Serial Number: 170172M9962 Firmware Version: DACOA76A User Capacity: 10,056,130,560 bytes Device is: In smartctl database [for details use: -P show] ATA Version is: 5 ATA Standard is: ATA/ATAPI-5 T13 1321D revision 3 Local Time is: Tue Aug 6 16:25:45 2013 BRT SMART support is: Available - device has SMART capability. SMART support is: Enabled (...) Nota: Aqui podemos ver que o suporte ao smart está habilitado, caso não tivesse, usaríamos o comando smartctl -s on /dev/sda, para habilitar nesse tipo de disco. O parâmetro “-H” exibe um diagnóstico rápido da saúde do disco, fornecido pela própria controladora: # smartctl -H /dev/sda | grep result SMART overall-health self-assessment test result: PASSED Nota: Em casos de problemas iminentes o resultado será FAILING. Se isso ocorrer, recomenda-se trocar o disco o mais rápido possível. O comando hdparm pode ser usado para extrair um relatório detalhado sobre o disco IDE/SCSI presente no sistema. Esse comando pode ser executado em ambos os tipos de discos IDE (/dev/hd??) e SCSI (/dev/sd??). Use esse comando com cuidado, pois é possível ajustar alguns parâmetros do disco, mas se fizer isso errado poderá ter problemas: # hdparm -I /dev/sda ou hdparm -I /dev/hda /dev/sda: ATA device, with non-removable media Model Number: IC25N010ATDA04-0 Serial Number: 170172M9962 Firmware Revision: DACOA76A Standards: Used: ATA/ATAPI-5 T13 1321D revision 3 Supported: 5 4 3 & some of 6 Configuration: Logical max current 20 Tópico 101: Arquitetura do Sistema cylinders 16383 16383 heads 16 16 sectors/track 63 63 -CHS current addressable sectors: 16514064 LBA user addressable sectors: 19640880 Logical/Physical Sector size: 512 bytes device size with M = 1024*1024: 9590 MBytes device size with M = 1000*1000: 10056 MBytes (10 GB) cache/buffer size = 347 KBytes (type=DualPortCache) (...) O comando ainda permite que seja feita uma checagem de performance do disco: # hdparm -Tt /dev/sda ou hdparm -Tt /dev/hda /dev/sda: Timing cached reads: 174 MB in 2.01 seconds = 86.53 MB/sec Timing buffered disk reads: 24 MB in 3.09 seconds = 7.76 MB/sec Para uma listagem completa sobre dispositivos SCSI em seu sistema: # dmesg | grep “sd[a-z]” sd 0:0:0:0: [sda] 19640880 512-byte logical blocks: (10.0 GB/9.36 GiB) sd 0:0:0:0: [sda] Write Protect is off sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn’t support DPO or FUA sda: sda1 sda2 sd 0:0:0:0: [sda] Attached SCSI disk dracut: Scanning devices sda2 for LVM volume groups EXT4-fs (sda1): barriers enabled kjournald2 starting: pid 535, dev sda1:8, commit interval 5 seconds EXT4-fs (sda1): internal journal on sda1:8 EXT4-fs (sda1): delayed allocation enabled EXT4-fs (sda1): mounted filesystem with ordered data mode SELinux: initialized (dev sda1, type ext4), uses xattr (...) Nota: Essa listagem pode ter sutis diferenças conforme particionamento do disco, sistema de arquivos etc. NOTA: Os dispositivos SCSI quando ligados na mesma placa recebem um endereçamento único que podemos chamar de SCSI ID. Esse código de identificação SCSI é simples e vai de 0 (zero) a 7 nas placas que operam a 8 bits e de 0 (zero) a 15 nas placas que operam a 16 bits. O identificador ID 7 é reservado para as próprias placas. Tabela 101.1.7: Quadro das categorias dos dispositivos SCSI. Nome Bits Descrição SCSI 1 8 Transferência de 5 MB/s, usa um cabo de 50 pinos. SCSI 2 8 Transferência de 5 MB/s, usa um cabo de 50 pinos, permite ligação de até 7 dispositivos na mesma controladora. Wide SCSI 16 Transferência de 10 MB/s, usa um cabo de 68 pinos. Fast SCSI 8 Transferência de 10 MB/s, usa um cabo de 50 pinos. Fast Wide 16 Transferência de 20 MB/s, usa um cabo de 68 pinos (a tecnologia foi melhorada). Tópico 101.1: Identificação e configuração de hardware Nome Bits Ultra SCSI 8 21 Descrição Transferência de 20 MB/s, usa um cabo de 50 pinos. Ultra Wide SCSI 16 Transferência de 40 MB/s, usa um cabo de 68 pinos, permite ligação de até 16 dispositivos na mesma controladora. Também chamada de SCSI 3. Ultra SCSI 320 2 x 32 Transferência de 320 MB/s, usa um cabo de 68 pinos. Taxa bem alta para transferências. Atualmente tem-se um total de 8 (oito) categorias de dispositivos SCSI, sendo que a parte hardware desses dispositivos não entra no escopo dos exames LPI, mas o seu conhecimento sim, conforme a descrição. Para endereçar um dispositivo SCSI em particular, o kernel adiciona alguns detalhes ao adaptador: • host <número do adaptador>: O adaptador SCSI está em um bus SCSI. O número inicia-se em 0 (zero) e é alocado aleatoriamente; • bus <número do canal>: Um simples adaptador SCSI pode ter um número de bus SCSI adicionado a ele; • target <número ID>: Controladora no bus SCSI sendo endereçada; • lun <número da unidade lógica>: Controladora com múltiplos dispositivos sendo endereçadas. Assim como o comando lspci lista os dispositivos PCI, o comando lsscsi lista os dispositivos SCSI em seu sistema. No diretório /proc/scsi você encontrará informações sobre SCSI; para isso, use o comando cat /proc/scsi/scsi o qual lista os dispositivos SCSI. # cat /proc/scsi/scsi Attached devices: Host: scsi0 Channel: 00 Id: 00 Lun: 00 Vendor: VMware, Model: VMware Virtual S Type: Direct-Access Host: scsi2 Channel: 00 Id: 00 Lun: 00 Vendor: HL-DT-ST Model: RW/DVD GCC-4320B Type: CD-ROM Host: scsi3 Channel: 00 Id: 00 Lun: 00 Vendor: SMSC Model: USB FDC Type: Direct-Access Host: scsi4 Channel: 00 Id: 00 Lun: 00 Vendor: Sony Model: Sony DSC Type: Direct-Access Rev: 1.0 ANSI SCSI revision: 02 Rev: 1.00 ANSI SCSI revision: 05 Rev: 2.10 ANSI SCSI revision: 00 Rev: 6.00 ANSI SCSI revision: 00 Para listar os diretórios dos dispositivos SCSI: # ls -l /proc/scsi total 0 dr-xr-xr-x. 2 root -r--r--r--. 1 root -r--r--r--. 1 root dr-xr-xr-x. 2 root dr-xr-xr-x. 2 root root root root root root 0 0 0 0 0 2010-03-18 2010-03-18 2010-03-18 2010-03-18 2010-03-18 15:00 15:00 15:00 15:00 15:00 BusLogic device_info scsi sg usb-storage Observe que temos um diretório para dispositivos USB e temos um de número 3. Para saber que é o tal do dispositivo, basta um simples comando cat. E pelo jeito é uma unidade de disquete externa: 22 Tópico 101: Arquitetura do Sistema # ls -l /proc/scsi/usb-storage/ total 0 -rw-r--r--. 1 root root 0 2010-03-18 15:00 3 # cat /proc/scsi/usb-storage/3 Host scsi3: usb-storage Vendor: Sony Product: Sony DSC Serial Number: None Protocol: 8070i Transport: Control/Bulk Quirks: SINGLE_LUN O kernel do Linux pode tratar dispositivos SCSI de modo transparente, porém, tome cuidado com alguns dispositivos meio ortodoxos que existem por aí. Procure documentação para poder obter a melhor performance desses tipos de dispositivos. Os dispositivos SCSI precisam ser carregados pelo kernel se estiverem em forma de módulos ou, então, quando da compilação do kernel, a opção para o dispositivo deve ser inclusa nele. Para ver os módulos (drive) para dispositivos SCSI que estão carregados. Fique atento quanto à localização desse arquivo, bem como seu nome conforme a distribuição em uso: # cat /etc/modprobe.conf alias eth0 pcnet32 alias scsi_hostadapter mptspi alias scsi_hostadapter1 libata alias scsi_hostadapter2 ata_piix alias snd-card-0 snd-ens1371 options snd-card-0 index=0 options snd-ens1371 index=0 (...) Algumas distribuições não usam mais o arquivo /etc/modprobe.conf, mas sim o diretório /etc/modprobe.d/ onde se localizam vários arquivos de módulos. A ideia seria “descentralizar” para ficar mais fácil: # ls -l /etc/modprobe.d/* -rw-r--r--. 1 root root 52 -rw-r--r--. 1 root root 845 -rw-r--r--. 1 root root 16 conf -rw-r--r--. 1 root root 5616 -rw-r--r--. 1 root root 473 -rw-r--r--. 1 root root 26 2010-03-18 15:00 /etc/modprobe.d/anaconda.conf 2010-03-18 15:00 /etc/modprobe.d/blacklist.conf 2010-03-18 15:00 /etc/modprobe.d/blacklist-visor. 2010-03-18 15:00 /etc/modprobe.d/dist.conf 2010-03-18 15:00 /etc/modprobe.d/dist-oss.conf 2010-03-18 15:00 /etc/modprobe.d/floppy-pnp.conf NOTA: Os arquivos /etc/conf.modules (kernel 2.2.x), /etc/modules.conf (kernel 2.4.x) e /etc/modprobe.conf (kernel 2.6.x), possuem apenas leves mudanças em seus nomes, mas têm o mesmo objetivo que é o arquivo que informa ao kernel quais módulos carregar. Configuração básica de placas de expansão Você deverá estar apto a configurar alguns tipos de cartões/placas em seu sistema mediante a identificação das informações do seu hardware. Você deverá conhecer Tópico 101.1: Identificação e configuração de hardware 23 a diferença entre cartões PCI e ISA e como configurá-los em seu sistema. Como objetivo, os exames incluem a correta configuração pelas IRQs, DMA e portas I/O dos respectivos cartões, especialmente se houver conflito entre eles. Também está incluso o uso do isapnp se, por exemplo, a placa em questão for um dispositivo ISA PNP padrão. O conhecimento a ser usado aqui é muito simples e muito fácil, e já foram até mesmo comentados e ensinados nesse capítulo. Então, vamos revisá-los. É importante saber usar os arquivos de informação os quais podem ser usados junto com os comandos cat, more ou less. Os arquivos de informação são: /proc/dma, /proc/interrupts, /proc/ioports e /proc/pci. Também é importante saber usar os comandos de informação direta que são: pnpdump, isapnp, lspci, lsusb e lsscsi. Para os exames LPI é importante que você não tenha dúvidas sobre hardware e seus parâmetros com (IRQ, DMA e I/O). Entender como funciona o diretório /proc e seus arquivos de informação, placas ISA PNP, e como configurar e ler a hora do sistema e do hardware. O que vem a ser uma placa de expansão? Simples, é um circuito eletrônico encaixado na placa mãe que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma: • Placa de som: Fornece suporte ao computador para sons, músicas, ligar um joystick, etc; • Placa de Fax-modem: Fornece suporte ao computador para enviar/receber fax, conectar-se à internet, BBS, acesso remoto, bina, etc; • Placa de rede: Fornece suporte ao computador para permitir a comunicação com outros computadores em uma rede interna ou na Internet; • Placa controladora de periféricos: Fornece suporte ao computador para ligar discos rígidos, unidades de disquete, impressora, mouse, joystick, etc; • Placa SCSI: Fornece suporte ao computador para ligar unidades de disco rígidos e periféricos de alto desempenho; • Placa controladora de scanner: Fornece suporte ao computador para ligar um scanner externo. A arquitetura BUS O BUS é, fisicamente falando, um conjunto de condutores paralelos com a função de conectar componentes/dispositivos em um computador. Esses componentes usam o bus para comunicação enviando sinais elétricos de um para outro. Os componentes que são conectados pelo bus são, por exemplo, a CPU, as memórias RAM e ROM e os periféricos/dispositivos, como o controlador de interrupção, o adaptador de vídeo, a interface de disco etc. Os recursos alocados pelo bus, tanto em PCI quanto ISA, podem ser: • Endereço de entrada e saída (I/O) para um específico componente como o endereçamento I/O da própria CPU. Logo já se percebe porque o sistema bus (I/O) não pode ser compartilhado; • O endereçamento de memória para ler e escrever em uma determinada localização na memória. A CPU usa esses endereçamentos de memória; • As IRQs para quando um dispositivo qualquer precisar de “enlaces” de tempo da CPU. O bus é inteligente, pois tem o número da interrupção o qual habilita o kernel a saber qual dispositivo causou uma interrupção; 24 Tópico 101: Arquitetura do Sistema • • Se dois dispositivos compartilham uma mesma IRQ, pode acontecer de haver uma requisição ao mesmo tempo e o kernel responder a ambas de acordo com suas prioridades; O acesso direto à memória (DMA) permite que dispositivos copiem dados diretamente da memória sem intervenção da CPU. Isso permite uma melhoria na performance, mas não é possível o compartilhamento de canais DMA entre esses dispositivos. A identificação BUS Através da numeração bus que já conhecemos é possível saber mais um monte de informações, pois dispositivos PCI incluem alguns recursos de identificação como parte de sua especificação. Por exemplo, sabemos que para uma placa de rede funcionar, ela precisa de um módulo no sistema Linux, e esse módulo deve ser lido pelo kernel. E para pesquisarmos por esse tipo de informação, um dos comandos mais usados é o comando lspci. O comando lspci tem a seguinte sintaxe: # lspci [opções] As opções mais comuns são (para mais informações use o comando man lspci ou info lspci): • -k: Muito útil, pois informa que módulo do kernel está anexado ao dispositivo PCI; • -m: Exibe informações com mais detalhes que o simples comando lspci; • -mm: Semelhante ao “-m”, porém com mais detalhes ainda; • -n e -nn: Mostra codificação dos dispositivos e codificação, mais informações do vendedor; • -s e -d: Usado para pesquisas com mais detalhes sobre um dispositivo especifico; • -v: Modo verboso; Para saber qual módulo (driver) do kernel é responsável pelo dispositivo PCI, por exemplo. Aqui percebemos que o módulo da interface de rede é o pcnet32. # lspci -k (...) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50) Subsystem: ASUSTeK Computer Inc. A7V8X-X Motherboard Kernel driver in use: VIA 82xx Audio Kernel modules: snd-via82xx 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) Subsystem: ASUSTeK Computer Inc. A7V8X-X Motherboard Kernel driver in use: via-rhine Kernel modules: via-rhine 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] (rev a2) Kernel modules: nouveau Os módulos no sistema Linux terminam em “.ko” ou “.o”. Veja como saber onde ele está, o que nesse caso descobrimos que está em ../../drivers/net: # locate pcnet32 | egrep “.ko$|.o$” /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/net/pcnet32.ko Tópico 101.1: Identificação e configuração de hardware 25 Para saber como essa interface de rede trabalha quando da transmissão/recepção, basta usar o comando modinfo com um filtro simples de comando grep. Veja: # modinfo $(locate pcnet32 | egrep “.ko$|.o$”) | grep “plex” parm: full_duplex:pcnet32 full duplex setting(s) (1) (array of int Para o comando anterior, se desejar as informações técnicas do dispositivo, basta retirar o filtro grep: # modinfo $(locate pcnet32 | egrep “.ko$|.o$”) filename: /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/net/ pcnet32.ko license: GPL description: Driver for PCnet32 and PCnetPCI based ethercards author: Thomas Bogendoerfer srcversion: BE4E52164A7079455A3B16D alias: pci:v00001023d00002000sv*sd*bc02sc00i* alias: pci:v00001022d00002000sv*sd*bc*sc*i* alias: pci:v00001022d00002001sv*sd*bc*sc*i* depends: mii vermagic: 2.6.31.5-127.fc12.i686.PAE SMP mod_unload 686 parm: debug:pcnet32 debug level (int) parm: max_interrupt_work:pcnet32 maximum events handled per interrupt (int) parm: rx_copybreak:pcnet32 copy breakpoint for copy-only-tiny-frames (int) parm: tx_start_pt:pcnet32 transmit start point (0-3) (int) parm: pcnet32vlb:pcnet32 Vesa local bus (VLB) support (0/1) (int) parm: options:pcnet32 initial option setting(s) (0-15) (array of int) parm: full_duplex:pcnet32 full duplex setting(s) (1) (array of int) parm: homepna:pcnet32 mode for 79C978 cards (1 for HomePNA, 0 for Ethernet, default Ethernet (array of int) O código do dispositivo de interface de rede é 00:12.00 (para esse hardware); e para saber informações mais específicas sobre ele podemos fazer uma pesquisa direta. Nos exemplos a seguir poderíamos usar também 12:0: # lspci -s 12.0 Pesquisa direta sem detalhes. 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) # lspci -s 12.0 -v Pesquisa direta com detalhes. 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) Subsystem: ASUSTeK Computer Inc. A7V8X-X Motherboard Flags: bus master, stepping, medium devsel, latency 32, IRQ 23 I/O ports at a800 [size=256] Memory at ef800000 (32-bit, non-prefetchable) [size=256] Capabilities: [40] Power Management version 2 Kernel driver in use: via-rhine Kernel modules: via-rhine Usando o comando lspci, podemos consultar informações dos tipos de módulos que o kernel poderá trabalhar. # lspci 00:00.0 Host bridge: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge 00:01.0 PCI bridge: VIA Technologies, Inc. VT8235 PCI Bridge 00:0c.0 Multimedia audio controller: Cirrus Logic Crystal CS4281 PCI Audio (rev 01) 26 Tópico 101: Arquitetura do Sistema 00:0e.0 Communication controller: Agere Systems V.92 56K WinModem (rev 02) 00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.1 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80) 00:10.3 USB Controller: VIA Technologies, Inc. USB 2.0 (rev 82) 00:11.0 ISA bridge: VIA Technologies, Inc. VT8235 ISA Bridge 00:11.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/ A/C PIPC Bus Master IDE (rev 06) 00:11.5 Multimedia audio controller: VIA Technologies, Inc. VT8233/A/8235/8237 AC97 Audio Controller (rev 50) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) 01:00.0 VGA compatible controller: nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] (rev a2) Conseguiu entender até aqui? Bom, e agora? Qual é o próximo passo? Use o lspci -n para saída resumida. # lspci 00:00.0 00:01.0 00:0c.0 00:0e.0 00:10.0 00:10.1 00:10.2 00:10.3 00:11.0 00:11.1 00:11.5 00:12.0 01:00.0 -n 0600: 0604: 0401: 0780: 0c03: 0c03: 0c03: 0c03: 0601: 0101: 0401: 0200: 0300: 1106:3189 1106:b168 1013:6005 11c1:048c 1106:3038 1106:3038 1106:3038 1106:3104 1106:3177 1106:0571 1106:3059 1106:3065 10de:0181 (rev (rev (rev (rev (rev (rev 01) 02) 80) 80) 80) 82) (rev (rev (rev (rev 06) 50) 74) a2) Para uma listagem resumida, mas com informações mais úteis como o código do vendedor e dos dispositivos: # lspci -nn 00:00.0 Host bridge [0600]: VIA Technologies, Inc. VT8377 [KT400/KT600 AGP] Host Bridge [1106:3189] 00:01.0 PCI bridge [0604]: VIA Technologies, Inc. VT8235 PCI Bridge [1106:b168] 00:0c.0 Multimedia audio controller [0401]: Cirrus Logic Crystal CS4281 PCI Audio [1013:6005] (rev 01) 00:0e.0 Communication controller [0780]: Agere Systems V.92 56K WinModem [11c1:048c] (rev 02) 00:10.0 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 80) 00:10.1 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 80) 00:10.2 USB Controller [0c03]: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller [1106:3038] (rev 80) 00:10.3 USB Controller [0c03]: VIA Technologies, Inc. USB 2.0 [1106:3104] (rev 82) 00:11.0 ISA bridge [0601]: VIA Technologies, Inc. VT8235 ISA Bridge [1106:3177] 00:11.1 IDE interface [0101]: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/ VT823x/A/C PIPC Bus Master IDE [1106:0571] (rev 06) Tópico 101.1: Identificação e configuração de hardware 27 00:11.5 Multimedia audio controller [0401]: VIA Technologies, Inc. VT8233/ A/8235/8237 AC97 Audio Controller [1106:3059] (rev 50) 00:12.0 Ethernet controller [0200]: VIA Technologies, Inc. VT6102 [Rhine-II] [1106:3065] (rev 74) 01:00.0 VGA compatible controller [0300]: nVidia Corporation NV18 [GeForce4 MX 440 AGP 8x] [10de:0181] (rev a2) Para uma listagem detalhada de todos os dispositivos, porém, aqui só tem o que nos interessa no momento: # lspci -vvv (...) 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) Subsystem: ASUSTeK Computer Inc. A7V8X-X Motherboard Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV+ VGASnoop- ParErrStepping+ SERR- FastB2B- DisINTxStatus: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort<MAbort- >SERR- <PERR- INTxLatency: 32 (750ns min, 2000ns max), Cache Line Size: 32 bytes Interrupt: pin A routed to IRQ 23 Region 0: I/O ports at a800 [size=256] Region 1: Memory at ef800000 (32-bit, non-prefetchable) [size=256] Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+) Status: D0 PME-Enable- DSel=0 DScale=0 PMEKernel driver in use: via-rhine Kernel modules: via-rhine (...) DICA: Os módulos no sistema Linux possuem a extensão “.ko” ou “.o” e, geralmente, residem dentro do diretório /lib/modules/versão_do_kernel/kernel/drivers/. Eles são carregados dinamicamente com os comandos insmod ou modprobe e podem ser declarados no arquivo /etc/modprobe.conf. Foi usado aqui como exemplo um cartão/placa de rede modelo Pcnet32 como única placa de rede. Para que ele seja carregado automaticamente, umas das alternativas seria usar uma chamada para o carregamento desse módulo no arquivo /etc/ modprobe.conf. Então, sua interface era a eth0. Quando estiver mais de uma interface de rede presente no sistema, a próxima interface é eth1, e assim por diante. O conteúdo do arquivo modprobe.conf muda conforme o seu hardware e conforme a distribuição, e em raros casos (antes era comum), o administrador precisará editar esse arquivos e criar manualmente as entradas para os módulos (drivers) para o sistema funcionar adequadamente com determinado tipo de hardware. Veja um exemplo desse arquivo em uma distribuição Red Hat: # ls /etc/modprobe.conf (...) alias usb-uhci uhci-hcd alias usb-ohci ohci-hcd alias uhci uhci-hcd alias alias alias alias char-major-116-* snd sound-service-*-0 snd-mixer-oss sound-service-*-1 snd-seq-oss sound-service-*-3 snd-pcm-oss 28 Tópico 101: Arquitetura do Sistema alias sound-service-*-8 snd-seq-oss alias sound-service-*-12 snd-pcm-oss install sound-slot-* slot[_-]} /sbin/modprobe snd-card-${MODPROBE_MODULE##sound[_-] alias nfs4 nfs alias rpc_pipefs sunrpc alias rpc_svc_gss_pipefs sunrpc install eth1394 /bin/true (...) Nota: Dependendo da distribuição e do que foi instalado e o tipo de hardware, esse arquivo apresenta sutis diferenças. Algumas distribuições atuais mudaram a ideia desse arquivo, pois agora usam o diretório /etc/modprobe.d/ e, dentro dele, os arquivos de módulos. Dessa forma, ficou menos centralizado para oferecer um melhor controle: # ls /etc/modprobe.d/ anaconda.conf blacklist-visor.conf blacklist.conf dist-alsa.conf dist.conf dist-oss.conf floppy-pnp.conf openfwwf.conf Nota: Dependendo da distribuição e do que foi instalado e o tipo de hardware, outros arquivos poderão estar presente nesse diretório. Módulos para placas de rede existem aos milhares para Linux, para carregar via linha de comando um módulo para uma placa de rede como o módulo via-rhine, por exemplo. Esses comandos carregam o módulo para a memória e o kernel faz o devido tratamento. Geralmente, quando usamos o comando isnmod, precisamos passar o caminho completo, e com o comando modprobe, apenas o nome do módulo: # insmod /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/net/via-rhine. ko ou # modprobe via-rhine Para verificar via linha de comando se esse módulo está carregado: # lsmod | grep rhine via_rhine mii 19872 4028 0 1 via_rhine NOTA: O comando rmmod <módulo> remove, ou tenta remover, um módulo da memória. Tome muito cuidado com ele, pois se você remover um módulo errado terá sérios problemas, principalmente se esse módulo for um módulo de interface de rede. Todas as suas conexões de rede estarão seriamente comprometidas. Quando o módulo já faz parte da instalação do sistema, tudo funciona a mil maravilhas; mas e se o módulo existe, porém não veio com o sistema? Bom, aí precisaremos ler as instruções na página do desenvolvedor de como fazer o procedimento correto. Lembre-se que uma entrada no arquivo /etc/modules.conf ou /etc/conf. modules ou /etc/modprobe.conf para esse módulo deverá existir, e o módulo deverá ser copiado em um local padrão do sistema para que os comandos Tópico 101.1: Identificação e configuração de hardware 29 de pesquisa e geração de cache funcionem. Só para exemplificar, usaremos o módulo pcnet32.ko, o qual deverá ser copiado no local correto. E na sequência, execute o comando depmod -va para que seja criado/verificado o arquivo /lib/modules/2.6.29.4-167.fc11.i686.PAE/modules.dep se o módulo é mais novo ou não, e para que ele possa estar ativo no sistema na próxima inicialização. A função desse arquivo é guardar o caminho para os diversos módulo do sistema. Essa listagem é para o kernel PAE presente no sistema: # grep ‘rhine’ /lib/modules/2.6.29.4-167.fc11.i686.PAE/modules.dep --color kernel/drivers/net/via-rhine.ko: kernel/drivers/net/mii.ko Agora, por último (faça a pesquisa anteriormente mostrada para saber como identificar o número/código do dispositivo PCI), usaremos o comando lspci -s 12.0 -v que vai listar mais informações sobre a interface de rede (identificação 12:0): # lspci -s 12:0 -v ou lspci -s 00:12.0 -v Pesquisa direta com detalhes. 00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 74) Subsystem: ASUSTeK Computer Inc. A7V8X-X Motherboard Flags: bus master, stepping, medium devsel, latency 32, IRQ 23 I/O ports at a800 [size=256] Memory at ef800000 (32-bit, non-prefetchable) [size=256] Capabilities: [40] Power Management version 2 Kernel driver in use: via-rhine Kernel modules: via-rhine Nota: Se desejar apenas a linha informativa, retire o parâmetro “-v”. Se tudo funcionou, poderemos consultar as informações quando do procedimento de inicialização através do comando dmesg. # dmesg | grep “via-rhine” via-rhine.c:v1.10-LK1.4.3 2007-03-06 Written by Donald Becker via-rhine 0000:00:12.0: PCI INT A -> GSI 23 (level, low) -> IRQ 23 Os dispositivos PCI são identificados por um único ID como se fosse um endereço MAC de uma placa de rede. As informações sobre essa identificação, dependendo da distribuição, podem ficar em diretórios um pouco diferentes: • /usr/share/pci.ids: Para uma distribuição SuSE; • /usr/share/hwdata/pci.ids: Para uma distribuição Red Hat ou Debian; • /usr/share/mics/pci.ids: Uma distribuição Debian mais antiga. Os arquivos anteriores podem ser visualizados com o comando cat, more ou less, e o comando update-pciids faz uma atualização desses arquivos da internet baseado na hora atual: # update-pciids --15:00:00-- http://pciids.sourceforge.net/pci.ids.bz2 => `/usr/share/pci.ids.new’ Resolving pciids.sourceforge.net... Algumas informações que são necessárias saber são: • O suporte Linux para PCI (Bus ID=00) é completo e não precisa de configuração manual; 30 Tópico 101: Arquitetura do Sistema • • • • • O AGP PCI bus (Bus ID=01) é reservado para cartões/placa de vídeo e tem apenas um slot (encaixe) feito para transferência de dados entre chip de vídeo e o PC; O sistema de endereçamento para o bus PCI segue a mesma lógica do endereçamento SCSI: BusNo:SlotNo:FunçãoNo (Dispositivo No); O comando lspci é usado para listar dispositivos PCI no sistema e também retorna o fabricante a partir do arquivo /usr/share/pci.ids. Se usarmos o parâmetro “-n” não será feita a leitura a partir desse arquivo. A partir do kernel 2.1.82 há mais informações sobre os dispositivos PCI no diretório /proc/pci; As portas seriais, conhecidas como COM 1, COM 2 etc no sistema Linux, são referenciadas como ttyS0, ttyS1 etc, e as impressoras paralelas, como lpt1, lpt2, são referenciadas como lp0, lp1 etc. Configuração básica de dispositivos de comunicação Os conhecimentos para essa parte são praticamente os mesmos usados para a configuração do modem, com a diferença que aqui tem mais algumas observações importantes. Os mesmos objetivos requisitados para a configurações do modem são requisitados aqui e mais alguma complementação sobre protocolos. Funcionamento de uma conexão PPP As redes como, por exemplo, a ethernet, frame relay e ATM conectam um número muito grande de computadores entre si, e cada computador conectado nessa rede pode trocar informações com diferentes tipos de computadores simultaneamente sobre a mesma conexão. Uma das formas mais comuns de interconexão é a ponto a ponto (p2p), e um exemplo disso é o seu computador conectado ao computador do seu provedor de acesso. E para esse tipo de conexão há vários métodos para disponibilizá-las: • Modem analógico: Usando uma linha telefônica do computador para o computador do provedor onde os modems podem “conversar” entre si, e dessa “conversa” passa a existir uma conexão; • Modem ISDN: É praticamente a mesma ideia que o modem analógico, porém aqui o sinal é digital; • Modem DSL: Aqui já é um pouco mais complexo, pois aproveitamos a mesma banda de voz para usar dados. Esses modems são sofisticados e podem até mesmo ter implementações de Firewall embutida neles. A função elementar do modem é prover um canal de comunicação em duas direções, e para isso, pode ser usado um protocolo de comunicação ponto a ponto (point to point) ou simplesmente PPP, o qual usa protocolos de rede para comunicação. Quando dois computadores estão interligados usando o protocolo PPP, um processo é executado, o qual informações são enviadas para o kernel para processamento de rede. Modems analógicos O protocolo PPP em modems analógicos requer autenticação em ambos os lados da conexão ponto a ponto. Geralmente funciona assim: É iniciada uma discagem Tópico 101.1: Identificação e configuração de hardware 31 para o provedor (ISP – Internet Solution Provider) e lá, então, o servidor requisita a autenticação. Se estiver tudo certo, completa-se a conexão e um processo pppd passa a existir. Esse tipo de modem geralmente é configurado da seguinte maneira: • Usa uma das portas de comunicação do sistema como, por exemplo, /dev/ttyS0 ou /dev/ttyS1; • Se o modem for WinModem, um módulo específico para o kernel deverá ser carregado antes disso. Se for modem interno, deverá ser configurado com o comando setserial; • Será necessário o telefone do provedor para discar; • Um nome de usuário (login) e uma senha (password) válida; DICA: Depois que esses requisitos estiverem todos certos, pode-se usar inúmeros programas para configurar parâmetros extras do protocolo PPP como o wvdial, kppp etc. No entanto, a explicação desses utilitários está fora do escopo desse material. Há na maioria dos sistemas um script que podemos chamá-lo com o comando / sbin/ifup ppp0 para ativar o link de comunicação. Como seria uma conexão usando então o processo pppd? Simples, mas é preciso fazer tudo à mão. Vamos seguir o procedimento para ativar um link de comunicação com o provedor: Cria-se um arquivo texto chamado “provedor” no diretório /etc/ppp/peers/. Esse arquivo vai ser consultado quando executarmos o comando pppd call provedor. O conteúdo dele é: /dev/cua0 38400 crtscts connect "chat /etc/ppp/lpi-isp/conectar" user adilson /dev/cua0 pode ser /dev/ttyS0. Depois, cria-se um diretório chamado “lpi-isp” dentro do diretório /etc/ppp, e depois cria-se um arquivo chamado “conectar” (chamado de chap script) nesse diretório com o seguinte conteúdo: ABORT "NO CARRIER" ABORT "NO DIALTONE" ABORT "ERROR" ABORT "NO ANSWER" ABORT "BUSY" ABORT "Username/Password incorreto..." "" "at" OK "at&d0&c1" OK "atdt11123456789" Telefone a ser chamado. CONNECT Agora, dependendo do modo de autenticação que vai ser usado, o arquivo /etc/ppp/ chap-secrets ou /etc/ppp/pap-secrets deve conter o nome do usuário e a senha. Se quiser, pode-se colocar a mesma informação de um em outro. Esses arquivos apresentarão o seguinte conteúdo (nome de login e senha): "adilson" * "lpi2010" Agora é só executar o comando pppd call provedor. Dependendo de como está configurado o syslogd vai ser gerado uma saída de log em /var/log/messages. 32 Tópico 101: Arquitetura do Sistema Espere pela conexão, e depois navegue à vontade. O protocolo CHAP é mais seguro que o PAP porque é criptografado, enquanto o outro não. Modems DSL Esses modems, que são muito populares, usam uma técnica chamada PPP sobre Ethernet, ou pppoe. Nos CDs de sua distribuição instale esse pacote para ter os utilitários corretos. Seu funcionamento é simples e é preciso que a placa de rede esteja configurada corretamente, e então é só seguir os passos para ter um link de comunicação com o provedor. Dependendo da distribuição a ser usada, cada uma pode trazer seus próprios utilitários de configuração; e após instalados os pacotes necessários (geralmente quase todos) rp-pppoe-gui-[versão], rp-pppoe-server-[versão] e rp-pppoe[versão], estará presente também alguns scripts de conexão: • adsl-connect, adsl-setup: Usado para conectar e configurar a autenticação em uma conta ADSL; • adsl-start: Inicia uma conexão; • adsl-status: Mostra status da conexão; • adsl-stop: Para a conexão. Em algumas distribuições os comandos todos começam com adsl; mas cuidado, pois na maioria das distribuições os comandos iniciam por ppp, sendo os comandos adsl-start e adsl-stop links para os comandos ppp responsáveis. Veja: # ppp <tab><tab> pppd pppoe pppoe-discovery pppoe-server pppoe-sniff p p p o e status pppstats pppdump pppoe-connect pppoe-relay pppoe-setup pppoe-start pppoe-stop ppp-watch # file $(which adsl-start) /usr/sbin/adsl-start: symbolic link to `../../sbin/pppoe-start’ # file $(which adsl-stop) /usr/sbin/adsl-stop: symbolic link to `../../sbin/pppoe-stop’ Um utilitário, o tkpppoe, para o modo gráfico para o pacote pppoe poderá ser encontrado em http://www.roaringpenguin.com/pppoe, caso sua distribuição não o tenha. Configuração básica de dispositivos USB Você deverá estar apto a ativar e compreender o suporte a dispositivos USB – Universal Serial Bus em um sistema Linux, o que é de certa forma muito simples de ser feito. Nessa parte vamos aprender como fazer a seleção correta do chipset USB e os módulos correspondentes. Também vamos ter uma base do modelo de camada da arquitetura básica de dispositivos USB. O uso correto dos comandos para dispositivos USB e a compreensão dos módulos e utilitários de acordo com a versão do kernel. Tópico 101.1: Identificação e configuração de hardware 33 A arquitetura USB O USB – Universal Serial Bus foi concebido com o intuito de facilitar a conexão de periféricos existentes para computador. Entre eles, estão os dispositivos mais comuns como teclados, mouses, impressoras e webcams, e placas de rede com fio ou wireless. Mas espere ver por aí muita coisa exótica como caixas de som, mini ventiladores, e, acredite, tem até barbeador e mini lanternas. Estou falando sério! Cada vez mais popular, o USB é uma boa solução para unificar e facilitar a adição de periféricos a um computador. Atualmente, a detecção e a configuração de dispositivos USB são feitas automaticamente através do subsistema hotplug e udev. Quando um dispositivo é conectado ao barramento USB da máquina, o próprio kernel o reconhece e envia uma mensagem ao programa hotplug/udev, que se encarrega de carregar os módulos necessários ao seu funcionamento, bem como executar outras tarefas como, por exemplo, o acerto de permissões. Eventualmente, claro, pode haver um dispositivo muito recente que pode não ser suportado pelo kernel, aí você terá que arregaçar as mangas e recompilar o kernel. Mas felizmente muitos fabricantes têm optado por padrões como, por exemplo, o usb-storage, o que torna o periférico totalmente suportado. O suporte ao padrão USB em sistemas Linux está presente desde o kernel 2.2.18, mas é a partir do kernel 2.4 que o suporte a esse padrão melhorou muito. E a ideia do padrão USB veio como uma mão na roda para todos os tipos de usuários; e quem for do tempo do kernel 2.0, sabe do que estou falando. O padrão é muito flexível e muito funcional, basta plugar um dispositivo USB (mouse, cd-rom, scanner, câmera, pendrive, players, teclado, unidades de disquetes e fitas etc) que o sistema já detecta automaticamente. O barramento USB pode operar em velocidades baixas de 1,5 MB/s até velocidades altas como 12 MB/s. A configuração de dispositivos USB no sistema Linux é extremamente simples e pode ser feito de duas maneiras: a frio e a quente onde: • A frio (coldplug): Conecta-se todos os dispositivos USB, por exemplo, ligase o micro, e tudo vai sendo detectado automaticamente. Outros exemplos de dispositivos coldplug são placas PCI, ISA, e dispositivos IDE e pentes de memória; • A quente (hotplug): Depois do micro ligado, conecta-se os dispositivos e aguardase um tempo para que o sistema detecte um novo hardware. Seu funcionamento é simples. Assim que um dispositivo é conectado ou desconectado, o hotplug dispara um evento que atualiza os arquivos de dispositivos em /dev (diretório de dispositivos) e faz o devido reconhecimento do tipo de dispositivo. NOTA: No entanto, o padrão USB 1.0 também evoluiu e, em 1999, foi anunciada a versão 2.0 muito mais rápida que a anterior. O padrão USB 1.0 permitia que 127 (cento e vinte e sete) dispositivos fossem conectados ao mesmo tempo e operava a velocidades de 12 Mbit/s. Porém, na prática, a velocidade máxima não poderia ultrapassar 8,5 Mbit/s, nem mesmo sobre as melhores condições. Com a versão 2.0 do padrão USB a velocidade mudou bastante e hoje se trabalha na velocidade de 480 Mbit/s, porém, a tecnologia USB 3.0 (xHCI) promete ser 10 (dez) vezes mais rápida que o USB 2.0. 34 Tópico 101: Arquitetura do Sistema Para quem ainda não sabe, o padrão USB foi desenvolvido em 1994, em conjunto com a Compac, Intel, NEC e Microsoft, e tinha os seguintes objetivos: a) facilidade de uso, b) PCs baseados em telefonia devem ser possíveis e previstos, e c) portas de expansão, assim você não fica limitado ao número físico de portas do computador. Para ver como foi reconhecido seus dispositivos USB, use o comando: # dmesg | grep usb | uniq usbcore: registered new interface driver usbfs usbcore: registered new interface driver hub usbcore: registered new device driver usb usb usb1: New USB device found, idVendor=1d6b, idProduct=0001 usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb1: Product: OHCI Host Controller usb usb1: Manufacturer: Linux 2.6.31.5-127.fc12.i686.PAE ohci_hcd usb usb1: SerialNumber: 0000:00:01.2 usb usb1: configuration #1 chosen from 1 choice usb usb2: New USB device found, idVendor=1d6b, idProduct=0001 usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 usb usb2: Product: OHCI Host Controller usb usb2: Manufacturer: Linux 2.6.31.5-127.fc12.i686.PAE ohci_hcd usb usb2: SerialNumber: 0000:00:01.3 usb usb2: configuration #1 chosen from 1 choice usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver usb 1-1: new low speed USB device using ohci_hcd and address 2 usb 1-1: New USB device found, idVendor=046d, idProduct=c016 usb 1-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 1-1: Product: Optical USB Mouse usb 1-1: Manufacturer: Logitech usb 1-1: configuration #1 chosen from 1 choice input: Logitech Optical USB Mouse as /devices/pci0000:00/0000:00:01.2/usb1/11/1-1:1.0/input/input2 generic-usb 0003:046D:C016.0001: input,hidraw0: USB HID v1.10 Mouse [Logitech Optical USB Mouse] on usb-0000:00:01.2-1/input0 SELinux: initialized (dev usbfs, type usbfs), uses genfs_contexts (...) Agora foi anexada uma câmera digital e executado novamente o comando, e no final da listagem já está registrado o reconhecimento desse hardware. Acompanhe: # dmesg | grep usb | uniq (...) usbcore: registered new interface driver hiddev usbcore: registered new interface driver usbhid usbhid: v2.6:USB HID core driver usb 1-6: new high speed USB device using ehci_hcd and address 6 usb 4-2: new full speed USB device using uhci_hcd and address 2 usb 4-2: not running at top speed; connect to a high speed hub usb 4-2: New USB device found, idVendor=054c, idProduct=0010 usb 4-2: New USB device strings: Mfr=1, Product=2, SerialNumber=0 usb 4-2: Product: Sony DSC usb 4-2: Manufacturer: Sony usb 4-2: configuration #1 chosen from 1 choice usbcore: registered new interface driver usb-storage usb-storage: device found at 2 usb-storage: waiting for device to settle before scanning usb-storage: device scan complete Tópico 101.1: Identificação e configuração de hardware 35 Agora identificamos esse hardware através do comando lsusb que é semelhante ao lspci. Esse comando lsub possui alguns parâmetros de pesquisa: # lsusb # lsusb Bus 001 Device 001: ID 1d6b:0002 Bus 004 Device 002: ID 054c:0010 Cybershot/Mavica Digital Camera Bus 004 Device 001: ID 1d6b:0001 Bus 003 Device 001: ID 1d6b:0001 Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 2.0 root hub Sony Corp. DSC-S30/S70/S75/F505V/F505/FD92/W1 Linux Foundation 1.1 root hub Linux Foundation 1.1 root hub Linux Foundation 1.1 root hub Para listar informações mais detalhadas sobre um dispositivo USB, nesse caso uma máquina digital da Sony anexada como mass storage (comportamento como pendrive), poderemos usar o comando lsusb -s bus:num -v, assim: # lsusb -s 002.002 -v Bus 004 Device 002: ID 054c:0010 Sony Corp. DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 2.00 bDeviceClass 0 (Defined at Interface level) bDeviceSubClass 0 bDeviceProtocol 0 bMaxPacketSize0 64 idVendor 0x054c Sony Corp. idProduct 0x0010 DSC-S30/S70/S75/F505V/F505/FD92/W1 Cybershot/Mavica Digital Camera bcdDevice 6.00 iManufacturer 1 Sony iProduct 2 Sony DSC (...) O comando ls -F /proc/bus/usb/ lista os dispositivos conectados ao sistema, e nesse diretório podem ser vistos dois arquivos (devices e drivers). Esses arquivos contêm informações sobre os dispositivos conectados ao sistema. Experimente usar o comando cat /proc/bus/usb/devices ou cat /proc/bus/usb/ drivers para fazer uma análise. # ls -F /proc/bus/usb/ 001/ 002/ 003/ 004/ devices Veja como podemos identificar o hardware da máquina digital. No arquivo devices estarão presentes todos os dispositivos USB abertos no sistema: # cat /proc/bus/usb/devices (...) T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=12 MxCh= 0 D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1 P: Vendor=054c ProdID=0010 Rev= 6.00 S: Manufacturer=Sony S: Product=Sony DSC C:* #Ifs= 1 Cfg#= 1 Atr=c0 MxPwr= 2mA I:* If#= 0 Alt= 0 #EPs= 3 Cls=08(stor.) Sub=ff Prot=01 Driver=usb-storage 36 Tópico 101: Arquitetura do Sistema E: Ad=01(O) Atr=02(Bulk) MxPS= E: Ad=82(I) Atr=02(Bulk) MxPS= E: Ad=83(I) Atr=03(Int.) MxPS= (...) 64 Ivl=0ms 64 Ivl=0ms 8 Ivl=255ms DICA: O diretório /proc/bus/usb vai apresentar as entradas numeradas (001, 002, 003 ...) para cada dispositivo USB no sistema. Assim, para listar o conteúdo do dispositivo 1, usamos o comando ls /mnt/usb-storage/device-0/, por exemplo. A maioria das distribuições está montada nos dispositivos USB no diretório /media. A arquitetura dos módulos USB Embora ainda não seja exigido como conhecimento obrigatório diretamente nos exames LPI, é extremamente importante que saibamos como que é o funcionamento da arquitetura dos módulos USB, os quais são simples de se entender. Os principais módulos USB são: • HID (hid.o) Human Interface Device: Dispositivo para interface humana; • Input Core (input.o): Dispositivos para entradas é somente USB; • keyboard (usbkbd.o): Módulo para teclado; • Mouse (usbmouse.o): Módulo para mouse; • Joystick (joydev.o): Módulo para joystick; • Impressora (printer.o): Módulo para impressora; • Armazenamento (usb-storage.o): Módulo para dispositivos de armazenamento como pendrive, floppy, máquina digital, mp3 e etc. Os módulos no sistema Linux têm o sufixo “.o” ou “.ko” e podem estar em diversos locais de seu sistema. Geralmente estão em /lib/modules, alguns estão em /sys/ module, e outros estão em /usr/lib etc. Mas os módulos que nos interessam ficam em /lib/modules/2.6.29.4-167.fc11.i686.PAE/kernel/drivers/usb/, sendo 2.6.29, nesse caso, o kernel do sistema. Para as impressoras USB, quando o módulo printer.o for carregado, em /dev/usb/lp0 vai ter a respectiva entrada para ela. Para uma lista completa dos módulos USB em seu sistema, use o comando find, mas lembre-se que o seu sistema pode ter outros módulos. Se retirarmos “| fmt -w 80”, teremos a listagem de um módulo por linha. # find /lib/modules/ -iname “*usb*” -exec basename {} \; | fmt -w 80 usb snd-usb-caiaq.ko snd-usb-lib.ko snd-usb-usx2y.ko snd-usb-us122l.ko snd-usb-audio.ko i2400m-usb.ko at76c50x-usb.ko p54usb.ko usb8xxx.ko ar9170usb.ko rt2x00usb.ko rt73usb.ko rt2500usb.ko rt2800usb.ko libertas_tf_usb.ko irda-usb.ko usb plusb.ko usbnet.ko pcwd_usb.ko bfusb.ko btusb.ko hfcsusb.ko usb_gigaset.ko i1480-dfu-usb.ko i2c-tiny-usb.ko at76_usb at76_usb.ko usbtouchscreen.ko lirc_igorplugusb.ko lirc_mceusb.ko lirc_ttusbir.ko ttusb-budget dvb-ttusb-budget.ko b2c2-flexcop-usb.ko smsusb.ko dvb-usb dvb-usb-dw2102.ko dvb-usb-gp8psk.ko dvb-usb-m920x.ko dvb-usb-ce6230.ko dvb-usb-digitv.ko dvb-usb-au6610.ko dvb-usb-dibusb-common.ko dvb-usb-a800.ko dvb-usb.ko dvb-usb-vp7045.ko dvb-usb-dib0700.ko dvb-usb-vp702x.ko dvb-usb-dtv5100.ko dvb-usb-gl861.ko dvb-usb-cinergyT2.ko dvb-usb-umt-010.ko dvb-usb-ttusb2.ko dvb-usb-af9015.ko dvb-usb-dibusb-mc.ko dvb-usb-dtt200u.ko dvb-usb-opera.ko dvb-usb-anysee.ko dvb-usb-af9005.ko dvb-usb-cxusb.ko dvb-usb-dibusb-mb.ko dvb-usb-af9005-remote.ko dvb-usb-nova-t-usb2.ko ttusb-dec (...) Tópico 101.1: Identificação e configuração de hardware 37 Aqui tivemos uma listagem de mais de setenta módulos para dispositivos USB. Esses módulos são os módulos modernos por apresentarem o sufixo “.ko” no nome do arquivo, porém, em kernel 2.2 o sufixo será “.o”. O carregamento dinâmico dos módulos se dá quando inserimos dispositivos USB, nesse ponto dois sistemas estarão disponíveis dependendo da versão do kernel em uso: hotplug: USB, PCMCIA e FireWire(ieee1394); usbmgr: Gerenciamento USB apenas para esses dispositivos. Presente em kernel 2.2. Tipos de drivers e chipset USB Atualmente há dois tipos “oficiais” de drivers e um terceiro que é compatível com os outros dois. Esses drivers são módulos que podemos carregar no kernel do sistema devido às duas especificações de controladores USB. • usb-ohci.o: É o OHCI – Open Host Controller Interface (Compaq), que é usado pela Nvidia. • usb-uhci.o: É o UHCI – Universal Host Controller Interface (Intel) que é padronizado, porém, simples em hardware, mas complexo em software. Também é usado nos chipset VIA. • usb-ehci.o: É compatível com os demais. Esse é o USB 2.0 Para saber quais módulos para os tipos de USB foram reconhecidos pelo kernel: # dmesg | grep hci | uniq | nl 1 ehci_hcd: USB 2.0 ‘Enhanced’ Host Controller (EHCI) Driver 2 ohci_hcd: USB 1.1 ‘Open’ Host Controller (OHCI) Driver 3 ohci_hcd 0000:00:01.2: found PCI INT D -> IRQ 5 4 ohci_hcd 0000:00:01.2: sharing IRQ 5 with 0000:00:01.3 5 ohci_hcd 0000:00:01.2: OHCI Host Controller 6 ohci_hcd 0000:00:01.2: new USB bus registered, assigned bus number 1 7 ohci_hcd 0000:00:01.2: irq 5, io mem 0xdffd0000 8 usb usb1: Manufacturer: Linux 2.6.31.5-127.fc12.i686.PAE ohci_hcd 9 ohci_hcd 0000:00:01.3: found PCI INT D -> IRQ 5 10 ohci_hcd 0000:00:01.3: sharing IRQ 5 with 0000:00:01.2 11 ohci_hcd 0000:00:01.3: OHCI Host Controller 12 ohci_hcd 0000:00:01.3: new USB bus registered, assigned bus number 2 13 ohci_hcd 0000:00:01.3: irq 5, io mem 0xdffe0000 14 usb usb2: Manufacturer: Linux 2.6.31.5-127.fc12.i686.PAE ohci_hcd 15 uhci_hcd: USB Universal Host Controller Interface driver 16 usb 1-1: new low speed USB device using ohci_hcd and address 2 Para esse padrão USB, seu sistema vai apresentar os seguintes módulos: ohci.o, uhci.o e ehci-hcd.o. Para sabermos quais desses módulos seu sistema está usando é simples: # lspci -v | grep -i usb 00:01.2 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 07) (prog-if 10 [OHCI]) Subsystem: Silicon Integrated Systems [SiS] USB 1.1 Controller 00:01.3 USB Controller: Silicon Integrated Systems [SiS] USB 1.1 Controller (rev 07) (prog-if 10 [OHCI]) Subsystem: Silicon Integrated Systems [SiS] Onboard USB Controller) 38 Tópico 101: Arquitetura do Sistema Tabela 101.1.8: Quadro dos fabricantes com modelo USB. OHCI (USB 1.0) UHCI (USB 1.1) EHCI (USB 2.0) Compac Intel Intel ALI VIA VIA NEC --- NEC Opti Chipset --- Phillips O padrão USB 2.0 (EHCI) tem suporte a partir do kernel 2.4.19, mas é no kernel 2.6 que esse suporte está bem completo e melhorado como, por exemplo, alta velocidade de transferência. Mas o seu hardware deve ser USB 2.0 para que essa sincronia seja completa. Para verificar se seu hardware tem algum suporte a USB 2.0, use o comando lspci -v | grep HCI. Arquivos ligados aos módulos (ehci, ohci e uhci) ficam nesse caminho: # ls -F /sys/bus/pci/drivers/ | grep hci ahci/ ehci_hcd/ ohci_hcd/ uhci_hcd/ Depois da montagem do sistema de arquivos propriamente dita, baseada no conteúdo do diretório /proc/bus/usb, os módulos usb-ohci ou usb-uhci são carregados, e cada diretório numerado (001, 002, 003 etc) equivale a montagem de um dispositivo USB. E dentro desses diretórios há o respectivo arquivo numérico no formato binário. O sistema Linux usa o arquivo /etc/conf.modules ou o /etc/modules.conf ou, ainda no caso de um sistema não muito antigo, o /etc/modprobe.conf. Esse arquivo tem a finalidade de guardar os módulos que serão carregados pelo sistema. Ele é consultado pelos programas modprobe e depmod. Aqui já percebemos que o sistema está usando OHCI. # cat /etc/modprobe.conf | grep -i usb alias usbdevfs usbcore alias usb ohci-hcd Os módulos (drivers) no sistema Linux são arquivos que tem o sufixo “.o” ou “.ko”. Veja esse exemplo: # find /lib/modules/2.6.31.5-127.fc12.i686.PAE/ -iname "*.ko" -print | grep audio /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pcmcia/pdaudiocf/sndpdaudiocf.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/usb/snd-usb-audio.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/sndlayla20.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snd-mona.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snd-mia.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snd-indigo. ko Tópico 101.1: Identificação e configuração de hardware 39 /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snddarla24.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snddarla20.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/snd-echo3g. ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/sndindigoio.ko /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/sound/pci/echoaudio/sndindigoiox.ko (...) Como o padrão USB tornou-se muito popular, veja os módulos para USB encontrados nos sistemas Linux: • mousedev: Mouse USB e keybdev: Teclado USB; • usb-storage: CD-ROM, HD, ZIP drive, e/ou pen-drives e máquinas fotográficas digitais; • audio: Placas de som USB e joydev: Joystick USB. Os módulos ativos para dispositivos USB ficam no arquivo /etc/modules.conf, mas dependendo da distribuição pode haver uma pequena mudança no nome desse arquivo, como /etc/modprobe.conf, ou até mesmo uma nova lógica de organização de arquivos de módulos. Portanto, fique atento. A seguir, veja o exemplo de um arquivo desses com módulos USB para alguns dispositivos. Esse arquivo está presente em distribuições mais antigas: # cat /etc/modules.conf (...) alias usb uhci post-install uhci modprobe printer post-install printer modprobe joydev post-install joydev modprobe hid Montagem de dispositivos USB Como a grande maioria dos dispositivos USB é reconhecida automaticamente no sistema Linux, basta espetá-los em uma porta USB que a montagem será automática e será criado um ícone na área de trabalho do usuário representando aquele dispositivo. Até aqui tudo bem, mas nem sempre é assim. E se, por algum motivo, o dispositivo não for montado automaticamente? E se o objetivo for fazer um acesso ao dispositivo via shell script? Pois é, tem horas que é interessante a montagem automática, e tem horas que não. Mas, como proceder? Simples. Entenda que os discos podem ser IDE ou SCSI/ SATA. Sendo assim, para os discos IDE temos a nomenclatura hda, hdb, hdc etc e para os discos SCSI temos a nomenclatura sda, sdb, sdc etc. E sabendo disso, as distribuições tratam os dispositivos USB que armazenam dados como um segundo disco, e as distribuições mais modernas reservam sdb ou sdc para os dispositivos USB. Então, se há apenas um disco hda ou das, o dispositivo USB será reconhecido como sdb1, mas é preciso uma verificação para ter mais certeza, pois pequenas mudanças podem ocorrer. 40 Tópico 101: Arquitetura do Sistema Primeiramente uma pesquisa, e descobrimos que o disco sda tem três partições: # dmesg | grep sda sd 0:0:0:0: [sda] 156250000 512-byte hardware sectors: (80.0 GB/74.5 GiB) (...) sda: sda1 sda2 sda3 sd 0:0:0:0: [sda] Attached SCSI disk EXT3 FS on sda2, internal journal Seguindo essa linha de pensamento, descobrimos que o dispositivo USB foi reconhecido como sdb1. Esse é o procedimento correto para todos os dispositivos USB, caso eles não sejam detectados automaticamente em modo gráfico. E pelo modo texto usamos essa ideia: # dmesg | grep sdb sd 2:0:0:0: [sdb] 4014080 512-byte hardware sectors: (2.05 GB/1.91 GiB) (...) sd 2:0:0:0: [sdb] Assuming drive cache: write through sdb: sdb1 sd 2:0:0:0: [sdb] Attached SCSI removable disk O objetivo é de podermos acessar esse dispositivo e sabermos que o nosso disco principal é do tipo sda e que o disco secundário sdb foi reconhecido. O grande macete é você entender que esses dispositivos usam armazenamento ou servem para isso. O padrão do sistema de arquivos deles adotado é FAT (Windows) ou VFAT (Linux). Assim, em nosso exemplo, pela nossa análise sabemos que sdb1 será usado para acessar a máquina digital a qual, nesse caso, possui memória para armazenamento e funciona como disco. Então criaremos no diretório /media um diretório para esse dispositivo: # mkdir /media/sony E agora as respectivas montagens dos dispositivos (lembrando que eles não estão montados). Após isso, o usuário poderá gravar seus arquivos normalmente. O sdb1 foi usado porque esse dispositivo foi reconhecido assim. Proceda de forma semelhante para outros dispositivos: # mount -t vfat /dev/sdb1 /media/sony Agora é só usar o dispositivo, mas lembre-se que, se não for mais usar o dispositivo, terá que desmontá-lo, e para isso não poderá estar “dentro” dele. Para desmontar esses dispositivos use os comandos a seguir: # umount /media/sony Tópico 101.1: Identificação e configuração de hardware 41 RESUMOS IMPORTANTES PARA O EXAME LPIC1 - 117-102: Conhecimento chave: Ativar/desativar periféricos integrados ao sistema. Configuração do sistema para inicializar sem periféricos externos, como teclados Diferenciar os vários tipos de mídias de armazenamento. Conhecer o identificador (ID) de hardware correto para os diversos tipos de dispositivos Conceituar os termos coldplug e hotplug. Identificar os recursos de hardware de um dispositivo qualquer. Uso de ferramentas de informação de hardware como lspci, lsdev, lsusb, hwinfo e afins. Conhecer ferramentas de manipulação de dispositivos USB. Conceituar os termos sysfs, udev, hald, dbus e afins. Os seguintes itens são uma listagem parcial dos arquivos usados, termos e utilitários: /sys, /proc, /dev, modprobe. lsmod, lspci, lsusb.
Documentos relacionados
Guia Foca GNU/Linux
5.10.2 Formatando disquetes compatíveis com o DOS/Windows . . . . . . . . . 69 5.10.3 Programas de Formatação Gráficos . . . . . . . . . . . . . . . . . . . . . . . 69 5.11 Pontos de Montagem . . ....
Leia mais