Upload
rodrigo-souza
View
123
Download
3
Embed Size (px)
DESCRIPTION
Sim
Citation preview
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:
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].
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.
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
/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
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.
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).
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
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
[ 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
[ 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
[ 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:
[ 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
[ 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]
[ 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]
[ 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
[ 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)
[ 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
[ 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
[ 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
[ 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)
[ 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
[ 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
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.
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.
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.
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
# 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
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
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
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
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:
# 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
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 #
# # 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
## 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.
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.
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
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
--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
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.
'/' - 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%
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.
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
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
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:
"\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.
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
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.
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
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
à 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
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:
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).
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
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.
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.
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.
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.
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:
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.
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:
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.
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.
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.
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
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
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
(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.
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.
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.
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
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.
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
-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!
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.
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
$
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:~$
Resposta:
Verdadeiro Falso
Correto!
Correto
Notas relativas a este envio: 1/1.