Você está na página 1de 39

Resumo LPIC-201

Autor: Rodrigo Santos

2015
1

200.1 Avaliar e resolver problemas no uso de recursos. (6)


Estimar o rendimento e identificar gargalos em um sistema, incluindo a rede
Para determinar se um determinado problema est relacionado com a falta de recursos
ou no, o prprio problema tem de ser devidamente formulado primeiramente. Em seguida,
este comportamento formulado 'desviado' tem de ser comparado com o comportamento
esperado que iria resultar a partir de um sistema de operao livre de problemas.
Programas recomendados: top, vmstat, iostat e netstat.
Identificando gargalos num ambiente de rede requer vrios passos. Um melhor pratica
seria seguir as seguintes recomendaes:
o Criar um mapa da rede;
o Identificar o comportamento dependendo do tempo;
o Identificar o problema;
o Identificar os comportamentos desviantes;
o Identificar a causa.

Contm ferramentas para monitorar o uso e performance do sistema,


podem ser utilizadas diretamente ou agendadas para gerar
relatrios.
Destacam-se dois comandos: iostat e sar.
iostat gera um relatrio com estatstica de uso da CPU e de entrada/sada de
dispositivos e parties.
# iostat (sem argumentos) relatrio simplificado sobre a utilizao de CPU,
dispositivos e parties desde o ltimo incio do sistema. Similar: vmstat
sysstat
(pacote)

# iostat sem argumentos mostra as estatsticas desde o ultimo reboot do sistema;


# iostat -c mostra o relatrio de utilizao de CPU;
# iostat -N mapeamento de nomes para qualquer dispositivo. til para visualizao de
estatsticas de LVM2;
# iostat -nh relatrio de NFS (disponvel somente com kernel 2.6.17 ou superior;
# iostat -d 2 6 mostra seis relatrios, com dois segundos de intervalo entre cada, para todos
dispositivos;
# iostat -p sda 2 6 a cada dois segundos um relatrio, no total de seis ao final, sobre o
dispositivo sda e todas suas parties.
# iostat -x hda hdb 2 6 relatrio estendido dos dispositivos hda e hdb. Total de seis
relatrios, com dois segundos de intervalo entre cada um.
OBS:
o
o
o
o
o

iostat necessita do diretrio /proc para funcionar;


estatsticas estendidas esto disponveis a partir do kernel 2.5 ou superior;
/proc/stat contm as estatisticas do Sistema;
/proc/uptime contm o uptime do Sistema;.
/proc/partitions contm as estatsticas dos discos (para kernel anterior ao 2.5);

o
o
o

/proc/diskstats contm as estatsticas dos discos (para kernel superior ao


2.5);
/sys contem estatisticas para block devices (posterior ao kernel 2.5);
/proc/self/mountstats contem estatisticas para NFS.

Status:
%user nvel de usurio (aplicaes);
%nice nvel de usurio com prioridade modificada;
%system execuo no nvel de sistema (kernel);
%iowait tempo CPU ociosa, aguardando resposta de I/O de disco;
%steal tempo que a CPU virtual estava ociosa devido ao hipervisor estar servindo outra
CPU virtual;
%idle CPU ociosa e no aguarda por I/O.
Device disp. localizado em /dev;
tps transferncia por segundo realizadas no dispositivo.
kB_read/s e kB_wrtn/s dados lidos e gravados no dispositivo/s.
kB_read e kB_wrtn gravado e lido no intervalo.
# iostat
-d <n> relatrio em intervalo de n segundos. Primeira ele mostra os dados desde o ultimo
inicio do sistema e depois o de n segundos solicitado.
Ele gera o relatrio com base nos arquivos do diretorio /proc e /sys.
Exemplo:
Linux 3.11.10-25-desktop (SITH)
avg-cpu:
Device:
sda
sdb
scd0

%user
18.23

03/14/15

%nice %system %iowait


0.60
6.49
9.25
tps
84.17
1.70
0.08

kB_read/s
1740.15
7.01
0.33

%steal
0.00

kB_wrtn/s
592.10
0.09
0.00

_i686_

(2 CPU)

%idle
65.42
kB_read
545154
2197
104

kB_wrtn
185492
28
0

# sar gera relatrios com as mesmas informaes do iostat. usado para coletar, criar
relatrios, ou salvar informaes da atividade do sistema.
-f /var/log/sysstat/sa24 l as informaes de um arquivo especifico (Ubuntu);
-f /var/log/as/sa15 igual a opo acima (CentOS);
-A mostra todas as estatsticas do dia salvas em arquivo;
-c System calls;
-p atividade de Paging;
-w reporta switching activity do sistema;
-b resumo de entrada e sada de dadas;
-d reporta atividade para cada bloco do dispositivo (block device);
-u mostra informao da CPU;
-q roda queue, load average information;
-o salva as leituras de forma binria num arquivo;
-B info sobre paginao (paging) feita pelo sistema;
-r utilizao da memria RAM e estatsticas de utilizao de espao swap;
3

-S utilizao de espao de swap;


-n DEV estatsticas de trafego de dados em todas as interfaces de rede do sistema.
Semelhante a netstat -i
# sar -q -s 10:00:00 -e 11:00:00 mostra a mdia de carga das 10 as 11 do dia atual;

Importante sempre checar os servios de coleta de dados


/etc/default/sysstat deve conter a linha ENABLED=true [Padro DEBIAN]
Em sistemas baseados em systemd systemctl enable sysstat.service
Os arquivos com os dados coletados so armazenados em /var/log/sysstat/ou /var/log/sa ,
cada arquivo corresponde a um dia.
DICA:
Dados coletados a cada 10 minutos podem ser lidos com sar. O script sa1 coleta dados a
cada 10 minutos e o script sa2 sintetiza diariamente informao. Os scripts sa1 e sa2 so
habilitados atravs de cron.
vmstat gera relatrios, semelhante ao iostat.
-d modo disco;
-p <partio> gera relatrio de uma partio especifica;
# vmstat 2 10 gera informes dos ltimos 2 segundos, 10 vezes (a cada 2 segundos uma
nova busca at completar o ciclo de 10).
Dica: utilizar em conjunto com outros utilitrios (ps, top, uptime, pstree, lsof e w).
# ps -ely | grep ^D identifica processos dormindo ininterruptivelmente;
# lsof -p PID lista todos os arquivos abertos por um determinado processo;
# lsof /dev/net/tun checa quais processos esto utilizando o arquivo.
Exemplo:
procs -----------memory---------- ---swap-- -----io---- -system-- -----cpu-----r b
swpd
free
buff cache
si
so
bi
bo
in
cs us sy id wa st
1 0
0 2398276 42348 362500
0
0
40
3
59
93 1 1 98 0 0

Legenda:
b informa o nmero de processos dormindo ininterruptivelmente.
Dica
# uptime resultado sempre 1, 5 e 15 minutos, referente a carga do sistema.

200.2 Prever necessidades futuras de recursos. (2)


Mtodos eficientes para prever a capacidade instalada para atender demandas futuras.

collectd Daemon para ganho de performance. L diversas estatsticas de


sistema e atualiza arquivos RRD (Round Robin Database). Arquivos atualizados a cada 10
segundos. Mais info em: https://collectd.org/wiki/index.php/Table_of_Plugins . Seu foco no
gerar grficos, mas sim colher informaes que so uteis para prever cargas futuras do
sistema.
-C especifica um arquivo de configurao alternativo;
-P especifica um arquivo pid alternativo;
-T testa o plugin de leitura somente;
-t testa a configurao somente.
4

Arquivo de configurao principal /etc/collectd/collectd.conf OU


/etc/collectd.conf
Padro de armazenagem dos RRD /var/lib/collectd
rrdtool transmite informaes via rede os dados RRD. o comando padro para armazenar
e exibir dados sequenciais armazenados em bancos de dados Round Robin.

cacti
Interface completa para o RRDTool;
Banco MySQL;
Interface PHP;
Responsvel pela coleta de dados;
Criao de grficos MRTG.

MRTG Ferramenta pra monitorar a carga de trafego em conexes de rede.


Cria pginas HTML;
Arquivo principal /etc/mrtg/mrtg.cfg
Protocolo de rede utilizado: SNMP
Definies do arquivo:
Target determina uma interface em um IP para ser monitorado;
Exemplo:
######################################################################
# Multi Router Traffic Grapher -- Example Configuration File
######################################################################
# This file is for use with mrtg-2.0
#
# Note:
#
# * Keywords must start at the begin of a line.
#
# * Lines which follow a keyword line which do start
#
with a blank are appended to the keyword line
#
# * Empty Lines are ignored
#
# * Lines starting with a # sign are comments.
# Where should the logfiles, and webpages be created?
# Minimal mrtg.cfg
#-------------------HtmlDir: /var/www/mrtg
ImageDir: /var/www/mrtg
LogDir: /var/lib/mrtg
ThreshDir: /var/lib/mrtg
#Target[r1]: 2:public@myrouter.somplace.edu
#MaxBytes[r1]: 1250000
#Title[r1]: Traffic Analysis
#PageTop[r1]: <H1>Stats for our Ethernet</H1>

# env LANG=C mrtg --daemon /etc/mrtg/mrtg.cfg iniciando o servio

nagios
201.1 Componentes do kernel. (2)
Linux tem kernel monoltico com arquitetura modular (Kernel modular no micro-kernel).
Verso do kernel: A.B.C.D. O ltimo elemento D nem sempre utilizado. As verses rc
(release candidate) s se aplicam as verses A.B.C-rcx.
5

A verso principal muda apenas aps transformaes radicais na estrutura do kernel;


B nmero de reviso principal antes n par estvel, e impar instvel;
C numero de reviso secundrio nas verses antigas do kernel, determinava
correes e patches de segurana. Hoje demonstra se houve incluses de novos recursos,
como drivers de dispositivos, por exemplo.
D correes urgentes utilizado quando h revises de segurana urgentes, que alteram
aspectos relativos reviso secundria.
Kernel com sufixo mm representa que a modificao foi feita pelo desenvolvedor Andrew
Morton, feitas sobre a verso oficial do kernel. Geralmente so modificaes mais
experimentais.
Localizao do kernel
/usr/src/ onde o cdigo-fonte do kernel deve ser mantido, geralmente num diretorio
exemplo: linux-2.6.30 /usr/src/linux-version ou /usr/src/kernels/linux-version
Como possvel possuir mais de uma verso dos cdigos-fontes, importante criar
um link simblico /usr/src/linux que aponta para o diretrio do cdigo-fonte do kernel
atualmente em uso (# ln -s /usr/src/linux-version /usr/src/linux). Esse procedimento
importante para que outros programas possam eventualmente localizar os arquivos do kernel
atual.
Localizando os binrios do Kernel
O arquivo principal do kernel: Esse arquivo mantem as partes do ncleo do kernel.
carregado pelo bootloader quando o computador iniciado, e alm disso essencial ao
funcionamento do sistema.
Mdulos do kernel: ficam fora do arquivo principal do kernel, normalmente na rvore de
diretrios /lib/modules. Os mdulos do kernel podem ser carregados e descarregados depois
que o sistema iniciado.
O arquivo de kernel principal normalmente fica em: /boot ou / .
vmlinux verso no-comprimida do arquivo de kernel do Linux; normalmente gerada
de forma intermediria e no copiada para o /boot. Essa forma de kernel no
diretamente bootvel, j que alguns recursos ficam ausentes;
vmlinuz variante do vmlinux que foi comprimida com alguma ferramenta e tornado
bootvel fazendo a adio de alguns recursos. Provedores de distribuio Linux
costumam usar esse formato como o nome de suas verses de kernel binrio precompilado;
Alm dos arquivos de cdigo-fonte tem tambm a documentao oficial onde estar o
arquivo imagem do kernel ps-compilado. O arquivo imagem o kernel em si, que mais tarde
ser invocado pelo carregador de boot durante o carregamento do sistema.
/usr/src/linux/Documentation onde est localizada a documentao oficial;
kernel-parameters.txt descobrir quais parmetros o kernel aceita ao ser carregado;
/usr/src/linux/arch/x86/boot/ localizada a imagem final aps compilao do cdigo-fonte. O
subdiretrio x86 varia conforme a arquitetura escolhida;
Formatos de imagem de kernel: zImage e bzImage. Ambos compactados com o
mtodo zlib.
zImage mais antigo e tem tamanho mximo 512 KiB, adequado as verses mais antigas
do kernel.
bzImage Big zImage no possui limitao de tamanho o padro mais novo.
kernel Nome genrico que utilizado em alguns sistemas que empregam o GRUB 2 como
bootloader. Tipicamente um estilo bzImage binrio.
6

201.2 Compilando um kernel Linux. (3)


Dois modos de distribuio do cdigo fonte do kernel: via Distro ou via site
www.kernel.org;
Pelo site o cdigo distribudo via Tar compactado. Deve ser extrado no local padro
(usr/src/linux), que geralmente um link simblico para o diretorio criado na extrao, como
/usr/src/linux-x.x.xx.
Processo de personalizao de kernel: em 3 etapas (configurao, compilao e instalao).
Aplicando Patches no kernel
Aplicvel nos arquivos fonte (source) de kernel. A aplicao de patches til e rpida,
pois somente as atualizaes so baixadas, e no o tarball completo do kernel.
Tanto o patch - 2.6.35.4.bz2 quanto o patch - 2.6.36.bz2 seriam funcionais, se
aplicados no diretrio fonte de 2.6.35 (pois ele A.B.C e no A.B.C.D).
Mude para o diretrio desejado. E utilize um dos seguintes comandos:
# gzip -cd ../patch- version .gz | patch -p1 OU
# bzip2 -dc ../patch- version .bz2 | patch -p1
Ajuste o caminho de acordo com o arquivo de patch, se necessrio. Essa a forma
manual.
A forma automtica utilizando o patch-kernel em /usr/src/linux/scripts:
# /usr/src/linux/scripts/patch-kernel linux
Esse comando procura por arquivos de patch no diretrio corrente e aplica ao kernel
encontrado no diretrio especificado (linux, no exemplo). Monitore a sada do comando com
cuidado, pois ela avisar que vrios arquivos foram adicionados ou alterados. Se mensagens
de que certos arquivos no puderam ser alterados, ento algo deu errado (provavelmente o
patch no adequado para verso do kernel) ou alguma opo do comando patch no a
melhor para situao.
Se a operao no for bem sucedida ela pode ser desfeita utilizando a opo -R (-reverse), como em patch -p1 -R.
Checando as opes de Hardware do Sistema
Mais importantes:
Chipset fabricante e model number;
PCI utilize o comando lspci;
USB utilize o comando lsusb;
Mdulos carregados lsmod checa os mdulos carregados (s mostra os que no esto builtin no kernel);
Controladoras de disco ateno para esses modelos.
Checar principalmente: controladoras de disco, ethernet, controladora usb e placa de vdeo.
Utilizando um kernel funcional como modelo
Procurar pelo arquivo de configurao (.config) no diretrio fonte do kernel.
Depois de identificar os principais componentes de hardware a configurao do kernel pode
comear. Isso feito com a ajuda de um ou mais make targets. Outras opes podem ser
utilizadas, ver /usr/src/linux/README para mais detalhes.
7

Target
mrproper
oldconfig
silentoldconfig
defconfig
allmodconfig
config
menuconfig
xconfig
gconfig

Explicao
Remove a configurao antiga e os arquivos temporrios.
Atualiza um arquivo de configurao antigo, alterando somente o que foi
adicionado recentemente.
Similar a opo anterior, mas com menos informao em tela.
Cria um arquivo de configurao usando valores padro para sua
plataforma.
Cria um arquivo de configurao que utiliza configurao modular o tanto
quanto possvel.
Configura todo item no kernel usando uma interface baseada em texto.
Lento e impraticvel com kernel moderno.
Configura o kernel usando um menu baseado em texto. Adequado
quando utilizado um console baseado em texto.
Parecido com o menuconfig, mas a configurao feita usando Qtbased GUI environment.
Parecido com o xconfig mas usa GTK-based GUI environment.

Digitar # make help no diretrio arvore de fonte do kernel produz uma lista de make targets
com breves descries de cada um. Essa lista traz muito mais opes que as mostradas na
tabela acima.
Se voc deseja garantir que o kernel source tree est em estado puro comece
utilizando # make mrproper.
A opo # make allmodconfig recomendada se no nenhum modelo de kernel em
mente como base.
Para demais configuraes utilizar menuconfig, xconfig ou gconfig; ficando por escolha
do sysadmin selecionar a melhor opo.
Durante a seleo de opes: marcar uma caixa opo que compilar diretamente
no kernel, enquanto que um ponto significa compilar como modulo.
Compilao direta no kernel.
Compilao como modulo.

O gconfig target no suporta essa caracterstica. Ele utiliza os caracteres Y, M ou N.


O menuconfig utiliza a mesma conveno.
Nem todas opes podem ser compiladas como mdulos; simplesmente algumas no
funcionam dessa forma, e algumas opes de controlar os recursos que no so significativas
como mdulos. Ou seja, somente opes Y ou N, sem M.
Configurao
Via comando make dentro do diretorio onde est o cdigo-fonte do kernel. Existem
diferentes interfaces de configurao, a ncurses a mais tradicional, invocada por meio do
comando make menuconfig. Esse procedimento gera o .config. Outras interfaces so Qt e
Gtk (ambas em X).
Outras formas so:
make config: cria ou atualiza a configurao por meio de uma interface orientada a
perguntas e respostas na linha de comando;
8

make oldconfig: recupera todas as configuraes do arquivo .config pr-existente e


pergunta apenas sobre novas opes.

As categorias principais dentro de um kernel so:


General Setup opes variadas e de alto nvel esto nesta categoria, incluindo
vrias que so relacionados ao boot do sistema e que padro ele suporta;
Enable the Block Layer essa categoria inclui algumas opes obscuras
relacionadas aos dispositivos de disco e como o kernel gerencia a programao de
I/O. Selecione a opo default, a nos que voc deseje utilizar a outra;
Processor Type and Features Essa seo inclui opes que controlam como o
Linux gerencia a CPU, incluindo muitas opes especificas de CPU. A subseo The
Paravirtualized Guest Support inclui opo que so importantes se voc deseja rodar
certos tipos de virtualizao via software, que habilita voc rodar outros Sistemas
Operacionais dentro do Linux;
Power Management and ACPI Options opes nesta rea esto relacionadas a
funcionalidade de hardware designadas ao menor uso de energia eltrica, incluindo
suporte para suspend-to-RAM e suspend-to-disk (ou Hibernao), caractersticas
essas que so particularmente importantes em laptops;
Bus Options (PCI, etc.) Dependendo da plataforma que voc venha a trabalhar
possvel que tenha que lidar com barramentos antigos (ISA, EISA, VLB, MCA, NuBus).
Muitas dessas que j esto obsoletas podem estar disponveis no kernel, ento uma
boa prtica remove-las (reduzindo o tamanho final do kernel), claro, se voc constatar
que o hardware que est sendo trabalho no necessita delas. Essa seo tambm
inclui opes relacionadas a PC Card (para laptops);
Executable File Formats/Emulations quase certo que seu kernel tenha certo
suporte a arquivos Executable and Linkable Format (ELF) para binrios. Suporte para
o antigo formato a.out raramente necessrio hoje a menos que voc rode programas
binrios muito antigos. Incluir suporte a variados tipos de binrio uma boa ideia. Nos
sistemas x86-64 incluir suporte para IA32 uma boa prtica;
Networking Support Essa rea de configurao do kernel vasta e inclui um
grande nmero de opes, algo que pode ser confuso para quem no tem experincia.
Note que driver baixo nvel de hardware de rede no esto aqui, mas na prxima
seo. Voc pode reduzir bastante o tempo de compilao e tamanho do kernel
fazendo uma vasta pesquisa nas opes e removendo caractersticas desnecessrias.
Por exemplo, voc dificilmente precisar de AppleTalk, DECnet ou IPX. Por outro lado,
se sua rede local utiliza esses protocolos, tenha certeza que eles foram instalados;
Device Drivers Essa outra rea de configurao muito vasta. Ela inclui opes
para dar suporte a maioria dos dispositivos de hardware gerenciados diretamente pelo
kernel, incluindo controladores de disco, drivers de rede, dispositivos multimdia (Tv
Tuner card e webcams), drivers de framebuffer para vdeo, placas de som, e
dispositivos USB de baixo nvel. Muitas outras opes nessa seo esto relacionados
a uma variedade muito grande de hardware j obsoleto. Siga as recomendaes para
dispositivos especficos ou escolha o que compilar para o driver, ao menos como
modulo, se voc no tiver certeza do que fazer;
File Systems Essa categoria extremamente importante, j que ela prov suporte
para o sistema de arquivos usado no seu dispositivo de boot do Linux. Esteja certo de
ativar os sistemas de arquivos apropriados, que normalmente so, ext2fs, ext3fs,
9

ext4fs, Reiserfs, XFS, JFS, ou Btrfs em sistemas modernos. CD-ROM, opes noLinux, e outros sistemas variados esto listados em suas respectivas subcategorias.
A subcategoria Partition Types tambm importante, desde que controla que tipo de
partio o kernel pode utilizar. Na maioria dos sistemas, o PC BIOS (MS-DOS
Partition Tables) Support option a mais critica; isso ativa o suporte para o sistema
MBR usado na maioria dos sistemas x86 e x86-64. O EFI GUID Partition Support
option importante em sistemas Macintosh baseado em Intel e vem se tornando
relevante em outros sistemas;
Kernel Hacking Nesta seo h opes de maior interesse para desenvolvedores
especializados em kernel. Ocasionalmente mesmo um no-desenvolvedor precisar
ajustar algumas opes nesta seo, particularmente se um patch kernel antigo est
sendo utilizado. (O Enable __deprecated Logic option, por exemplo, exigido por
alguns drivers de terceiros.);
Security Options Uma boa quantidade de caractersticas podem ser controladas
nesta seo;
Cryptographic API Algumas caractersticas do kernel ou software que no provem
do kernel necessitam de mdulos criptogrficos para estarem presentes no kernel.
Voc pode habilita-los aqui;
Virtualization prov suporte para certas caractersticas de virtualizao, utilizado
para rodar outro SO enquanto o Linux utilizado no sistema;
Library Routines essa seo inclui vrias funes que so utilizadas por outros
mdulos do kernel ou por software de espao de usurio (ou modo de utilizador
refere-se a todo cdigo que roda fora do sistema operacional do kernel. Normalmente
se refere a vrios programas e bibliotecas que o SO usa para interagir com o kernel).

Alguns recursos do kernel so particularmente importantes e, portanto, merecem meno


especial:
General Setup Local Version Voc pode adicionar uma string ao nmero de
verso do kernel utilizando essa opo. Esse recurso pode ser til se voc necessita
testar uma opo de kernel; voc pode construir diferentes kernels com diferentes
strings de verso local para significar diferentes conjuntos de recursos, mantendo
assim os diretrios mdulo do kernel separado e produzindo diferentes identificadores
do kernel quando usando utilitrios uname ou similares.
General Setup Initial RAM Filesystem and RAM Disk (initramfs/initrd) Support
tenha certeza de ativar esse recurso se existe a intenso de usar initial RAM disk;
General Setup Enable Loadable Module Support esteja certo que essa opo
est habilitada, a menos que a pretenso seja criar um kernel s com built-in drivers
algo bem fora do comum atualmente;
Processor Type and Features Symmetric Multi-Processing Support Essa opo
habilita o suporte mais de um CPU ou core de CPU;
Processor Type and Features Processor Family se voc est criando um kernel
para um computador especifico, ou para um conjunto de computadores idnticos, voc
pode ganhar performance selecionando um modelo de CPU especifica;
Processor Type and Features High Memory Support essa opo est
disponivel para CPU x86, mas no para x64. Voc pode utiliza-la para otimizar a
performance baseando em quanto RAM seu computador possui. Se ele tem menos de
1GB de RAM desabilite-a; se ele tem entre 1 e 4 GB escolha a opo 4GB; e se tem
10

mais de 4 GB escolha a opo 64GB. Se essa configurao for mal executada o


sistema de gerenciamento de memoria do computador pode ficar desabilitado;
Networking Support Networking Options TCP/IP Networking a maioria dos
computadores moderno necessita dessa opo, j que o TCP/IP o pacote difundido
para transmisso de dados pela Internet. Essa opo tem muitas sub opes. Ento
veja as que mais se adequam as necessidades do futuro sistema; ateno especial ao
IPv6;
Networking Support Networking Options Network Packet Filtering Framework
Essa opo crtica se o administrador desejar configurar opes de roteamento e
regras de firewall no computador;
Networking Support Networking Options Wireless no esquea de habilitar
essa opo se o computador for usar adaptador de rede sem fio;
Device Drivers SCSI Device Support Ativar suporte ao SCSI, para discos, CDROMs e outros sistemas possveis. Mas se fisicamente seu sistema nunca utilizar
SCSI desmarque toda seo de Low-Level Drivers, isso omitir a maior parte de
dispositivos;
Device Drivers Serial ATA and Parallel Drivers essa seo inclui drivers
modernos e antigos para controladores de disco SATA e PATA. Fica a sua escolha a
seleo de drivers. Se est sendo criado um kernel especifico para um computador
que o chipset conhecido, recomenda-se instalar esses drivers diretamente no kernel,
e no em mdulos;
Device Drivers Multiple Devices Driver Support essa seo inclui opo para
configurao de RAID e LVM;
Device Drivers Graphics Support na maior parte dos sistemas x86 e x86-64, os
recursos dessa seo so opcionais, entretanto habilitando suporte a framebuffer para
o chipset do seu vdeo e o console de framebuffer ir suprir o sistema com opo para
ajuste de texto em console e X. No compile diretamente o framebuffer no kernel se
voc almeja utilizar mdulos de vdeo proprietrios (AMD e Nvidia), compile-os sempre
como mdulos;
Device Drivers USB Support inclui tanto drivers de baixo nvel (built into
motherboard ou como plugin card) e para alguns dispositivos ou categorias USB (USB
Mass Storage Support), que usado na utilizao de pendrives.

Uma vez que voc tenha checado todas as opes do kernel, e examinado todas as
configuraes escolhidas, voc pode sair da ferramenta de configurao. Salvar como um
novo arquivo .config e partir para o modo de compilao utilizando o comando make.
Compilao
O input padro do comando make sem opes o mesmo que executar make all,
que o mesmo que executar make modules (para construo dos mdulos) e make bzImage
(para compilao do kernel, propriamente dito).
# make | grep -iw error checar se haver erros na compilao.
Se no for a primeira compilao executar make mrproper (apaga as configuraes
e os arquivos gerados durante uma compilao anterior).
Dica de agilizao de compilao: make -j4 bzImage compilar o kernel em quatro
processos simultneos (til em sistemas com mltiplos processadores ou ncleos).
11

feita atravs do make zImage ou make bzImage. Provavelmente o novo kernel


ser modular, e os mdulos precisaro ser compilados separadamente. Isso feito com o
comando make modules.
Instalao
Depois das operaes anteriores concludas copiar esses arquivos para a
localizao correta e configurar o carregador de boot para que possa encontra-lo ao iniciar o
sistema.
Num x86 o arquivo de imagem estar em:
/usr/src/linux/arch/x86/boot/zImage
Ou
/usr/src/linux/arch/x86/boot/bzImage
Esse arquivo deve ser copiado para o diretorio /boot e de deve ser renomeado para
algo mais claro e apropriado como vmlinuz-2.6.28-abc.
J os mdulos possuem comandos especficos para instalao. Aps compilados, so
instalados usando o comando make modules_install, ser criado um diretrio com a
numerao do kernel em /lib/modules. Portanto para um kernel 2.6.30 o diretrio dos mdulos
ser /lib/modules/2.6.30. O comando make modules_install tambm se encarrega de gerar
o arquivo modules.dep nesse diretrio, que armazena as informaes de interdependncia
dos mdulos.
Copiando para o /boot. Exemplo:
# cp arch/x86/boot/bzImage /boot/bzImage-2.6.35.4 renomeando e movendo para o
diretorio /boot.
# cp System.map /boot/System.map-2.6.35.4
# rm /boot/System.map
# ln s /boot/System.map-2.6.35.4 /boot/System.map
Referente aos comandos acima, o arquivo System.map contm os apontamentos para
funes no kernel e usado para debbugar problemas do kernel.
O comando make install faz tudo isso citado acima.
Initial Ramdisk pequeno conjunto de arquivos que carregado na memria RAM
durante o carregamento do kernel e montado como se fosse uma partio, porm sem que
haja um sistema de arquivos. montado antes da partio raiz.
mkinitrd ou mkinitramfs comando que gera o Initial Ramdisk
# mkinitrd /boot/initrd-2.6.35.4.img 2.6.35.4 cria a o arquivo de imagem (.img) usando os
mdulos do kernel para o kernel 2.6.35.4.
# mkinitrd
-v verbose;
--version mostra a verso do utilitrio;
-f habilita sobrescrever uma imagem existente;
-c eliminar arvore de diretrios usada para criao anterior do Initial Ramdisk;
-k verso do kernel;
-m lista de mdulos a incluir, separados por dois-pontos;
-o nome para o Initial Ramdisk a ser criado;
Ex:
# mkinitrd -c -k 2.6.30 -m xfs -o /boot/initrd-2.6.30.gz cria um initial ramdisk para o kernel
2.6.30 instalado incluindo o modulo xfs.
12

Para incluir outros mdulos basta incluir :, por exemplo no trecho abaixo:
-m xfs:reiserfs:ext3
# mkinitramfs ligeiramente diferente do comando anterior.
As principais configuraes so feitas no arquivo /etc/initramfs-tools/initramfs.conf
Nele possvel definir quais mdulos devem ser includos, em grupo pr-determinados ou
individualmente.
-o determina o arquivo Initial Ramdisk. Se no especificado ser assumida a verso atual.
# mkinitramfs -o /boot/initramfs-2.6.30 2.6.30
Nas distribuies que o utilizam temos o comando update-initramfs (atualiza aquela j
existente de acordo com as opes do initramfs.conf).
Para que o kernel recm criado venha a ser utilizado deve ser adicionado ao GRUB
outro bootloader do sistema a sua opo de uso.
Patch (o D da nomenclatura) s deve ser aplicado a verso imediatamente anterior do
kernel. Portanto o patch para o kernel 2.6.31 deve ser aplicado somente ao kernel 2.6.30.
Um patch deve ser aplicado a partir do diretrio raiz do cdigo-fonte. No caso do kernel,
em /usr/src/linux.
A maneira mais pratica de aplicar um patch direcionar todo o contedo do arquivo
para a entrada padro do comando patch. Isso pode ser feito numa nica linha, utilizando o
comando bzcat ou zcat.
No interior dos arquivos de patch oficiais h uma letra ou um termo antes do caminho
para o arquivo que deve ser alterado:
a/arch/alpha/include/asm/percpu.h
Esse caminho indica que uma alterao dever ser feita no arquivo
arch/alpha/include/asm/percpu.h. Portanto, a letra a deve ser retirada do caminho, o que
feto com a opo -p1:
# cd /usr/src/linux
# wget http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.30.3.bz2
# bzcat patch-2.6.30.3.bz2 | patch -p1
Antes de aplicar um patch 2.6.30.4 ao kernel 2.6.30.3, necessrio reverter o patch 2.6.30.2.
# bzcat patch-2.6.30.3.bz2 | patch -p1 -R
O prprio patch 2.6.30.3 usado para realizar a reverso. Somente ento o patch 2.6.30.4
pode ser aplicado.
# bzcat patch-2.6.30.4.bz2 | patch -p1
Aplica sempre os patches na sequncia, sem intervalos.

13

Preparando um pacote de kernel


Utiliza-se RPM ou Debian Package. Essa tarefa pode ser feita utilizando: rpm-pkg, binrpmpkg, e deb-pkg.

Adicionando um Kernel ao GRUB


Se voc instalou um kernel na forma binria a partir de um gerenciador de pacotes,
possvel que no seja necessrio editar a configurao do seu boot loader para acrescentar
esse kernel. Instalaes binarias desse tipo costumam atualizar a configurao do GRUB
automaticamente.
Entretanto se o kernel foi criado/personalizado manualmente se faz necessrio
configurar o boot loader de forma manual.
Alterando o boot loader:
GRUB LECACY
title Fedora (2.6.32)
root (hd0,0)
kernel /vmlinuz-2.6.32 ro root=/dev/sda5
initrd /initrd-2.6.32

Para adicionar um novo kernel, voc deve primeiro copiar esta entrada e, em seguida,
modific-la. Ateno especial aos trs detalhes:
Especifique a linha title para que seja nica e identificvel para esse novo kernel;
Troque o nome do arquivo kernel listado na linha kernel para combinar com o novo
kernel especificado. Lembre-se que o nome do kernel especificado diretamente a
partio root, no ao sistemas de arquivo root. No exemplo acima o kernel est
localizado numa partio boot separada;
Se o novo kernel utiliza initial RAM disk, ajuste a linha initrd para apontar para o novo
arquivo, ou adiciona-la se no estiver presente.
Antes de fazer qualquer alterao do GRUB 2 faa backup do arquivo
/boot/grub/grub.cfg.
No GRUB 2, antes de instalar um novo kernel nele utilize o comando update-grub como
root (ou grub-mkconfig). Esses programas possuem scripts de checagem que verificam novos
kernel presentes do sistema e fazem toda configurao automaticamente. Aps utiliza-los
verifique se o grub.cfg foi alterado, se sim reinicie o sistema e teste o novo kernel. Caso no
funcione verifique o nome dado ao kernel, alguns scripts s reconhecem se o nome do arquivo
tiver uma nomenclatura especifica, exemplo, vmlinuz ou kernel.
Caso no funcione voc ter que editar o arquivo manualmente, procure por,
/etc/grub.d/40_custom e crie uma nova entrada. Exemplo:
GRUB 2
menuentry Fedora (2.6.35.4) {
set root=(hd0,1)
linux /vmlinuz-2.6.35.4 ro root=/dev/sda5
initrd /initrd-2.6.35.4
}

Se o 40_custom j estiver sendo utilizado, use-o como modelo, copie e modifique o


menuentry e as outras linhas importantes.
14

DICA:
/proc/sys/kernel subdiretrio que contem um grande numero de arquivos que possibilitam
checar e ajustar configuraes do kernel. O mais correto utilizar comando que utilizam esse
subdiretrio como suporte de informaes. A exemplo do uname que utilzia o
/proc/sys/kernel/ostype (mesmo que uname -s) e /proc/sys/kernel/version (uname -v).
Verificando mdulos
Use o comando lsmod para checar todos os mdulos carregados. E modinfo
<nome_modulo> para saber mais detalhes de um modulo especifico. Se voc est
interessado em um campo especifico voc utiliza a opo -F. Como no exemplo:
# modinfo -F description sr_mod
Significado dos valores 0 (modulo no est sendo utilizado), 1 ou 2 est sendo
utilizado, e logo ao lado, em alguns casos ele diz o nome de outro modulo que o est utilzando.
Procurar por mdulos em: /lib/modules
Gerenciando Mdulos
Insira um CD no sistema;
Monte o CD no sistema utilizando o comando mount;
Use lsmod | grep cdrom para checar se o modulo est carregado;
Tente remover o modulo com rmmod cdrom , no ser possvel pois existe outro
modulo dependente do primeiro;
Use rmmod sr_mod , tambm no funcionar, pois h uma mdia fazendo uso do
modulo;
Utilize o comando umount para desmontar o ponto montado;
Use novamente rmmod para remover primeiro o sr_mod depois o cdrom (modulo);
Para recarregar os mdulos novamente use: modprobe -v sr_mod , esse comando
carregar tanto o sr_mod, quanto o cdrom;
O comando modprobe -v -r sr_mod descarregar os dois mdulos (cdrom e sr_mod).
J o comando modprobe sr_mod carregar sr_mod, mas como esse modulo necessita
do modulo crdrom, este tambm ser carregado.
Manuteno de mdulos e arquivos e suas ferramentas
As dependncias dos mdulos esto armazenadas no arquivo modules.dep , que
mantido em /lib/modules/<verso_do_kernel>. Esse arquivo .dep no deve ser editado
manualmente, voc deve utilizar o depmod para trabalhar com ele. Por exemplo:
# depmod sem opes e como root, ir reconstruir o modules.dep de acordo com os
mdulos atualmente carregados no sistema.
O principal arquivo de configurao de mdulos o /etc/modules.conf ou
/etc/modprobe.conf. Esse arquivo mantem aliases de mdulos (isso , nomes alternativos
para mdulos). Em algumas distribuies ao invs de um nico arquivo, ele pode ser um
diretorio quem contem mltiplas configuraes, como, /etc/modules.d ou /etc/modprobe.d.

15

Kernel personalizado
Recursos podem ser compilados:
Internamente (embutidos) * e [ ] ;
Dinamicamente carregvel (como um modulo) M ;
< e > indicam que o item poder ser compilado internamente ou como mdulo.
Recursos deixados em branco so sero descartados para o kernel.
Principais sees de configurao
Code maturity level options: mostrar ou no recursos do kernel considerados
instveis;
General setup: caractersticas gerais do kernel. possvel incluir um termo de verso
para o kernel personalizado;
Loadable module support: suporte ao sistema de mdulos e definio de algumas
caractersticas;
Processor type and features: indica o tipo de processador que o kernel utilizar, e
recursos como multiprocessamento;
Power management (ACPI, APM): opes relativas ao controle de energia. Indicado
especialmente para laptops;
Bus options (PCI, PCMCIA, EISA, MCA, ISA): suporte aos diferentes tipos de
barramentos;
Executable file formats: tipos de arquivos que o sistema operacional ser capaz de
executar;
Networking: suporte e configurao dos diferentes tipos de plataformas de rede;
Device Drivers: escolha e configurao dos dispositivos de hardware, integrados e
perifricos;
File systems: lista de sistemas de arquivos compatveis e recursos a eles
relacionados;
Kernel hacking: opes de depurao do kernel.
As configuraes so salvas no arquivo /usr/src/linux/.config , que ser usado para guiar
a construo do novo kernel e mdulos. No arquivo Makefile possvel mudar variveis como
EXTRAVERSION, que indica ser uma compilao do kernel personalizado.
O mais indicado criar pacotes Tar, RPM ou Deb, utilizando os prprios recursos de
compilao do kernel:
make rpm-pkg: Gera um pacote RPM compilado e com cdigo-fonte;
make binrpm-pkg: Gera um pacote RPM compilado;
make deb-pkg: Gera um pacote compilado Deb;
make tar-pkg: Gera um arquivo Tar sem compresso;
make targz-pkg: Gera um arquivo Tar com compresso gzip;
make tarbz2-pkg: Gera um arquivo Tar com compresso bzip2.
O empacotamento evita a configurao e compilao individual e a copia manual de cada
arquivo necessrio para as demais maquinas.

201.3 Controlar o kernel em tempo real e soluo de problemas. (4)


16

Necessria utilizao do uname para obter informaes do kernel vigente.


Opes do uname uteis:
-r verso do cdigo fonte do kernel (indica o nome do diretrio em /lib/modules);
-a todas as informaes;
Ele extrai essas informaes de arquivos localizados no diretrio /proc/sys/kernel/, diretrio
logico criado pelo prprio kernel para disponibilizar a outros comandos.
Alm de fornecer informaes de recursos disponveis em sistemas de maior porte, como:
SMP (Symmetric Multi Processing, para mais de um processador ou ncleo), RT (Realtime,
para baixa latncia).
Mdulos do kernel
Mdulos externos, ou seja, arquivos externos que no necessitam estar o tempo todo
carregados na memria. Os mdulos ficam no diretrio /lib/modules/, de acordo com a verso
do kernel obtida com o comando uname -r.
Assim que o kernel identifica um dispositivo ou quando um recurso modular
solicitado, o modulo correspondente carregado automaticamente, invocado pelo comando
modprobe (padro atual) ou insmod (antigo).
Modprobe carrega o que especificado no modules.dep presente no diretrio dos
mdulos correspondentes ao kernel. Ele identifica o kernel em execuo e busca o mdulo
no diretrio apropriado.
O arquivo modules.dep, que armazena quais so os mdulos disponveis e quais so
as dependncias de cada modulo, gerado ou atualizado pelo comando depmod -a.
O modules.dep gerado automaticamente quando novos mdulos so instalados a
partir de uma compilao do kernel oficial, pois o comando depmod a invocado ao termino
do processo de instalao (make modules_install). Quando instalado um modulo no oficial,
o depmod pode no ser executado automaticamente. Nesse caso, basta invocar o comando
depmod -a manualmente, como root.
Mdulos atualmente carregados podem ser checados com: # lsmod .
# modprobe -r snd-hda-intel descarrega o modulo especificado e todos os outros
diretamente relacionados a ele (desde que no estejam sendo usados por terceiros).
Em alguns casos pode ser necessrio passar parmetros ao modulo para alterar seu
comportamento e operar como desejado.
O comando modinfo mostra a descrio, o arquivo, o autor, a licena, a identificao,
as dependncias e os parmetros para o modulo solicitado. As linhas comeadas com alias
mostram todas as identificaes de hardware correspondentes ao modulo em questo. Todo
hardware identificado com um desses valores provocar o carregamento desse modulo.
# modinfo -p <modulo> informa somente as opes que o modulo aceita.
# modprobe snd-hda-intel model=3stack opo model determina um modelo do dispositivo
especifico.
/etc/modprobe.d/modprobe.conf (ou dentro de um arquivo individual nesse mesmo diretrio)
mantem os parmetros personalizados.
O parmetro anterior poderia estar no arquivo modules.conf na forma:
options snd-hda-intel model=3stack

17

No mesmo modprobe.conf possivel criar nomes alternativos com o alias:


alias sound-slot0 snd_hda_intel
Definindo aes no modprobe.conf:
install snd-hda-intel modprobe snd-ice1712; modprobe --ignore-install snd-hda-intel
carrega primeiro o modulo snd-ice1712 quando o modulo snd-hda-intel for carregado.
A opo --ignore-install necessria para que o modprobe no execute novamente a
instruo install referente ao modulo snd-hda-intel no arquivo modprobe.conf.
possvel usar o mesmo procedimento ao descarregar mdulos.
remove snd-hda-intel modprobe --ignore-remove -r snd-hda-intel; modprobe -r snd-ice1712
a opo --ignore-remove aparece para impedir a execuo cclica da instruo remove
ao modulo snd-hda-intel no arquivo modprobe.conf .

201.4 Gerenciamento de dispositivos udev. (1)


Udev, hotplug e coldplug
# udevmonitor
# udevadm monitor
ambos registram eventos nos sistemas: /dev e /sys. Ou melhor, eventos disparados
pelo kernel e que o udev assume a responsabilidade. As aes so determinadas
pelos arquivos de regras do udev.
O principal arquivo do udev /etc/udev/udev.conf . Os arquivos de regra ficam em
/etc/udev/rules.d .
SUBSYSTEM=="usb", ATTR{product}="USB2.0 MFP(Hi-Speed)", SYMLINK+="scanner"

Option C correctly describes a flaw in this rule. The ATTR{product} key is part of a matching
rule, which requires an == operator, not an = operator. As written, the rule will change the
product attribute of all USB devices to USB2.0 MFP(Hi-Speed). Contrary to option D, a
KERNEL key is not required of udev rules, although many rules do contain such a key. Option
A is exactly backwards; SUBSYSTEM's use of == is correct. Although replacing SYMLINK's
+= operator with == will probably work fine, this isn't a flaw in the rule as written. (The +=
operator will add a new symbolic link, whereas = will replace any already-defined symbolic link
with the one specified in the rule.)

202.1 Personalizar o inicio do sistema SysV-init. (3)


Init (PID 0) invoca todos os servios do sistema por meio de scripts de inicializao.
Padro BSD (Slack) /etc/rc.d/
Padro System V (Debian) /etc/init.d/
Ativando/Desativando scripts de inicializao
Padro RH chkconfig
Padro Debian update-rc.d
# chkconfig --list nome_do_servio
# chkconfig --level 345 ntpd off servio ntpd desativado nos nveis 3, 4 e 5.
Links: /etc/rcX.d/ Alvo: /etc/init.d

18

# update-rc.d nome_do_servio defaults 21 19 Para inserir um link de servio que necessita


de um servio de prefixo 20 esteja j iniciado.
# update-rc.d nome_do_servio start 21 2 3 4 5 . stop 19 0 1 6 .
Aps o termo start, informado o nmero de sequncia seguido dos nveis de
execuo para incio. O ponto termina a lista de nveis de execuo. O termo stop, de forma
semelhante, determina o nmero de sequncia e os nveis de execuo para termino, tambm
terminando com o ponto. Dessa forma possvel informar nveis de execuo especficos
para incio e fim de um servio. importante lembrar que para utilizar o comando update-rc.d
necessrio que o script do servio esteja presente no diretrio /etc/init.d.
A remoo dos links de servios feita usando a opo remove. Contudo,
necessrio que o script do servio em /etc/init.d j no exista mais, provavelmente removido
por uma desinstalao do programa correspondente.
# update-rc.d nome_do_servio remove
Caso o script ainda exista, os links no sero removidos e um aviso ser emitido. Para
forar a remoo dos links mesmo que o script ainda exista, deve ser fornecida a opo -f:
# update-rc.d -f nome_do_servio remove
Evita que uma atualizao do servio reinstale os links, devem ser criados os links de
interrupo nos respectivos nveis de execuo:
# update-rc.d nome_do_servio stop 20 2 3 4 5 .
-n apenas testa o comando;
# update-rc.d foobar defaults adiciona o foobar aos runlevels padro, adotando o seguinte
esquema:
Criao de links K (stop) em: rc0.d, rc1.d e rc6.d; e links S (start) em: rc2.d, rc3.d, rc4.d e
rc5.d.
# update-rc.d -f dovecote remove remove qualquer link de inicializao do dovecot em todos
os diretrios que ele estiver.
-f force, nessas situaes necessria;
# update-rc.d -f dovecot stop 24 2 3 4 5 . Adding system startup for /etc/init.d/dovecot ...
/etc/rc2.d/K24dovecot
/etc/rc3.d/K24dovecot
/etc/rc4.d/K24dovecot
/etc/rc5.d/K24dovecot

->
->
->
->

../init.d/dovecot
../init.d/dovecot
../init.d/dovecot
../init.d/dovecot

As sete fases durante o boot:


1. Kernel loader loading, setup and execution
2. Register setup
3. Kernel decompression
4. Kernel and memory initialization
5. Kernel setup
6. Enabling of remaining CPU's
7. Init process creation
O passo final do kernel tenta executar esses comandos em ordem, at que um deles
seja bem sucedido:
1. /sbin/init
19

2. /etc/init
3. /bin/init
4. /bin/sh
Se nenhum desses der certo o kernel entrar em pnico.
Runlevels possveis: 0 a 9; s ou S (single-user mode); A, B e C (on demand).
Significado dos campos do /etc/inittab
id identifica unicamente uma entrada no arquivo /etc/inittab e pode ter de 1 a 4 caracteres.
Para o getty e outros processos de login entretanto, o campo id deve conter o sufixo que
corresponde ao tty, ou o login das contas pode no funcionar;
runlevels define que runlevel ser iniciado pelo sistema primariamente;
action pode ter um dos seguintes valores:
respawn o processo ser reiniciado sempre que terminar (ex.: getty);
wait o processo ser iniciado quando um runlevel especifico introduzido, e
o init ir esperar por sua concluso;
once o processo ser executado uma vez, quando um runlevel especifico for
introduzido;
boot o processo ser executado durante o boot do sistema. O campo
runlevel ignorado;
bootwait o processo ser executado durante o boot do sistema, enquanto
init aguarda pelo termino (ex.: /etc/rc). O campo runlevel ignorado;
off Isto no faz absolutamente nada;
ondemand o processo marcado com um runlevel ondemand ser executado
sempre que runlevel ondemand especificado chamado. Entretanto, nenhuma
troca de runlevel ir ocorrer (on demand runlevels so a, b e c).
initdefault uma entrada initdefault especifica o runlevel que deveria entrar
depois do boot do sistema. Se nenhum existir o init ir solicitar o runlevel no
console. O campo processo ignorado;
sysinit o processo ser executado durante o boot do sistema. Ser
executado antes de qualquer inicializao ou entradas bootwait. O campo
runlevel ignorado;
powerwait o processo ser executado quando o sistema for desligado. Init
informado sobre isso por um processo que tem contato com o nobreak
conectado ao computador. O init aguardar pelo termino do processo antes de
continuar o powefail;
powefail Como o powerwait, mas no aguarda pelo fim do processo;
powerokwait esse processo ser executado assim que o init informado que
a energia foi restaurada;
powerfailnow esse processo ser executado quando o init informado que
a bateria do nobreak est quase no fim e a energia ser cortada;
ctrlaltdel o processo ser exefcutado quando init receber o sinal SIGINT.
Isso significa que algum no sistema pressionou CTRL-ALT-DEL. Significa que
algum deseja executar algum tipo de encerramento, ou para entrar em modo
single-user ou reiniciar o sistema;

20

kbdrequest o processo ser executado quando init receber um sinal do


teclado, uma combinao especial. Basicamente voc deve mapear alguma
combinao no teclado para a ao KeyboardSignal. Por exemplo para
mapear Alt-UpArrow usar o seguinte: alt keycode 103 = KeyboardSignal.
process esse campo especifica um processo que dever ser executado. Se o campo iniciar
com um +, o init no far a contagem utmp e wtmp. Alguns gettys persistem em efetuar seu
prprio servio de limpeza.
Exemplo do /etc/inittab :
# The default runlevel.
#[id]:[runlevel]:[action]:[processo]
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
Runlevel 1 is
Runlevels 2-5
Runlevel 6 is

halt.
single-user.
are multi-user.
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 fall through in case of emergency.
z6:6:respawn:/sbin/sulogin
# /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>
1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2

Linux Standard Database


O objetivo da LSB desenvolver e promover um conjunto de padres que aumentaro
a compatibilidade entre distribuies Linux e permitir que aplicaes de software funcionem
em todo o sistema comum. Alm do mais, o LSB ajudar esforos coordenados para
recrutamento de vendedores do software para portar e escrever produtos para Linux.

21

O LSB especifica, por exemplo: bibliotecas padres, um nmero de comandos e


utilidades que estendem o padro POSIX, a disposio da hierarquia do sistema de arquivos,
nveis de execuo, e diversas extenses ao sistema X-Window.
Define uma lista de mais de 130 comandos que devem estar disponveis em sistemas
que seguem esse padro. Alguns exemplos: cp, tar, kill, gzip, runtime languages (perl e
python).
O LSB emprega o padro Red Hat Package Manager. Distribuies compatveis com
LSB, e baseadas em Debian, podem ler pacotes RPM utilizando o comando alien.
Antigo padro LSB: /etc/rc.d/rcX.d
Novo padro LSB: /etc/init.d/rcX.d
Chkconfig para SuSE/Novell ele funciona como um front-end do insserv e utiliza padres do
LSB. As duas linhas principais so description: e chkconfig:.
Exemplo de script:
# Init script for foo daemon
#
# description: food, the foo daemon
# chkconfig: 2345 55 25
#
#

Isso denota que o daemon foo ira iniciar nos runlevels 2, 3, 4 e 5 com a prioridade 55
na ordem de initscripts que roda durante a inicializao do sistema (seria um S55), e com a
prioridade 25 para par-lo (K25).
O chkconfig no desabilita ou habilita automaticamente um servio imediatamente, ele
simplesmente altera um link simblico. No seguinte exemplo, se o daemon do cron est
funcionando, e o sistema baseado em Red Hat, que est rodando no momento em runlevel
2.
# chkconfig --levels 2345 crond off
O comando acima alterar o crond administrativamente, mas no parar o cron
imediatamente. Se faz notar que num sistema Red Hat possvel especificar mais de um
runlevel (como mostrado no comando anterior). Num sistema Novell/SuSE, voc pode usar:
# chkconfig food 2345
E pra mudar somente pro runlevel 1:
# chkconfig food 1
# chkconfig --list lista o status corrente dos servios e os runlevels em que eles esto ativos.
Por exemplo, as linhas seguintes so o output:
xdm
xfs

0:off
0:off

1:off
1:off

2:off
2:off

3:off
3:off

4:off
4:off

5:on
5:off

6:off
6:off

Demonstra a ativao de dois servios (xdm e xfs) de acordo com o runlevel em que o sistema
est. Para adicionar um novo servio, digamos, foo. Teremos que criar um novo init script e
nomea-lo, food. Esse script posto no diretorio /etc/init.d, depois se faz necessrio inserir o
cabealho para que o script. Em seguida executar os comandos:
# chkconfig --add food
# chkconfig --del food remove de todos runlevels
Ateno que o script food permanecer no diretorio /etc/init.d.

202.2 Recuperao do sistema. (4)


Causas de inicializao:
Servio mal configurado;
22

Falha no sistema de arquivos (arquivos corrompidos ou falha de hardware).

Recuperao do Grub Legacy


Procurar onde o grub foi instalado via:
# find /boot/grub/stage1
# grub para entrar em modo grub e digitar os comandos;
root (hd0,0) para informar que o grub est na primeira partio do primeiro disco.
setup (hd0) reinstalao da MBR no primeiro dispositivo;
quit para sair
Recuperao do Grub 2
CLI mode c
Permite executar comandos para selecionar um root (comando root), carregar um
kernel (comando linux), e se necessrio carregar mdulos (comando insmod) e inicializar um
kernel (comando boot).
Modo de edio e
/boot/grub/device.map serve para mapear as unidades presentes no sistema, facilita a
descoberta de unidades. Normalmente o GRUB obtem essas informaes da BIOS.
Exemplo de device.map:
(fd0)
(hd0)

/dev/fd0
/dev/hda

Se RAID 1 estiver sendo utilizado o GRUB deve ser definido em ambos os discos.
Sistemas operacionais estrangeiros so automaticame nte detectados pelo script
/etc/grub.d/30_os/prober
GRUB 2 utiliza o comando linux, enquanto que o Legacy usa o comando kernel para
fazer a especificao do kernel.
GRUB 2 usa insmod, enquanto o Legacy utiliza module ou modulenounzip para
carregar mdulos.
Arquivo principal: /boot/grub/grub ou /etc/grub2 (no edita-los diretamente)
Arquivo modificvel: /etc/default/grub aps modificao executar # update-grub ou grub2
Ou # grub-mkconfig -o /boot/grub/grub.cfg ou # grub2-mkconfig -o /boot/grub/grub2.cfg
Configuraes avanadas: /etc/grub.d/
Falha de servios
Iniciando o sistema com apena o bash, sem subir o init:
init=/bin/bash (fazer isso no prompt do bootloader).
# mount -o remount,rw / (para subir a partio raiz e efetuar as alteraes)
Para no escrever nada no sistema que possa vir a corrompe-lo ainda mais passe o disco
para leitura somente: # mount -o remount,ro /

202.3 Carregadores de boot alternativos. (2)


23

Lilo quando carregado invoca o segundo estgio do carregador de inicializao em


/boot/boot.b
Arquivo de configurao: /etc/lilo.conf
Comando que l as configs do lilo e instala o carregador na MBR: /sbin/lilo
Criando um pendrive de recuperao
SYSLINUX
Formato FAT: # mkfs.vfat /dev/sdxy (recomenda-se utilizar a id b)
- Marcar a partio como inicializvel no fdisk (opo a);
- Copiar uma MBR para o inicio do dispositivo (podem ser encontradas amostras no diretrio
/usr/share/syslinux/ ou /usr/lib/syslinux/
- A mbr.bin a mais adequada para maioria dos casos.
- # dd bs=440 if=/usr/share/syslinux/mbr.bin of=/dev/sdx
- Para carregar o Sistema, incluir: kernel e o Sistema de arquivos em RAM (initramfs). De
preferncia dentro de um diretrio.
- Deve estar tambm o arquivo de configurao do syslinux (syslinux.cfg)
Ex. de syslinux.cfg :
DEFAULT linux
LABEL linux
SAY Iniciando pelo pendrive...
KERNEL vmlinuz-3.11.9-200.fc19.i686
APPEND root=<inserir_aqui_o_UUID_da_particao_raiz> initrd=initramfs-3.11.9200.fc19.i686.img ro
- Gravando o carregador de boot # syslinux -i /dev/sdxy (deve estar desmontado ou em
somente leitura;
- Gravando o carregador ldlinux.sys dentro do diretrio syslinux no pendrive, utiliza-se
# syslinux -d syslinux -i /dev/sdxy
Extlinux
- Deve ser instalado em um diretrio;
- Instala-lo em /boot/extlinux/
o # mkdir -p /boot/extlinux
o # extlinux -i /boot/extlinux
- O arquivo de configurao o extlinux.cnf e deve estar no diretorio onde o extlinux foi
instalado;
- MBR deve ser copiada para o dispositivo contendo o diretorio onde o extlinux foi
instalado, partio de boot a nativa.
Pxelinux
- Auxilia no processo de boot onde o SO carregado via interface de rede;
- Depende dos protocolos: DHCP, TFPD e compartilhamentos NFS;
- No Debian esses pacotes correspondem a isc-dhcp-server, tftpd-hpa e nfs-kernel-server;
- O servidor DHCP deve estar configurado da seguinte maneira:
subnet 192.168.147.0 netmask 255.255.255.0 {
option domain-name-servers 192.168.147.1;
option routers 192.168.147.1;
range 192.168.147.10 192.168.147.20;
24

next-server 192.168.147.125;
}
host diskless {
hardware ethernet 00:90:f5:e3:34:3a;
filename pxelinux.0;
}
Ateno para as entradas:
next-server (determina o servidor do carregador de boot);
filename (determina o nome do carregador de boot no servidor). No exemplo foi
definido o carregador pxelinux.0 para o cliente cujo MAC for o especificado;
O servidor TFTP (+ simples que FTP) (.125) ser encarregado de enviar o carregador de boot
pxelinux.0 para o cliente.
- Copiar os arquivos de kernel e imagem initramfs que deve ser carregado para o diretrio
/srv/tftp, esses arquivos costumam ser vmlinuz e initrd.img.
- O contedo mnimo de /srv/tftp so: pxelinux.0 ; vmlinuz ; initrd.img ; pxelinux.cfg/default
Para clientes especficos pxelinux.cfg/<MAC>
Contedo de pxelinux.cfg:
DEFAULT /vmlinuz
APPEND
ip=DCHCP
root=/dev/nfs
nfsroot=192.168.147.125:/srv/root
initrd=initrd.img
nfsroot=192.168.147.125:/srv/root indica o Sistema de arquivos remoto que ser
carregado pelo cliente (compartilhamento NFS que dever estar configurado
adequadamente).
O /boot/initrd.img usado pela base do kernel para criar um arquivo simples de sistema em
um ramdisk que precede a montagem do arquivo de sistema completo.
/boot/system.map uma tabela que mostra os endereos para smbolos do kernel;
/boot/config executa a configurao tarefa de tempo de inicializao;
/boot/vmlinuz a base do kernel, que sempre renomeada para vmlinuz.
Isolinux
- Carregador de boot para CDROM tipo ISO 9660/El Torito sem modo de emulao;
1) No diretrio raiz dos arquivos que entraro na imagem, criar o diretrio boot/isolinux/;
2) Copiar o arquivo isolinux.bin de /usr/lib/syslinux/ ou /usr/share/syslinux/ para dentro do
diretrio boot/isolinux criado anteriormente;
3) Criar o arquivo de configurao isolinux.cfg no diretrio. O arquivo de configurao obedece
a mesma sintaxe da configurao do syslinux;
4) Copiar demais arquivos necessrios (kernel, imagem initramfs, etc).
Em seguida utilizado o comando mkisofs para criar a imagem ISO:
# mkisofs -o <imagem.iso> \
-b boot/isolinux/isolinux.bin -c boot/isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
<raiz dos arquivos>
ATENCAO: se a distro nao tiver o mkisofs utilize o genisoimage.

25

Memdisk
- Apropriado para sistemas antigos ou especializados;
- Carregamento via disquete;
- Procedimento parecido ao utilizado em pendrives;
- No lugar do kernel, copiar o arquivo memdisk (localizado em /usr/share/syslinux/ ou
/usr/lib/syslinux);
- Para o lugar do initramfs utiliza-se a prpria imagem do disquete;
- Arquivo syslinux.cfg contem apenas uma linha:
default memdisk initrd=kolibri.img
(no exemplo foi utilizada imagem do KolibriOS, que escrito em assembly.)

203.1 Trabalhando com o sistema de arquivos Linux. (4)


# mount -t tipo dispositivo diretrio
# mount sem opes, exibe os dispositivos montados;
Outro modo de exibi-los: /etc/mtab (no mais padro) ou /proc/mounts ;
# mount -a montagem automtica das parties listadas no fstab;
# blkid serve para obter o UUID das parties;
O caminho /dev/hda2 no fstab pode ser substitudo pelo UUID, ficando UUID=x
# mkswap configura uma partio como swap, sem ativa-la.
# swapon ativa a partio swap.
# swapoff a desmonta todos os swap (encontrados /proc/swaps e /etc/fstab sem opo
noauto).
Usando um arquivo como partio de swap
# dd if=/dev/zero of=swapfile.bin bs=1024k count=256
# mkswap swapfile.bin formatando para swap
# swapon swapfile.bin ativando o arquivo como swap
# swapon -a -e as parties no encontradas sero ignoradas sem aviso;
# swapon -L nome utilizar a partio com o label nome;
# swapon -p 0-32767 define a prioridade da rea de swap especificada. Quanto maior o
numero, maior a prioridade. Indicado no /etc/fstab pri=0-32767.
As de maior rea so utilizadas por completo at terminarem. As de mesma prioridade
so utilizadas em paralelo. Aceitam nmeros negativos.
# swapon -s mostra uso de cada espao de swap, extrado do contedo do arquivo
/proc/swaps.
# swapon -U id usa a partio com UUID correspondente a id.

sync Efetua a sincronizao de dados na memoria cache sem fazer a


desmontagem do sistema de arquivos, ele realiza em todos os dispositivos do sistema.

203.2 Manuteno de um sistema de arquivo Linux. (3)


# tune2fs -j /dev/hdx tranforma a partio hdx (ext2) em ext3.
# dumpe2fs -f /dev/hda6 fornece uma viso geral.
# tune2fs -l /dev/hda6 opo parecida com a anterior.
26

# tune2fs -c 0 /dev/sda3 ignora checagem automatic a partir do numero de montagens


realizadas;
# tune2fs -i lm /dev/sda3 determinar que a verificao seja feita uma vez por ms;
# tune2fs -j /dev/sda3 atribuir journalling ao sistema de arquivos na partio /dev/sda3;

Xfs
# xfs_info / obtm informaes num sistema XFS;
# xfs_check identifica inconsistncias e informar esses erros;
# xfs_repair corrige as inconsistncias encontradas;

Fsck
-a corrigir erros automaticamente, sem fazer nenhuma pergunta;
-n no faz nenhuma correo, apenas informa o erro na sada padro;
-r realiza os reparos em modo interativo. Pode causar confuso se vrias checagens esto
acontecendo em paralelo;
-y essa opo determina que o fsck a alternativa padro para qualquer problema que
encontrar.

Debugfs alteraes de baixo nvel, ext2 e ext3. Recupera arquivos apagados.


# debugfs -w /dev/hda6 abriu a partio com permisso de escrita
lsdel mostra arquivos apagados (inodes);
undelete <12> relatorio.txt associa o inode 12 ao arquivo relatrio.txt

Debugreiserfs
ATENAO: No recupera arquivos apagados.

Smart Verifica a sade dos discos;


Daemon: smartd
Utilitrio: smartctl

Badblocks Descobre que setores esto defeituosos e gera um relatrio.


Sabendo onde esto esses setores voc pode utilizar o comando mke2fs -c para criar uma
partio que os ignora.
203.3 Criando e configurando opes de sistemas de arquivos. (3)
Utilitrio:

autofs Utiliza recursos de montagem oferecidos pelo prprio sistema


A identificao dos dispositivos automtica.
Principal arquivo de configurao: /etc/auto.master
/mnt/misc /etc/auto.misc --timeout=10
--timeout=10 determina que aps uma inatividade de 10 segundos no diretrio monitorado,
os subdiretrios que porventura estiverem montados sero desmontados.
O mapa mestre nico e consultado durante a inicializao do sistema ou quando
invocado o comando automount manualmente.
Script de inicializao: /etc/init.d/autofs ou /etc/rc.d/autofs
Eles checam o arquivo /etc/auto.master e passa cada linha do argumento para o automount,
que ficar ativo e monitorando os diretrios especificados no mapa mestre.
Criao de imagem de CD
# dd if=/dev/cdrom of=imagem.iso criando a imagem do cdrom;
27

# cdrecord dev=ATA:0,0,0 imagem.iso queimando imagem no cd (em aparelhos antigos);


# cdrecord dev=/dev/sr0 imagem.iso queimando imagem no cd (em aparelhos novos);
# mkisofs -o imagem.iso diretorio/um_diretorio/dois ... criando a partir de arquivos e
diretrios.
-J (Joliet) atributos para leitura no Windows;
-R (Rock Ridge) preserva atributos Uni
-udf (padro universal) recomendado
Criptografia LUKS
Se o pacote cryptsetup estiver instalado ele poder ser usado. considerado o mtodo
padro para criptografia de discos e parties Linux.
ATENO: a partio deve estar vazia antes de ser realizado o procedimento.
# cryptsetup --verbose --verify-passphrase luksFormat /dev/sdb1 criptografa a partio.
# cryptsetup luksOpen /dev/sdb1 protegido
Caminho para partio liberada ser: /dev/mapper/protegido
Ela poder ser formatada com um sistema de arquivos convencional
# mkfs.ext4 /dev/mapper/protegido
Depois ele poder ser montado e desmontado da maneira tradicional.
Para montar essa partio durante o boot necessrio editar o arquivo /etc/crypttab (se no
existir crie-o).
protegido /dev/sdb1 none
none determina que a senha ser pedida durante a inicializao do sistema.
Ultima etapa incluir no arquivo /etc/fstab uma entrada apontando para partio virtual em
/dev/mapper:
/dev/mapper/protegido /mnt/protegido ext4 defaults 1 2

204.1 Configurao de RAID. (3)


RAID 0 stripping diviso de dados entre discos mais rpido e mais espao;
RAID 1 mirroring espelhamento de dados entre discos metade do espao total somado;
RAID 5 mnimo de 3 discos redundncia feita por todos discos.
/etc/rc.d/rc.local e /etc/init.d/rcS podem ser utilizados para automatizar a ativao de RAID
aps um reboot.
The software RAID can be configured using the following steps:
Initialize a partition for the RAID setup: First, initialize a partition using any disk partitioning
tool.
Configure the driver: The default configuration file to configure RAID is /etc/raidtabs.
However, a user can create a new RAID file also using the mkraid command. In the
configuration file, a user can specify the RAID level, partitions/drives, device-name, etc.
to use for the RAID drive.
Initialize a RAID drive: Initialize a RAID drive using the mkraid command and create a
new filesystem using the mkfs command.
Automate RAID activation after reboot: Run raidstart in one of the startup files (e.g.
/etc/rc.d/rc.local or /etc/init.d/rcS) before mounting the filesystem at boot time using the
raidstart command.
28

Mount the filesystem on the RAID drive: To automatically mount RAID drive edit the
/etc/fstab file.

Ferramentas para uso de RAID: raidtools e mdadm.


- Primeiro criar o arquivo /etc/raidtab:
raiddev /dev/md0
raid-level
0
nr-raid-disks
2
persistent-superblock
0
chunk-size
8
device
/dev/hdb
raid-disk 0
device
/dev/hdd
raid-disk 1
O Sistema l essas informaes durante o incio e dispara os comandos necessrios
do pacote raidtools para configurar o RAID via software.
raiddev: define o incio da configurao, esse arquivo pode ter vrias sees;
raid-level: o nvel de RAID para o dispositivo. No exemplo, utilizado RAID nvel 0;
nr-raid-disks: o n de dispositivos ou parties reais dentro do sistema RAID;
persistente-superblock: No necessrio, mas til se o dispositivo for movido,
para no alterar a ordem original. Valores possveis: 0 e 1.
chunk-size: tamanho em kilobytes dos pacotes de dados que sero distribudos entre
os dispositivos RAID. Deve ser mltiplo de 2. No exemplo, 8 Kb;
device: dispositivo ou partio includo no RAID;
raid-disk: posio numrica do dispositivo ou partio correspondente.
# mkraid /dev/md0 executar aps a criao e configurao do arquivo /etc/raidtab.
# raidstart ativa o RAID para o dispositivo especificado;
# raidstop desativa o dispositivo RAID;
Os trs comandos aceitam a opo -a, que causar efeito em todos os dispositivos listados
em /etc/raidtab.
RAID com mdadm
- Mais complexo
# mdadm -C /dev/md0 -v l 0 -n 2 /dev/hdb /dev/hdd cria um dispositivo md0 que representa
um RAID 1 (com hdb e hdd).
O comando mdadm pode ler as configuraes a partir do arquivo pr-existente mdadm.conf.
Este arquivo, geralmente em /etc/ ou /etc/mdadm/, contm as informaes necessrias para
criao e ativao de dispositivos RAID.
Exemplo de mdadm.conf:
DEVICE /dev/hdb /dev/hdd
ARRAY /dev/md0 devices=/dev/hdb,/dev/hdd level=0
DEVICE ou DEV: determina quais dispositivos ou parties pertencem a um RAID;
ARRAY: especifica um dispositivo de acesso ao RAID e demais opes para ele;

29

Se no forem especificados os dispositivos o sistema assume DEVICE partitions.


Examinando todas as parties listadas no /proc/partitions e incluindo aquelas que possuam
superblock caracterstico de RAID.
/proc/mdstats pode ser consultado tanto por raidtools quanto por mdadm.
Ex:
Personalities : [linear] [raid0] [raid1]
md0 : active raid0 hdd[1] hdb[0]
14450400 blocks super non-persistent 8k chunks
unused devices: <none>
RAID por software recomendado para ter mais segurana na cpia e
armazenamento de dados. Se por hardware no for possvel opte por RAID 1 ou 5, via
software.

204.2 Ajustar o acesso a dispositivos de armazenamento. (2)


DMA de discos: ativado automaticamente durante o boot, caso no seja, ativa-lo usando o
comando hdparm:
# hdparm -d1 /dev/hda
/dev/hda:
setting using_dma to 1 (on)
using_dma
= 1 (on)

hdparm Inspeciona a configurao atual dos discos e altera outras


configuraes.
# hdparm /dev/hda fornece resumo das configuraes de hda.
Discos SATA no utilizam DMA, pois utilizam outro padro de transferncia de dados.
# hdparm -i /dev/hda informa mais dados (modelo disco, firmware, n de serie, etc).
Para discos SCSI ou SATA o mais acertado usar sdparm.
# sdparm -a /dev/sda possvel saber se est sendo usado diretamente ou via RAID.
/proc/sys/fs/file-max altera o nmero mximo de arquivos abertos.
# sysctl fs.filex-max
fs.file-max = 89889
Alterando o valor:
# echo 99999 > file-max
Ou
# sysctl -w fs.file-max=99999
Ferramentas para iSCSI

initiator Cliente
Se opes de autenticao foram definidas no alvo, incluir as informaes no arquivo de
configurao do iniciador, /etc/iscsi/iscsi.conf. Para listar os alvos disponveis utilize:
# iscsiadm -m Discovery -t sendtargets -p 192.168.100.135
30

192.168.100.135:3260,1 iqn.2013-11.com.lcnsqr.debian:scsi
O nmero 192.168.100.135 o servidor com alvos iSCSI. As informaes sobre os
alvos disponveis so armazenadas em /var/lib/iscsi/. Para poder utilizar um alvo, necessrio
iniciar uma sesso com o servidor:
# isciadm -m node -p 192.168.100.135 --target=iqn.2013-11.com.lcnsqr.debian:scsi --login
Logging in to [iface: default, target: iqn.2013-11.com.lcnsqr.debian:scsi, portal:
192.168.100.135,3260] (multiple)
Login to [iface: default, target: iqn.2013-11.com.lcnsqr.debian:scsi, portal:
192.168.100.135,3] successful.

target Alvo. o servidor no protocolo iSCSI, a mquina onde o dispositivo


est localizado.
Definio: um nome nico que obedece ao formato:
iqn.aaaa-mm.dominioreverso:identificador
aaaa-mm o ano e ms de disponibilidade do recurso.
nomereverso nome de domnio nico na ordem inversa.
identificador ajuda na identificao do recurso ( opcional).
/etc/iet/ietd.conf arquivo de configurao para implementao. Aqui so definidas
as opes de autenticao e os dispositivos fornecidos como alvos na rede IP.
Exemplo de definio de alvo em ietd.conf:
Target iqn.2013-11.com.lcnsqr.debian:scsi
Lun 0 Path=/dev/sda
Lun 1 Path=/dev/sdb
Alvo acima: possui duas unidades logicas apontando para os dispositivos sda e sdb. Gravada
as alteraes o daemon deve ser reiniciado.
Suporte a iSCSI implementado pelo kernel.
# fdisk -l /dev/sd[ab] para checar se os dispositivos esto disponveis no cliente.
# iscsiadm -m session -P 3 mostra informaes sobre a sesso iSCSI.
Se o daemon iscsid for acionado automaticamente no inicio do sistema, tambm sero os
alvos conhecidos. Para apagar os alvos conhecidos, utiliza-se o comando:
# iscsiadm -m discovery -p 192.168.100.135 -o delete

iSCSI Enterprise Target (IET) Utilizado no servidor para criar e oferecer


os alvos na rede. Pode utilizar autenticao bsica para bloquear ou liberar o acesso aos
recursos. No Debian est disponvel pelos pacotes: iscsitarget e iscsitarget-dkms.

Open-iSCSI O iniciador que estabelece a comunicao com o alvo.


Tambm fornece o comando iscsiadm (utilizado para iniciar a sesso iSCSI e identificar os
alvos remotos). Seu pacote pode estar identificado como iscsi-initiator-utils ou open-iscsi.

31

204.3 Gerenciamento de volumes lgicos (LVM). (3)


Mtodo que permite interagir com os dispositivos de armazenamento de maneira
integrada e mais simples que o tradicional particionamento. Com o LVM possvel
redimensionar e incluir espao sem necessidade de reparticionamento ou de mexer nos dados
armazenados.
Um esquema LVM pode ser dividido em cinco elementos fundamentais:
VG (Volume Group): Nivel mais alto de abstrao do LVM. Reune a coleo de
volumes lgicos (LV) e volumes fsicos (PV) em uma unidade administrativa;
PV (Phisical Volume): tipicamente um disco rgido, uma partio do disco ou qualquer
dispositivo de armazenamento de mesma natureza, como um dispositivo RAID;
LV (Logical Volume): o equivalente a uma partio de disco tradicional. Como o LV
age como uma partio tradicional, pode conter um sistema de arquivos;
PE (Physical Extent): cada volume fsico divido em pequenos pedaos de dados,
conhecidos como PE. Possuem o mesmo tamanho LE (Logical Extent);
LE (Logical Extent): cada volume lgico dividido em pequenos pedaos de dados,
conhecidos como LE. Seu tamanho o mesmo para todos os volumes lgicos.
Passo-a-passo para criao de um LVM manual:
1) Atualize o cache do LVM;
2) Crie um arquivo /etc/lvm/lvm.conf bsico utilizando o # vgscan;
3) O disco ou partio a ser utilizado deve ser iniciado para uso do LVM;
4) recomendvel criar uma partio e s ento inicia-la. Se o disco utilizado no for
antes particionado, outros sistemas operacionais que tiverem acesso ao disco podem
enxergar o disco como vazio e sobrescrever os dados nele.
5) O particionamento pode ser feito com o fdisk, utilize o id 8e (Linux LVM);
6) Confirme os dados com # fdisk -l /dev/hd[bd];
7) O comando pvcreate deve ser utilizado para criar uma identificao de volume fsico
na partio. Faa: # pvcreate /dev/hdb1 ; #pvcreate /dev/hdd1 ;
8) Em seguida criado o VG, com o comando vgcreate. Pode ser especificado um
tamanho PE diferente do padro 4MB com a opo -s. Deve ser especificado um
nome para o novo LVM: # vgcreate grupo_de_volumes -s 2 /dev/hb1 /dev/hdd1 ;
9) Ativar o novo grupo com o comando vchange: # vgchange -a y grupo_de_volumes ;
10) A partir de agora podem ser criados os LV. Para verificar o nmero total de PE
disponveis no grupo, utilize o comando vgdisplay: # vgdisplay grupo_de_volumes ;
11) Para criar um volume logico ocupando o total disponvel, utiliza-se o comando lvcreate
da seguinte forma: # lvcreate -l 122878 grupo_de_volume ;
12) Dessa forma ser criado o Logical volume lvol0, pois no foi especificado um nome.
13) Para redimensionar ou reduzir o tamanho de uma partio logica, so utilizados os
comandos: lvresize e lvreduce, respectivamente.
14) Antes de fazer a reduo importante redimensionar o sistema de arquivos nela
contido.
15) Para adicionar um novo disco ao sistema utilize: # vgextend grupo_de_volumes
/dev/hde1 ;
O comando pvcreate pode ser usado para inicializar uma partio para utilizar o Logical
Volume Manager (LVM). Ela inicializa o volume para ser posteriormente usado pelo LVM.
Cada volume fsico pode ser uma partio de disco, o disco todo, um metadevice, ou um
arquivo de loopback.
32

O comando lvcreate pode ser usado para criar um volume linear, um volume striped, e volume
espelhado. O linear, striped e espelhado so volumes que pertencem ao volume logico. O
comando utiliza como padro o nome lvol# para o volume logico. O # define o nmero interno
desse volume logico.
205.1 Configuraes bsicas de rede. (3)
# ifconfig eth0 192.168.4.1 up atribuindo o IP interface;
# ifconfig eth0 192.168.4.1 down desfazendo a atribuio;
# ifconfig eth0:0 192.168.40.1 netmask 255.255.255.0 atribuindo uma interface virtual
eth0:0, que j apossui o endereo 192.168.4.1;
# ifconfig -a ir exibir as duas interfaces
Podero ser criadas outras interfaces se preciso: eth0:1, eth0:2, etc.
# ifconfig eth0 add 192.168.40.1 criar a nova interface virtual na primeira posio
disponvel;
Protocolo RARP (Reverse ARP)
Valor de correspondncia entre endereos IP e MAC feito no arquivo:
/proc/sys/net/ipv4/neigh/eth0/gc_scale_time
Verificando esses dados com o comando: # sysctl net.ipv4.neigh.eth0.gc_scale_time
Altera-se o valor com a opo -w net...time=120

arp Manipula o cache ARP do kernel de vrias maneiras.


# arp -n mostra os IPs sem tentar traduzir os endereos IP para nomes.
-d hostname apaga o endereo correspondente ao hostname do cache ARP;
-f arquivo mapeia estatisticamente os hostnames presentes para endereos MAC
-s hostname mac cria uma correspondncia esttica entre o hostname e o endereo MAC.
Se o termo temp no foi fornecido ao fim do comando, o mapeamento ser permanente.

arpwatch Com ele ativo ele monitora as mudanas de relacionamento IP/MAC.


E envia essas mudanas so enviadas por email ou registradas em logs.
-d todas as mensagens so mostradas na tela e no so enviadas via e-mail;
-i interface especifica uma interface de rede diferente de eth0.
Conexes wireless
wireless-tools pacote que fornece comandos para utilizar conexes wireless sem
criptografia no Linux.

iwlist Lista as redes disponveis


# iwlist wlan0 scanning (ou scan)

iwconfig Utilizado para associar a interface a uma rede sem fio.


# iwconfig wlan0 essid nome_da_rede associa a interface de rede uma rede sem fio. Usar
o ifconfig ou DHCP para definir um IP.

ip Alterar aspectos da comunicao IP.


# ip <objeto> <comando>
33

# ip link show eth0 verifica o estado de uma interface. Sem o nome da interface ele fornece
informao de todas;
# ip address show eth0 informaes de endereamento IP, v4 e v6, so obtidas com essa
opo, address.
# ip route list exibe rotas de comunicao;

205.2 Configurao avanada de rede e resoluo de problemas. (4)


Quatro esquemas bsicos de tabelas de rotas:
Mnima: redes isoladas, feita quando a interface iniciada;
Esttica: redes com um ou mais gateways. Criada por meio de scripts automticos ou
manualmente com o comando route. Se a rede muda, a tabela precisa ser alterada,
manualmente;
Dinmica: rotas e gateways so dinamicamente fornecidas via protocolos de
roteamento. Causa maior trfego na rede. Alocao dinmica da tabela feita por um
daemon, gated;
Esttica/Dinmica: Geralmente as tabelas de rota contm informaes estticas para
encaminhamento de pacotes dentro da rede local e uma rota padro para demais
pacotes que aponta para um gateway que trabalha com roteamento dinmico.
# route -n checa tabela de rotas;
UG ser direcionado ao gateway padro.
# route add -net 192.168.1.0 netmask 255.255.255.0 dev eth1 adiciona rota para a rede
192.168.1.0 pela interface eth1;
# route add default gw 192.168.1.1 cria uma rota padro;
# route add net 0.0.0.0 netmask 0.0.0.0 gw 192.168.1.1 definio de rota padro, forma
extensa.
# route del -net 0.0.0.0 dev eth1 removendo rota.
Significado das Flags:
U: Rota configurada corretamente;
H: O alvo um host tradicional;
G: gateway padro;
R: Restabelecer rota por roteamento dinmico;
D: Rota estabelecida dinamicamente por daemon ou redirecionamento;
M: Modificada por daemon ou redirecionada;
!: Rota rejeitada.
Em caso de no retransmisso de pacotes, mesmo com a rotas configuradas corretamente.
Verificar se o ip forward est ativado:
# echo 1 > /proc/sys/net/ipv4/ip_forward
OU
# sysctl w net.ipv4.ip_forward=1
Ping
ICMP > ECHO_REQUEST < ECHO_REPLY
34

netstat Mostra: conexes de rede, tabelas de roteamento, estatsticas de


interface e conexes mascaradas.
-i interfaces de rede presentes na maquina;
-a informaes referentes a todos os sockets;
-t apenas TCP;
-u apenas UDP;
-e mostra mais detalhes;
-p mostra o PID e o nome do programa usando o socket;
-c atualizaes em tela a cada segundo;
-l portas abertas na maquina local;
--inet restringe os protocolos de comunicao mais tradicionais como tcp e udp;
-r tabelas de rotas do sistema;
sem argumentos situao de todas as conexes de todas as famlias, mesmo as no ativas.

lsof Mostra programa e usurio utilizando a conexo.


-i pode ser usada para localizar utilizando endereo ou porta especifica;
# lsof -i tcp mostra todas as conexes do tipo TCP;
# lsof -i @192.168.1.55
# lsof -i :25 identificar conexes com porta 25;

netcat ou nc Semelhante ao telnet. Faz diagnostico de conexo, tentando


conectar-se a portas abertas em maquinas remotas ou na maquina local. A vantagem
sobre o telnet que o nc capaz de lidar com dados brutos, evitando erros de
interpretao.
# nc 192.168.0.2 22 verificando a porta 22, SSH na mquina remota 192.168.0.2;
# nc -vz 192.168.4.2 20-500 verificando um range de portas
# nc -l -p 1234 abrir a porta 1234 na mquina local;
# echo Aceitou a conexo | nc 192.168.4.1 1234 a frase ser enviada para a porta
1234 da mquina 192.168.4.1. Se no ocorrerem falhas ou bloqueios a mensagem
aparecer no computador destinatrio.
-v mostra mais informaes;
-z porta somente verificada, conexo no deve ser mantida.
-l aguarde por conexes;
-p especifica uma porta.
Esse comando tambm pode ser til para copiar dados, mas de maneira insegura. Os
recomendados para esse servio so: scp e rsync.
nmap
# nmap 192.168.1.250 forma mais simples, demorada, pois buscar todas as 65535 portas
do IP solicitado.
-p para porta ou portas;
-sV checa a verso do servio;
-O informa o sistema operacional;
35

tcpdump Faz analises profundas sobre o trfego de dados no computador,


tanto no fluxo de entrada quanto de sada.
Suas informaes sem a utilizao de argumentos so muito extensas.
-c 10 10 capturas de pacote, no mximo;
-D lista de interfaces ativas no sistema;
-i eth0 limita a captura para essa interface apenas;
-q mostra informaes mais sucintas;
-t no mostra informaes de hora;
-v, -vv, -vvv nvel de detalhamento de informaes;
-w arquivo grava toda sada para o arquivo especificado;
-r analisa um arquivo criado com a opo -w.
Expresses:
! ou not mostra pacotes que no correspondam expresso;
&& ou and mostra pacotes que correspondam duas expresses especificadas;
| ou or mostra pacotes que correspondam a qualquer uma das expresses especificadas.
# tcpdump port ssh and not host 192.168.4.1 mostrar pacotes cuja porta de origem ou
destino seja a porta ssh 22 e cujo host de origem ou destino no seja o host 192.168.4.1;

205.3 Solues de problemas de rede. (4)


host Verifica se o servio DNS est funcionando corretamente.
# host www.lpi.org traduz nome por IP. Se no verificar se o servidor DNS na mquina local
est configurado corretamente em /etc/resolv.conf ;

dig Tem a finalidade de verificar a disponibilidade de um nome em um servidor


DNS especifico, bastando informar o endereo aps o sinal de arroba.
# dig webmail @192.168.1.250 procura localmente pela mquina webmail perguntando ao
servidor de DNS 192.168.1.250. No resultado do comando procurar pelo trecho ASWER
SECTION, ser a resposta do comando.
Checando a disponibilidade de servios
Fazer uma checagem em /var/log/syslog e /var/log/messages para saber se o servio em
questo foi iniciado corretamente e permanece assim. Alguns servios possuem seus prprios
arquivos de log, que tambm devem ser checados. Configuraes mal feitas do TCP
Wrappers tambm causam inviabilidade de servios essenciais.
Percurso de dados
Utilizar o traceroute para checar se algum roteador est agindo de forma no usual.

206.1 Compilar e instalar programas a partir do cdigo fonte. (2)


Recomendvel armazenar os cdigos fonte dos programas utilizados no sistema em um
diretrio no /usr/src/ , um diretrio para cada programa. Como no exemplo abaixo:
# /usr/src ; tar xjvf qtractor-0.4.2.tar.gz criar o diretrio qtract...2 dentro de /usr/src.
# ./configure padro pr-instalao, direcionar a instalao para /usr/local.
# ./configure --prefix=/opt direciona a instalao para /opt.
Depois de concludo o comando acima criar o arquivo Makefile.
# make d prosseguimento a instalao. Criando as bibliotecas e arquivos executveis
conforme as instrues e as opes especificadas no arquivo Makefile.
36

# make install instala no local especificado.

206.2 Operaes de backup. (3)


Ignorar seguintes diretrios para backup: /proc, /dev e /tmp.
Recomenda-se efetuar backup dos seguintes: /home, /etc, /var, /usr e /opt.
Sistemas de backup para grandes redes
Amanda, Bacula ou BackupPC
Manipulao de dispositivos de fita
/dev/st* ou /dev/nst*

mt Efetua a manipulao de dispositivos de fita. Disponvel pelo pacote cpio.


cpio Aglutina arquivos
# find /home | cpio -ov > usurios.cpio
# cpio -ivd < usurios.cpio
# cpio -ivd < usurios.cpio *.pdf apenas os arquivos com sufixo pdf sero extrados.
-o cria um arquivo.
-i extrai um arquivo.
-d preserva a hierarquia de diretrios original.

dd Pode espelhar um disco inteiro.


# dd if=/dev/das of=sda.img gera uma cpia exata, inclusive com os espaos vazios. Em
razo disso deve levar muito tempo para ser concluda.

scp Transmisso de arquivos via rede de modo seguro, com SSH.


# scp 18-09-2009.tar.gz admin@backup.srv:/var/becape s envio
# tar czvf - . | ssh admin@backup.srv cat > /var/becape/18-09-2009.tar.gz o arquivo no
ser criado no computador local, mas direcionado e criado diretamente no servidor remoto
backup.srv.

rsync Compara os dados na origem com os dados eventualmente presentes


no destino e copia apenas os arquivos que tenham sido modificados.
# rsync -r /var/spool/mail admin@backup.srv:/var/becape/mail rsync se comunica com o
servidor em backup.srv e copiar recursivamente todo o contedo do diretrio local
/var/spool/mail para o diretrio remoto /var/becape/mail.
-r recursivo.
# rsync -e ssh -r /var/spool/mail admin@backup.srv:/var/becape/mail utilizasse junto com
ssh para quando o servidor rsync no est disponvel. Outra vantagem que todo trafego
estar protegido por criptografia
# rsync -P -e ssh -r /var/spool/mail admin@backup.srv:/var/becape/mail determina que os
arquivos incompletos no destino no sero reiniciados, mas que ser feita apenas a
transferncia dos dados faltantes, tambm exibe o progresso da cpia.
-P = --progress e --partial.

wall Mostra uma mensagem especifica para todos os usurios utilizando a


maquina em que esto via terminal.
37

# echo O servio de e-mail estar novamente disponvel em 15 minutos. | wall


# shutdown -r +5 Sistema reiniciando em 5 minutos...
/etc/issue configurar mensagens de aviso;
/etc/issue.net mensagem de aviso, em uso de telnet e ssh.
/etc/ssh/sshd_config linha Banner /etc/issue.net issue.net serve de arquivo de aviso.
/etc/motd (message of the day) exibido aps um login bem sucedido. Pode informar
avisos tambem.

Lembrar de:
Kernel binaries /boot ou / (raiz);
Precompiled binaries so chamados de vmlinuz ou vmlinuz-<version>;
Locally compiled kernels so chamados de zImage ou zImage-<version> ou bzImage (em
algumas verses mais antigas. Ou genericamente somente kernel ou kernel-verso;
Arquivo vmlinux um kernel sem compresso que gerado durante o processo de
construo.
Documentao de kernel /usr/src/linux/Documentation ;
Por que recompilar um kernel? atualizar, otimizar para o sistema especifico;
Funo do arquivo de patch do kernel? arquivo nico, necessita de menos banda para
baixar;
Lembre das opes do marke targets mais comuns memorize todas as disponveis;
Explique como criar um initial RAM disk usando mkinitrd ou mkinitramfs, ou similar.
Grave as ferramentas de carregar de deletar mdulos insmod, modprobe, rmmod.
Como saber mais informaes sobre um determinado modulo utilizando o modinfo;
Listar que mdulos o sistema est utilizando usando o lsmod.

38

39

Você também pode gostar