79
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:

Linux lpi 101

Embed Size (px)

DESCRIPTION

Sim

Citation preview

Page 1: Linux lpi 101

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:

Page 2: Linux lpi 101

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].

Page 3: Linux lpi 101

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.

Page 4: Linux lpi 101

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

Page 5: Linux lpi 101

/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

Page 6: Linux lpi 101

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.

Page 7: Linux lpi 101

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).

Page 8: Linux lpi 101

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

Page 9: Linux lpi 101

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

Page 10: Linux lpi 101

[ 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

Page 11: Linux lpi 101

[ 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

Page 12: Linux lpi 101

[ 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:

Page 13: Linux lpi 101

[ 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

Page 14: Linux lpi 101

[ 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]

Page 15: Linux lpi 101

[ 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]

Page 16: Linux lpi 101

[ 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

Page 17: Linux lpi 101

[ 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)

Page 18: Linux lpi 101

[ 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

Page 19: Linux lpi 101

[ 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

Page 20: Linux lpi 101

[ 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

Page 21: Linux lpi 101

[ 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)

Page 22: Linux lpi 101

[ 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

Page 23: Linux lpi 101

[ 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

Page 24: Linux lpi 101

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.

Page 25: Linux lpi 101

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.

Page 26: Linux lpi 101

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.

Page 27: Linux lpi 101

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

Page 28: Linux lpi 101

# 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

Page 29: Linux lpi 101

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

Page 30: Linux lpi 101

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

Page 31: Linux lpi 101

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

Page 32: Linux lpi 101

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:

Page 33: Linux lpi 101

# 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

Page 34: Linux lpi 101

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 #

Page 35: Linux lpi 101

# # 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

Page 36: Linux lpi 101

## 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.

Page 37: Linux lpi 101

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.

Page 38: Linux lpi 101

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

Page 39: Linux lpi 101

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

Page 40: Linux lpi 101

--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 <[email protected]>

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

Page 41: Linux lpi 101

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.

Page 42: Linux lpi 101

'/' - 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%

Page 43: Linux lpi 101

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.

Page 44: Linux lpi 101

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

Page 45: Linux lpi 101

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=$' \t\n' 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:*.pbm=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;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.gl=01; 35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.aac=00;36:*.au=00;36:*.flac=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: \w\a\]${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

Page 46: Linux lpi 101

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:

Page 47: Linux lpi 101

"\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.

Page 48: Linux lpi 101

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

Page 49: Linux lpi 101

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.

Page 50: Linux lpi 101

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

Page 51: Linux lpi 101

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

Page 52: Linux lpi 101

à 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

Page 53: Linux lpi 101

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:

Page 54: Linux lpi 101

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).

Page 55: Linux lpi 101

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

Page 56: Linux lpi 101

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.

Page 57: Linux lpi 101

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.

Page 58: Linux lpi 101

Teclas de Navegação As teclas de navegação do VI: Comando / Resultado

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.

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 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.

Page 59: Linux lpi 101

Comandos do VI Os comandos do VI: Comando / Resultado

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

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.

:! 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.

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.

Page 60: Linux lpi 101

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:

Page 61: Linux lpi 101

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.

Page 62: Linux lpi 101

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:

Page 63: Linux lpi 101

Sist. Arq. Tipo Tam Usad Disp Uso% Montado em /dev/sda1 ext3 134G 3,3G 124G 3% /

df -hT

df

df -T /dev/sda1

df -hT /dev/sda1

Lição 19 - Controlando a Montagem de Sistemas de Arquivos

/etc/fstab No arquivo fstab estão todas as informações sobre cada sistema de arquivos. Este arquivo é lido cada vez que o sistema é iniciado, e os sistemas de arquivos são montados ou não, de acordo com a configuração. Neste arquivo estão informações sobre as partições, o tipo do sistema de arquivos, o ponto de montagem e outras opções. Cada uma das linhas corresponde a um ponto de montagem, segue minha fstab como exemplo: pedro-brito@cdtcsun04:~$ cat /etc/fstab # /etc/fstab: static file system information. # # <file system> <mount point> <type> <options> <dump> <pass> proc /proc proc defaults 0 0 /dev/sda1 / ext3 errors=remount-ro 0 1 /dev/sda5 none swap sw 0 0 /dev/scd0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto 0 0 # NFS - CDTC 192.168.0.10:/home /home nfs rw,async,hard,intr,nodev,nosuid 0 0 192.168.0.11:/VirtualBox /VirtualBox nfs rw,async,hard,intr,nodev,nosuid 0 0 pedro-brito@cdtcsun04:~$ As opções de montagem são as seguintes: Opção / Descrição

rw Read-write. Dados poderão ser lidos e escritos na partição.

Page 64: Linux lpi 101

Para montagens manual de sistemas de arquivo, o comando utilizado é o

mount. Para desmontar, o comando utilizado é o umount. Deve-se então

especificar o ponto de montagem e as opções. Caso haja mais de uma opção,

separar por vírgula. As opções são as mesmas que para fstab.

Qual é o arquivo responsável pelas informações dos sistemas de arquivos?

/var/fstab

/proc/fstab

/sys/fstab

/etc/fstab

Lição 20 - Gerenciando Quotas em Disco

ro Read-only. Dados poderão ser apenas lidos.

noauto Não montar automaticamente.

users Este dispositivo poderá ser montado ou desmontado por usuários comuns.

user Apenas o usuário que montou o sistema poderá desmontá-lo.

owner As permissões do dispositivo montado se adequarão ao usuário que o montou.

usrquota Ativa o uso de cotas de disco para usuários.

grpquota Ativa o uso de cotas de disco para grupos.

remount Remonta um dispositivo já montado, podendo utilizar opções adicionais.

dump(0 ou 1) Determina se o dispositivo deverá ser considerado pelo comando dump. Se não for especificado, é assumido como 0.

fsck(1 ou 2) Determina a ordem de checagem do sistema feita pelo fsck durante o boot. A partição raiz deve ter este valor como 1. Se não for especificado, é assumido como 0.

Page 65: Linux lpi 101

Quota

Quando um sistema conta com muitos usuários, é recomendável que se

utilize o recurso de cotas de disco, de forma a limitar a quantidade de espaço

que cada usuário(ou grupo de usuários) pode utilizarde forma a não prejudicar

nenhum outro usuário por falta de espaço.

Para ativar o controle de quotas, é necessário que o kernel tenha suporte e

que a(s) opção(ões) esteja(m) acionada(s): grpquota e/ou usrquota no arquivo

/etc/fstab. (Caso faça alguma mudança neste arquivo, elas só terão efeitos

após o sistema ser remontado)

O comando quotacheck -a gera uma tabela de estatísticas de uso de todos os

sistemas de arquivos montados(isso normalmente é feito pelos scripts de

inicialização).

O comando edquota nos permite criar as configurações de quota para

usuários (-u) e para grupos(-g) utilizando o editor padrão do sistema (vi).

As configurações de quota ficam armazenadas no ponto de montagem da

partição, nos arquivos aquota.user e aquota.group.

Para monitorar e controlar as cotas, deve-se utilizar o comando quota -a.

Para estabelecer um período no qual o usuário deve ser avisado de que

seu limite foi ou está sendo alcançado, utiliza-se o comando edquota -ta.

Para cada usuário verificar como está o andamento de sua quota, ele deve

simplesmente executar o comando quota, sem nenhum argumento.

O superusuário pode gerar relatórios de uso de espaço e quotas através do

comando repquota -a.

Julgue a seguinte afirmação: Para configurar as cotas, utilizamos o comando quotacheck.

Falso.

Verdadeiro.

Page 66: Linux lpi 101

Lição 21 - Gerenciando Donos e Permissões de Arquivos

Permissões

pedro-brito@cdtcsun04:~$ ls -l /boot/

total 15548

-rw-r--r-- 1 root root 91640 Mar 26 2009 config-2.6.26-2-686

drwxr-xr-x 2 root root 4096 Out 6 14:38 grub

-rw-r--r-- 1 root root 7174620 Jun 18 2009 initrd.img-2.6.26-2-686

-rw-r--r-- 1 root root 6169352 Jun 18 2009 initrd.img-2.6.26-2-686.bak

-rw-r--r-- 1 root root 927984 Mar 26 2009 System.map-2.6.26-2-686

-rw-r--r-- 1 root root 1505680 Mar 26 2009 vmlinuz-2.6.26-2-686

pedro-brito@cdtcsun04:~$

O primeiro caracter representa o tipo do arquivo, que pode ser diretório(d),

link simbólico(l), dispositivo especial de caracteres(c), canal fifo(p)(first in first

out), socket(s) ou arquivo convencional(-).

Nesta listagem aparecem apenas diretórios e arquivos.

As demais letras, a cada três representam as permissões do ítem, para dono,

grupo e outros, respectivamente.

A permissão r significa leitura, a w significa escrita e a x significa execução.

Umask O umask é o filtro padrão de permissões para criação de arquivo. Novos arquivos criados terão seu sistema de permissão baseado neste filtro. Para verificar qual é o seu umask atual, basta digitar umask no terminal sem argumentos. Para modificá-lo, basta dizer o número da permissão octal que deseja colocar:

Dígito Leitura(4) Escrita(2) Execução(1)

0

1 SIM

2 SIM

3 SIM SIM

4 SIM

5 SIM SIM

Page 67: Linux lpi 101

O umask calculará as novas permissões dos arquivos criados subtraindo o

seu valor do valor das permissões padrão do sistema(0666 para arquivos e

0777 para diretórios).

pedro-brito@cdtcsun04:~$ umask

0022

pedro-brito@cdtcsun04:~$ umask 0033

pedro-brito@cdtcsun04:~$ umask

0033

pedro-brito@cdtcsun04:~$ umask 0012

pedro-brito@cdtcsun04:~$ umask

0012

pedro-brito@cdtcsun04:~$

Alterando permissões

Para alterar permissões de um arquivo, utiliza-se o comando chmod.

Este comando possui vários tipos de sintaxe, como por exemplo, para adicionar

uma permissão, sem modificar as outras:

chmod g+w arquivoexemplo.txt

(dá permissão de escrita aos usuários do grupo do arquivo, sem alterar as

outras)

Para subtrair uma permissão sem alterar as outras:

chmod o-x scriptexemplo.sh

(tira a permissão de execução do script de outros usuários)

Para colocar a permissão sem alterar as outras:

chmod u=rw arquivoexemplo.txt

(define a permissão do arquivo como leitura e escrita para o dono)

Mais de um ítem (dono, grupo, outros) pode ser alterado por vez.

Para mais detalhes, consulte man chmod

6 SIM SIM

7 SIM SIM SIM

Page 68: Linux lpi 101

Julgue a seguinte afirmaçao: É possível modificar as permissões separadamente para grupo, dono e outros, assim como também é possível modificar todos de uma vez.

Falso.

Verdadeiro.

Permissões especiais

Além das permissões citadas anteriormente, existem também as permissões

suid, sgid e sticky.

Na permissão suid, os usuários executarão os arquivos com as permissões

de quem os criou, e não as suas próprias.

A permissão sgid é semelhante, porém, atua em diretórios. Em um diretório

com a permissão sgid, todos os arquivos criados pertencerão ao grupo do

diretório.

Já a permissão sticky permite que apenas o usuário que criou um

determinado arquivo possa apagá-lo, como no caso do diretório /tmp:

pedro-brito@cdtcsun04:~$ ls -ld /tmp/

drwxrwxrwt 55 root root 4096 Jan 22 17:27 /tmp/

pedro-brito@cdtcsun04:~$

Para incluir o modo suid em um arquivo executável, utilize:

chmod u+s script.sh

Para incluir o modo sgid em um diretório, utilize:

chmod g+s minhaPasta

Alterando donos e grupos de arquivos

Para alterar o dono de um arquivo, utilize:

# chown pedro-brito texto.txt

Page 69: Linux lpi 101

(agora o usuário pedro-brito é dono do arquivo texto.txt)

Para alterar o grupo de um arquivo, utilize:

$ chgrp grupo texto.txt

(agora o arquivo pertence ao grupo grupo)

Para alterar simultaneamente o grupo e o dono, pode-se utilizar de uma

das duas formas:

# chown pedro-brito.grupo texto.txt

ou

# chown pedro-brito:grupo texto.txt

Os dois comandos possuem a opção -R que modifica os conteúdos de

diretórios recursivamente.

Lição 22 - Criando e Modificando links

Criando Hard Links

Um hard link é um ou mais nomes que um inode do sistema de arquivos pode

possuir. Todo arquivo criado é um hardlink para seu inode correspondentes.

Um hard link é criado com o comando ln:

ln arquivo1 arquivo2

Utilizando ls com a opção -i para listar os inodes dos arquivos:

pedro-brito@cdtcsun04:~$ ln arquivo1 arquivo2

pedro-brito@cdtcsun04:~$ ls -i arquivo?

5219466 arquivo1 5219466 arquivo2

pedro-brito@cdtcsun04:~$

Os dois arquivos são hardlinks para o mesmo inode 5219466. Ambos possuem

a mesma permissão, donos, tamanho e data pois estes são atributos que ficam

armazenado diretamente nos inodes.

Page 70: Linux lpi 101

pedro-brito@cdtcsun04:~$ ls -l arquivo1

-rw-r--r-- 2 pedro-brito pedro-brito 0 Jan 22 17:55 arquivo1

pedro-brito@cdtcsun04:~$

Na segunda coluna, o número 2 indica que há dois hardlinks para o inode

correspondente ao arquivo1. O arquivo só será de fato apagado do sistema

quando todos os hardlinks que apontam para ele forem removidos.

Soft Links

Um link simbólico pode apontar para qualquer coisa, em qualquer sistema de

arquivos conectado. Para criá-lo, utilizamos a opção -s do comando ln:

pedro-brito@cdtcsun04:~$ rm -rfv arquivo?

`arquivo1' removido

`arquivo2' removido

pedro-brito@cdtcsun04:~$ touch arquivo1

pedro-brito@cdtcsun04:~$ ln -s arquivo1 arquivo2

pedro-brito@cdtcsun04:~$ ls -l arquivo2

lrwxrwxrwx 1 pedro-brito pedro-brito 8 Jan 22 18:03 arquivo2 -> arquivo1

pedro-brito@cdtcsun04:~$

O link é indicado pela letra l nas permissões, na primeira posição. As

permissões de um softlink serão sempre rwxrwxrwx, e seu tamanho será

exatamente a quantidade de bytes (caracteres) do caminho. A seta indica o

caminho até o alvo (considerando que estão na mesma pasta, o caminho é

apenas o nome do arquivo).

Um link simbólico para um caminho relativo será quebrado se o alvo ou o

próprio link for movido. Um link simbólico para um caminho absoluto só será

quebrado se o alvo for movido ou apagado.

Julgue a seguinte afirmação: O comando ln permite criar tanto links simbólicos como hardlinks.

Verdadeiro.

Falso.

Page 71: Linux lpi 101

Lição 23 - Encontrando Arquivos

O FHS O FHS (Filesystem Hierarchy Standard) é o padrão de localização de arquivos adotado por grande parte dos sistemas Linux. Cada diretório tem um propósito, e são divididos entre os que DEVEM ser colocados na partição raiz e os que podem ser pontos de montagem de outras partições: Dos diretórios que DEVEM ser colocados na partição raiz:

/bin e /sbin: Estes diretóprios contêm os programas necessários para carregar o sistema e comandos especiais.

/etc: Este diretório contém arquivos de configuração escpecíficos da máquina.

/lib: Este diretório contém as bibliotecas compartilhadas pelos programas que estão em /bin e /sbin e os módulos do kernel.

/mnt e /media: Estes diretórios contêm os pontos de montagem para outras partições ou dispositivos.

/proc e /sys: Estes são diretórios especiais que contêm as informações de processos e hardware.

/dev: Estão contidos neste diretório os arquivos de acesso a dispositivos e outros arquivos especiais.

Diretórios que podem ser pontos de montagem:

/boot: Ele contém o kernel e mapas do sistema e os bootloaders de segundo estágio.

/home: Contém os diretórios pessoais dos usuários. /root: Contém os arquivos do usuário root. /tmp: Arquivos temporários. /usr/local e /opt: Estes diretórios contêm programas adicionais.

Também podem conter as bibliotecas necessárias para os programas adicionais.

/var: Este diretório contém os dados de programas e arquivos relacionados, arquivos de logs, bancos de dados, arquivos de sites. Pode ou não conter diretórios compartilhados.

Localizando arquivos

Foi visto na terceira lição da terceira semana o comando find. Neste tópico

mostraremos outro importante comando de localização, o comando locate.

Page 72: Linux lpi 101

Sua utilização é bastante simples, todo os caminhos de arquivos ou diretórios

contendo a expressão fornecida como argumento serão mostrados.

Para utilizar este comando, é necessário porém ter um banco de dados com

informações de todos os arquivos. Este banco de dados pode ser criado com o

comando updatedb, que só pode ser utilizado pelo root. Geralmente esta

atualização do banco de dados é feita através de agendamento, com o cron,

mas também pode ser executada manualmente.

Julgue a seguinte afirmação: O comando locate é mais rápido que o comando find.

Falso.

Verdadeiro.

1 Notas: 1

Como se verifica os módulos que estão atualmente carregados?

Escolher uma resposta.

a. Através do arquivo /etc/modprobe.conf

b. Através do comando uname --modules

c. Através do comando lsmod Correto!

d. Através do comando showmodules

Correto

Notas relativas a este envio: 1/1.

Question2 Notas: 1

Qual nível de execução é o de reinício do sistema?

Escolher uma resposta.

a. 6

b. 0

c. 1

Page 73: Linux lpi 101

d. 3 Errado.

Errado

Notas relativas a este envio: 0/1.

Question3 Notas: 1

Associe cada caractere com a sua função em uma expressão regular.

Fim de linha

$

Início de linha

^

UM caractere qualquer.

.

Correto

Notas relativas a este envio: 1/1.

Question4 Notas: 1

Julgue a seguinte afirmação: Uma variável exportada estará disponível em todas as sessões do bash.

Resposta:

Verdadeiro Falso

Correto!

Correto

Notas relativas a este envio: 1/1.

Question5 Notas: 1

Quais dos seguintes comandos(desconsidere os argumentos) podem ser utilizados para reiniciar o computador?

Escolha pelo menos uma resposta.

a. shutdown Correto!

b. telinit

c. sysreboot

d. powerdown

Parcialmente correta

Notas relativas a este envio: 0.5/1.

Question6 Notas: 1

Para listar as partições do dispositivo localizado em /dev/sdb, qual o comando utilizado?

Escolher uma resposta.

Page 74: Linux lpi 101

a. fdisk -p /dev/sdb Errado.

b. ls -l /dev/sdb

c. cat /dev/sdb

d. fdisk -l /dev/sdb

Errado

Notas relativas a este envio: 0/1.

Question7 Notas: 1

Selecione as opções que informam os status de processos.

Escolha pelo menos uma resposta.

a. process

b. lsprocess

c. top

d. info.process

e. ps Correto!

Parcialmente correta

Notas relativas a este envio: 0.5/1.

Question8 Notas: 1

Escolha as opções que podem ser pontos de montagem num sistema FHS.

Escolha pelo menos uma resposta.

a. /boot Correto!

b. /etc

c. /sys

d. /root Correto!

e. /proc

Correto

Notas relativas a este envio: 1/1.

Question9 Notas: 1

Julgue a seguinte afirmação: Após os seguintes comandos, o conteúdo de arquivotexto será perdido: pedro-brito@cdtcsun04:~$ ln arquivotexto copiaarquivotexto pedro-brito@cdtcsun04:~$ ls -l *arquivotexto

Page 75: Linux lpi 101

-rw-r--r-- 2 pedro-brito pedro-brito 0 Jan 29 08:47 arquivotexto -rw-r--r-- 2 pedro-brito pedro-brito 0 Jan 29 08:47 copiaarquivotexto pedro-brito@cdtcsun04:~$ rm -f arquivotexto pedro-brito@cdtcsun04:~$

Resposta:

Verdadeiro Falso

Correto!

Correto

Notas relativas a este envio: 1/1.

Question10 Notas: 1

Qual o comando que mostra as informações sobre a memória RAM?

Escolher uma resposta.

a. sysram

b. ls --ram

c. free Correto!

d. df

Correto

Notas relativas a este envio: 1/1.

2º tentativa

1 Notas: 1

Selecione as opções que contém as pastas que DEVEM estar presentes na partição raiz, em um sistema FHS.

Escolha pelo menos uma resposta.

a. /bin Correto!

b. /proc Correto!

Page 76: Linux lpi 101

c. /boot

d. /root

e. /home

Correto

Notas relativas a este envio: 1/1.

Question2 Notas: 1

Selecione as opções que informam os status de processos.

Escolha pelo menos uma resposta.

a. lsprocess

b. info.process

c. ps Correto!

d. process

e. top Correto!

Correto

Notas relativas a este envio: 1/1.

Question3 Notas: 1

Para listar as partições do dispositivo localizado em /dev/sdb, qual o comando utilizado?

Escolher uma resposta.

a. ls -l /dev/sdb

b. fdisk -l /dev/sdb Correto!

c. cat /dev/sdb

d. fdisk -p /dev/sdb

Correto

Notas relativas a este envio: 1/1.

Question4 Notas: 1

Escolha a(s) opção(ões) que mata(m) o seguinte processo iceweasel: pedro-brito@cdtcsun04:~$ ps aux | egrep 'iceweasel|PID' USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND 1019 12511 8.6 6.7 368092 173188 ? Sl 07:22 6:48 /usr/lib/iceweasel/firefox-bin -a iceweasel 1019 12969 0.0 0.0 3136 796 pts/1 S+ 08:41 0:00 egrep iceweasel|PID pedro-brito@cdtcsun04:~$

Escolha pelo menos uma resposta.

Page 77: Linux lpi 101

a. killall -9 iceweasel

b. killall iceweasel

c. kill -9 12511 Correto!

d. killall -SIGTERM iceweasel

e. kill 12511

Parcialmente correta

Notas relativas a este envio: 0.5/1.

Question5 Notas: 1

Como definir corretamente uma variável no BASH?

Escolher uma resposta.

a. $VARIAVEL="Valor da Variavel"

b. VARIAVEL=Valor da Variavel

c. $VARIAVEL=Valor da Variavel

d. VARIAVEL="Valor da Variavel" Correto!

Correto

Notas relativas a este envio: 1/1.

Question6 Notas: 1

Julgue a seguinte afirmação: Após executar os seguintes comandos, o conteúdo de arquivo texto ainda estará acessível via copiaarquivotexto: pedro-brito@cdtcsun04:~$ ln -s /home/pedro-brito/arquivotexto copiaarquivotexto pedro-brito@cdtcsun04:~$ ls -l *arquivotexto -rw-r--r-- 1 pedro-brito pedro-brito 0 Jan 29 08:51 arquivotexto lrwxrwxrwx 1 pedro-brito pedro-brito 30 Jan 29 08:56 copiaarquivotexto -> /home/pedro-brito/arquivotexto pedro-brito@cdtcsun04:~$ mv copiaarquivotexto ~/Desktop/

Resposta:

Verdadeiro Falso

Correto!

Correto

Notas relativas a este envio: 1/1.

Question7 Notas: 1

Associe cada caractere com a sua função em uma expressão regular.

Fim de linha

$

Page 78: Linux lpi 101

Início de linha

^

UM caractere qualquer.

.

Correto

Notas relativas a este envio: 1/1.

Question8 Notas: 1

Julgue a seguinte afirmação: Após os seguintes comandos, não será possível acessar o conteúdo de arquivotexto, via copiaarquivotexto: pedro-brito@cdtcsun04:~$ ln -s arquivotexto copiaarquivotexto pedro-brito@cdtcsun04:~$ ls -l *arquivotexto -rw-r--r-- 1 pedro-brito pedro-brito 0 Jan 29 08:51 arquivotexto lrwxrwxrwx 1 pedro-brito pedro-brito 12 Jan 29 08:52 copiaarquivotexto -> arquivotexto pedro-brito@cdtcsun04:~$ mv copiaarquivotexto ~/Desktop/

Resposta:

Verdadeiro Falso

Errado! Como o caminho ao setar o softlink era relativo, ao mover o link ele se tornará quebrado.

Errado

Notas relativas a este envio: 0/1.

Question9 Notas: 1

Escolha as opções que podem ser pontos de montagem num sistema FHS.

Escolha pelo menos uma resposta.

a. /boot Correto!

b. /etc

c. /proc

d. /sys

e. /root Correto!

Correto

Notas relativas a este envio: 1/1.

Question10 Notas: 1

Julgue a seguinte afirmação: Após os seguintes comandos, o conteúdo de arquivotexto será perdido: pedro-brito@cdtcsun04:~$ ln arquivotexto copiaarquivotexto pedro-brito@cdtcsun04:~$ ls -l *arquivotexto -rw-r--r-- 2 pedro-brito pedro-brito 0 Jan 29 08:47 arquivotexto -rw-r--r-- 2 pedro-brito pedro-brito 0 Jan 29 08:47 copiaarquivotexto pedro-brito@cdtcsun04:~$ rm -f arquivotexto pedro-brito@cdtcsun04:~$

Page 79: Linux lpi 101

Resposta:

Verdadeiro Falso

Correto!

Correto

Notas relativas a este envio: 1/1.