Академический Документы
Профессиональный Документы
Культура Документы
Memria Cache: a memria de armazenamento auxiliar do Processador. Possui alta velocidade de funcionamento, geralmente a mesma que o processador. Sua funo aumentar o desempenho de processamento. A memria cache pode ser interna ou externa placa me; CMOS: a memria temporria a qual alimentada por uma bateria onde ficam armazenadas as configuraes do computador feitas pelo programa residente em BIOS.
BIOS modernas so muito fceis de configurar, ao contrrio de BIOS antigas onde tnhamos que praticamente jampear tudo na mo. 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 combinaes de teclas como [del], [F12], [control]+[alt]+[esc], etc, porm isso pode depender do fabricante.
Figura 101.1.1 e Figura 101.1.2: Configurao da BIOS de um computador (vrias opes) e seus componentes internos. Quando da configurao da BIOS, a partir desse ponto voc entra no programa de configurao e ajustes do seu equipamento. Porm, tome cuidado, pois dependendo da configurao que fazemos, o computador pode apresentar super aquecimento, ou at mesmo no funcionar, o que precisaria, ento, que se refizesse uma configurao adequada.
A arquitetura BIOS
BIOS Basic Input and Output System o sistema bsico de entrada e sada, que na verdade nada mais que a memria ROM Read Only Memory, memria apenas de leitura (no pode ser apagada) a qual contm as instrues bsicas para a inicializao do computador, reconhecimento e ativao dos perifricos conectados placa me. As BIOS mais modernas (a partir do 286) tambm trazem um programa que usado para configurar o computador modificando os valores localizados na CMOS (memria temporria alimentada por uma bateria onde so lidas/armazenadas as configuraes do computador feitas pelo programa residente na BIOS). As placas controladoras padro IDE dependem da BIOS em si, mas as placas controladoras padro SCSI possuem sua prpria BIOS que identificam automaticamente os perifricos 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 mecnica de computadores. Quando
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 memria ROM, a memria CMOS para configurao da BIOS, uma bateria que guarda as configuraes, conexes para teclado, mouse, vdeo, placa de rede etc, e os slots para encaixe de cartes, principalmente de memria, sendo que o tipo do slot pode variar dependendo do barramento.
Tabela 101.1.1: Quadro dos principais barramentos em um Intel-PC. Barramento ISA 8 Bits ISA 16 Bits VESA EISA Descrio o Industry Standard Architecture. Esse um padro antigo e pode ainda ser encontrado nos velhos computadores PC/XT, se ainda existirem. a evoluo do ISA 8 bits. Permite uma taxa de transferncia de 2 MB/s e seu conector maior. o Video Electronics Standard Association. Foi feito para placas de vdeo rpidas. Apresenta taxa de transferncia que pode chegar a 132MB/s. o Enhanced Industry Standard Architecture. mais encontrado em servidores e tem a capacidade de bus mastering, a qual possibilita a comunicao das placas sem a interferncia da CPU. o Micro Channel Architecture (32 bits). Desenvolvido pela IBM e foi usado nos antigos PS/1 e PS/2. o Peripheral Component Interconnect. Produzido pela Intel, rpido e tem caracte-rstica/velocidade do VESA. Pode se configurar automaticamente atravs do Plug and Play (PNP). o Accelerated Graphics Port. novo e foi criado exclusivamente para a ligao de placas de vdeo. Muito bom para processamento de jogos. o Personal Computer Memory Card International Association. Apresenta um encaixe (slot) especial usado para conexes de placas externas. Esses cartes podem adicionar mais memria ao sistema, conter um fax-modem, placa de rede, disco rgido, e mais um monte de coisas legais.
MCA PCI
AGP PCMCIA
O padro IDE
O padro 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 padro, porm, os mais modernos do tipo ATA Advanced Technology Attachment chegam a 137 GB, e maior que isso so 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 padro IDE pelas seguintes razes: BIOS carrega a parte essencial do sistema operacional durante o processo de inicializao; BIOS prov a informao correta sobre as mdias instaladas para o sistema operacional. Essa informao nada mais que o nmero de cilindros, cabeas e setores do disco.
NOTA: Algumas distribuies no conseguem funcionar corretamente se a geometria do disco estiver inconsistente. possvel corrigir isso com uma formatao de baixo nvel do disco, mas se o problema continuar porque o disco j est com os dias contados.
A geometria do disco serve, dentre outras coisas, para informar exatamente onde se encontram as informaes. Quando o carregador do sistema operacional entra em ao, ele consulta exatamente esses valores. A geometria de disco refere-se dimenso lgica do disco. Um dos locais onde podemos obter informaes sobre o hardware IDE em nosso sistema em /proc/ide conforme para discos com padro IDE, ou /proc/scsi para discos com padro SCSI. Os arquivos drivers, ide0, ide1 e sis contm informaes sobre esses dispositivos e hda e hdc informaes sobre o HD/CD IDE. Experimente examinar agora o contedo 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
0 8 8 0 0 0
drivers hda -> ide0/hda hdc -> ide1/hdc ide0 ide1 sis
Veja o contedo 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 tm a funo de mostrar informaes e varrer dispositivos no computador. Alm desses, em algumas distribuies h o discover (Debian), o kudzu (Red Hat), o lsdev (maioria dos sistemas Linux) e o hwsetup-knoppix (Knoppix).
DICA: Os dispositivos PCI permitem o compartilhamento de IRQs, pois as manipulam de forma diferente, mapeando uma interrupo para uma interrupo normal do sistema que geralmente interrupo entre a IRQ 9 e IRQ 12.
As IRQs servem para sinalizar para a CPU que h dados disponveis. O processador faz isso dando pequenos espaos de tempos, e isso para o usurio totalmente transparente. Na plataforma Intel PC temos no mximo 16 (dezesseis) IRQs, que variam de 0 (zero) a 15 (quinze). Parece pouco, mas, felizmente, as IRQs podem ser compartilhados, ao contrrio das I/O. As IRQs que sempre so usados pelo sistema e so numeradas como 1, 2, 6, 8, 14, 15, e os que esto livres com mais frequncia so 5, 9, 10, 11, 13, e os que podem ser liberados so 3, 4, 7, 12. Os canais DMA, os quais servem para acesso direto memria e os dispositivos de entrada e sada, tm a funo de permitir que alguns dispositivos escrevam diretamente nela, onde cada dispositivo usa o seu prprio 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 tambm quatro (4, 5, 6 e 7), somando-se ento 8 (oito) canais. A transferncia 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 ligao entre eles, o que chamamos cascade (cascata). Os canais DMA padro so usados por dispositivos ISA, EISA e VESA, e os dispositivos PCI usam o seu prprio controlador DMA chamado de Bus Mastering, pois assim a transferncia muito mais alta. A taxa de transferncia 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 responsvel por fazer a comunicao 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 endereos de entrada e sada (I/O) so necessrios porque cada dispositivo precisa ser endereado pela CPU, e esses endereos so usados para entrada e sada desses dispositivos. Porm, na arquitetura atual, apenas um nico dispositivo pode usar esses endereamentos num determinado momento, logo, no se permite compartilhamento.
Tabela 101.1.2: Quadro dos canais DMA. Canal DMA 0 DMA 1 DMA 2 DMA 3 Barramento 8/16 bits 8/16 bits 8/16 bits 8/16 bits Descrio Livre, mas usado por circuitos de memria RAM. Utilizado por placas de som (canal 8 bits), porta paralela ECP, adaptadoras SCSI, placas de rede ou controladora de scanner. Utilizado pela controladora de disquete e controladoras de fitas. Utilizado pela porta paralela ECP, placa de som, controladoras de fitas, controladoras SCSI ou controladora de scanner antiga. Tambm pode ser usado pela placa de rede. Modo Cascade. usado como ponte para comunicao entre os canais. Livre, porm pode ser usado pela placa de som (canal 16 bits), controladora de scanner ou placa de rede. O canal 5 usado por dispositivos SCSI.
DMA 4 DMA 5, 6, 7
--8/16 bits
Algumas BIOS fazem alocao de recursos automaticamente com o intuito de evitar conflitos, onde os dispositivos PCI e ISA plug and play compartilham interrupes entre si. Pode acontecer de os dispositivos entrarem em conflito pelo uso ao mesmo tempo desses endereamentos. Isso resolve-se da seguinte maneira: Trocar as configuraes dos dispositivos via configurao BIOS; Trocar os jumpers nos cartes/placas de expanso; Configurar o dispositivo em questo usando um programa especfico.
O diretrio /proc
O diretrio /proc um diretrio virtual no sistema Linux, pois ele existe apenas quando a mquina est ligada, e geralmente todos os arquivos dentro desse diretrio tem 0 (zero) bytes, mas mesmo assim seus arquivos apresentam contedo. O maior arquivo dentro desse diretrio o kcore, e geralmente ele apresenta o tamanho prximo do total de memria 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 diretrio virtual, usado na verdade pelo kernel, no possvel escrever nele pelo mtodo convencional. Caso voc faa 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
Alocao de recursos
A alocao de recursos serve para que possamos permitir perifricos e dispositivos conectados ao PC se comunicarem diretamente com os recursos do sistema, em particular a CPU. A alocao de recursos pode ser pesquisada usando os comandos comuns de visualizao de arquivos textos como, por exemplo, cat, less, more, porm, os mais usados so o hwinfo, lshal, lspci e o dmesg. Fique atento quanto a esses dois ltimos.
Esses recursos so: 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 sada representa um endereo especfico do sistema no mapa de memria. A comunicao do dispositivo com a CPU d-se pela leitura e escrita na memria em endereos especficos; DMA Direct Memory Access: Alguns dispositivos podem ter acesso memria do sistema atravs dos canais DMA, e isso permite a escrita e o processamento de dados sem o acesso direto CPU.
Por exemplo, caso queira saber como est mapeada a memria, simplesmente digite o comando cat/proc/meminfo (esse comando apresenta mais informaes tcnicas) 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 temporria)
10
no sistema; mas em mquinas com maior capacidade de memria como 4 GB, 8 GB e 16 GB de memria, ela raramente usada. O uso dela depende do destino da mquina. Se for para tarefas normais, simples, do dia-a-dia, e a mquina tiver pouca memria, ela ser usada. Caso contrrio, no.
# free total Mem: 510720 -/+ buffers/cache: Swap: 1048568 used 461368 295360 10128 free 49352 215360 1038440 shared 0 buffers 4796 cached 161212
Veja outros parmetros para brincar com o comando free: free: Exibe uso de memria em kilobytes (-k padro); free -m: Exibe uso de memria em megabytes; free -g: Exibe uso de memria em gigabytes; free -b: Exibe uso de memria em blocos; free -mt: Exibe uso de memria + Swap; free -s 5: Exibe uso de memria a cada cinco segundos. Para informaes de memria com mais detalhes usamos o comando vmstat (use vmstat -d para ver estatsticas do disco) ou o cat /proc/meninfo. Esses dois comandos so teis para uma inspeo 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 secundria) do kernel. Ele mostra o comportamento dos objetos, nome, e consumo em nvel de kernel (outros comandos teis so o iostat e o lsof; use a pgina 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
11
294912 293642 157696 157690 26944 18494 22144 22046 12720 6092 12648 7137 9798 9710 8840 8831 (...)
Para verificar os pontos de montagens no sistema nesse momento (veja como a sada 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 partio 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
Tabela 101.1.3: Quadro dos principais diretrios do diretrio /proc. Diretrio asound/ bus/ driver/ fs/ ide/ irq/ net sys/ tty/ Descrio Informaes sobre a placa de som. Informaes sobre dispositivos como mouse, PCI e USB. Informaes sobre tipos de driver, geralmente USB. Informaes sobre sistema de arquivos (file system) no sistema. Geralmente, nfsd e supermount. Informaes sobre dispositivos IDE no sistema. Diretrio reservado para IRQs. Informaes sobre conexes. A partir do kernel 2.6 o novo diretrio para configuraes plug and play. Informaes sobre dispositivos seriais etc.
12
J sabemos que cada arquivo dentro do diretrio /proc se faz importante, e que todos podem ser lidos com os comandos cat, more e less. Mas tenha uma ateno especial quanto aos seguintes arquivos: cmdline: Local onde se encontra o kernel e opes de carregamento; cpuinfo: Informaes genricas sobre processador, modelo, velocidade etc; dma: Informao sobre DMA; interrupts: IRQs usadas pelos perifricos; iomem: Informaes sobre a memria; ioports: Portas de entrada e sada; modules: Lista todos os mdulos do sistema. partitions: Lista as parties presentes no sistema; pci: Informaes sobre slots PCI e AGP.
DICA: Os dispositivos padro ISA, VESA, EISA e SCSI no permitem o compartilhamento de uma mesma IRQ, pois no foram projetados para isso. Existem algumas solues, mas no so muito eficazes.
No processador h endereos de memria reservados que realizam entrada e sada de informaes. Ns os chamamos de portas, portanto, portas de entrada e sada I/O Input/Output. Essas portas tm como objetivo principal a troca de dados entre o processador e os dispositivos de forma simplificada. Cada dispositivo conectado CPU apresenta um endereo de porta I/O que no pode ser compartilhado com outros dispositivos. Para visualizar as portas de entrada e sada 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 interrupo para uma interrupo normal do sistema que geralmente interrupo entre a IRQ 9 e IRQ 12. As interrupes 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
13
22: 389 23: 0 NMI: 0 LOC: 476004 RES: 0 CAL: 0 TLB: 0 TRM: 0 SPU: 0 ERR: 0 MIS: 0
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
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
NOTA: No confunda o comando cat /proc/ioports que lista as portas I/O (entrada e sada) com o comando cat /proc/iomem que lista endereamento de memria para os dispositivos de entrada e sada. Fique atento, pois aparece em exames LPI.
Assim como temos as portas I/O, temos o DMA que o acesso direto memria que serve para permitir a transferncia de dados entre os dispositivos e a memria sem a interveno do processador. Isso se d atravs 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 rpida transferncia de dados. Para informaes sobre DMA usamos o seguinte comando:
# cat /proc/dma 2: floppy 4: cascade
Comandos relacionados com as informaes 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 configuraes para dispositivos PCI e scanpci: Faz uma varredura e testa dispositivos PCI; /sbin/hotplug: Script que em algumas distribuies fornece informaes sobre dispositivos PCI e USB, assim como mdulos ativos. O utilitrio hotplug no mais usado em algumas distribuies.
14
Para listar todos os dispositivos PCI com detalhamento. Use o parmetro -vv para mais detalhes (o comando scanpci fornece uma sada 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 informao do hardware como, por exemplo, a placa de rede do tipo Ethernet (eth0) ou Wireless (wlan0). Veja como poderamos 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 informaes de hardware reconhecidas pelo kernel (a listagem extensa) usamos o comando dmesg sem nenhum parmetro. A listagem
15
longa, bem detalhada e, acredite, ela vai te ajudar muito no seu dia-a-dia. Porm, a listagem poder ser diferente daquela da sua mquina:
# dmesg Initializing cgroup subsys cpuset Initializing cgroup subsys cpu Linux version 2.6.31.5-127.fc12.i686.PAE (mockbuild@x86-3.fedora.phx.redhat. 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 informaes 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 situaes onde o servidor possui mais de uma interface de rede, o administrador pode sentir a necessidade de saber qual mdulo de rede do kernel est ligado a essa interface. Veja a seguir como ele poderia saber que o mdulo 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 mdulo est ligado interface de rede do tipo Ethernet. Essa combinao de comando muito til quando h interfaces de rede na mquina de diferentes fabricantes.
16
Endereamento de recursos
O endereamento de recursos d-se pelas IRQs presentes no sistema, as quais na plataforma Intel PC tm um total de 16 (dezesseis), na faixa de 0-15, sendo que a IRQ 2 responsvel pelo cascateamento com o segundo controlador. Algumas podem ser compartilhadas, mas outras so 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 interrupo programvel. Essa interrupo interessante, pois ela serve como ponte para outras IRQs, mais especificamente as acima de 8 (9..15). As IRQs indisponveis no sistema so: IRQ 0: Timer do sistema, IRQ 1: Teclado; IRQ 2: Cascateamento para o segundo controlador, IRQ 6: Unidade de disquete; IRQ 8: Relgio do sistema, IRQ 13: Coprocessador matemtico; IRQ 14: Controlador IDE primrio, IRQ 15: Controlador IDE secundrio.
Tabela 101.1.4: Quadro dos endereos dos principais recursos. Dispositivo /dev/ttyS0 (COM 1) /dev/ttyS1 (COM 2) /dev/ttyS2 (COM 3) /dev/ttyS3 (COM 4) /dev/lp0 (LPT 1:) /dev/lp0 (LPT 2:) /dev/lp0 (LPT 3:) /dev/fd0 e /dev/fd1 (A: e B:) /dev/fd2 e /dev/fd3 Ethernet (Placa de rede) Sound Card (Placa de som) /dev/hda1 (C:) /dev/hdc (D: ou CDROM) I/O Port 0x03f8 0x02f8 0x03e8 0x02e8 0x378 0x278 0x3bc 0x3f0, 0x3f7 0x370, 0x377 0xd0000 0x220, 0x330, 0x388 0x1f0, 0x3f6 0x170-0x177, 0x376 IRQ 4 3 4 3 7 5 7 6 10 10 11 14 15 DMA --------3 (ECP) 3 (ECP) 3 (ECP) 2 3 ---------
Nota: Em kernel antigo, de verso anterior a 2.2.x, em vez de ser /dev/ttyS[0-4], a nomenclatura ser /dev/cua[1-3].
Como podemos ver, no muito complicado. Tudo questo de memorizao. Por exemplo, a IRQ 14 usada pela primeira controladora de discos e no pode ser compartilhada, e a IRQ 15 usada pela segunda controladora a qual no pode ser compartilhada.
17
A arquitetura SCSI
Dispositivos SCSI podem se comunicar entre si e, geralmente, a comunicao entre eles muito rpida, a qual pode variar de 5 MB a 320 MB. Os dispositivos SCSI so dispositivos para armazenamento de dados, os quais podem ser CD-ROM, DVD-ROM, HD, Fitas Dat, Scanners, Zip/Jaz Drivers etc. Alm 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, porm pode acontecer de ser preciso passar alguns parmetros adicionais para se obter mais desempenho desses dispositivos. Estes dispositivos so classificados em 3 categorias: SCSI I: Usa um cabo de 25 condutores para a ligao de perifricos. Normalmente usado em scanners, impressoras e outros dispositivos; SCSI II: Tambm chamado de Fast SCSI. Usa um cabo de 50 condutores para a ligao de perifricos. Permite que sejam ligados at 7 perifricos em uma mesma controladora. o mais comum encontrado hoje em dia; SCSI III: Tambm chamado de Fast SCSI SE ou LVD. Usa um cabo de 68 condutores para ligao de perifricos. Permite que sejam ligados at 16 perifricos em uma mesma controladora. importante saber que um cabo SCSI pode ter o comprimento de at cinco metros de extenso. Os perifricos SCSI so identificados atravs de nmeros chamados de identificador SCSI ou SCSI ID. Estes nmeros vo de 0 a 6 para o padro SCSI II e de 0 a 15 para o padro 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 esto carregados pelo kernel. Observe que os dispositivos tm um identificador que o SCSI ID; e ele tambm aparece nessa listagem. Um ponto importante que bom sabermos que todos os dispositivos USB so 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
19
prpria 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 relatrio 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 Informao resumida. # smartctl -a /dev/sda ou smartctl -a /dev/hda Informao 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 no tivesse, usaramos o comando smartctl -s on /dev/sda, para habilitar nesse tipo de disco.
O parmetro -H exibe um diagnstico rpido da sade do disco, fornecido pela prpria 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 rpido possvel.
O comando hdparm pode ser usado para extrair um relatrio 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 possvel ajustar alguns parmetros 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
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
21
Bits 8 16
Descrio Transferncia de 20 MB/s, usa um cabo de 50 pinos. Transferncia de 40 MB/s, usa um cabo de 68 pinos, permite ligao de at 16 dispositivos na mesma controladora. Tambm chamada de SCSI 3. Transferncia de 320 MB/s, usa um cabo de 68 pinos. Taxa bem alta para transferncias.
2 x 32
Atualmente tem-se um total de 8 (oito) categorias de dispositivos SCSI, sendo que a parte hardware desses dispositivos no entra no escopo dos exames LPI, mas o seu conhecimento sim, conforme a descrio. Para enderear um dispositivo SCSI em particular, o kernel adiciona alguns detalhes ao adaptador: host <nmero do adaptador>: O adaptador SCSI est em um bus SCSI. O nmero inicia-se em 0 (zero) e alocado aleatoriamente; bus <nmero do canal>: Um simples adaptador SCSI pode ter um nmero de bus SCSI adicionado a ele; target <nmero ID>: Controladora no bus SCSI sendo endereada; lun <nmero da unidade lgica>: Controladora com mltiplos dispositivos sendo endereadas. Assim como o comando lspci lista os dispositivos PCI, o comando lsscsi lista os dispositivos SCSI em seu sistema. No diretrio /proc/scsi voc encontrar informaes 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
0 0 0 0 0
Observe que temos um diretrio para dispositivos USB e temos um de nmero 3. Para saber que o tal do dispositivo, basta um simples comando cat. E pelo jeito uma unidade de disquete externa:
22
# 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, porm, tome cuidado com alguns dispositivos meio ortodoxos que existem por a. Procure documentao para poder obter a melhor performance desses tipos de dispositivos. Os dispositivos SCSI precisam ser carregados pelo kernel se estiverem em forma de mdulos ou, ento, quando da compilao do kernel, a opo para o dispositivo deve ser inclusa nele. Para ver os mdulos (drive) para dispositivos SCSI que esto carregados. Fique atento quanto localizao desse arquivo, bem como seu nome conforme a distribuio 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 distribuies no usam mais o arquivo /etc/modprobe.conf, mas sim o diretrio /etc/modprobe.d/ onde se localizam vrios arquivos de mdulos. A ideia seria descentralizar para ficar mais fcil:
# 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 mudanas em seus nomes, mas tm o mesmo objetivo que o arquivo que informa ao kernel quais mdulos carregar.
23
a diferena entre cartes PCI e ISA e como configur-los em seu sistema. Como objetivo, os exames incluem a correta configurao pelas IRQs, DMA e portas I/O dos respectivos cartes, especialmente se houver conflito entre eles. Tambm est incluso o uso do isapnp se, por exemplo, a placa em questo for um dispositivo ISA PNP padro. O conhecimento a ser usado aqui muito simples e muito fcil, e j foram at mesmo comentados e ensinados nesse captulo. Ento, vamos revis-los. importante saber usar os arquivos de informao os quais podem ser usados junto com os comandos cat, more ou less. Os arquivos de informao so: /proc/dma, /proc/interrupts, /proc/ioports e /proc/pci. Tambm importante saber usar os comandos de informao direta que so: pnpdump, isapnp, lspci, lsusb e lsscsi. Para os exames LPI importante que voc no tenha dvidas sobre hardware e seus parmetros com (IRQ, DMA e I/O). Entender como funciona o diretrio /proc e seus arquivos de informao, placas ISA PNP, e como configurar e ler a hora do sistema e do hardware. O que vem a ser uma placa de expanso? Simples, um circuito eletrnico encaixado na placa me que tem por objetivo adicionar novas funcionalidades ao computador. Esta placa pode ser uma: Placa de som: Fornece suporte ao computador para sons, msicas, 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 comunicao com outros computadores em uma rede interna ou na Internet; Placa controladora de perifricos: Fornece suporte ao computador para ligar discos rgidos, unidades de disquete, impressora, mouse, joystick, etc; Placa SCSI: Fornece suporte ao computador para ligar unidades de disco rgidos e perifricos 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 funo de conectar componentes/dispositivos em um computador. Esses componentes usam o bus para comunicao enviando sinais eltricos de um para outro. Os componentes que so conectados pelo bus so, por exemplo, a CPU, as memrias RAM e ROM e os perifricos/dispositivos, como o controlador de interrupo, o adaptador de vdeo, a interface de disco etc. Os recursos alocados pelo bus, tanto em PCI quanto ISA, podem ser: Endereo de entrada e sada (I/O) para um especfico componente como o endereamento I/O da prpria CPU. Logo j se percebe porque o sistema bus (I/O) no pode ser compartilhado; O endereamento de memria para ler e escrever em uma determinada localizao na memria. A CPU usa esses endereamentos de memria; As IRQs para quando um dispositivo qualquer precisar de enlaces de tempo da CPU. O bus inteligente, pois tem o nmero da interrupo o qual habilita o kernel a saber qual dispositivo causou uma interrupo;
24
Se dois dispositivos compartilham uma mesma IRQ, pode acontecer de haver uma requisio ao mesmo tempo e o kernel responder a ambas de acordo com suas prioridades; O acesso direto memria (DMA) permite que dispositivos copiem dados diretamente da memria sem interveno da CPU. Isso permite uma melhoria na performance, mas no possvel o compartilhamento de canais DMA entre esses dispositivos.
A identificao BUS
Atravs da numerao bus que j conhecemos possvel saber mais um monte de informaes, pois dispositivos PCI incluem alguns recursos de identificao como parte de sua especificao. Por exemplo, sabemos que para uma placa de rede funcionar, ela precisa de um mdulo no sistema Linux, e esse mdulo deve ser lido pelo kernel. E para pesquisarmos por esse tipo de informao, um dos comandos mais usados o comando lspci. O comando lspci tem a seguinte sintaxe:
# lspci [opes]
As opes mais comuns so (para mais informaes use o comando man lspci ou info lspci): -k: Muito til, pois informa que mdulo do kernel est anexado ao dispositivo PCI; -m: Exibe informaes com mais detalhes que o simples comando lspci; -mm: Semelhante ao -m, porm com mais detalhes ainda; -n e -nn: Mostra codificao dos dispositivos e codificao, mais informaes do vendedor; -s e -d: Usado para pesquisas com mais detalhes sobre um dispositivo especifico; -v: Modo verboso; Para saber qual mdulo (driver) do kernel responsvel pelo dispositivo PCI, por exemplo. Aqui percebemos que o mdulo 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 mdulos 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
25
Para saber como essa interface de rede trabalha quando da transmisso/recepo, 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 informaes tcnicas 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 cdigo do dispositivo de interface de rede 00:12.00 (para esse hardware); e para saber informaes mais especficas sobre ele podemos fazer uma pesquisa direta. Nos exemplos a seguir poderamos usar tambm 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 informaes dos tipos de mdulos 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
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 prximo passo? Use o lspci -n para sada 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 (rev (rev (rev (rev
01) 02) 80) 80) 80) 82) 06) 50) 74) a2)
Para uma listagem resumida, mas com informaes mais teis como o cdigo 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)
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, porm, 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 mdulos no sistema Linux possuem a extenso .ko ou .o e, geralmente, residem dentro do diretrio /lib/modules/verso_do_kernel/kernel/drivers/. Eles so carregados dinamicamente com os comandos insmod ou modprobe e podem ser declarados no arquivo /etc/modprobe.conf.
Foi usado aqui como exemplo um carto/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 mdulo no arquivo /etc/ modprobe.conf. Ento, sua interface era a eth0. Quando estiver mais de uma interface de rede presente no sistema, a prxima interface eth1, e assim por diante. O contedo do arquivo modprobe.conf muda conforme o seu hardware e conforme a distribuio, e em raros casos (antes era comum), o administrador precisar editar esse arquivos e criar manualmente as entradas para os mdulos (drivers) para o sistema funcionar adequadamente com determinado tipo de hardware. Veja um exemplo desse arquivo em uma distribuio 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
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 distribuio e do que foi instalado e o tipo de hardware, esse arquivo apresenta sutis diferenas.
Algumas distribuies atuais mudaram a ideia desse arquivo, pois agora usam o diretrio /etc/modprobe.d/ e, dentro dele, os arquivos de mdulos. 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 distribuio e do que foi instalado e o tipo de hardware, outros arquivos podero estar presente nesse diretrio.
Mdulos para placas de rede existem aos milhares para Linux, para carregar via linha de comando um mdulo para uma placa de rede como o mdulo via-rhine, por exemplo. Esses comandos carregam o mdulo para a memria 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 mdulo:
# insmod /lib/modules/2.6.31.5-127.fc12.i686.PAE/kernel/drivers/net/via-rhine. ko ou # modprobe via-rhine
NOTA: O comando rmmod <mdulo> remove, ou tenta remover, um mdulo da memria. Tome muito cuidado com ele, pois se voc remover um mdulo errado ter srios problemas, principalmente se esse mdulo for um mdulo de interface de rede. Todas as suas conexes de rede estaro seriamente comprometidas.
Quando o mdulo j faz parte da instalao do sistema, tudo funciona a mil maravilhas; mas e se o mdulo existe, porm no veio com o sistema? Bom, a precisaremos ler as instrues na pgina 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 mdulo dever existir, e o mdulo dever ser copiado em um local padro do sistema para que os comandos
29
de pesquisa e gerao de cache funcionem. S para exemplificar, usaremos o mdulo pcnet32.ko, o qual dever ser copiado no local correto. E na sequncia, 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 mdulo mais novo ou no, e para que ele possa estar ativo no sistema na prxima inicializao. A funo desse arquivo guardar o caminho para os diversos mdulo 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 (faa a pesquisa anteriormente mostrada para saber como identificar o nmero/cdigo do dispositivo PCI), usaremos o comando lspci -s 12.0 -v que vai listar mais informaes sobre a interface de rede (identificao 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 parmetro -v.
Se tudo funcionou, poderemos consultar as informaes quando do procedimento de inicializao atravs 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 so identificados por um nico ID como se fosse um endereo MAC de uma placa de rede. As informaes sobre essa identificao, dependendo da distribuio, podem ficar em diretrios um pouco diferentes: /usr/share/pci.ids: Para uma distribuio SuSE; /usr/share/hwdata/pci.ids: Para uma distribuio Red Hat ou Debian; /usr/share/mics/pci.ids: Uma distribuio Debian mais antiga. Os arquivos anteriores podem ser visualizados com o comando cat, more ou less, e o comando update-pciids faz uma atualizao 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 informaes que so necessrias saber so: O suporte Linux para PCI (Bus ID=00) completo e no precisa de configurao manual;
30
O AGP PCI bus (Bus ID=01) reservado para cartes/placa de vdeo e tem apenas um slot (encaixe) feito para transferncia de dados entre chip de vdeo e o PC; O sistema de endereamento para o bus PCI segue a mesma lgica do endereamento SCSI: BusNo:SlotNo:FunoNo (Dispositivo No); O comando lspci usado para listar dispositivos PCI no sistema e tambm retorna o fabricante a partir do arquivo /usr/share/pci.ids. Se usarmos o parmetro -n no ser feita a leitura a partir desse arquivo. A partir do kernel 2.1.82 h mais informaes sobre os dispositivos PCI no diretrio /proc/pci; As portas seriais, conhecidas como COM 1, COM 2 etc no sistema Linux, so referenciadas como ttyS0, ttyS1 etc, e as impressoras paralelas, como lpt1, lpt2, so referenciadas como lp0, lp1 etc.
Modems analgicos
O protocolo PPP em modems analgicos requer autenticao em ambos os lados da conexo ponto a ponto. Geralmente funciona assim: iniciada uma discagem
31
para o provedor (ISP Internet Solution Provider) e l, ento, o servidor requisita a autenticao. Se estiver tudo certo, completa-se a conexo e um processo pppd passa a existir. Esse tipo de modem geralmente configurado da seguinte maneira: Usa uma das portas de comunicao do sistema como, por exemplo, /dev/ttyS0 ou /dev/ttyS1; Se o modem for WinModem, um mdulo especfico para o kernel dever ser carregado antes disso. Se for modem interno, dever ser configurado com o comando setserial; Ser necessrio o telefone do provedor para discar; Um nome de usurio (login) e uma senha (password) vlida;
DICA: Depois que esses requisitos estiverem todos certos, pode-se usar inmeros programas para configurar parmetros extras do protocolo PPP como o wvdial, kppp etc. No entanto, a explicao desses utilitrios 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 comunicao. Como seria uma conexo usando ento o processo pppd? Simples, mas preciso fazer tudo mo. Vamos seguir o procedimento para ativar um link de comunicao com o provedor: Cria-se um arquivo texto chamado provedor no diretrio /etc/ppp/peers/. Esse arquivo vai ser consultado quando executarmos o comando pppd call provedor. O contedo dele :
/dev/cua0 38400 crtscts connect "chat /etc/ppp/lpi-isp/conectar" user adilson /dev/cua0 pode ser /dev/ttyS0.
Depois, cria-se um diretrio chamado lpi-isp dentro do diretrio /etc/ppp, e depois cria-se um arquivo chamado conectar (chamado de chap script) nesse diretrio com o seguinte contedo:
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 autenticao que vai ser usado, o arquivo /etc/ppp/ chap-secrets ou /etc/ppp/pap-secrets deve conter o nome do usurio e a senha. Se quiser, pode-se colocar a mesma informao de um em outro. Esses arquivos apresentaro o seguinte contedo (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 sada de log em /var/log/messages.
32
Espere pela conexo, e depois navegue vontade. O protocolo CHAP mais seguro que o PAP porque criptografado, enquanto o outro no.
Modems DSL
Esses modems, que so muito populares, usam uma tcnica chamada PPP sobre Ethernet, ou pppoe. Nos CDs de sua distribuio instale esse pacote para ter os utilitrios corretos. Seu funcionamento simples e preciso que a placa de rede esteja configurada corretamente, e ento s seguir os passos para ter um link de comunicao com o provedor. Dependendo da distribuio a ser usada, cada uma pode trazer seus prprios utilitrios de configurao; e aps instalados os pacotes necessrios (geralmente quase todos) rp-pppoe-gui-[verso], rp-pppoe-server-[verso] e rp-pppoe[verso], estar presente tambm alguns scripts de conexo: adsl-connect, adsl-setup: Usado para conectar e configurar a autenticao em uma conta ADSL; adsl-start: Inicia uma conexo; adsl-status: Mostra status da conexo; adsl-stop: Para a conexo. Em algumas distribuies os comandos todos comeam com adsl; mas cuidado, pois na maioria das distribuies os comandos iniciam por ppp, sendo os comandos adsl-start e adsl-stop links para os comandos ppp responsveis. 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 utilitrio, o tkpppoe, para o modo grfico para o pacote pppoe poder ser encontrado em http://www.roaringpenguin.com/pppoe, caso sua distribuio no o tenha.
33
A arquitetura USB
O USB Universal Serial Bus foi concebido com o intuito de facilitar a conexo de perifricos existentes para computador. Entre eles, esto 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 extica como caixas de som, mini ventiladores, e, acredite, tem at barbeador e mini lanternas. Estou falando srio! Cada vez mais popular, o USB uma boa soluo para unificar e facilitar a adio de perifricos a um computador. Atualmente, a deteco e a configurao de dispositivos USB so feitas automaticamente atravs do subsistema hotplug e udev. Quando um dispositivo conectado ao barramento USB da mquina, o prprio kernel o reconhece e envia uma mensagem ao programa hotplug/udev, que se encarrega de carregar os mdulos necessrios ao seu funcionamento, bem como executar outras tarefas como, por exemplo, o acerto de permisses. Eventualmente, claro, pode haver um dispositivo muito recente que pode no ser suportado pelo kernel, a voc ter que arregaar as mangas e recompilar o kernel. Mas felizmente muitos fabricantes tm optado por padres como, por exemplo, o usb-storage, o que torna o perifrico totalmente suportado. O suporte ao padro USB em sistemas Linux est presente desde o kernel 2.2.18, mas a partir do kernel 2.4 que o suporte a esse padro melhorou muito. E a ideia do padro USB veio como uma mo na roda para todos os tipos de usurios; e quem for do tempo do kernel 2.0, sabe do que estou falando. O padro muito flexvel e muito funcional, basta plugar um dispositivo USB (mouse, cd-rom, scanner, cmera, 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 configurao 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 so placas PCI, ISA, e dispositivos IDE e pentes de memria; 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 (diretrio de dispositivos) e faz o devido reconhecimento do tipo de dispositivo.
NOTA: No entanto, o padro USB 1.0 tambm evoluiu e, em 1999, foi anunciada a verso 2.0 muito mais rpida que a anterior. O padro 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. Porm, na prtica, a velocidade mxima no poderia ultrapassar 8,5 Mbit/s, nem mesmo sobre as melhores condies. Com a verso 2.0 do padro USB a velocidade mudou bastante e hoje se trabalha na velocidade de 480 Mbit/s, porm, a tecnologia USB 3.0 (xHCI) promete ser 10 (dez) vezes mais rpida que o USB 2.0.
34
Para quem ainda no sabe, o padro 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 possveis e previstos, e c) portas de expanso, assim voc no fica limitado ao nmero fsico 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 cmera 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
35
Agora identificamos esse hardware atravs do comando lsusb que semelhante ao lspci. Esse comando lsub possui alguns parmetros 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 informaes mais detalhadas sobre um dispositivo USB, nesse caso uma mquina 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 diretrio podem ser vistos dois arquivos (devices e drivers). Esses arquivos contm informaes sobre os dispositivos conectados ao sistema. Experimente usar o comando cat /proc/bus/usb/devices ou cat /proc/bus/usb/ drivers para fazer uma anlise.
# ls -F /proc/bus/usb/ 001/ 002/ 003/ 004/ devices
Veja como podemos identificar o hardware da mquina digital. No arquivo devices estaro 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
E: Ad=01(O) Atr=02(Bulk) MxPS= E: Ad=82(I) Atr=02(Bulk) MxPS= E: Ad=83(I) Atr=03(Int.) MxPS= (...)
DICA: O diretrio /proc/bus/usb vai apresentar as entradas numeradas (001, 002, 003 ...) para cada dispositivo USB no sistema. Assim, para listar o contedo do dispositivo 1, usamos o comando ls /mnt/usb-storage/device-0/, por exemplo. A maioria das distribuies est montada nos dispositivos USB no diretrio /media.
37
Aqui tivemos uma listagem de mais de setenta mdulos para dispositivos USB. Esses mdulos so os mdulos modernos por apresentarem o sufixo .ko no nome do arquivo, porm, em kernel 2.2 o sufixo ser .o. O carregamento dinmico dos mdulos se d quando inserimos dispositivos USB, nesse ponto dois sistemas estaro disponveis dependendo da verso do kernel em uso:
hotplug: USB, PCMCIA e FireWire(ieee1394); usbmgr: Gerenciamento USB apenas para esses dispositivos. Presente em kernel 2.2.
Para esse padro USB, seu sistema vai apresentar os seguintes mdulos: ohci.o, uhci.o e ehci-hcd.o. Para sabermos quais desses mdulos 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
Tabela 101.1.8: Quadro dos fabricantes com modelo USB. OHCI (USB 1.0) Compac ALI NEC Opti Chipset UHCI (USB 1.1) Intel VIA ----EHCI (USB 2.0) Intel VIA NEC Phillips
O padro 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 transferncia. 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 mdulos (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 contedo do diretrio /proc/bus/usb, os mdulos usb-ohci ou usb-uhci so carregados, e cada diretrio numerado (001, 002, 003 etc) equivale a montagem de um dispositivo USB. E dentro desses diretrios h o respectivo arquivo numrico no formato binrio. O sistema Linux usa o arquivo /etc/conf.modules ou o /etc/modules.conf ou, ainda no caso de um sistema no muito antigo, o /etc/modprobe.conf. Esse arquivo tem a finalidade de guardar os mdulos que sero 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 mdulos (drivers) no sistema Linux so 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
39
Como o padro USB tornou-se muito popular, veja os mdulos 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 mquinas fotogrficas digitais; audio: Placas de som USB e joydev: Joystick USB. Os mdulos ativos para dispositivos USB ficam no arquivo /etc/modules.conf, mas dependendo da distribuio pode haver uma pequena mudana no nome desse arquivo, como /etc/modprobe.conf, ou at mesmo uma nova lgica de organizao de arquivos de mdulos. Portanto, fique atento. A seguir, veja o exemplo de um arquivo desses com mdulos USB para alguns dispositivos. Esse arquivo est presente em distribuies mais antigas:
# cat /etc/modules.conf (...) alias usb uhci post-install uhci modprobe printer post-install printer modprobe joydev post-install joydev modprobe hid
40
Primeiramente uma pesquisa, e descobrimos que o disco sda tem trs parties:
# 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 no sejam detectados automaticamente em modo grfico. 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 secundrio sdb foi reconhecido. O grande macete voc entender que esses dispositivos usam armazenamento ou servem para isso. O padro do sistema de arquivos deles adotado FAT (Windows) ou VFAT (Linux). Assim, em nosso exemplo, pela nossa anlise sabemos que sdb1 ser usado para acessar a mquina digital a qual, nesse caso, possui memria para armazenamento e funciona como disco. Ento criaremos no diretrio /media um diretrio para esse dispositivo:
# mkdir /media/sony
E agora as respectivas montagens dos dispositivos (lembrando que eles no esto montados). Aps isso, o usurio 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 no for mais usar o dispositivo, ter que desmont-lo, e para isso no poder estar dentro dele. Para desmontar esses dispositivos use os comandos a seguir:
# umount /media/sony
41
RESUMOS IMPORTANTES PARA O EXAME LPIC1 - 117-102: Conhecimento chave: Ativar/desativar perifricos integrados ao sistema. Configurao do sistema para inicializar sem perifricos externos, como teclados Diferenciar os vrios tipos de mdias 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 informao de hardware como lspci, lsdev, lsusb, hwinfo e afins. Conhecer ferramentas de manipulao de dispositivos USB. Conceituar os termos sysfs, udev, hald, dbus e afins. Os seguintes itens so uma listagem parcial dos arquivos usados, termos e utilitrios: /sys, /proc, /dev, modprobe. lsmod, lspci, lsusb.