Linux lpi 101

351 visualizações

Publicada em

Sim

Publicada em: Tecnologia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
351
No SlideShare
0
A partir de incorporações
0
Número de incorporações
3
Ações
Compartilhamentos
0
Downloads
8
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Linux lpi 101

  1. 1. Lição 1 - Determinando e Configurando Hardware /proc /proc Mais tarde aprenderemos mais sobre o sistema de arquivos do Linux, mas agora veremos sobre o sistema de arquivos /proc. Este não é um sistema de arquivos real no disco, mas é um pseudo sistema de arquivos, que provê informações sobre o sistema. Neste sistema de arquivos, o arquivo /proc/pci contém informação sobre os dispositivos no PCI bus(bus: interface de comunicação entre componentes). Ultimamente tem havido alguma discussão sobre descontinuar este arquivo em particular, tendo em vista que o comando lspci nos mostra informações similares. Rode o comando cat /proc/pci para ver algo mais ou menos semelhante a (dependendo do seu sistema, este arquivo pode já ter sido retirado): PCI devices found: Bus 0, device 0, function 0: Host bridge: Intel Corp. 82845G/GL [Brookdale-G] Chipset Host Bridge (rev 1). Prefetchable 32 bit memory at 0xd0000000 [0xdfffffff]. Bus 0, device 2, function 0: VGA compatible controller: Intel Corp. 82845G/GL [Brookdale-G] Chipset Integrated Graphics Device (rev 1). IRQ 11. Prefetchable 32 bit memory at 0x88000000 [0x8fffffff]. Non-prefetchable 32 bit memory at 0x80000000 [0x8007ffff]. Bus 0, device 29, function 0: USB Controller: Intel Corp. 82801DB USB (Hub #1) (rev 1). IRQ 11. I/O at 0x1800 [0x181f]. Bus 0, device 29, function 1: USB Controller: Intel Corp. 82801DB USB (Hub #2) (rev 1). IRQ 10. I/O at 0x1820 [0x183f]. Bus 0, device 29, function 2:
  2. 2. USB Controller: Intel Corp. 82801DB USB (Hub #3) (rev 1). IRQ 5. I/O at 0x1840 [0x185f]. Bus 0, device 29, function 7: USB Controller: Intel Corp. 82801DB USB2 (rev 1). IRQ 9. Non-prefetchable 32 bit memory at 0xc0080000 [0xc00803ff]. Bus 0, device 30, function 0: PCI bridge: Intel Corp. 82801BA/CA/DB/EB PCI Bridge (rev 129). Master Capable. No bursts. Min Gnt=4. Bus 0, device 31, function 0: ISA bridge: Intel Corp. 82801DB LPC Interface Controller (rev 1). Bus 0, device 31, function 1: IDE interface: Intel Corp. 82801DB Ultra ATA Storage Controller (rev 1). IRQ 5. I/O at 0x1860 [0x186f]. Non-prefetchable 32 bit memory at 0x60000000 [0x600003ff]. Bus 0, device 31, function 3: SMBus: Intel Corp. 82801DB/DBM SMBus Controller (rev 1). IRQ 9. I/O at 0x1880 [0x189f]. Bus 0, device 31, function 5: Multimedia audio controller: Intel Corp. 82801DB AC'97 Audio Controller (rev 1). IRQ 9. I/O at 0x1c00 [0x1cff]. I/O at 0x18c0 [0x18ff]. Non-prefetchable 32 bit memory at 0xc0080c00 [0xc0080dff]. Non-prefetchable 32 bit memory at 0xc0080800 [0xc00808ff].
  3. 3. Bus 2, device 8, function 0: Ethernet controller: Intel Corp. 82801BD PRO/100 VE (LOM) Ethernet Controller (rev 129). IRQ 9. Master Capable. Latency=66. Min Gnt=8.Max Lat=56. Non-prefetchable 32 bit memory at 0xc0100000 [0xc0100fff]. I/O at 0x2000 [0x203f]. Utilize lspci para comparar com esta saída. Quando o CPU (Central Processing Unit, unidade de processamento central) precisa se comunicar com um dispositivo periférico, ele o faz atraves de uma IO port (porta de entrada/saída) ou simplesmente port. Quando a CPU quer enviar dados ou informações de controle para o periférico, ele escreve para a porta. Quando o dispositivo contém dados ou está com status ready, a CPU lê os dados ou o status de uma porta. A maioria dos dispositivos tem mais do que uma porta associada, tipicamente uma pequena potência de dois, como 8, 16 ou 32. A transferência de dados é usualmente feita byte a byte. Dispositivos não podem compartilhar portas, então, se você tem placas ISA (Industry Standard Architecture, arquitetura padrão da indúsitra), você deve certificar que cada dispositivo tem a sua própria porta ou portas designadas. Originalmente isto era feito utilizando switches ou jumpers, no própria placa. Alguns cartões ISA mais recentes utilizam um sistema chamado Plug and Play(Pnp) que será visto mais tarde. Todas as placas PCI têm PnP. No sistemas de arquivo /proc, o arquivo /proc/ioports nos mostra as IO ports disponíveis no sistema. Utilize o comando cat /proc/ioports para ver a saída. Os números das portas estarão em hexadecimal. Sem dúvida você verá alguns que serão familiares, como teclado, paralela(impressora), serial(modem) e display. Então, como a CPU sabe que a última saída já terminou ou quando os dados estão esperando para ser lidos? Normalmente esta informação está disponível num registrador de status, que pode ser acessado lendo um(ou mais) das IO ports associadas com algum dispositivo. Dois problemas óbvios podem ser percebidos neste cenário: Primeiramente a CPU tem que gastar tempo verificando o status. Depois, se o dispositivo tem dados vindo de algum lugar, estes dados devem ser lidos em tempo hábil, ou então eles podem ser sobrescritos pelos próximos dados que estão chegando.
  4. 4. Os dois problemas de não gastar ciclos de processamento desnecessários e garantir que dados são lidos ou escritos num tempo hábil são resolvidos pelo conceito de interrupts(interrupts:interrupções). Interrupts são também chamadas de Interrupt Requests ou simplesmente IRQ. Quando alguma coisa acontece em um dispositivo que a CPU deva saber, o dispositivo manda um interrupt e a CPU para qualquer coisa que esteja fazendo para tratar desta situação. Estas informações sobre interrupts também são mantidas no sistema de arquivos /proc, no arquivo /proc/interrupts. Utilize o comando cat /proc/interrupts para ver a saída deste arquivo. Este arquivo estará em decimal. Originalmente, cada dispositivo tinha seu próprio IRQ. Atualmente IRQ5 pode ser usada tanto para uma placa de som ou uma segunda porta paralela (Google: Standart IRQ Settings). Se você quisesse os dois, você deveria encontrar uma placa que poderia ser configurada (normalmente através de jumpers) para utilizar outra IRQ, por exemplo a IRQ15, que está livre. Hoje, os dispositivos PCI compartilham IRQs, então quando um interrompe a CPU, um interrupt handler verifica se a interrupção é pra ele, se não for, passa para o próximo handler na cadeia. Foi mencionado anteriormente que a comunicação com periféricos através de IO ports aconteciam byte a byte. Para um dispositivo rápido, os interrupts poderiam gastar muito da capacidade da CPU. Um método mais rápido é utilizar DMA (Direct MemoryAccess), na qual algumas instruções de IO falam para o dispositivo onde ler ou escrever na RAM e depois o controlador de DMA provê gerenciamento de hardware da transferencia atual de dados entre a RAM e o periférico. Mais uma vez, esta informação pode ser visualizada através do comando cat /proc/dma. cat /proc/pci = contém informação sobre os dispositivos no PCI bus(bus: interface de comunicação entre componentes) cat /proc/ioports = mostra as IO ports disponíveis no sistema cat /proc/interrupts = para ver a saída deste arquivo. cat /proc/dma = DMA (Direct MemoryAccess), na qual algumas instruções de IO falam para o dispositivo onde ler ou escrever na RAM e depois o controlador de DMA provê gerenciamento de hardware da transferencia atual de dados entre a RAM e o periférico. /dev
  5. 5. /dev Nesta parte da lição introduziremos um novo e importante sistema de arquivos no Linux, o /dev. Assim como o /proc, este é um pseudo sistema de arquivos, que descreve os dispositivos(devices) que estão, ou poderiam estar em um sistema Linux. No /dev você vai encontrar entradas como /dev/hda, /dev/hda5, /dev/sda, /dev/sdb1 e assim por diante. Você vai encontrar várias outras entradas para outros tipos de dispositivos, mas agora veremos os que começam com /dev/hd ou /dev/sd. Estes dispositivos que começam com /dev/hd, tais como /dev/hda ou /dev/hda5 referenciam drives IDE. O primeiro drive no primeiro controlador IDE é /dev/hda e o segundo, se estiver presente, será /dev/hdb. Desta forma, o primeiro drive no segundo controlador IDE é /dev/hdc e o segundo será /dev/hdd. Você pode verificar utilizando os comandos ls /dev/hd? e ls /dev/sd? (Mais à frente serão estudados os caracteres coringa, como '?', portanto não se preocupe com ele agora). ls /dev/hd? e ls /dev/sd? = o primeiro drive no segundo controlador IDE é /dev/hdc e o segundo será /dev/hdd Quais os comandos que verificam os dispositivos IDE num sistema? ls ide ls /dev l grap ls /dev/hd* ls la modprobe modprobe Modprobe: Programa para adicionar e remover módulos do Kernel Linux. O modbprobe adiciona ou remove módulos de um kernel: note que por conveniência, não há diferença entre _ e - em nomes de módulos. O Modprobe
  6. 6. procura no diretório de módulos (/lib/modules/'uname -r') por todos os módulos e outros arquivos, exceto o que estiver descrito no arquivo opcional /etc/modprobe.conf e o diretório /etc/modprobe.d. Todos os arquivos em /etc/modprobe.d/arch/ são ignorados. O modprobe não faz nada com o módulo em si. Todo o trabalho de resolver os símbolos e entender os parâmetros é feito dentro do kernel. Desta forma, falhas de módulos geralmente são acompanhadas de mensagens do kernel, que podem ser visualizadas com o comando dmesg. O modprobe espera que o arquivo modules.dep esteja atualizado, como foi gerado pelo depmod. Este arquivo lista o que cada módulo precisa (se precisa de algo) e o modprobe utiliza isto para adicionar ou remover estas dependências automaticamente. Se algum argumento for dado após o modulename, eles serão passados para o kernel. Informações adicionais podem ser encontradas através dos comandos man modprobe ou info modprobe. Dmesg = falhas de módulos geralmente são acompanhadas de mensagens do kerne. man modprobe ou info modprobe = Informações adicionais lsmod, lspci e lsusb lsmod, lspci e lsusb Lsmod - Este programa lista o status dos módulos do kernel. Lsmod é um simples programa que formata o conteúdo de /proc/modules, mostrando quais módulos do kernel estão atualmente em funcionamento. Mais informações através dos comandos man lsmod ou info lsmod Como visto anteriormente, o comando lspci lista os dispositivos PCI.
  7. 7. Mais informações através dos comandos man lspci ou info lspci. Assim como seus semelhantes, o comando lsusb lista os dispositivos USB conectados. Mais informações também podem ser obtidas através dos comandos man lsusb ou info lsusb. man lsmod ou info lsmod = mostrando quais módulos do kernel estão atualmente em funcionamento man lspci ou info lspci = lspci lista os dispositivos PCI. man lsusb ou info lsusb = lsusb lista os dispositivos USB conectados Lição 2 - Iniciando o Sistema /var/log/messages /var/log/messages Nos sistemas Linux, este é o arquivo que contém os registros de entrada e saída de usuários no sistema. Além disso, várias outras ações realizadas em diversos sistemas são gravadas aqui, porém tais ações têm a ver com o escopo do sistema operacional, ou seja, tudo que pode afetar ou impactar o sistema operacional como um todo e não somente um determinado sistema que roda nele. As consequências da falta de algum dispositivo, sistema ou configuração ou da falha de algum destes são também registradas aqui, se houver a possibilidade de impacto em outras partes do sistema operacional. Em alguns sistemas baseados em Unix, o correspondente a este arquivo é o /var/log/syslog. Utilizando o comando cat /var/log/messages poderemos visualizar o arquivo de logs, porém este arquivo só pode ser acessado por alguém com privilégios de administrador do sistema(root).
  8. 8. Seu arquivo de logs pode parecer-se com isto, ou pode não ter nada a ver: Apr 11 18:30:35 mymachine kernel: PCI: Probing PCI hardware Apr 11 18:30:35 mymachine smartd[4701]: Opened configuration file /etc/smartd.conf Apr 11 18:30:35 mymachine kernel: PCI: Probing PCI hardware (bus 00) Apr 11 18:30:35 mymachine smartd[4701]: Configuration file /etc/smartd.conf parsed. Apr 11 18:30:35 mymachine kernel: PCI: Ignoring BAR0-3 of IDE controller 00:1f.1 Apr 11 18:30:35 mymachine kernel: Transparent bridge - Intel Corp. 82801BA/CA/DB/EB PCI Bridge Apr 11 18:30:35 mymachine modprobe: modprobe: Can't locate module block-major-3 Apr 11 18:30:35 mymachine kernel: PCI: Using IRQ router PIIX/ICH [8086/24d0] at 00:1f.0 Apr 11 18:30:35 mymachine smartd[4701]: Device: /dev/hda, No such device or address, open() failed Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I29,P0) -> 16 Apr 11 18:30:35 mymachine smartd[4701]: Unable to register ATA device /dev/hda at line 30 of file /etc/smartd.conf Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I29,P1) -> 19 Apr 11 18:30:35 mymachine smartd[4701]: Unable to register device /dev/hda (no Directive -d removable). Exiting. Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I29,P2) -> 18 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I29,P0) -> 16 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I29,P3) -> 23 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I31,P0) -> 18 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I31,P0) -> 18 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I31,P1) -> 17 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B0,I31,P1) -> 17 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B1,I0,P0) -> 16 Apr 11 18:30:35 mymachine kernel: PCI->APIC IRQ transform: (B2,I12,P0) -> 18 Apr 11 18:30:35 mymachine kernel: isapnp: Scanning for PnP cards... Apr 11 18:30:35 mymachine kernel: isapnp: No Plug & Play device found Apr 11 18:30:35 mymachine kernel: Linux NET4.0 for Linux 2.4 Apr 11 18:30:35 mymachine kernel: Based upon Swansea University Computer Society NET3.039 Apr 11 18:30:35 mymachine kernel: Initializing RT netlink socket Apr 11 18:30:35 mymachine kernel: apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16) Apr 11 18:30:35 mymachine kernel: apm: disabled - APM is not SMP safe. Apr 11 18:30:35 mymachine kernel: Starting kswapd Apr 11 18:30:35 mymachine kernel: allocated 32 pages and 32 bhs reserved for the highmem bounces Apr 11 18:30:35 mymachine smartd: smartd startup failed Apr 11 18:30:35 mymachine kernel: VFS: Disk quotas vdquot_6.5.1 Apr 11 18:30:35 mymachine kernel: pty: 2048 Unix98 ptys configured Apr 11 18:30:35 mymachine kernel: Serial driver version 5.05c (2001-07-0 with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled Apr 11 18:30:35 mymachine kernel: ttyS0 at 0x03f8 (irq = 4) is a 16550A Apr 11 18:30:35 mymachine kernel: Real Time Clock Driver v1.10e Apr 11 18:30:35 mymachine kernel: NET4: Frame Diverter 0.46 Apr 11 18:30:35 mymachine kernel: RAMDISK driver initialized: 16 RAM disks of 8192K size 1024 blocksize Apr 11 18:30:35 mymachine kernel: Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4 Apr 11 18:30:35 mymachine kernel: ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx Apr 11 18:30:35 mymachine kernel: ICH5: IDE controller at PCI slot 00:1f.1 Apr 11 18:30:35 mymachine kernel: ICH5: chipset revision 2 Apr 11 18:30:35 mymachine kernel: ICH5: not 100%% native mode: will probe irqs later Apr 11 18:30:35 mymachine kernel: ide1: BM-DMA at 0xffa8-0xffaf, BIOS settings: hdc:DMA, hdd:DMA Apr 11 18:30:35 mymachine kernel: hdc: GCR-8481B, ATAPI CD/D
  9. 9. cat /var/log/messages = poderemos visualizar o arquivo de logs o arquivo que contém os registros de entrada e saída de usuários no sistema. dmesg dmesg Este comando imprime(em tela ou arquivo) ou controla o ring buffer do kernel. Este programa auxilia usuários a imprimir as mensagens de boot, ao invés de copiar as mensagens na mão, o usuário precisa apenas de redirecionar a saída do comando: dmesg > boot.messages Suas opções principais são: -c : Limpa o ring buffer após imprimi-lo. -s TAMANHO : Imprime o buffer de tamanho TAMANHO. Por padrão isto é 16392. -n NIVEL : Define o NÍVEL de mensagens que serão impressas. Quando esta opção é utilizada, dmesg NÃO VAI apagar o ring buffer. Para maiores detalhes, utilize man dmesg ou info dmesg. Exemplo mensagens de Boot : root@debian:/home/rodrigo# dmesg [ 0.000000] AMI BIOS detected: BIOS may corrupt low RAM, working around it. [ 0.000000] e820 update range: 0000000000000000 - 0000000000010000 (usable) ==> (reserved) [ 0.000000] last_pfn = 0x7ffd0 max_arch_pfn = 0x100000 [ 0.000000] MTRR default type: uncachable [ 0.000000] MTRR fixed ranges enabled: [ 0.000000] 00000-9FFFF write-back [ 0.000000] A0000-EFFFF uncachable [ 0.000000] F0000-FFFFF write-protect
  10. 10. [ 0.000000] MTRR variable ranges enabled: [ 0.000000] 0 base 000000000 mask F80000000 write-back [ 0.000000] 1 disabled [ 0.000000] 2 disabled [ 0.000000] 3 disabled [ 0.000000] 4 disabled [ 0.000000] 5 disabled [ 0.000000] 6 disabled [ 0.000000] 7 base 0D0000000 mask FFC000000 write-combining [ 0.000000] x86 PAT enabled: cpu 0, old 0x7040600070406, new 0x7010600070106 [ 0.000000] initial memory mapped : 0 - 01800000 [ 0.000000] init_memory_mapping: 0000000000000000-00000000373fe000 [ 0.000000] 0000000000 - 0000400000 page 4k [ 0.000000] 0000400000 - 0037000000 page 2M [ 0.000000] 0037000000 - 00373fe000 page 4k [ 0.000000] kernel direct mapping tables up to 373fe000 @ 10000-16000 [ 0.000000] RAMDISK: 377d4000 - 37fef9e9 [ 0.000000] Allocated new RAMDISK: 00100000 - 0091b9e9 [ 0.000000] Move RAMDISK from 00000000377d4000 - 0000000037fef9e8 to 00100000 - 0091b9e8 [ 0.000000] ACPI: RSDP 000f6750 00014 (v00 ACPIAM) [ 0.000000] ACPI: RSDT 7ffd0000 00030 (v01 A M I OEMRSDT 08000427 MSFT 00000097) [ 0.000000] ACPI: FACP 7ffd0200 00081 (v02 A M I OEMFACP 08000427 MSFT 00000097) [ 0.000000] ACPI: DSDT 7ffd03f0 0343E (v01 M863 M863G 00000000 INTL 02002026) [ 0.000000] ACPI: FACS 7ffdf000 00040 [ 0.000000] ACPI: APIC 7ffd0390 00054 (v01 A M I OEMAPIC 08000427 MSFT 00000097) [ 0.000000] ACPI: OEMB 7ffdf040 00040 (v01 A M I AMI_OEM 08000427 MSFT 00000097) [ 0.000000] ACPI: Local APIC address 0xfee00000 [ 0.000000] 1163MB HIGHMEM available. [ 0.000000] 883MB LOWMEM available. [ 0.000000] mapped low ram: 0 - 373fe000 [ 0.000000] low ram: 0 - 373fe000 [ 0.000000] node 0 low ram: 00000000 - 373fe000
  11. 11. [ 0.000000] node 0 bootmap 00012000 - 00018e80 [ 0.000000] (9 early reservations) ==> bootmem [0000000000 - 00373fe000] [ 0.000000] #0 [0000000000 - 0000001000] BIOS data page ==> [0000000000 - 0000001000] [ 0.000000] #1 [0000001000 - 0000002000] EX TRAMPOLINE ==> [0000001000 - 0000002000] [ 0.000000] #2 [0000006000 - 0000007000] TRAMPOLINE ==> [0000006000 - 0000007000] [ 0.000000] #3 [0001000000 - 00014ccd2c] TEXT DATA BSS ==> [0001000000 - 00014ccd2c] [ 0.000000] #4 [000009fc00 - 0000100000] BIOS reserved ==> [000009fc00 - 0000100000] [ 0.000000] #5 [00014cd000 - 00014d30e1] BRK ==> [00014cd000 - 00014d30e1] [ 0.000000] #6 [0000010000 - 0000012000] PGTABLE ==> [0000010000 - 0000012000] [ 0.000000] #7 [0000100000 - 000091b9e9] NEW RAMDISK ==> [0000100000 - 000091b9e9] [ 0.000000] #8 [0000012000 - 0000019000] BOOTMAP ==> [0000012000 - 0000019000] [ 0.000000] found SMP MP-table at [c00ff780] ff780 [ 0.000000] Zone PFN ranges: [ 0.000000] DMA 0x00000010 -> 0x00001000 [ 0.000000] Normal 0x00001000 -> 0x000373fe [ 0.000000] HighMem 0x000373fe -> 0x0007ffd0 [ 0.000000] Movable zone start PFN for each node [ 0.000000] early_node_map[2] active PFN ranges [ 0.000000] 0: 0x00000010 -> 0x0000009f [ 0.000000] 0: 0x00000100 -> 0x0007ffd0 [ 0.000000] On node 0 totalpages: 524127 [ 0.000000] free_area_init_node: node 0, pgdat c13b48c0, node_mem_map c14d5200 [ 0.000000] DMA zone: 32 pages used for memmap [ 0.000000] DMA zone: 0 pages reserved [ 0.000000] DMA zone: 3951 pages, LIFO batch:0 [ 0.000000] Normal zone: 1736 pages used for memmap [ 0.000000] Normal zone: 220470 pages, LIFO batch:31 [ 0.000000] HighMem zone: 2328 pages used for memmap [ 0.000000] HighMem zone: 295610 pages, LIFO batch:31 [ 0.000000] Using APIC driver default [ 0.000000] ACPI: PM-Timer IO Port: 0x808 [ 0.000000] ACPI: Local APIC address 0xfee00000
  12. 12. [ 0.000000] ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled) [ 0.000000] ACPI: IOAPIC (id[0x01] address[0xfec00000] gsi_base[0]) [ 0.000000] IOAPIC[0]: apic_id 1, version 2, address 0xfec00000, GSI 0-23 [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 0 global_irq 2 dfl dfl) [ 0.000000] ACPI: INT_SRC_OVR (bus 0 bus_irq 9 global_irq 9 low level) [ 0.000000] ACPI: IRQ0 used by override. [ 0.000000] ACPI: IRQ2 used by override. [ 0.000000] ACPI: IRQ9 used by override. [ 0.000000] Using ACPI (MADT) for SMP configuration information [ 0.000000] SMP: Allowing 1 CPUs, 0 hotplug CPUs [ 0.000000] nr_irqs_gsi: 24 [ 0.000000] PM: Registered nosave memory: 000000000009f000 - 00000000000a0000 [ 0.000000] PM: Registered nosave memory: 00000000000a0000 - 00000000000e0000 [ 0.000000] PM: Registered nosave memory: 00000000000e0000 - 0000000000100000 [ 0.000000] Allocating PCI resources starting at 80000000 (gap: 80000000:7ffc0000) [ 0.000000] Booting paravirtualized kernel on bare hardware [ 0.000000] NR_CPUS:32 nr_cpumask_bits:32 nr_cpu_ids:1 nr_node_ids:1 [ 0.000000] PERCPU: Embedded 14 pages/cpu @c2800000 s34328 r0 d23016 u4194304 [ 0.000000] pcpu-alloc: s34328 r0 d23016 u4194304 alloc=1*4194304 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 520031 [ 0.000000] Kernel command line: BOOT_IMAGE=/boot/vmlinuz-2.6.32-5-686 root=UUID=728074b6- c598-40f6-8c4c-6c820832c86c ro quiet [ 0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes) [ 0.000000] Dentry cache hash table entries: 131072 (order: 7, 524288 bytes) [ 0.000000] Inode-cache hash table entries: 65536 (order: 6, 262144 bytes) [ 0.000000] Enabling fast FPU save and restore... done. [ 0.000000] Enabling unmasked SIMD FPU exception support... done. [ 0.000000] Initializing CPU#0 [ 0.000000] Initializing HighMem for node 0 (000373fe:0007ffd0) [ 0.000000] Memory: 2064928k/2096960k available (2506k kernel code, 30552k reserved, 1326k data, 380k init, 1191752k highmem) [ 0.000000] virtual kernel memory layout:
  13. 13. [ 0.000000] fixmap : 0xffd56000 - 0xfffff000 (2724 kB) [ 0.000000] pkmap : 0xff400000 - 0xff800000 (4096 kB) [ 0.000000] vmalloc : 0xf7bfe000 - 0xff3fe000 ( 120 MB) [ 0.000000] lowmem : 0xc0000000 - 0xf73fe000 ( 883 MB) [ 0.000000] .init : 0xc13bf000 - 0xc141e000 ( 380 kB) [ 0.000000] .data : 0xc1272b8b - 0xc13be4c4 (1326 kB) [ 0.000000] .text : 0xc1000000 - 0xc1272b8b (2506 kB) [ 0.000000] Checking if this processor honours the WP bit even in supervisor mode...Ok. [ 0.000000] SLUB: Genslabs=13, HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] Hierarchical RCU implementation. [ 0.000000] NR_IRQS:1280 [ 0.000000] Console: colour VGA+ 80x25 [ 0.000000] console [tty0] enabled [ 0.000000] Fast TSC calibration using PIT [ 0.000000] Detected 2083.355 MHz processor. [ 0.004007] Calibrating delay loop (skipped), value calculated using timer frequency.. 4166.71 BogoMIPS (lpj=8333420) [ 0.004041] Security Framework initialized [ 0.004052] SELinux: Disabled at boot. [ 0.004064] Mount-cache hash table entries: 512 [ 0.004279] Initializing cgroup subsys ns [ 0.004285] Initializing cgroup subsys cpuacct [ 0.004290] Initializing cgroup subsys devices [ 0.004293] Initializing cgroup subsys freezer [ 0.004297] Initializing cgroup subsys net_cls [ 0.004333] CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line) [ 0.004336] CPU: L2 Cache: 256K (64 bytes/line) [ 0.004343] mce: CPU supports 4 MCE banks [ 0.004376] Performance Events: AMD PMU driver. [ 0.004385] ... version: 0 [ 0.004387] ... bit width: 48 [ 0.004389] ... generic registers: 4
  14. 14. [ 0.004391] ... value mask: 0000ffffffffffff [ 0.004393] ... max period: 00007fffffffffff [ 0.004396] ... fixed-purpose events: 0 [ 0.004398] ... event mask: 000000000000000f [ 0.004403] Checking 'hlt' instruction... OK. [ 0.020350] SMP alternatives: switching to UP code [ 0.024145] Freeing SMP alternatives: 13k freed [ 0.024172] ACPI: Core revision 20090903 [ 0.029004] Enabling APIC mode: Flat. Using 1 I/O APICs [ 0.029496] ..TIMER: vector=0x30 apic1=0 pin1=2 apic2=-1 pin2=-1 [ 0.069188] CPU0: AMD Athlon(tm) XP 2600+ stepping 01 [ 0.072001] Brought up 1 CPUs [ 0.072001] Total of 1 processors activated (4166.71 BogoMIPS). [ 0.072001] CPU0 attaching NULL sched-domain. [ 0.072001] devtmpfs: initialized [ 0.072001] regulator: core version 0.5 [ 0.072001] NET: Registered protocol family 16 [ 0.072001] ACPI: bus type pci registered [ 0.072001] PCI: PCI BIOS revision 2.10 entry at 0xf0031, last bus=1 [ 0.072001] bio: create slab <bio-0> at 0 [ 0.072001] ACPI: EC: Look up EC in DSDT [ 0.076291] ACPI: Executed 1 blocks of module-level executable AML code [ 0.081301] ACPI: Interpreter enabled [ 0.081305] ACPI: (supports S0 S1 S4 S5) [ 0.081328] ACPI: Using IOAPIC for interrupt routing [ 0.090448] ACPI Warning: Incorrect checksum in table [OEMB] - 92, should be 83 (20090903/tbutils- 314) [ 0.090527] ACPI: No dock devices found. [ 0.090654] ACPI: PCI Root Bridge [PCI0] (0000:00) [ 0.090713] pci 0000:00:00.0: reg 10 32bit mmio: [0xd0000000-0xd3ffffff] [ 0.090860] pci 0000:00:02.0: Enabling SiS 96x SMBus [ 0.090910] pci 0000:00:02.1: reg 20 io port: [0xc00-0xc1f]
  15. 15. [ 0.090971] pci 0000:00:02.5: reg 20 io port: [0xffa0-0xffaf] [ 0.091022] pci 0000:00:02.6: reg 10 io port: [0xe400-0xe4ff] [ 0.091030] pci 0000:00:02.6: reg 14 io port: [0xe080-0xe0ff] [ 0.091082] pci 0000:00:02.6: supports D1 D2 [ 0.091085] pci 0000:00:02.6: PME# supported from D3hot D3cold [ 0.091090] pci 0000:00:02.6: PME# disabled [ 0.091130] pci 0000:00:02.7: reg 10 io port: [0xe800-0xe8ff] [ 0.091138] pci 0000:00:02.7: reg 14 io port: [0xec00-0xec7f] [ 0.091189] pci 0000:00:02.7: supports D1 D2 [ 0.091192] pci 0000:00:02.7: PME# supported from D3hot D3cold [ 0.091197] pci 0000:00:02.7: PME# disabled [ 0.091223] pci 0000:00:03.0: reg 10 32bit mmio: [0xcfffd000-0xcfffdfff] [ 0.091280] pci 0000:00:03.1: reg 10 32bit mmio: [0xcfffe000-0xcfffefff] [ 0.091348] pci 0000:00:03.3: reg 10 32bit mmio: [0xcffff000-0xcfffffff] [ 0.091401] pci 0000:00:03.3: PME# supported from D0 D3hot D3cold [ 0.091406] pci 0000:00:03.3: PME# disabled [ 0.091448] pci 0000:00:04.0: reg 10 io port: [0xd800-0xd8ff] [ 0.091456] pci 0000:00:04.0: reg 14 32bit mmio: [0xcfffc000-0xcfffcfff] [ 0.091482] pci 0000:00:04.0: reg 30 32bit mmio pref: [0xcffc0000-0xcffdffff] [ 0.091511] pci 0000:00:04.0: supports D1 D2 [ 0.091513] pci 0000:00:04.0: PME# supported from D0 D1 D2 D3hot D3cold [ 0.091518] pci 0000:00:04.0: PME# disabled [ 0.091563] pci 0000:00:0b.0: reg 10 io port: [0xe000-0xe07f] [ 0.091570] pci 0000:00:0b.0: reg 14 32bit mmio: [0xcfffbc00-0xcfffbc7f] [ 0.091596] pci 0000:00:0b.0: reg 30 32bit mmio pref: [0xcffa0000-0xcffbffff] [ 0.091624] pci 0000:00:0b.0: supports D1 D2 [ 0.091626] pci 0000:00:0b.0: PME# supported from D1 D2 D3hot D3cold [ 0.091631] pci 0000:00:0b.0: PME# disabled [ 0.091701] pci 0000:01:00.0: reg 10 32bit mmio: [0xce000000-0xceffffff] [ 0.091708] pci 0000:01:00.0: reg 14 32bit mmio pref: [0xa0000000-0xbfffffff] [ 0.091729] pci 0000:01:00.0: reg 30 32bit mmio pref: [0xcfee0000-0xcfefffff] [ 0.091805] pci 0000:00:01.0: bridge 32bit mmio: [0xcde00000-0xcfefffff]
  16. 16. [ 0.091811] pci 0000:00:01.0: bridge 32bit mmio pref: [0x8dd00000-0xcdcfffff] [ 0.091820] pci_bus 0000:00: on NUMA node 0 [ 0.091825] ACPI: PCI Interrupt Routing Table [_SB_.PCI0._PRT] [ 0.093500] ACPI: PCI Interrupt Link [LNKA] (IRQs 3 4 5 7 10 *11 12 14 15) [ 0.093611] ACPI: PCI Interrupt Link [LNKB] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.093721] ACPI: PCI Interrupt Link [LNKC] (IRQs 3 4 5 7 *10 11 12 14 15) [ 0.093837] ACPI: PCI Interrupt Link [LNKD] (IRQs 3 4 *5 7 10 11 12 14 15) [ 0.093954] ACPI: PCI Interrupt Link [LNKE] (IRQs 3 4 5 7 10 *11 12 14 15) [ 0.094068] ACPI: PCI Interrupt Link [LNKF] (IRQs 3 4 *5 7 10 11 12 14 15) [ 0.094177] ACPI: PCI Interrupt Link [LNKG] (IRQs 3 4 5 7 10 11 12 14 15) *0, disabled. [ 0.094286] ACPI: PCI Interrupt Link [LNKH] (IRQs 3 4 *5 7 10 11 12 14 15) [ 0.094439] vgaarb: device added: PCI:0000:01:00.0,decodes=io+mem,owns=io+mem,locks=none [ 0.094442] vgaarb: loaded [ 0.094570] PCI: Using ACPI for IRQ routing [ 0.094764] Switching to clocksource tsc [ 0.096001] pnp: PnP ACPI init [ 0.096001] ACPI: bus type pnp registered [ 0.101860] pnp: PnP ACPI: found 14 devices [ 0.101862] ACPI: ACPI bus type pnp unregistered [ 0.101868] PnPBIOS: Disabled by ACPI PNP [ 0.101887] system 00:05: ioport range 0x480-0x48f has been reserved [ 0.101891] system 00:05: ioport range 0x4d0-0x4d1 has been reserved [ 0.101895] system 00:05: ioport range 0x800-0x87f has been reserved [ 0.101898] system 00:05: ioport range 0x880-0x8ff has been reserved [ 0.101902] system 00:05: ioport range 0xc00-0xc1f has been reserved [ 0.101908] system 00:05: iomem range 0xfff80000-0xffffffff could not be reserved [ 0.101911] system 00:05: iomem range 0xffe80000-0xffefffff has been reserved [ 0.101915] system 00:05: iomem range 0xfed00000-0xfed003ff has been reserved [ 0.101922] system 00:06: iomem range 0xfec00000-0xfec00fff could not be reserved [ 0.101926] system 00:06: iomem range 0xfee00000-0xfee00fff has been reserved [ 0.101933] system 00:0d: iomem range 0x0-0x9ffff could not be reserved [ 0.101937] system 00:0d: iomem range 0xc0000-0xdffff could not be reserved
  17. 17. [ 0.101940] system 00:0d: iomem range 0xe0000-0xfffff could not be reserved [ 0.101944] system 00:0d: iomem range 0x100000-0x7fffffff could not be reserved [ 0.136757] pci 0000:00:01.0: PCI bridge, secondary bus 0000:01 [ 0.136760] pci 0000:00:01.0: IO window: disabled [ 0.136768] pci 0000:00:01.0: MEM window: 0xcde00000-0xcfefffff [ 0.136773] pci 0000:00:01.0: PREFETCH window: 0x8dd00000-0xcdcfffff [ 0.136795] pci_bus 0000:00: resource 0 io: [0x00-0xffff] [ 0.136798] pci_bus 0000:00: resource 1 mem: [0x000000-0xffffffff] [ 0.136802] pci_bus 0000:01: resource 1 mem: [0xcde00000-0xcfefffff] [ 0.136806] pci_bus 0000:01: resource 2 pref mem [0x8dd00000-0xcdcfffff] [ 0.136857] NET: Registered protocol family 2 [ 0.136981] IP route cache hash table entries: 32768 (order: 5, 131072 bytes) [ 0.137569] TCP established hash table entries: 131072 (order: 8, 1048576 bytes) [ 0.139562] TCP bind hash table entries: 65536 (order: 7, 524288 bytes) [ 0.140575] TCP: Hash tables configured (established 131072 bind 65536) [ 0.140580] TCP reno registered [ 0.140726] NET: Registered protocol family 1 [ 0.140793] pci 0000:00:03.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 0.165195] pci 0000:00:03.0: PCI INT A disabled [ 0.165208] pci 0000:00:03.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 0.189183] pci 0000:00:03.1: PCI INT B disabled [ 0.189199] pci 0000:00:03.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 0.189214] pci 0000:00:03.3: PCI INT D disabled [ 0.189231] pci 0000:01:00.0: Boot video device [ 0.189318] Unpacking initramfs... [ 0.442018] Freeing initrd memory: 8302k freed [ 0.455628] audit: initializing netlink socket (disabled) [ 0.455653] type=2000 audit(1348612328.453:1): initialized [ 0.459348] highmem bounce pool size: 64 pages [ 0.459355] HugeTLB registered 4 MB page size, pre-allocated 0 pages [ 0.461088] VFS: Disk quotas dquot_6.5.2 [ 0.461210] Dquot-cache hash table entries: 1024 (order 0, 4096 bytes)
  18. 18. [ 0.461309] msgmni has been set to 1723 [ 0.461631] alg: No test for stdrng (krng) [ 0.461670] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 253) [ 0.461674] io scheduler noop registered [ 0.461676] io scheduler anticipatory registered [ 0.461679] io scheduler deadline registered [ 0.461719] io scheduler cfq registered (default) [ 0.461954] isapnp: Scanning for PnP cards... [ 0.815247] isapnp: No Plug & Play device found [ 0.816948] Linux agpgart interface v0.103 [ 0.817070] agpgart-sis 0000:00:00.0: SiS chipset [1039/0741] [ 0.822305] agpgart-sis 0000:00:00.0: AGP aperture is 64M @ 0xd0000000 [ 0.822367] Serial: 8250/16550 driver, 4 ports, IRQ sharing enabled [ 0.822485] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.822597] serial8250: ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A [ 0.822949] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A [ 0.823052] serial 0000:00:02.6: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 0.823059] serial 0000:00:02.6: PCI INT C disabled [ 0.823164] PNP: PS/2 Controller [PNP0303:PS2K,PNP0f03:PS2M] at 0x60,0x64 irq 1,12 [ 0.823481] serio: i8042 KBD port at 0x60,0x64 irq 1 [ 0.823493] serio: i8042 AUX port at 0x60,0x64 irq 12 [ 0.823623] mice: PS/2 mouse device common for all mice [ 0.823679] rtc_cmos 00:02: RTC can wake from S4 [ 0.823732] rtc_cmos 00:02: rtc core: registered rtc_cmos as rtc0 [ 0.823756] rtc0: alarms up to one month, 114 bytes nvram [ 0.823771] cpuidle: using governor ladder [ 0.823773] cpuidle: using governor menu [ 0.823779] No iBFT detected. [ 0.824287] TCP cubic registered [ 0.824457] NET: Registered protocol family 10 [ 0.825530] Mobile IPv6 [ 0.825535] NET: Registered protocol family 17
  19. 19. [ 0.825561] Using IPI No-Shortcut mode [ 0.825654] PM: Resume from disk failed. [ 0.825672] registered taskstats version 1 [ 0.825925] rtc_cmos 00:02: setting system clock to 2012-09-25 22:32:09 UTC (1348612329) [ 0.825972] Initalizing network drop monitor service [ 0.826016] Freeing unused kernel memory: 380k freed [ 0.826704] Write protecting the kernel text: 2508k [ 0.826727] Write protecting the kernel read-only data: 920k [ 0.840505] input: AT Translated Set 2 keyboard as /devices/platform/i8042/serio0/input/input0 [ 0.853421] udev[47]: starting version 164 [ 1.127784] SCSI subsystem initialized [ 1.153257] Floppy drive(s): fd0 is 1.44M [ 1.176610] sis900.c: v1.08.10 Apr. 2 2006 [ 1.176685] sis900 0000:00:04.0: PCI INT A -> GSI 19 (level, low) -> IRQ 19 [ 1.177627] 0000:00:04.0: Realtek RTL8201 PHY transceiver found at address 1. [ 1.186912] 0000:00:04.0: Using transceiver found at address 1 as default [ 1.187872] usbcore: registered new interface driver usbfs [ 1.188103] usbcore: registered new interface driver hub [ 1.188325] usbcore: registered new device driver usb [ 1.189653] eth0: SiS 900 PCI Fast Ethernet at 0xd800, IRQ 19, 00:11:5b:c2:f8:15 [ 1.191523] FDC 0 is a post-1991 82077 [ 1.206044] 3c59x 0000:00:0b.0: PCI INT A -> GSI 18 (level, low) -> IRQ 18 [ 1.206080] 3c59x: Donald Becker and others. [ 1.206093] 0000:00:0b.0: 3Com PCI 3c905B Cyclone 100baseTx at f7df8c00. [ 1.228973] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver [ 1.229033] libata version 3.00 loaded. [ 1.233295] ehci_hcd 0000:00:03.3: PCI INT D -> GSI 23 (level, low) -> IRQ 23 [ 1.233338] ehci_hcd 0000:00:03.3: EHCI Host Controller [ 1.233377] ehci_hcd 0000:00:03.3: new USB bus registered, assigned bus number 1 [ 1.233441] ehci_hcd 0000:00:03.3: cache line size of 64 is not supported [ 1.233466] ehci_hcd 0000:00:03.3: irq 23, io mem 0xcffff000 [ 1.244019] ehci_hcd 0000:00:03.3: USB 2.0 started, EHCI 1.00
  20. 20. [ 1.244072] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 1.244076] usb usb1: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 1.244080] usb usb1: Product: EHCI Host Controller [ 1.244082] usb usb1: Manufacturer: Linux 2.6.32-5-686 ehci_hcd [ 1.244085] usb usb1: SerialNumber: 0000:00:03.3 [ 1.244237] usb usb1: configuration #1 chosen from 1 choice [ 1.244285] hub 1-0:1.0: USB hub found [ 1.244303] hub 1-0:1.0: 6 ports detected [ 1.244566] pata_sis 0000:00:02.5: version 0.5.2 [ 1.250577] scsi0 : pata_sis [ 1.251214] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver [ 1.252104] scsi1 : pata_sis [ 1.253093] ata1: PATA max UDMA/133 cmd 0x1f0 ctl 0x3f6 bmdma 0xffa0 irq 14 [ 1.253098] ata2: PATA max UDMA/133 cmd 0x170 ctl 0x376 bmdma 0xffa8 irq 15 [ 1.253677] ohci_hcd 0000:00:03.0: PCI INT A -> GSI 20 (level, low) -> IRQ 20 [ 1.253722] ohci_hcd 0000:00:03.0: OHCI Host Controller [ 1.253744] ohci_hcd 0000:00:03.0: new USB bus registered, assigned bus number 2 [ 1.253794] ohci_hcd 0000:00:03.0: irq 20, io mem 0xcfffd000 [ 1.310043] usb usb2: New USB device found, idVendor=1d6b, idProduct=0001 [ 1.310048] usb usb2: New USB device strings: Mfr=3, Product=2, SerialNumber=1 [ 1.310052] usb usb2: Product: OHCI Host Controller [ 1.310054] usb usb2: Manufacturer: Linux 2.6.32-5-686 ohci_hcd [ 1.310057] usb usb2: SerialNumber: 0000:00:03.0 [ 1.310334] usb usb2: configuration #1 chosen from 1 choice [ 1.310428] hub 2-0:1.0: USB hub found [ 1.310448] hub 2-0:1.0: 3 ports detected [ 1.310551] ohci_hcd 0000:00:03.1: PCI INT B -> GSI 21 (level, low) -> IRQ 21 [ 1.310593] ohci_hcd 0000:00:03.1: OHCI Host Controller [ 1.310607] ohci_hcd 0000:00:03.1: new USB bus registered, assigned bus number 3 [ 1.310651] ohci_hcd 0000:00:03.1: irq 21, io mem 0xcfffe000 [ 1.366023] usb usb3: New USB device found, idVendor=1d6b, idProduct=0001 [ 1.366027] usb usb3: New USB device strings: Mfr=3, Product=2, SerialNumber=1
  21. 21. [ 1.366030] usb usb3: Product: OHCI Host Controller [ 1.366033] usb usb3: Manufacturer: Linux 2.6.32-5-686 ohci_hcd [ 1.366035] usb usb3: SerialNumber: 0000:00:03.1 [ 1.366283] usb usb3: configuration #1 chosen from 1 choice [ 1.366384] hub 3-0:1.0: USB hub found [ 1.366403] hub 3-0:1.0: 3 ports detected [ 1.424306] ata1.00: HPA detected: current 156247887, native 156250000 [ 1.424314] ata1.00: ATA-6: WDC WD800BB-75JHC0, 06.01C06, max UDMA/100 [ 1.424318] ata1.00: 156247887 sectors, multi 16: LBA [ 1.469942] ata1.01: ATA-7: ST3802110A, 3.AAJ, max UDMA/100 [ 1.469947] ata1.01: 156301488 sectors, multi 16: LBA48 [ 1.476317] ata1.00: configured for UDMA/100 [ 1.553084] ata1.01: configured for UDMA/100 [ 1.553274] scsi 0:0:0:0: Direct-Access ATA WDC WD800BB-75JH 06.0 PQ: 0 ANSI: 5 [ 1.553761] scsi 0:0:1:0: Direct-Access ATA ST3802110A 3.AA PQ: 0 ANSI: 5 [ 1.772403] ata2.00: ATA-6: ST380011A, 8.01, max UDMA/100 [ 1.772407] ata2.00: 156301488 sectors, multi 16: LBA48 [ 1.788395] ata2.00: configured for UDMA/100 [ 1.788548] scsi 1:0:0:0: Direct-Access ATA ST380011A 8.01 PQ: 0 ANSI: 5 [ 1.813191] sd 0:0:0:0: [sda] 156247887 512-byte logical blocks: (79.9 GB/74.5 GiB) [ 1.813265] sd 0:0:0:0: [sda] Write Protect is off [ 1.813269] sd 0:0:0:0: [sda] Mode Sense: 00 3a 00 00 [ 1.813299] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.813485] sda: [ 1.814303] sd 1:0:0:0: [sdc] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB) [ 1.814373] sd 1:0:0:0: [sdc] Write Protect is off [ 1.814376] sd 1:0:0:0: [sdc] Mode Sense: 00 3a 00 00 [ 1.814404] sd 1:0:0:0: [sdc] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.814604] sdc: sdc1 [ 1.823395] sd 1:0:0:0: [sdc] Attached SCSI disk [ 1.834722] sda1 sda2 < [ 1.865512] sd 0:0:1:0: [sdb] 156301488 512-byte logical blocks: (80.0 GB/74.5 GiB)
  22. 22. [ 1.865579] sd 0:0:1:0: [sdb] Write Protect is off [ 1.865582] sd 0:0:1:0: [sdb] Mode Sense: 00 3a 00 00 [ 1.865610] sd 0:0:1:0: [sdb] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA [ 1.865720] sda5 > [ 1.866667] sdb: sdb1 sdb2 < [ 1.906747] sd 0:0:0:0: [sda] Attached SCSI disk [ 1.906755] sdb5 > [ 1.907786] sd 0:0:1:0: [sdb] Attached SCSI disk [ 2.574346] PM: Starting manual resume from disk [ 2.574354] PM: Resume from partition 8:5 [ 2.574356] PM: Checking hibernation image. [ 2.605163] PM: Error -22 checking image file [ 2.605166] PM: Resume from disk failed. [ 2.681661] kjournald starting. Commit interval 5 seconds [ 2.681680] EXT3-fs: mounted filesystem with ordered data mode. [ 5.062608] udev[314]: starting version 164 [ 5.645563] input: PC Speaker as /devices/platform/pcspkr/input/input1 [ 6.001924] input: Power Button as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0C0C:00/input/input2 [ 6.001950] ACPI: Power Button [PWRB] [ 6.002253] input: Power Button as /devices/LNXSYSTM:00/LNXPWRBN:00/input/input3 [ 6.002259] ACPI: Power Button [PWRF] [ 6.057268] processor LNXCPU:00: registered as cooling_device0 [ 6.077612] pci_hotplug: PCI Hot Plug PCI Core version: 0.5 [ 6.097312] parport_pc 00:0a: reported by Plug and Play ACPI [ 6.097393] parport0: PC-style at 0x378 (0x778), irq 7 [PCSPP,TRISTATE] [ 6.172759] sis96x_smbus 0000:00:02.1: SiS96x SMBus base address: 0x0c00 [ 6.185176] shpchp: Standard Hot Plug PCI Controller Driver version: 0.4 [ 6.708702] input: ImPS/2 Generic Wheel Mouse as /devices/platform/i8042/serio1/input/input4 [ 7.486157] nvidia: module license 'NVIDIA' taints kernel. [ 7.486165] Disabling lock debugging due to kernel taint [ 8.181283] nvidia 0000:01:00.0: PCI INT A -> GSI 16 (level, low) -> IRQ 16
  23. 23. [ 8.181300] vgaarb: device changed decodes: PCI:0000:01:00.0,olddecodes=io+mem,decodes=none:owns=io+mem [ 8.182544] NVRM: loading NVIDIA UNIX x86 Kernel Module 173.14.35 Thu May 31 12:00:16 PDT 2012 [ 8.930799] Intel ICH Modem 0000:00:02.6: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 8.967086] Intel ICH 0000:00:02.7: PCI INT C -> GSI 18 (level, low) -> IRQ 18 [ 9.792017] intel8x0_measure_ac97_clock: measured 55358 usecs (2663 samples) [ 9.792023] intel8x0: clocking to 48000 [ 10.477584] Adding 3210232k swap on /dev/sda5. Priority:-1 extents:1 across:3210232k [ 10.847248] EXT3 FS on sda1, internal journal [ 10.987850] loop: module loaded [ 12.781286] fuse init (API version 7.13) [ 16.644873] eth1: setting half-duplex. [ 16.645239] ADDRCONF(NETDEV_UP): eth1: link is not ready [ 18.496909] eth0: Media Link On 100mbps full-duplex [ 21.019540] Bluetooth: Core ver 2.15 [ 21.019672] NET: Registered protocol family 31 [ 21.019675] Bluetooth: HCI device and connection manager initialized [ 21.019680] Bluetooth: HCI socket layer initialized [ 21.530508] Bluetooth: L2CAP ver 2.14 [ 21.530515] Bluetooth: L2CAP socket layer initialized [ 21.552792] Bluetooth: BNEP (Ethernet Emulation) ver 1.3 [ 21.552800] Bluetooth: BNEP filters: protocol multicast [ 21.561040] Bluetooth: RFCOMM TTY layer initialized [ 21.561049] Bluetooth: RFCOMM socket layer initialized [ 21.561051] Bluetooth: RFCOMM ver 1.11 [ 21.613103] Bridge firewalling registered [ 21.846735] Bluetooth: SCO (Voice Link) ver 0.6 [ 21.846741] Bluetooth: SCO socket layer initialized [ 22.477470] [drm] Initialized drm 1.1.0 20060810 [ 23.111115] lp0: using parport0 (interrupt-driven). [ 23.152301] ppdev: user-space parallel port driver [ 27.388011] eth0: no IPv6 routers present
  24. 24. BIOS BIOS BIOS é um acrônimo para Basic Input/Output System, ou seja, Sistema Básico de Entrada/Saída. A BIOS é um firmware de boot, que é o primeiro código que o computador executa quando ligado. A função inicial dela é identificar, testar e inicializar os dispositivos do sistema, tais como monitor, disco rígido, disquete e outros. Os programas de BIOS são armazenados em um chip e são construídos para trabalhar com vários dispositivos, que complementam o CHIPSET do sistema. Eles provêm uma pequena biblioteca de funções de entrada/saída que podem ser chamadas para operar e controlar os periféricos, tais como teclados, monitores, e assim por diante. As BIOS de antigamente eram escritos em chips ROM (Read-Only Memory) ou PROM(Programmable ROM), que não permitiam a alteração por usuários. Quando a complexidade e necessidade de updates cresceu, a BIOS passou a ser escrita em chips reprogramáveis. Mais informações em: http://en.wikipedia.org/wiki/BIOS bootloader bootloader Um processador central de um computador pode executar apenas os códigos encontrados em ROMs ou RAMs(Random Access Memory). Os sistemas operacionais modernos, os programas e seus códigos e dados estão armazenados em um dispositivo de armazenamento não voláteis, tais como discos rígidos, cd, dvd, pen drives, dentre outros. Desta forma, quando um computador é ligado, ele não possui um sistema operacional na ROM ou na RAM. Primeiramente o computador deve executar um pequeno programa armazenado na ROM junto com o mínimo de dados necessários para acessar os dispositivos não voláteis nos quais os programas e sistema operacional estão armazenados e transferí-lo para a RAM, possibilitando assim o início do sistema.
  25. 25. Este pequeno programa que inicia esta sequência de carregamento para a RAM é conhecido como bootloader. A única função deste programa é carregar os outros dados e programas necessários para a RAM. Frequentemente, bootloaders de estágios múltiplos são utilizados, desta forma, vários programas de complexidade crescente, sequencialmente, carregam um após o outro, num processo chamado chain loading (carregamento em cadeia) até que o sistema possa ser iniciado. Os bootloaders devem ser localizados nos primeiros 446 bytes de um disco rígido, num local chamado MBR(Master Boot Record). kernel kernel O kernel é o componente central dos sistemas Linux. Ele funciona como uma ponte entre as aplicações e os dados processados a nível de hardware. Entre as responsabilidades do kernel está o gerenciamento dos recursos do sistema. Geralmente como um componente básico do sistema operacional, o kernel pode prover a camada mais baixa de abstração para os recursos (especialmente processadores e dispositivos de E/S) que os softwares devem controlar para realizar sua função. Isto é feito pelos processos via mecanismos de comunicação entre processos e chamadas ao sistema (system calls). Na maioria dos sistemas, o bootloader inicia executando o kernel. O kernel então inicializa a si próprio e inicia o primeiro processo. Após isto, o kernel normalmente não executa diretamente, apenas em resposta a eventos externos (via system calls ou interrupts, por exemplo) O kernel é responsável pelos recursos: CPU, memória e E/S. É função do kernel decidir qual programa deve executar no processador e por quanto tempo (considerando que cada processador só pode rodar um programa por vez). É função do kernel decidir, em que parte da memória, quais programas podem armazenar instruções e dados. Muitas vezes a memória disponível pode não ser suficiente para o que todos os programas desejam, ficando assim para o kernel a responsabilidade de decidir o que fazer quando não há espaço suficiente. É função do kernel também gerenciar pedidos de aplicações para realizar E/S em um dispositivo.
  26. 26. init init Init, que é uma abreviação para initialization (inicialização), é o programa responsável por criar todos os outros processos. Ele roda como um daemon e tipicamente tem o PID (process identification) 1. É sua função criar os processos de um script armazenado no arquivo /etc/inittab. Este arquivo geralmente tem entradas que fazem com que o init crie ttys, que são terminais que permitem que os usuários se loguem. Exemplo do arquivo inittab: # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 Ele também controla processos autônomos requeridos por um sistema particular. O processo init... ...só pode ser criado pelo superusuário. ...é responsável por entregar o kernel ao bootloader. ...é o programa que inicia todos os processos em um sistema.
  27. 27. Lição 3 - Modificando Runlevels, Desligando e Reiniciando o Sistema /etc/inittab A seguir uma inittab completa: pedro-brito@cdtcsun04:~$ cat /etc/inittab # /etc/inittab: init(8) configuration. # $Id: inittab,v 1.91 2002/01/25 13:35:21 miquels Exp $ # The default runlevel. id:2:initdefault: # Boot-time system configuration/initialization script. # This is run first except when booting in emergency (-b) mode. si::sysinit:/etc/init.d/rcS # What to do in single-user mode. ~~:S:wait:/sbin/sulogin # /etc/init.d executes the S and K scripts upon change # of runlevel. # # Runlevel 0 is halt. # Runlevel 1 is single-user. # Runlevels 2-5 are multi-user. # Runlevel 6 is reboot. l0:0:wait:/etc/init.d/rc 0 l1:1:wait:/etc/init.d/rc 1 l2:2:wait:/etc/init.d/rc 2 l3:3:wait:/etc/init.d/rc 3 l4:4:wait:/etc/init.d/rc 4 l5:5:wait:/etc/init.d/rc 5 l6:6:wait:/etc/init.d/rc 6 # Normally not reached, but fallthrough in case of emergency. z6:6:respawn:/sbin/sulogin # What to do when CTRL-ALT-DEL is pressed. ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
  28. 28. # Action on special keypress (ALT-UpArrow). #kb::kbrequest:/bin/echo "Keyboard Request--edit /etc/inittab to let this work." # What to do when the power fails/returns. pf::powerwait:/etc/init.d/powerfail start pn::powerfailnow:/etc/init.d/powerfail now po::powerokwait:/etc/init.d/powerfail stop # /sbin/getty invocations for the runlevels. # # The "id" field MUST be the same as the last # characters of the device (after "tty"). # # Format: # <id>:<runlevels>:<action>:<process> # # Note that on most Debian systems tty7 is used by the X Window System, # so if you want to add more getty's go ahead but skip tty7 if you run X. # 1:2345:respawn:/sbin/getty 38400 tty1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 4:23:respawn:/sbin/getty 38400 tty4 5:23:respawn:/sbin/getty 38400 tty5 6:23:respawn:/sbin/getty 38400 tty6 # Example how to put a getty on a serial line (for a terminal) # #T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100 #T1:23:respawn:/sbin/getty -L ttyS1 9600 vt100 # Example how to put a getty on a modem line. # #T3:23:respawn:/sbin/mgetty -x0 -s 57600 ttyS3 Mais a frente detalharemos um pouco esta tabela. Definindo e alterando runlevels Definindo e alterando runlevels
  29. 29. O termo runlevel se refere ao modo de operação num sistema operacional Unix. Existem sete runlevels, numerados de zero a seis, apesar de que podem ser usados até dez (de zero a nove). Algumas vezes 'S' é utilizado como um sinônimo para um dos levels. A configuração exata dos runlevels variam de sistema para sistema. A seguir a tabela de runlevels para o debian: ID Description 0 Halt 1 Single-User mode 2-5 Full Multi-User with console logins and display manager if installed 6 Reboot Para alterar o runlevel do sistema, utilize o comando telinit N, substituindo 'N' pelo runlevel desejado. Este comando requer poderes de superusuário. Para definir o runlevel padrão, basta alterar o arquivo inittab, presente como exemplo na página anterior. # The default runlevel. id:2:initdefault: Esta é a linha a ser alterada. Basta trocar o 2 pelo runlevel desejado. Qual é a saída provável ao se utilizar o seguinte comando: $ telinit 0 The system is going for halt NOW... The system is going for reboot NOW... bash: telinit 0: Permissão negada. Tem certeza que deseja desligar? (YES/no) shutdown shutdown
  30. 30. O comando shutdown desliga o sistema de uma forma segura. Todos os usuários logados são notificados que o sistema está sendo desligado e futuros logins são bloqueados. É possível desligar imediatamente ou após um atraso especificado. Todos os processos são notificados que o sistema está sendo desligado. Isto dá aos programas chance de finalizar sem erros. Sintaxe: shutdown [opções] TEMPO [mensagem de aviso] As principais opções são: -r: reiniciar; -h: desligar; -c: cancela um desligamento agendado. O TEMPO pode ter vários formatos. Pode ser absoluto (hh:mm). Pode ser no formato +m, que desligará o sistema daqui a 'm' minutos. O "now" é um alias para +0. A mensagem de aviso opcional deve estar entre aspas duplas. Este comando só pode ser utilizado pelo superusuário. kill kill Terminando processos de forma apropriada: O comando kill manda um sinal para um processo. O sinal padrão para kill é TERM, que fará com que o programa finalize normalmente. O sinal KILL (9) fará com que o programa finalize imediatamente, sem salvar os dados alterados. Os sinais disponíveis são: Name Num Action Description 0 0 n/a exit code indicates if a signal may be sent ALRM 14 exit HUP 1 exit
  31. 31. INT 2 exit KILL 9 exit cannot be blocked PIPE 13 exit POLL exit PROF exit TERM 15 exit USR1 exit USR2 exit VTALRM exit STKFLT exit might not be implemented PWR ignore might exit on some systems WINCH ignore CHLD ignore URG ignore TSTP stop might interact with the shell TTIN stop might interact with the shell TTOU stop might interact with the shell STOP stop cannot be blocked CONT restart continue if stopped, otherwise ignore ABRT 6 core FPE 8 core ILL 4 core QUIT 3 core SEGV 11 core TRAP 5 core SYS core might not be implemented EMT core might not be implemented BUS core core dump might fail XCPU core core dump might fail XFSZ core core dump might fail Sintaxe: kill [ -sinal | -s sinal ] pid ... kill [ -L | -V, --version ] kill -l [ sinal ] Exemplos de utilização: kill -9 -1 Mata todos os processos que você pode matar. kill -l 11
  32. 32. Traduz o número 11 em um nome de sinal. kill -L Lista os sinais disponíveis em uma tabela(mostrada acima). kill 123 543 2341 3453 Manda o sinal padrão, TERM (15) para todos estes programas. Lição 4 - Criando Modelo de Disco Rígido Swap Para ser instalado, o Linux precisa de duas partições. Uma delas será o diretório raiz do sistema (/) e a outra será a área de swap. A área de swap funciona como uma memória virtual. Quando dados de programas em execução não estão sendo acessados constantemente, estes dados passam para a área de swap, liberando assim um espaço na memória RAM para permitir que mais programas rodem ao mesmo tempo. Assim que dados na swap forem necessários, eles voltarão à memória principal, enquanto os dados que constam lá que estão sendo menos utilizados serão colocados na swap. Recomenda-se que a swap deve ter o dobro do tamanho da sua memória RAM, mas lembre-se que esta regra não é universal. Você deve ser capaz de definir o próprio tamanho de swap com base nos softwares que você pretende utilizar! Para criar um arquivo de swap, utilize o seguinte comando: # dd if=/dev/zero of=/particaoswap bs=1024 count=262144 Sendo bs o tamanho do bloco em bytes e count o número de blocos utilizados, o tamanho da swap será: 1024*262144, o que dá aproximadamente 256MB. Após criado, deve-se preparar o arquivo para ser utilizado como swap: # mkswap particaoswap Em seguida, iniciamos o uso do arquivo de swap:
  33. 33. # swapon particaoswap Lembrando que esta partição swap estará disponível apenas durante esta sessão. Para que esta partição criada seja montada durante a inicialização do sistema, a seguinte linha deve ser incluída no arquivo /etc/fstab: /particaoswap swap swap defaults 0 0 Analise a seguinte afirmação: A swap consiste de uma parte do disco rígido que funciona como uma memória RAM virtual, de forma a acelerar o sistema, aumentando a memória RAM disponível. Falso. Verdadeiro. /boot Este diretório contêm tudo que é necessário para o processo de boot, exceto arquivos de configuração que não são necessários no momento do boot e o map installer. Desta forma, o /boot armazena os dados que são utilizados antes que o kernel comece a executar os programas em modo de usuário. Isto pode incluir master boot sectors salvos e sector map files. Frequentemente este diretório está em uma partição diferente do resto do sistema operacional. Instalando o grub No primeiro setor do disco rígido, a MBR, estão as tabelas de partições e o carregador de boot. A função do carregador de boot é encontrar o kernel a ser iniciado e carregá-lo junto a memória. Os dois gerenciadores mais populares do Linux são o Lilo e o Grub. Considerando que o grub possui mais opções que o lilo, e seu utilitário de configuração é automatizado, utilizaremos ele neste curso. Grub é um acrônimo para Grand Unified Bootloader. Após realizar alterações, o grub será atualizado com o comando update-grub. Para instalar o grub na MBR, utiliza-se o comando /sbin/grub-install ou /sbin/grub, dependendo da versão do sistema. Ao instalar o grub, ele provavelmente já listará todos os kerneis instalados. Caso não seja, adicione
  34. 34. ao final do menu.lst e rode o comando update-grub. Segue abaixo um exemplo do arquivo de configuração /boot/grub/menu.lst do grub: pedro-brito@cdtcsun04:~$ cat /boot/grub/menu.lst # menu.lst - See: grub(8), info grub, update-grub(8) # grub-install(8), grub-floppy(8), # grub-md5-crypt, /usr/share/doc/grub # and /usr/share/doc/grub-legacy-doc/. ## default num # Set the default entry to the entry number NUM. Numbering starts from 0, and # the entry number 0 is the default if the command is not used. # # You can specify 'saved' instead of a number. In this case, the default entry # is the entry saved with the command 'savedefault'. # WARNING: If you are using dmraid do not change this entry to 'saved' or your # array will desync and will not let you boot your system. default 0 ## timeout sec # Set a timeout, in SEC seconds, before automatically booting the default entry # (normally the first entry defined). timeout 5 # Pretty colours color cyan/blue white/blue ## password ['--md5'] passwd # If used in the first section of a menu file, disable all interactive editing # control (menu entry editor and command-line) and entries protected by the # command 'lock' # e.g. password topsecret # password --md5 $1$gLhU0/$aW78kHK1QfV3P2b2znUoe/ # password topsecret # # examples # # title Windows 95/98/NT/2000 # root (hd0,0) # makeactive # chainloader +1 # # title Linux # root (hd0,1) # kernel /vmlinuz root=/dev/hda2 ro #
  35. 35. # # Put static boot stanzas before and/or after AUTOMAGIC KERNEL LIST ### BEGIN AUTOMAGIC KERNELS LIST ## lines between the AUTOMAGIC KERNELS LIST markers will be modified ## by the debian update-grub script except for the default options below ## DO NOT UNCOMMENT THEM, Just edit them to your needs ## ## Start Default Options ## ## default kernel options ## default kernel options for automagic boot options ## If you want special options for specific kernels use kopt_x_y_z ## where x.y.z is kernel version. Minor versions can be omitted. ## e.g. kopt=root=/dev/hda1 ro ## kopt_2_6_8=root=/dev/hdc1 ro ## kopt_2_6_8_2_686=root=/dev/hdc2 ro # kopt=root=/dev/sda1 ro ## default grub root device ## e.g. groot=(hd0,0) # groot=(hd0,0) ## should update-grub create alternative automagic boot options ## e.g. alternative=true ## alternative=false # alternative=true ## should update-grub lock alternative automagic boot options ## e.g. lockalternative=true ## lockalternative=false # lockalternative=false ## additional options to use with the default boot option, but not with the ## alternatives ## e.g. defoptions=vga=791 resume=/dev/hda5 # defoptions=vga=791 quiet ## should update-grub lock old automagic boot options ## e.g. lockold=false ## lockold=true # lockold=false ## Xen hypervisor options to use with the default Xen boot option # xenhopt= ## Xen Linux kernel options to use with the default Xen boot option # xenkopt=console=tty0 ## altoption boot targets option
  36. 36. ## multiple altoptions lines are allowed ## e.g. altoptions=(extra menu suffix) extra boot options ## altoptions=(single-user) single # altoptions=(single-user mode) single ## controls how many kernels should be put into the menu.lst ## only counts the first occurence of a kernel, not the ## alternative kernel options ## e.g. howmany=all ## howmany=7 # howmany=all ## should update-grub create memtest86 boot option ## e.g. memtest86=true ## memtest86=false # memtest86=true ## should update-grub adjust the value of the default booted system ## can be true or false # updatedefaultentry=false ## should update-grub add savedefault to the default options ## can be true or false # savedefault=false ## ## End Default Options ## title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro vga=791 quiet initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.26-2-686 ### END DEBIAN AUTOMAGIC KERNELS LIST A maioria das configurações já possuem sua própria explicação no arquivo. Explicarei a seguir como é feito a nomeação dos dispositivos listados.  title -> Nome que aparecerá no menu para escolher entre os kernels.  root -> Endereço do diretório raiz. (hd0) significa o primeiro disco rígido. (hd0,0) significa a primeira partição do primeiro disco rígido. (hd0,1) significa a segunda partição do primeiro disco rígido e assim sucessivamente.  kernel -> Caminho do kernel e opções de início.
  37. 37.  initrd -> Initial ramdisk. É um sistema de arquivos temporário, utilizado para fazer preparações antes que o verdadeiro sistema de arquivos raiz possa ser montado. Para adicionar a entrada do kernel 2.6.27-2-686, que está instalado na segunda partição do primeio hd. # update-grub kernel.new hd0,1 /boot/initrd.img-2.6.27-2-686 # kernel.new hd0,1 /boot/initrd.img-2.6.27-2-686 # update-grub hd0,1 /boot/initrd.img-2.6.27-2-686 Adicione as seguintes linhas ao kernel em menu.lst e rode o comando update-grub: title Novo Kernel, kernel 2.6.27-2-686 root (hd0,1) kernel /boot/vmlinuz-2.6.27-2-686 root=/dev/sda2 ro vga=791 quiet initrd /boot/initrd.img-2.6.27-2-686 Lição 6 - Gerenciando Bibliotecas Compartilhadas Bibliotecas Compartilhadas Bibliotecas são arquivos para compartilhar funções comuns de programas, a todos os programas que utilizam tais funções. Quando o programa for compilado, ele vai verificar quais bibliotecas ele necessita e se ligará às bibliotecas necessárias, que estão em um local determinado, tais como /lib e /usr/lib (as padrões do sistema). Caso você deseje adicionar um novo diretório de bibliotecas, basta simplesmente incluir o caminho completo para o diretório no arquivo /etc/ld.so.conf. Após a alteração do arquivo, utilize o seguinte comando para que a mudança seja efetivada: #ldconfig Julgue a seguinte afirmação: Uma biblioteca compartilhada é um conjunto de funções que são comuns a diferentes programas.
  38. 38. Falso. Verdadeiro. Lição 7 - Utilizando o Gerenciador de Pacotes do Debian dpkg O dpkg é uma ferramenta para instalar, montar, remover e gerenciar pacotes Debian. O uso principal e mais user-friendly front-end é o aptitude, porém ele não será abordado aqui. Controlaremos o dpkg via linha de comando. Sua sintaxe é a seguinte: dpkg [options] action O parâmetro action diz ao dpkg o que fazer e as options controlam o comportamento da ação. A action -i ou --install, seguida do nome do pacote instala o pacote. Note que neste caso é necessário já ter o arquivo do pacote salvo no seu computador. A action -r ou --remove seguida do nome do pacote, desinstala o pacote e remove tudo, exceto os arquivos de configuração, para o caso de o pacote ser reinstalado, não ser necessário reconfigurá-lo. A action -P ou --purge seguida do nome do pacote é semelhante ao --remove, porém, neste caso, os arquivos de configuração são também excluídos. Uma desvantagem do dpkg sobre o apt é que todos os pacotes a serem instalados devem ter sido obtidos de uma outra fonte APT O APT é a principal ferramenta de gerenciamento de pacotes do Debian, na qual se pode obter um poder muito grande no gerenciamento de pacotes, devido as suas vastas opções. Para instalar um pacote via apt, não é necessário colocar sua versão, diferentemente do dpkg, assim como também não é necessário obter o pacote
  39. 39. previamente. Para instalar um pacote utiliza-se a opção install do apt-get: # apt-get install NOME DO PACOTE Caso você não saiba o nome do pacote que você deseja instalar, você pode buscá-lo através do comando: apt-cache search BUSCA Este comando retornará todos os pacotes em que aparecem a palavra BUSCA e então você pode instalar o pacote desejado. Mais de um pacote pode ser especificado quando for instalar. Caso o programa seja um programa novo, possivelmente ele não retornará nenhum resultado quando utilizado o comando search do apt-cache, porém, utilizando o comando: # apt-get update. O apt-get re-sincronizará seu índice de pacotes com o do servidor, possibilitando assim, a inclusão de novos pacotes para a instalação. Se ainda assim o pacote desejado não aparecer na listagem, pode-se editar o arquivo /etc/apt/sources.list, que é onde encontram-se os updates para que os novos pacotes apareçam na listagem. Para desinstalar um programa via apt-get, o comando necessário segue o mesmo padrão da instalação, porém o comando agora é "remove" para manter os arquivos de configuração e "purge" para excluir os arquivos de configuração. Assim como era com o dpkg. Novamente, mais de um pacote pode ser selecionado por vez. Julgue a seguinte afirmação: É possível adicionar outros repositórios de programas aos já incluídos no sources.list. Verdadeiro. Falso. Informações Para obter informações variadas sobre os pacotes, utilize o comando dpkg
  40. 40. --status PACOTE, como no exemplo, informações sobre o pacote iceweasel: pedro-brito@cdtcsun04:~$ dpkg --status iceweasel Package: iceweasel Status: install ok installed Priority: optional Section: web Installed-Size: 3900 Maintainer: Eric Dorland <eric@debian.org> Architecture: i386 Version: 3.0.6-3 Replaces: firefox (<< 2.0+dfsg-1), iceweasel-gnome-support (<= 3.0~b5-2), mozilla-firefox Provides: www-browser Depends: fontconfig, psmisc, procps, debianutils (>= 1.16), libc6 (>= 2.7-1), libgcc1 (>= 1:4.1.1), libglib2.0-0 (>= 2.12.0), libgtk2.0-0 (>= 2.12.0), libnspr4-0d (>= 1.8.0.10), libstdc++6 (>= 4.1.1), xulrunner-1.9 (>= 1.9.0.3-1) Suggests: xulrunner-1.9-gnome-support, latex-xft-fonts, xfonts-mathml, ttf-mathematica4.1, xprint, mozplugger, libkrb53 Conflicts: firefox (<< 2.0+dfsg-1), iceweasel-dom-inspector (<< 3.0~b4), mozilla-firefox (<< 1.5.dfsg-1) Conffiles: /etc/iceweasel/pref/iceweasel.js f1bcbce2d713f2f639a9a9db7c3ad228 /etc/iceweasel/profile/chrome/userContent-example.css d3765c7d2de5626529195007f4b7144a /etc/iceweasel/profile/chrome/userChrome-example.css 4788fdaa51b0a238cb21f5c2877ef06d /etc/iceweasel/profile/prefs.js 99940ecd258d83b3355ab06fca0ffddb /etc/iceweasel/profile/mimeTypes.rdf 69cdcb7e0209f2e9d29000ee1c0ee2f0 /etc/iceweasel/profile/bookmarks.html 5268a062e398d7c991f16155159088a3 /etc/iceweasel/profile/localstore.rdf ea03cc19c2a3f622fa557cd8ea9da6eb /etc/iceweasel/iceweaselrc a7f1bcffd6febdb02e86652a60ebfd16 Description: lightweight web browser based on Mozilla Iceweasel is a redesign of the Mozilla browser component, similar to Galeon, K-Meleon and Camino, but written using the XUL user interface language and designed to be lightweight and cross-platform. . This browser is based on the Firefox source-code, with minor modifications. Historically, this browser was previously known as Firebird and Phoenix. Lição 8 - Gerenciando Pacotes com YUM e RPM
  41. 41. Pacotes com YUM e RPM Utilizando o YUM:  yum list - Lista todos os pacotes disponíveis;  yum check-update ou yum list updates - Verifica se há pacotes disponíveis para um update ;  yum update - Faz o update de seu sistema;  yum update <package> - Faz o update apenas de <package>;  yum install <package(s)> - Instala um pacote específico e suas dependências;  yum info <package> - Apresenta informações básicas de um determinado pacote. Utilizando o RPM:  rpm -q <package> - Lista os pacotes disponíveis que se relacionam a <package> (Este comando pode ser utilizado para visualizar o status do pacote no sistema);  rpm -e <package> - Remove o <package>;  rpm -i <package> - Instala o pacote <package>;  rpm -ql <package> - Mostra quais arquivos estão contidos no pacote. Julgue a seguinte afirmação: É possível utilizar o grep para refirnar a listagem dos pacotes do yum, como em: yum list | grep <nome do pacote> Verdadeiro. Falso. Lição 9 - Trabalhando com a Linha de Comando Caracteres Especiais e Coringa  '.' - O ponto, numa linha de comando significa o diretório atual.  '..' - Dois pontos, em uma linha de comando significa o diretório pai.
  42. 42.  '/' - Barra significa, em uma linha de comando, a separação entre diretórios, ou o diretório raiz do sistema.  '~' - O til, em uma linha de comando, significa o diretório pessoal do usuário, ou seja, sua pasta "home".  '*' - O asterisco significa todos, ou qualquer um. Todas as opções disponíveis serão escolhidas.  '?' - A interrogação, como o asterisco significa qualquer um, mas de forma diferente, a interrogação deve ser APENAS um caractere, e ele TEM que existir, diferentemente do asterisco. Veja o exemplo: pedro-brito@cdtcsun04:~$ touch teste teste1 teste2 teste12 %Criando os arquivos teste, teste1, teste2 e teste12% pedro-brito@cdtcsun04:~$ ls teste %Listando os arquivos chamado "teste". Note que como nenhum caractere coringa foi utilizado, deve aparecer somente aqueles que o nome é exatamente igual ao pedido% teste pedro-brito@cdtcsun04:~$ ls teste* %Listando todos os arquivos que comecem com teste% teste teste1 teste12 teste2 pedro-brito@cdtcsun04:~$ ls teste? %Listando todos os arquivos que comecem com teste e tenham APENAS mais um caractere% teste1 teste2 pedro-brito@cdtcsun04:~$ ls teste1? %Listando todos os arquivos que comecem com teste1 e contenham APENAS mais um caractere% teste12 pedro-brito@cdtcsun04:~$ ls teste1* %Listando todos os arquivos que comecem com teste1 e tenham um número qualquer de caracteres a mais(Incluindo nenhum caractere a mais)% teste1 teste12 [ ] - Indica uma lista de caracteres sequenciais. { } - Indica as seleções desejadas. Veja o exemplo: pedro-brito@cdtcsun04:~$ touch teste1 teste2 teste3 teste4 teste5 teste6 teste7 teste8 teste9 %Criando os arquivos teste de 1 a 9% pedro-brito@cdtcsun04:~$ ls teste[3-9] %Listando os arquivos teste de 3 a 9% teste3 teste4 teste5 teste6 teste7 teste8 teste9 pedro-brito@cdtcsun04:~$ ls teste{1,3,5,7} %Listando os arquivos teste 1, 3, 5 e 7% teste1 teste3 teste5 teste7 pedro-brito@cdtcsun04:~$ ls teste{1-3,5-9} %Não é possível selecionar intervalos com {}, deve-se especificar individualmente os que devem ser selecionados%
  43. 43. ls: impossível acessar teste1-3: Arquivo ou diretório não encontrado ls: impossível acessar teste5-9: Arquivo ou diretório não encontrado pedro-brito@cdtcsun04:~$ ls teste[1-3,5-9] %Listando os arquivos de 1 a 3 e de 5 a 9% teste1 teste2 teste3 teste5 teste6 teste7 teste8 teste9 Um diretório tem o seguinte conteúdo: arquivo1 arquivo2 arquivo3 arquivo4 arquivo5 arquivo6 arquivo7 arquivo8 arquivo9 arquivo10 arquivo11 arquivo12 arquivo13 arquivo14 arquivo15 Pasta1 Pasta2 Pasta3 Pasta4 Pasta5 Qual o seguinte comando que listaria corretamente todos os arquivos, excluindo as pastas? ls ls | grep arquivo ls arquivo?? ls arquivo? Bash Bash é um Shell escrito em 1987 para o projeto GNU. Ele foi baseado no Bourne Shell (sh) criado por Stephen Bourne, daí seu nome Bash, que é um acrônimo para Bourne Again Shell(Do inglês, Born significa nascer, então é também uma piadinha para "Shell renascido"). Na maioria das distribuições Linux, este é o shell padrão.
  44. 44. A seguir, alguns atalhos para facilitar a operação no bash:  Tab : Autocompleta  CTRL + a: Move o cursor para o início da linha  CTRL + e: Move o cursor para o final da linha  CTRL + p: Chama o comando utilizado anteriormente  CTRL + n: Chama o próximo comando  CTRL + l: Limpa a tela  CTRL + u: Limpa o conteúdo antes do cursor e o passa pra área de transferência  CTRL + k: Limpa o conteúdo após o cursor e o passa pra área de transferência  ALT + f: Move o cursor uma palavra adiante  ALT + b: Move o cursor uma palavra atrás  ALT + d: Apaga a palavra na frente do cursor Variáveis O Shell utiliza algumas variáveis para facilitar seu uso, e para prover outras informações. É possível exportar uma variável, tornando-a disponível para as sessões do bash criadas apartir da sessão em que a variável foi exportada. Você pode verificar a lista das variáveis locais e de ambiente com o comando set: pedro-brito@cdtcsun04:~/Desktop$ set BASH=/bin/bash BASH_ARGC=() BASH_ARGV=() BASH_LINENO=() BASH_SOURCE=() BASH_VERSINFO=([0]="3" [1]="2" [2]="39" [3]="1" [4]="release" [5]="i486-pc-linux- gnu") BASH_VERSION='3.2.39(1)-release' COLORTERM=gnome-terminal COLUMNS=176 DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus- E9L3yd4s9B,guid=da5097e45bef5b15a4c61b474b4c944b DESKTOP_SESSION=default DESKTOP_STARTUP_ID= DIRSTACK=() DISPLAY=:0.0 EUID=1019 GDMSESSION=default GDM_LANG=pt_BR.UTF-8 GDM_XSERVER_LOCATION=local GNOME_DESKTOP_SESSION_ID=Default GNOME_KEYRING_PID=31533
  45. 45. GNOME_KEYRING_SOCKET=/tmp/keyring-QDCU7e/socket GPG_AGENT_INFO=/tmp/seahorse-BODIya/S.gpg-agent:31591:1 GROUPS=() GTK_RC_FILES=/etc/gtk/gtkrc:/home/pedro-brito/.gtkrc-1.2-gnome2 HISTCONTROL=ignoreboth HISTFILE=/home/pedro-brito/.bash_history HISTFILESIZE=500 HISTSIZE=500 HOME=/home/pedro-brito HOSTNAME=cdtcsun04 HOSTTYPE=i486 IFS=$' tn' LANG=pt_BR.UTF-8 LINES=63 LOGNAME=pedro-brito LS_COLORS='no=00:fi=00:di=01;34:ln=01;36:pi=40;33:so=01;35:do=01;35:bd= 40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:tw=30; 42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.svgz=01;31:*.arj=01; 31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.zip=01;31:*.z=01;31:*.Z=01; 31:*.dz=01;31:*.gz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb =01;31:*.rpm=01;31:*.jar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01; 31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.p bm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif =01; 35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35: *.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.ogm=01;35:*.mp4=01; 35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;3 5:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=0 1; 35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.fla c=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00; 36:*.ogg=00;36:*.ra=00; 36:*.wav=00;36:' MACHTYPE=i486-pc-linux-gnu MAILCHECK=60 OPTERR=1 OPTIND=1 OSTYPE=linux-gnu PATH=/usr/local/bin:/usr/bin:/bin:/usr/games PIPESTATUS=([0]="0") PPID=864 PS1='[e]0;u@h: wa]${debian_chroot:+($debian_chroot)}u@h:w$ ' PS2='> ' PS4='+ ' PWD=/home/pedro-brito/Desktop SESSION_MANAGER=local/cdtcsun04:/tmp/.ICE-unix/31534 SHELL=/bin/bash
  46. 46. SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments: monitor SHLVL=1 SSH_AUTH_SOCK=/tmp/keyring-QDCU7e/ssh TERM=xterm UID=1019 USER=pedro-brito USERNAME=pedro-brito WINDOWID=46137421 WINDOWPATH=7:7:7:7 XAUTHORITY=/home/pedro-brito/.Xauthority XDG_DATA_DIRS=/usr/local/share/:/usr/share/:/usr/share/gdm/ _=env Caso você deseje alterar alguma variável, basta digitar o nome dela, o sinal de igual e o novo valor. Por exemplo a variável SHELL (SHELL=/bin/bash). Se eu quiser alterar o shell que eu utilizo, basta utilizar o seguinte comando: pedro-brito@cdtcsun04:~$ SHELL=/bin/sh pedro-brito@cdtcsun04:~$ echo $SHELL /bin/sh Pronto! Agora os próximos comandos que eu executar serão interpretados pelo Bourne Shell e não mais pelo BASH. .bash_history Se você apertar a setinha para cima, no BASH, ele vai navegar pelo arquivo ~/.bash_history e vai mostrar a você comandos inseridos anteriormente. Por padrão, este arquivo guarda seus últimos 500 comandos digitados, porém, você pode alterar este valor, adicionando as seguintes linhas no arquivo ~/.basrc: export HISTFILESIZE=2000 export HISTSIZE=2000 Lembrando que o Linux é case-sensitive. Outra dica é criar o arquivo ~/.inputrc com as seguintes linhas:
  47. 47. "e[A": history-search-backward "e[B": history-search-forward Após deslogar e logar-se novamente, o efeito que estas linhas causarão é o de fazer uma busca no ~/bash_history por contexto. Caso nada seja digitado, seu shell agirá normalmente, porém, digite algum(ou alguns) caractere(s) e então o shell só buscará no histórico por comandos que iniciem com os caracteres digitados. Lição 10 - Processando Fluxos de Texto Utilizando Filtros Filtros de Texto Nesta parte do curso veremos alguns filtros de textos no Linux e suas funções:  cat: Concatena arquivos e imprime na saída padrão(monitor).  cut: Remove seções de cada linha de arquivos.  expand: Converte tabulações em espaços.  fmt: Reformata cada parágrafo no arquivo, ou da entrada padrão(teclado) se nenhum arquivo for especificado.  head: Imprime na saída padrão as primeiras 10 linhas de um arquivo ou o número de linhas desejado.  od: Escreve numa representação não ambígua bytes octais de um arquivo na saída padrão. Pode ler do teclado.  join: Junta as linhas de dois arquivos em um campo comum.  nl: Imprime um arquivo na saída padrão com as linhas enumeradas. Pode ler do teclado.  paste: Imprime na tela as linhas de dois arquivos(ou da entrada padrão) separadas por tabulações.  pr: Faz paginação de arquivos para impressão.  sed: Editor de fluxo de texto para filtrar e transformar texto.  sort: Imprime na tela as linhas de um arquivo em uma ordem específica.
  48. 48.  split: Separa um arquivo em pedaços, cada um com determinada quantidade de linhas.  tail: Imprime na saída padrão as últimas 10 linhas de um arquivo ou o número de linhas desejado.  tr: Traduz ou deleta caracteres lidos na entrada padrão, e os devolve para a saída padrão.  unexpand: o contrário do expand, transforma espaços em tabulações.  uniq: Descarta ou reporta linhas idênticas em um arquivo.  wc: Imprime a quantidade de linhas, palavras e bytes para cada arquivo ou a partir da entrada padrão. Para detalhes e utilização de cada um destes comandos, utilize o comando man <comando> em um terminal. Lição 11 - Gerenciamento Básico de Arquivos Manipulando arquivos e diretórios Arquivos e diretórios são facilmente gerenciáveis no Linux através da linha de comando. É possível criar, apagar, copiar, mover arquivos e pastas individualmente ou multiplamente. Para criar um diretório, utilize o comando mkdir. Para criar uma pasta no diretório atual, utilize apenas mkdir <nome da pasta>. Para criar em um diretório diferente, navegue até a pasta desejada (atráves de cd(change directory)) ou especifique um caminho completo, mkdir /home/pedro-brito/ Desktop/PastaExemplo. Para copiar ou mover um diretório e seus arquivos, utilize cp (para copiar) ou mv (para mover) a flag -r (recursively), a pasta desejada, e o destino da pasta: pedro-brito@cdtcsun04:~$ mkdir ~/Desktop/PastaExemplo pedro-brito@cdtcsun04:~$ touch ~/Desktop/PastaExemplo/ArquivoExemplo pedro-brito@cdtcsun04:~$ ls ~/Desktop/PastaExemplo
  49. 49. ArquivoExemplo pedro-brito@cdtcsun04:~$ cp -rv ~/Desktop/PastaExemplo/ /home/pedro-brito/ `/home/pedro-brito/Desktop/PastaExemplo/' -> `/home/pedro-brito/ PastaExemplo' `/home/pedro-brito/Desktop/PastaExemplo/ArquivoExemplo' -> `/home/pedro-brito/ PastaExemplo/ArquivoExemplo' pedro-brito@cdtcsun04:~$ ls ~/Desktop/ |grep PastaExemplo PastaExemplo pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/ |grep PastaExemplo PastaExemplo pedro-brito@cdtcsun04:~$ rm -rf PastaExemplo/ pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/ |grep PastaExemplo pedro-brito@cdtcsun04:~$ mv -v ~/Desktop/PastaExemplo/ /home/pedro-brito/ `/home/pedro-brito/Desktop/PastaExemplo/' -> `/home/pedro-brito/ PastaExemplo' pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/ |grep PastaExemplo PastaExemplo pedro-brito@cdtcsun04:~$ ls ~/Desktop/ |grep PastaExemplo Ao invés de utilizar rm -r pode-se utilizar rmdir para remover diretórios. Caracteres coringas podem ser utilizados com estes comandos: pedro-brito@cdtcsun04:~$ mkdir pasta1 pasta2 pasta3 pasta4 pasta5 pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/ |grep pasta pasta1 pasta2 pasta3 pasta4 pasta5 pedro-brito@cdtcsun04:~$ mv pasta[1-3] ~/Desktop/ pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/ |grep pasta pasta4 pasta5 pedro-brito@cdtcsun04:~$ ls /home/pedro-brito/Desktop |grep pasta pasta1 pasta2 pasta3 Julgue a seguinte afirmação: O caractere coringa * não pode ser utilizado ao manipular arquivos e diretórios. Verdadeiro.
  50. 50. Falso. O comando find Para localizar arquivos utilizando o comando find, utilize a seguinte sintaxe: find <diretório> -<parâmetro> <busca> Sendo os parâmetros: - name (busca por nome) - type (busca por tipo. Tipos permitidos: c (caractere), d (diretório), f (arquivo normal), l (link simbólico), s (socket).) - size (busca por tamanho, utilize -size <TAM>[k,M,G], sendo k, M e G para kilobytes, megabytes e gigabytes, respectivamente) - mtime (busca por data de modificação, utilize -mtime <TEMPO>, sendo TEMPO marcado em dias) Lição 12 - Utilizando Fluxos, pipes e redirects Redirecionadores de saídas O operador '>' e o operador '>>' são utilizados pra redirecionar a saída de um programa em um arquivo. Por exemplo, utilizando o comando ls para listar o diretório, a saída seria apresentada na saída padrão, que é a tela. Utilizando o operador '>' ou '>>', poderia se redirecionar a saída para um arquivo. pedro-brito@cdtcsun04:~$ touch lista %Criando o arquivo lista vazio% pedro-brito@cdtcsun04:~$ wc -l lista %Contando as linhas em lista% 0 lista pedro-brito@cdtcsun04:~$ ls > lista %Redirecionando a saída de ls para o arquivo lista% pedro-brito@cdtcsun04:~$ wc -l lista %Contando as linhas em lista% 46 lista pedro-brito@cdtcsun04:~$ ls / > lista %Redirecionando a listagem do diretório raiz para o arquivo lista% pedro-brito@cdtcsun04:~$ wc -l lista %Contando novamente as linhas em
  51. 51. lista, vemos que tem apenas 23 linhas e não 46 + a listagem do diretório raiz. Isso acontece porque o operador > sobrescreve todo o arquivo, caso o novo conteúdo quisesse ser adicionado ao antigo, deveria-se utilizar o operador >>% 23 lista pedro-brito@cdtcsun04:~$ ls >> lista %Adicionando agora a listagem do diretório ao final do arquivo lista% pedro-brito@cdtcsun04:~$ wc -l lista %Contando as linhas em lista, vemos que agora há 69 linhas, que é a soma das linhas do diretório atual com as linhas do diretório raiz(46 + 23)% 69 lista Assinale as alternativas que correspondem ao comando, considerando que o arquivo1 é texto simples e que o arquivo2 não existia: cp arquivo1 arquivo2 head arquivo1 > arquivo2 cat arquivo1 > arquivo2 tac arquivo1 > arquivo2 cat arquivo1 >> arquivo2 Redirecionadores de Entrada Para redirecionar o conteúdo de um arquivo para a entrada padrão de um comando, usa-se '<'. Os dados são lidos da direita pra esquerda. Por padrão, os conteúdos redirecionados são os de stdout(tela). Caso se deseje especiicar stderr, basta utilizar 2>. Caso deseje redirecionar os dois, utilize &> Pipes Pipes são semelhantes aos redirecionadores de entrada. Para enviar a saída de um comando para a entrada de outro comand, basta utilizar o pipe (|). Por exemplo, para listar um diretório, mas exibir apenas as entradas relativas
  52. 52. à exemplo, utilize: pedro-brito@cdtc11:~$ ls |grep Exemplo PastaExemplo pedro-brito@cdtc11:~$ Também é possível utilizar pipes para redirecionar a saída para um arquivo e stdout, com o comando tee(man tee para informações): pedro-brito@cdtc11:~$ cat /var/log/messages | tee /home/pedro-brito/ backup_logs Com este comando, as mensagens de log serão apresentadas na tela e guardadas no arquivo backup_logs que está no meu diretório pessoal. Lição 13 - Criando, Monitorando e Matando Processos Primeiro e Segundo Plano Para iniciar um processo em segundo plano, é só utilizar o comando desejado, acrescido de um sinal '&' ao final. Quando um programa é aberto pelo shell, ele assumirá o controle do teclado e da tela(ficará em primeiro plano), impossibilitando comandos de serem digitados no shell. Para interromper o programa("pausar") e voltar a trabalhar no shell, utiliza-se a combinação de teclas Ctrl + Z, assim, o programa fica inacessível e o controle volta ao shell. Para voltar a utilizar o programa, utilize o comando bg ou fg, seguido do número de identificação da tarefa(este número é apresentado ao se apertar Ctrl + Z ou utilizar o comando jobs). Enviando sinais Você pode utilizar o comando kill para enviar sinais de controle aos processos. Estes sinais podem ser, tanto numéricos quanto não numéricos. A sintaxe do comando é a seguinte: #kill -SINAL PID
  53. 53. E os sinais de controle disponíveis são: SIGHUP (1): Termina ou reinicia o processo. SIGINT (2): Interrompe o processo. SIGQUIT (3): Fecha o processo. SIGKILL (9): Finaliza o processo imediatamente(Mata o processo). SIGTERM (15): Solicita ao processo que termine. Existem outros sinais que são menos utilizados e portanto não estão aqui. Para consultar estes sinais, utilize man kill. Um comando semelhante ao kill é o killall, que tem a mesma função, é utilizado com os mesmos sinais, porém, ao invés de utilizar o PID para matar o processo, o killall utiliza o nome do processo. Selecione a opção que mata o processo firefox: pedro-brito@cdtcsun04:~$ ps aux | grep firefox 1019 30803 13.7 7.8 393596 201536 ? Sl 08:27 9:42 /usr/lib/iceweasel/firefox-bin -a iceweasel 1019 31247 0.0 0.0 3140 768 pts/0 R+ 09:38 0:00 grep firefox pedro-brito@cdtcsun04:~$ kill -15 30803 kill -9 firefox kill -9 30803 killall -9 30803 Conferindo Processos Você pode verificar os processos e os recursos exigidos por cada um através dos comandos ps e top. O ps mostra uma listagem atual dos processos. Opções podem ser ajustadas para uma busca mais específica. (man ps) O top mostra uma listagem em tempo real dos procesos que estão consumindo mais recursos. (man top) Utilize o comando free para descobrir quanto de memória RAM e SWAP está em uso e livre:
  54. 54. pedro-brito@cdtc11:~$ free total used free shared buffers cached Mem: 1008392 975376 33016 0 48012 312068 -/+ buffers/cache: 615296 393096 Swap: 0 0 0 pedro-brito@cdtc11:~$ Alterando prioridades de processos Prioridade de um processo é a prioridade que ele tem no sistema, ou seja, se deve receber mais ou menos recursos, antes ou depois de outros processos. Os processos iniciados por um usuário comum tem como padrão a prioridade 0. As prioridades vão de 19, que é a mais baixa, até -20, que é a mais alta. Para iniciar um processo com uma prioridade maior ou menor que a prioridade padrão, é só utilizar o comando nice com a prioridade desejada: nice -n 15 <comando para inciar o processo> Caso o processo que se deseja modificar a prioridade já esteja em execução, basta utilizar o comando renice: pedro-brito@cdtcsun04:~$ gedit ^Z [1]+ Stopped gedit pedro-brito@cdtcsun04:~$ bg 1 [1]+ gedit & pedro-brito@cdtcsun04:~$ ps aux |fgrep gedit 1019 12460 0.9 0.7 32512 18504 pts/0 S 09:52 0:01 gedit pedro-brito@cdtcsun04:~$ renice 5 -p 12460 12460: old priority 0, new priority 5 pedro-brito@cdtcsun04:~$ Se utilizado com a opção -g, o renice ajusta as prioridades de todos os processos do grupo especificado(renice -5 -g programadores). Caso utilizado com a opção -u, os processos do usuário corrente serão alterados. Apenas o root pode definir uma prioridade mais alta do que zero (número nice negativo).
  55. 55. Julgue a seguinte afirmação: Apenas o superusuário poderá setar uma prioridade negativa(maior prioridade). Verdadeiro. Falso. Lição 15 - Realizando Buscas em Arquivos de Textos com Expressões Regulares Expressões Regulares Expressões regulares são elementos de texto, palavras-chave e modificadores que são usados para formar um padrão, utilizados para encontrar um padrão com um comando. Podem ser utilizados para formar estas expressões os seguintes caracteres:  ^ : Significa início de linha.  $ : Significa final de linha.  . : Significa qualquer caractere(substitui a interrogação).  * : Significa qualquer número de quais quer caracteres(assim como dito anteriormente).  [ ] : Qualquer caractere que esteja presente nos colchetes. A família grep Você já deve ter visto por aí muitos grep em pipelines, e utilizava-o apenas de maneira básica. Agora veremos como explorar mais este comando. Opções do grep:  -c : conta quantas linhas contêm o padrão.  -i : não diferencia maiúsculas de minúsculas.  -f : utiliza a expressão regular contida no arquivo indicado após -f.  -n : procura somente na linha indicada por -n.  -v : inverte a expressão regular(mostra todas as linhas que NÃO correspondem ao padrão). Por exemplo, uma utilização corriqueira do grep para excluir as linhas de comentário de um arquivo de configuração, utilizando a opção -v, depois
  56. 56. contando quantas linhas são comentadas, e quantas não são comentadas: pedro-brito@cdtcsun04:~$ grep -v '^#' /boot/grub/menu.lst default 0 timeout 5 color cyan/blue white/blue title Debian GNU/Linux, kernel 2.6.26-2-686 root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro vga=791 quiet initrd /boot/initrd.img-2.6.26-2-686 title Debian GNU/Linux, kernel 2.6.26-2-686 (single-user mode) root (hd0,0) kernel /boot/vmlinuz-2.6.26-2-686 root=/dev/sda1 ro single initrd /boot/initrd.img-2.6.26-2-686 pedro-brito@cdtcsun04:~$ grep -c '^#' /boot/grub/menu.lst 96 pedro-brito@cdtcsun04:~$ grep -cv '^#' /boot/grub/menu.lst 36 pedro-brito@cdtcsun04:~$ Egrep: O egrep quer dizer EXTENDED grep, e ele realiza buscas mais específicas do que o grep, ao utilizar o operador pipe, atuando como um operador OU: pedro-brito@cdtcsun04:~$ egrep 'invenção|invenções' vai buscar todas as ocorrências de invenção ou de invenções. egrep corresponde à opção -E do grep. Fgrep: O fgrep quer dizer FAST grep, e ele realiza buscas mais simples do que o grep, por não aceitar expressões regulares como argumento. Se algum caracter especial for passado como argumento, o fgrep as interpretará literalmente. Devido a isso, o FAST grep é bem mais rápido que seus irmãos.
  57. 57. Escolha a opção que busca o comando da família grep mais completo. fgrep egrep grep Lição 16 - Edições Básicas Utilizando VI Modos de Execução do VI O VI possui três modos de execução, onde em cada um, o teclado funciona de maneira diferenciada. São eles:  Modo de navegação: É o modo corrente quando se inicia o VI. Neste modo de execução, o teclado se funciona principalmente para navegação e alteração de blocos de texto. Os comandos são em maioria letras únicas. Caso alguma dessa letra seja precedida por um número, este comando será repetido o número de vezes que o número indicar.  Modo de comando: Quando se aperta a tecla : (dois pontos) apartir do modo de navegação, o VI muda para o modo de comando. Neste modo de execução é permitido fazer buscas, salvar, sair, executar comandos no shell, configurar o VI, etc. Para voltar ao modo de navegação, utiliza-se a instrução visual ou a tecla ENTER com a linha vazia.  Modo de inserção: Neste modo, o VI se comporta como um editor de texto comum. O que você digita aparecerá na tela, um backspace apaga um caracter e assim sucessivamente. Para entrar no modo de inserção, aperta-se a tecla i ou A(os modos mais comumente utilizados). Para sair do modo de inserção, basta pressionar a tecla ESC.
  58. 58. Teclas de Navegação As teclas de navegação do VI: Comando / Resultado 0, $ Início e fim de linha. 1G, G Início e fim de documento. (, ) Início e fim de sentença. {, } Início e fim de parágrafo. w, W Pular palavra e pular palavra contando Julgue a seguinte afirmação: A tecla i, no modo de navegação, entra no modo de edição ao final da linha atual. Falso. Verdadeiro. com a pontuação. h, j, k, l Esquerda, abaixo, acima, direita. /, ? Busca para frente e para trás. i Entra no modo de inserção na posição atual do cursor. a, A Entra no modo de inserção depois do cursor ou no fim da linha. o, O Adiciona uma linha e entra no modo de inserção depois ou antes do cursor. s, S Apaga item ou linha e entra no modo de inserção. c Modifica um item com a inserção de texto. r Substitui um único caractere. x Apaga um único caractere. y, yy Copia um item ou toda linha. p, P Cola o conteúdo, copiado depois ou antes do cursor. u Desfazer. ZZ Fecha e salva, se necessário. ZQ Fecha e não salva.
  59. 59. Comandos do VI Os comandos do VI: Comando / Resultado :! Permite executar um comando do shell. :quit ou :q Fecha. :quit! ou :q! Fecha sem salvar. :wq Salva e fecha. :exit ou :x ou :e Fecha e salva, se necessário. :visual Volta para o modo de comando. Lição 17 - Criando Partições e Sistemas de Arquivos Fdisk O programa padrão do linux para manipular partições é o fdisk. O fdisk pode ser utilizado com a opção -l para listar os dispositivos e partições, ou para manipular partições de um dispositivo, ele deve ser iniciado com o dispositivo como argumento. Ao especificar um dispositivo para que seja feita a manipulação de suas partições, o fidsk aceitará letras que funcionarão como comandos, dizendo-o assim o que fazer com quais partições. Comando / Resposta p Lista as partições do dispositivo. n Cria uma nova partição interativamente. t Muda o código de identificação de uma partição. d Apaga uma partição q Sai do fdisk sem salvar as alterações. w Sai do fdisk salvando as alterações. m Mostra a ajuda dos comandos. Após realizar alterações com o fdisk, é necessário que seja dado o comando w para salvar as alterações. Caso contrário, tudo que foi feito não será salvo e não modificará em nada as partições.
  60. 60. mkfs O comando mkfs serve para criar um sistema de arquivos em partições. A opção -t indica qual é o tipo do sistema de arquivos a ser criado na partição. Por exemplo, para criar uma partição em /dev/hda2 do tipo ext3, utiliza-se o comando mkfs -t ext3 /dev/hda2. Além do comando acima, existem comandos específicos para alguns sistemas de arquivos, como por exemplo os comandos: - mkfs.ext2; - mke2fs; - mkfs.ext3; - mkfs.xfs; - mkreiserfs; - mkdosfs; - mkfs.vfat. Partição swap Depois de definir uma partição para ser swap, é necessário formatá-la, através do comando mkswap (mkswap /dev/hda2). Após ser criada como swap, a partição ainda não está pronta para ser utilizada, ela deve ainda ser ativada: swapon /dev/hda2 Caso se deseje utilizar este espaço como swap sempre, apartir do início do computador, é necessário atualizar o arquivo /etc/fstab com esta entrada, caso contrário será necessário rodar o comando swapon todas as vezes. Caso se deseje desativar uma partição swap, utilize o comando swapoff: swapoff /dev/hda2 Julgue a seguinte afirmação: Além de ser formatada como swap, a partição ainda deve ser ativada como tal junto ao sistema operacional, através do seguinte comando:
  61. 61. swap --status active Falso. Verdadeiro. Lição 18 - Mantendo a Integridade de Sistemas de Arquivos Checando sistemas de arquivos Quando há uma falha de hardware ou um desligamento abrupto, podem ocorrer erros em um sistema, desta forma, é recomendável que de tempos em tempos se faça uma verificação dos sistemas de arquivos presentes, e, caso necessário, uma correção. Para checar o sistema utiliza-se o comando fsck, mas antes disso a partição deve estar desmontada ou montada como somente leitura, para que a verificação possa acontecer. O comando fsck é utilizado de maneira semelhante ao mkfs, onde -t indica o tipo de sistema de arquivos. Há também um comando específico para cada tipo de sistema, tal como no mkfs, que são: - fsck.ext2; - e2fsck; - fsck.ext3; - fsck.xfs; - reiserfsck; - dosfsck. Debugfs: Quando o sistema de arquivos é corrompido de maneira tão grave que o comando fsck não conseguiu solucionar, é utilizado um outro comando, o debufs. Este comando é um depurador interativo, que funciona com sistemas ext2 e ext3. Pode-se mudar propriedades de diretórios, examinar dados de inodes, apagar arquivos, criar links, mostrar log de journalling, dentre outros.
  62. 62. Dois comandos que são também importantes para inspecionar e alterar os sistemas de arquivos ext2 e ext3 são: - dumpe2fs: Mostra informações de grupo de blocos e de superblocos; - tune2fs: Configura os parâmetros ajustáveis em sistemas de arquivos ext2, como rótulo e limites de montagem, antes de checar estes sistemas, automaticamente. Para sistemas do tipo xfs, existem dois comandos semelhantes ao dumpe2fs e tune2fs, que são xfs_metadump e xfs_info. Estes comandos extraem todos os dados referentes ao sistema de arquivos e exibem as características e outras informações estatísticas sobre o sistema de arquivos xfs, respectivamente. Para sistemas de arquivos do tipo xfs, existem dois comandos Analisando o Espaço em Disco. Para analisar o espaço do disco ocupado, disponível, etc. utiliza-se os comandos df e du.  df: Este comando mostra o espaço ocupado e o espaço disponível em cada dispositivo. O espaço é mostrado em unidades de 1KB, por padrão, porém, esta unidade pode ser alterada através da opção -h, que usará unidades como MB ou GB, dependendo da necesscidade. A opção -T exibe o também o tipo do sistema de arquivo.  du: Este comando mostra o espaço ocupado por arquivos e/ou diretórios. Sem nenhum argumento, ele mostrará o uso de cada diretório no sistema. Um diretório específico pode ser indicado pela opção -s. Tal como o df, com a opção -h unidades de medida apropriada serão utilizadas para mostrar as informações. Escolha a resposta que produz a saída abaixo:

×