Continuemos com a terceira aula da preparação para a certificação LPI
TUTORIAL
LPI nível 1: Aula 3
A aula dessa edição finaliza o estudo para a prova 101, com o tópico sobre
o sistema de janelas padrão do Linux, o X. Iniciando o estudo para a prova
102, veremos os fundamentos de inspeção e configuração do kernel e
módulos Linux, e também como funciona a inicialização do sistema.
por Luciano Siqueira
Tópico 110: O
Sistema de Janelas X
Dave Sackville - www.sxc.hu
Verificar quais são os binários adequados:
$ sh Xinstall.sh -check
Objetivo 1.110.1: Instalar
e configurar o X11R6
o diagrama de configuração dos dispositivos do servidor X.
➧ xf86config: Interface interativa de
texto para especificar as informações
de configuração manualmente.
Os arquivos de instalação fundamentais são Xbin.tgz, Xlib.tgz, Xman.tgz, Xdoc.
Ferramentas de configuração
tgz, Xfnts.tgz, Xfenc.tgz, Xetc.tgz, Xvar. para o X.Org
Existem basicamente duas opções para o tgz, Xserv.tgz e Xmod.tgz.
➧ X -configure: O servidor X carrega
cada módulo de dispositivo, testa o
X11R6: Xfree86 e X.Org. Em termos práEsses arquivos devem ser descompacticos, não há diferença entre eles, exceto tados em /usr/X11R6. O diretório /usr/
driver e salva o resultado no arquivo
alguns detalhes de arquitetura e confi- X11R6/bin deve constar na variável PATH
xorg.conf.new no diretório do usuário
guração. O X11R6 é o ambiente gráfico e o diretório /usr/X11R6/lib deve constar
(geralmente /root).
de janelas no GNU/Linux.
no cache de bibliotecas do ld.so, que se
➧ xorgcfg: Se não ocorrerem problemas,
localiza no arquivo ld.so.cache.
uma sessão X será iniciada com uma
janela de configuração mostrando
Compatibilidade de Hardware
O primeiro passo antes de usar o X11R6 é
o diagrama de configuração dos
Configurando o X11R6
verificar a compatibilidade de hardware. Configurar o X11R6 significa criar um
dispositivos do servidor X.
Em http://www.xfree86.org/4.6.0/Sta- arquivo /etc/X11/XF86Config ou /etc/X11/
➧ xorgconfig: Interface interativa de
tus.html pode ser encontrada a lista de xorg.conf, o qual deve conter informatexto para entrar as informações de
dispositivos compatíveis. Ainda que o ções sobre caminhos para arquivos de
configuração manualmente.
dispositivo não seja totalmente compa- sistema, mouse, teclado, monitor e distível, é possível utilizá-lo no modo VESA positivo de vídeo.
Ajustes da configuração
Framebuffer, se o dispositivo o suportar (a
Após configurar o servidor X, pode ser
grande maioria dos dispositivos de vídeo
necessário corrigir o posicionamento da
Ferramentas de configuração
aceita esse modo).
tela. Para isso, existe o aplicativo Xvidtupara o XFree86:
➧ XFree86 -autoconfig: Configura o ne. Através de uma interface interativa, é
Instalando o X11R6
servidor X automaticamente. Se possível reposicionar a tela. Encontrada a
O mais comum é que o X11R6 já venha insbem sucedido, será possível mo- posição adequada, os valores retornados
talado junto com a distribuição. Para instalar
ver o cursor do mouse na tela. no terminal virtual devem ser incluídos
manualmente, os pacotes binários podem
[Ctrl]+[Alt]+[Backspace] fecha a como opção Modeline, na seção Monitor
ser encontrados em ftp://ftp.xfree86.org/
sessão do X. Essa ferramenta não do arquivo /etc/X11/XF86Config ou /etc/
pub/XFree86/4.6.0/binaries/, em subdiretóescreve configurações no arquivo X11/xorg.conf.
rios correspondentes à arquitetura desejada
de configuração do X.
Outro item que pode precisar ser in(axp significando alpha, ix86 representando
➧ XFree86 -configure: Alternativa ao cluído manualmente é o funcionamento
Intel 80×86) e versão da biblioteca C GNU.
comando anterior
da roda do mouse. Na seção referente ao
Para auxiliar no processo de instalação, há
➧ xf86cfg: Se não ocorrerem problemas, mouse em /etc/X11/XF86Config ou /etc/
o script Xinstall.sh, disponível no diretório
uma sessão X será iniciada com uma X11/xorg.conf, inclua a opção ZaxisMapcommon do servidor FTP.
janela de configuração, mostrando ping, como no exemplo:
Linux Magazine #28 | Março de 2007
49
TUTORIAL | Preparação LPI
Section “InputDevice”
Driver
“mouse”
Option
“Protocol” “IMPS/2”
Option
“Device” “/dev/mouse”
Option
“ZAxisMapping” “4 5”
EndSection
Seções de XF86Config e xorg.conf
Os arquivos de configuração XF86Config e xorg.
conf são divididos em seções no formato:
Section “nome da seção”
Item_1 “Valor item 1”
Item_2 “Valor item 2”
...
EndSection
As seções do arquivo de configuração
do X são organizadas conforme a estrutura abaixo:
➧ Files: Caminhos para alguns arquivos necessários ao servidor X.
Itens podem ser FontPath, RGBPath e
ModulePath. O item mais importante
é FontPath, que determina as localizações das fontes no sistema.
➧ ServerFlags: Opções globais para o
servidor X, no formato Option “Nome”
“Valor”.
➧ Module: Carregamento dinâmico
de módulos. Load “nome do módulo”.
➧ InputDevice: Dispositivos de entrada. Deve haver uma seção InputDevice para cada dispositivo. Os
itens obrigatórios nessa seção são
Identifier e Driver. Identifier é um
nome único para identificação do
dispositivo. Os valores mais comuns
para Driver são (“Keyboard”) e (“Mouse”). Os outros itens são opcionais e
descritos com o (Option. Option “CorePointer”) indica que o dispositivo
é o apontador (mouse) primário.
(Option “CoreKeyboard”) indica que
o dispositivo é o teclado primário.
O caminho para o dispositivo é
indicado com o (Option “Device”
“/dev/arquivo_do_dispositivo”).
➧ Device: Dispositivo de vídeo. Várias
seções Device podem indicar vários
dispositivos de vídeo, e deve haver
ao menos um. Os itens obrigatórios
nessa seção são Identifier e Driver.
Identifier é um nome único para
identificação do dispositivo. Driver
especifica o driver do dispositivo de
vídeo, dentre os disponíveis em /usr/
X11R6/lib/modules/drivers/. Outros
itens comuns são BusID (ex.: Option
“BusID” “PCI:1:0:0”) e VideoRam (Ex.:
Option “VideoRam” “8192”).
➧ Monitor: O arquivo de configuração pode ter várias seções Monitor.
50
Deve haver pelo menos uma, mas ceName em $HOME/.Xresources especifica
se não houver, uma padrão será um nome de fonte para usar através do
criada. A única opção obrigatória Xft. Exemplo:
é Identifier. Outras opções são
UseModes, HorizSync, VertRefresh e XTerm*faceName: Courier
ModeLine.
➧ Modes: Modos de tela disponíveis
O programa Xterm usará a fonte Coupara o monitor. Não é obrigatória. rier através de Xft.
➧ Screen: Agrega o dispositivo e o
monitor. Pode haver mais de uma
Instalar fontes Core
seção Screen. Apenas as opções Instalar fontes pelo sistema Core reIdentifier e Device (indicando um
quer duas etapas: criar o diretório com
dispositivo de vídeo de uma seção os arquivos das fontes e arquivos de
índice, e em seguida incluir o diretóDevice existente) são obrigatórias.
➧ Display (Subseção de screen): A rio em questão no caminho de fontes
subseção Display define, entre ou- do sistema.
Para cada tipo de fonte, a instalação
tras coisas, qual resolução usar para
cada profundidade de cor.
se dá de uma forma:
➧ ServerLayout: Agrega as seções
➧ Fontes Bitmap (.bdf): Esse tipo de
Screen e InputDevice para formar uma
fonte precisa primeiro ser convertido para o formato .pcf através do
configuração completa do servidor
X.
comando bdftopcf. As fontes conver➧ DRI: Seção opcional que fornece
tidas podem ser compactadas com
informação sobre a Infraestrutura
o comando gzip. O diretório padrão
de Renderização Direta (DRI). Para
para esse tipo de fonte é /usr/X11R6/
que usuários comuns possam utilizar
lib/X11/fonts/75dpi. Após as fontes
serem copiadas para o diretório, o
o DRI, deve-se incluir o item Mode
comando mkfontdir deverá ser exe0666 nessa seção.
➧ Vendor: Informações e configuracutado dentro do diretório.
ções personalizadas.
➧ Fontes escalonáveis (Type1, Speedo, TrueType etc.): O procedimento é semelhante ao das fontes
Fontes
Bitmap, exceto pelos fatos de que
Há dois sistemas de fontes, Core e Xft.
No sistema Core as fontes são manipufontes escalonáveis não precisam
ladas no servidor, enquanto no sistema
ser convertidas e de que o comanXft isso ocorre no cliente. O sistema Xft
do mkfontscale precisa ser executaé mais avançado e permite o uso de fondo antes de mkfontdir. Os diretórios
respectivos também se encontram
tes Type1, OpenType, TrueType, Speedo e
CID, com suporte a anti-aliasing (cantos
em /usr/X11R6/lib/X11/fonts.
arredondados). O X.Org inclui suporte
nativo ao sistema Xft.
A segunda etapa é incluir cada diretório
entre os diretórios de fontes de servidor
X. Isso pode ser feito de maneira tempoInstalar fontes Xft
Para instalar fontes no sistema Xft, bas- rária, com o comando xset:
ta copiá-las para um dos diretórios de
fontes padrão – /usr/X11R6/lib/X11/lib/ # xset fp+ /diretório/para/as/fontes
fonts/*, /usr/share/fonts/* – ou para o xset fp rehash
diretório .fonts/ no diretório pessoal.
O cache de fontes precisa ser atualiOs diretórios de fonte atualmente
zado para que a nova fonte possa ser em uso podem ser listados com xset
usada, o que será feito automaticamen- -q. Para que os novos diretórios se torte quando o X iniciar uma sessão. A nem diretórios de fontes permanentes,
atualização manual é feita através do devem ser incluídos na seção Files
comando fc-cache.
do arquivo de configuração /etc/X11/
O comportamento das funções do XF86Config ou /etc/X11/xorg.conf, como
Xft pode ser alterado através do arquivo itens FontPath.
de configuração global /etc/fonts/fonts.
conf ou no arquivo de configurações por
Servidor de Fontes xfs
usuário .fonts.conf, alojado no diretório O servidor de fontes Xfs pode rodar
pessoal.
como daemon (xfs -daemon) ou tarefa
Para os programas que não usam comum (simplesmente xfs), e fornece
fontes Xft por padrão, o recurso *fa-
http://www.linuxmagazine.com.br
Preparação LPI | TUTORIAL
fontes através da rede ou mesmo na
xdm
máquina local.
O xdm faz parte dos programas do sisO arquivo de configuração padrão tema de janelas X. O arquivo de conpara o Xfs é /usr/X11R6/lib/X11/fs/config, figuração principal é o xdm-config. O
caminho do programa é /usr/bin/xdm.
cujas opções mais comuns são:
➧ client-limit: Limite de clientes co- Além de permitir o login local, tamnectados a esse servidor de fontes. bém permite que o login seja realizado
➧ alternate-servers: Outros servidores através da rede. Para tanto, é usado o
de fontes
protocolo XDMCP (desativado por
➧ catalogue: Caminhos dos diretórios padrão). O xdm precisa estar rodando
contendo as fontes a serem forneci- (o que já acontece caso o runlevel do
sistema seja 5) e configurado adequadas pelo Xfs.
➧ Porta TCP que o Xfs usará para es- damente para responder pedidos de
pirar pedidos de conexão. Padrão: login. A máquina remota, através do
7100.
comando X -query nome_do_servidor ,
Para que as fontes sejam solicita- solicitará o pedido de conexão.
das ao daemon do Xfs, o endereço
do servidor de fontes precisa ser inArquivos de configuração
cluído como item FontPath da seção /etc/X11/xdm/Xresources: A aparência do
Files de /etc/X11/xorg.conf ou /etc/X11/ xdm pode ser modificada através deste
XF86Config. Se o servidor de fontes for arquivo. Fontes, cores e mensagens poa máquina local:
dem ser incluídas ou alteradas. Exemplo
de conteúdo:
FontPath "unix/:7100"
Exemplo de Xresources:
Se o servidor de fontes for a máquina chamada slackware, através de uma
conexão TCP/IP:
FontPath "tcp/slackware:7100"
Objetivo 1.110.2: Configurar
o Gerenciador de Display
Muitas distribuições GNU/Linux já
entram no login gráfico por padrão.
Outras usam o login em texto. Esse
comportamento pode ser modificado
através do arquivo /etc/inittab, alterando o runlevel inicial. O runlevel
padrão para login em texto é 3 (multiusuário), para login gráfico, é 5 (ou 4,
no caso do Slackware).
Mudando o runlevel inicial em /etc/
inittab:
# Login em texto:
id:3:initdefault:
Login gráfico:
id:5:initdefault:
O login gráfico passará então a ser
controlado por um gerenciador de display. Há três Gerenciadores de Display
principais:
➧ xdm: Padrão do X
➧ gdm: Gnome
➧ kdm: Kde
Os respectivos arquivos de configuração encontram-se em /etc/X11/xdm/*,
/etc/X11/gdm/* e /etc/X11/kdm/*.
Linux Magazine #28 | Março de 2007
xlogin*borderwidth:3
xlogin*greeting:"Bem vindo ao login gráfico"
xlogin*namePrompt:login:\040
xlogin*greetColor:blue
xlogin*foreground:black
xlogin*background:white
➧ /etc/X11/xdm/xdm-config: Arquivo que
agrega os demais arquivos de configuração do xdm. Libera ou bloqueia
o login remoto via XDMCP. Para
bloquear, basta que exista a linha:
DisplayManager.requestPort:
0
Assim, o xdm não esperará pedidos
de conexão diretos ou indiretos.
As condições e maneiras de usar o
gdm e kdm são praticamentes iguais às
do xdm, salvo alguns detalhes.
gdm
O executável do gdm encontra-se em /usr/bin/
gdm. Os arquivos de configuração são Sessions,
gdm.conf e Init/Default, que corresponde ao
Xresources. O arquivo gdm.conf controla a
maioria das funções do xdm.
kdm
Os arquivos do kdm muitas vezes estão
em /usr/share/config/kdm. O executável
é /usr/bin/kdm. Sua configuração é semelhante à do xdm em muitos aspectos,
sendo o arquivo kdmrc o principal.
Objetivo 1.110.4: Instalar e
personalizar um ambiente
de gerenciador de janelas
➧ /etc/X11/xdm/Xsetup_0: Script executado antes do login, com permissão
de superusuário (root). Usado para O gerenciador de janelas é a interfadefinir cores ou imagens de fundo ce entre o usuário e o servidor X. É
e disparar aplicativos.
praticamente impossível utilizar o am➧ /etc/X11/xdm/Xservers: Mapeia um biente gráfico sem um gerenciador de
display para uma máquina. Geral- janelas. O procedimento mais comum
mente contém apenas a indicação para se iniciar uma sessão do X é atrapara o display local 0 local /usr/ vés do comando startx, que chama o
script xinit. O script xinit tem, entre
X11R6/bin/X
Pode ser usado para enviar auto- suas funções, a de iniciar o servidor X
maticamente a requisição de login e programas clientes. O gerenciador
para máquinas remotas rodando o de janelas é o principal desses clientes.
X. O servidor X ocupará o primeiro Há o script xinit padrão, localizado
/dev/tty livre.
em /etc/X11/xinit/xinitrc, mas o mais
➧ /etc/X11/xdm/Xaccess: Controla o comum é cada usuário ter seu script
acesso remoto via XDMCP. É pos- personalizado, ~/.xinitrc.
sível estabelecer regras para pedidos
de conexão remotos.
Menus
Trecho de exemplo de Xaccess:
Uma das funções de um gerenciador
de janelas é fornecer menus de acesso
*CHOOSER BROADCAST
a programas (menu root) e controle
de janelas (menu window). O menu
A primeira linha indica que qualquer root é acessado clicando-se na área
máquina remota poderá requisitar login de trabalho, e o menu window, clina máquina local. A segunda linha indica cando na barra ou no botão do título
que qualquer máquina (*) pode solicitar da janela.
à máquina local uma lista de possíveis
A configuração dos menus varia
servidores (que estejam rodando o xdm) para cada gerenciador de janelas. De
para conexão, que será obtida através de uma forma geral, arquivos de confichamadas BROADCAST na rede.
guração de menus têm seu conteúdo
51
TUTORIAL | Preparação LPI
disposto de forma hierárquica, discriminando o tipo do item, o nome do
item e o valor.
Exemplo do arquivo de menu do
gerenciador de janelas Windowmaker,
/etc/X11/WindowMaker/WMRootMenu:
(“Applications”,
(“Info”,
(“Info Panel”, INFO_PANEL),
(“Legal”, LEGAL_PANEL),
(“System Console”, EXEC, “xconsole”),
(“System Load”, SHEXEC, “xosview ||
➥xload”),
(“Process List”, EXEC, “xterm -e top”),
(“Manual Browser”, EXEC, “xman”)
),
(“Run...”, SHEXEC, “%a(Run,Type command
➥to run:)”),
(“XTerm”, EXEC, “xterm -sb”),
(“Mozilla Firefox”, EXEC, “firefox”),
Emulador de terminal
O emulador de terminal é um programa
que permite interagir com a shell como
num terminal de texto convencional. O
emulador de terminal mais comum é o
xterm. Há alternativas interessantes como
o rxvt – que é mais leve que o xterm – e
o aterm – que possui mais opções de
configuração.
Os padrões de aparência e comportamento do xterm são determinados no
arquivo /etc/X11/app-defaults/XTerm. Essas
características podem ser alteradas através
de argumentos para o xterm, ou através
dos arquivos de configuração ~/.Xresources e ~/.Xdefaults.
Exemplo de ~/.Xresources:
XTerm*font:
<del>misc-fixed</del>*-*-*➥*-18-*-*-*-*-*-iso8859-1
XTerm*foreground:
grey70
XTerm*background:
black
XTerm*visualBell:
true
Nesse exemplo, altera-se a fonte, as
cores de fundo e de letra, e o bipe de
sistema é inibido para dar lugar a uma
sinalização visual. Para que essas alterações tenham efeito, é necessário aglutinar as configurações ao banco de dados
de recursos do servidor X. Essa tarefa é
realizada automaticamente (se houver alterações no arquivo) toda vez que o X for
iniciado, ou manualmente, com o uso do
comando xrdb -merge ~/.Xresources.
Há ferramentas que auxiliam a criação
de arquivos de recursos, não só para o
emulador de terminal, mas também para
uma variedade de outros programas:
➧ xwininfo: Retorna informações sobre
uma janela, inclusive informações
de posição e tamanho.
52
➧ editres: Permite testar as configurações e posteriormente salvá-las num
arquivo.
Comportamento de teclado e mouse
A resposta para eventos de teclado e
mouse pode ser alterada modificandose o arquivo Xmodmap. O arquivo global é
/etc/X11/xinit/.Xmodmap (ultrapassado) e
~/.Xmodmap (para o usuário). Esse arquivo
deve ser passado ao programa Xmodmap
para alterar as respostas a eventos.
Exemplos de .Xmodmap:
➧ Inverter os botões do mouse: pointer
= 3 2 1
➧ Definir tecla Delete: keycode 107 =
Delete
O comando xev auxilia no entendimento e uso de eventos de mouse
e teclado. O xev abre uma janela que
mostra no emulador de terminal os
códigos associados ao evento recebido na janela.
Bibliotecas adicionais de aplicativos
Muitos programas do ambiente gráfico
exigem bibliotecas adicionais, como os
programas criados com a biblioteca GTK+
(Gimp Tool Kit) ou QT. Essas dependências podem ser verificadas com o comando _ldd, da mesma maneira que quando
usada em programas de terminal. Uma
vez instaladas as dependências pendentes
nos locais apropriados (localizáveis pelo
ld.so), os programas funcionarão.
DISPLAY Remoto
Em ambientes de rede, é possível redirecionar a janela de um programa
para ser mostrada e controlada em uma
outra máquina da rede. A variável de
ambiente DISPLAY determina onde as
janelas de programas serão mostradas
e controladas.
A variável DISPLAY é enunciada sob o
seguinte formato:
hostname:displaynumber.screennumber
Se o usuário estiver logado no servidor por uma estação remota chamada
debian através de uma conexão XDMCP
(login remoto via xdm), a variável DISPLAY
para esse usuário deverá ser debian:0.0,
de forma que os programas executados
por ele (programas oriundos do servidor) sejam mostrados e controlados na
estação remota.
Por segurança, apenas o usuário e a
mesma máquina que iniciaram a sessão
X poderão abrir programas no respectivo
display, a menos que outros usuários ou
máquinas sejam autorizados a fazê-lo.
Essa exclusividade é garantida por meio
do uso do MIT-MAGIC-COOKIE-1, um
cookie que é gerado toda vez que uma
sessão X se inicia, sendo armazenado
em ~/.Xauthority.
A maneira mais convencional de
se autorizar outros usuários a acessar
um mesmo display é usando o comando xhost, que libera ou bloqueia
o acesso de outras contas e máquinas
ao display local.
➧ Para permitir que outros usuário no host
local acessem o display: xhost +local:
➧ Para permitir que usuários na estação remota redhat acessem o display
local: xhost +redhat
Agora, basta mudar a variável DISPLAY
na estação redhat para redirecionar a saída
e o controle de programas para o display
local. Supondo que a máquina local se
chame slackware, o seguinte comando
poderia ser executado na estação redhat:
# export DISPLAY=slackware:0.0
Para bloquear ou retirar a permissão
da estação, substitui-se o sinal + por -:
xhost -redhat.
O acesso a um display na mesma máquina estará garantido ao superusuário,
desde que exista a variável de ambiente
XAUTHORITY, a qual deve apontar o caminho
para o arquivo .Xauthority do usuário que
iniciou a sessão do X.
Em estações de trabalho convencionais, onde o usuário está logado à
própria máquina local e só há um conjunto de monitor, teclado e mouse, a
variável DISPLAY é :0.0, o que significa Objetivo 1.105.1: Manipular/
que os programas serão mostrados e investigar o kernel e seus
controlados no único display (enten- módulos em execução
dido como o conjunto de monitor,
teclado e mouse) na máquina local.
Os valores de displaynumber e screenKernel
number são úteis, por exemplo, para
O kernel é o núcleo do sistema, responsáoperar monitores adicionais instalados vel pela comunicação entre os programas
e as instruções de baixo nível (basicamente
na máquina.
Tópico 105: Kernel
http://www.linuxmagazine.com.br
Preparação LPI | TUTORIAL
hardware) do sistema. O comando uname é
utilizado para mostrar informações a respeito
do kernel do sistema. Quando usado apenas
com a opção -a, mostra todas as informações
sobre o kernel, na seguinte ordem:
➧ NOME-DO-KERNEL
➧ NODENAME (nome da máquina)
➧ RELEASE-DO-KERNEL
➧ VERSÃO-DO-KERNEL
➧ MÁQUINA
➧ PROCESSADOR
➧ PLATAFORMA-DE-HARDWARE
➧ SISTEMA-OPERACIONAL
Módulos do Kernel
Funções especializadas do kernel podem
existir na forma de módulos externos.
Módulos são armazenados em /lib/modules/x.x.xx/, onde x.x.xx é o release do
kernel, e são carregados e descarregados
dinamicamente através dos comandos modprobe ou insmod. Mesmo o comando insmod
ainda sendo aceito, o comando padrão
para manejo de módulos nas versões mais
recentes do kernel é o modprobe.
A diferença entre os dois comandos
é que modprobe carrega o módulo especificado e os módulos dos quais depende,
conforme listados no arquivo /lib/moduDemais opções do uname:
➧ -i: Plataforma de Hardware
les/x.x.xx/modules.dep, enquanto insmod
➧ -m: Hardware da máquina
carrega o módulo sem verificar suas de➧ -n: Nome do Host (nodename)
pendências. O arquivo modules.dep arma➧ -p: Processador
zena as dependências de cada módulo
e é gerado ou atualizado pelo comando
➧ -o: Sistema Operacional
➧ -r: Release do Kernel
depmod -a. Essa tarefa pode ser realizada
manualmente, mas se forem detectados
➧ -s: Nome do Kernel
novos módulos durante o carregamento
➧ -v: Versão do Kernel
Exemplo de saída do comando una- do sistema, depmod -a será executado aume -a:
tomaticamente.
O comando lsmod lista os módulos carre$/uname/-a
gados. Módulos marcados com (autoclean)
Linux slack102 2.6.13 #1 SMP Thu Mar 23
podem ser descarregados com o comando
➥01:57:38 BRT 2006 i686 unknown unknown GNU/
modprobe -ra ou rmmod -a. Módulos marca➥Linux
dos com (unused) poderão ser removidos se
seus respectivos nomes forem fornecidos
como argumento para modprobe -r ou rmmod.
Os demais módulos estão em uso, e não é
recomendado seu descarregamento.
Exemplo de lista de módulos carregados:
# lsmod
Module
Size Used by
snd_pcm_oss
49696 0
snd_mixer_oss
18560 2 snd_pcm_
➥oss
ehci_hcd
30472 0
sis900
20352 0
ohci_hcd
20356 0
snd_cmipci
32800 1
gameport
13448 1 snd_cmipci
snd_pcm
84100 2 snd_pcm_
➥oss,snd_cmipci
snd_page_alloc
9608 1 snd_pcm
snd_opl3_lib
10240 1 snd_cmipci
snd_timer
22788 2 snd_
➥pcm,snd_opl3_lib
snd_hwdep
8480 1 snd_opl3_
➥lib
snd_mpu401_uart
7424 1 snd_cmipci
snd_rawmidi
21792 1 snd_mpu401_
➥uart
snd_seq_device
7948 2 snd_opl3_
➥lib,snd_rawmidi
snd
48100 10 snd_pcm_
➥oss,snd_mixer_oss,snd_cmipci,snd_pcm, snd_
➥opl3_lib,snd_timer,snd_hwdep,snd_mpu401_
➥uart,snd_rawmidi,snd_seq_device
TUTORIAL | Preparação LPI
O comando modinfo mostra a descrição,
o autor, a licença e os parâmetros para o
módulo solicitado. Usando como argumento apenas o nome do módulo, mostra
todas as informações disponíveis:
# modinfo gameport
filename:
/lib/modules/2.6.13/kernel/
➥drivers/input/gameport/gameport.ko
author:
Vojtech Pavlik
➥<[email protected]>
description:
Generic gameport layer
license:
GPL
vermagic:
2.6.13 SMP preempt
➥PENTIUMIII gcc-3.3
depends:
As opções -l e -p mostram, respectivamente, as informações de licença
e parâmetros aceitáveis para o módulo
solicitado.
# modinfo -l sis900
GPL
modinfo -p sis900
multicast_filter_limit:SiS 900/7016
➥maximum number of filtered multicast
➥addresses
max_interrupt_work:SiS 900/7016 maximum
➥events handled per interrupt
sis900_debug:SiS 900/7016 bitmapped
➥debugging message level
Para modificar os valores padrão de
parâmetros, basta indicá-los ao carregar
os módulos com modprobe ou insmod:
# modprobe sis900 multicast_filter_
➥limit=valor
No entanto, o mais comum é que os
módulos sejam carregados automaticamente pelo sistema. Por isso, os parâmetros podem ser armazenados no arquivo
/etc/modules.conf. O mesmo parâmetro
do exemplo poderia estar em /etc/modules.conf na forma:
options sis900 multicast_filter_
➥limit=valor
Também através do arquivo /etc/moé possível criar aliases (cognomes) para módulos, de forma que
possam ser invocados usando um nome
convencional. Exemplo de aliases em
/etc/modules.conf:
dules.conf
alias eth0 sis900
alias sound-slot-0 snd_cmipci
Aliases e opções também podem ser
definidos da mesma forma no arquivo /
54
etc/modprobe.conf. Através desse arquivo,
cado com a letra M será compilado como
também é possível definir as ações para módulo. Itens deixados em branco não
eventos de carregamento e descarrega- serão compilados. Espaços de escolha [
mento de módulos, como a execução ] indicam que o item só poderá ser comde um programa. Exemplo: quando so- pilado como estático, enquanto espaços
licitado a carregar sis900, carregar tun e de escolha < > indicam que o item poderá
só depois sis900:
ser compilado tanto no modo embutido
quanto como módulo.
install sis900 modprobe tun; modprobe -A configuração do kernel está dividida
➥ignore-install sis900
nos eixos principais:
➧ Code maturity level options: MosA opção --ignore-install é necessária para
trar ou não recursos considerados
instáveis.
que o modprobe não execute novamente a linha install referente ao módulo sis900 em
➧ General setup: Características ge/etc/modprobe.conf. É possível usar o mesmo
rais do kernel. É possível incluir
procedimento ao descarregar módulos:
um termo de versão para o kernel
personalizado.
remove sis900 modprobe --ignore-remove -r
➧ Loadable module support: Suporte
➥sis900; modprobe -r tun
ao sistema de módulos e define algumas características.
Dessa vez, a opção --ignore-remove
➧ Processor type and features: Indica
o tipo de processador para o qual o
aparece para impedir a execução cíclikernel será compilado além de reca da linha remove referente ao módulo
cursos como multiprocessamento.
sis900 em /etc/modprobe.conf.
➧ Power management options (ACPI,
APM): Opções relativas ao controle
Objetivo 1.105.2: Reconfigurar,
de energia. Indicado especialmente
para laptops.
compilar e instalar um kernel
➧ Bus options (PCI, PCMCIA, EISA,
e módulos personalizados
MCA, ISA): Suporte aos diferentes
tipos de barramentos.
Configuração
➧ Executable file formats: Tipos de
O local padrão de armazenamento do
arquivos que o sistema será capaz
código-fonte do kernel é /usr/src/linux,
de executar.
que é um link simbólico para /usr/src/
➧ Networking: Suporte e configuração
linux-x.x.xx/ (onde x.x.xx é o release do
dos diferentes tipos de plataformas
kernel). Existe mais de uma interface
de rede.
para configurar o kernel, e todas elas
➧ Device Drivers: Escolha e configudesempenham a mesma função. As inração dos dispositivos de hardware,
terfaces de configuração são invocadas
integrados e periféricos.
através do comando make:
➧ File systems: Lista de sistemas de
arquivos compatíveis e recursos
➧ make config: Interface em linha de
relacionados a cada um deles.
comando. É feita uma seqüência
➧ Kernel hacking: Opções de depurade perguntas bastante extensa sobre
ção do kernel
Essas são as principais categorias de
cada aspecto da configuração.
➧ make menuconfig: Interface de menus configuração, e podem ser diferentes de
ncurses.
uma versão do kernel para outra.
➧ make xconfig: Interface gráfica X,
As configurações são salvas no arquiutilizando a biblioteca QT.
vo /usr/src/linux/.config, que será usado
➧ make gconfig: Interface gráfica X, para guiar a construção do novo kernel
utilizando a biblioteca GTK+.
e seus módulos. No arquivo Makefile é
➧ make oldconfig: Usa as configuração possível mudar variáveis como EXTRAVERanteriores como ponto de partida SION, que indica ser uma compilação de
para uma nova configuração.
kernel personalizado.
Enquanto alguns recursos precisam ser
compilados estaticamente, isto é, embutidos no kernel, a maioria pode ser compilada de forma dinâmica (como módulos).
Os itens marcados com asterisco (*) serão
compilados como estáticos e o item mar-
Compilação e Instalação
Para se assegurar de que todo kernel e
módulos sejam compilados com a nova
configuração e não reaproveitem objetos pré-compilados, é usado o comando
make clean.
http://www.linuxmagazine.com.br
Preparação LPI | TUTORIAL
Em seguida já podem ser compilados
o kernel e os módulos: make bzImage ou
make zImage compilam o kernel, enquanto
make modules compila os novos módulos,
e make all faz, de uma vez, o trabalho de
make bzImage && make modules. Ao final, make
modules_install instala os novos módulos
em /lib/modules/x.x.xx/ (x.x.xx é a versão
do novo kernel). O comando depmod -a
será automaticamente executado para
criar o arquivo modules.dep, o qual contém
as dependências dos módulos.
O comando make também pode criar
pacotes específicos de instalação do kernel, com make rpm-pkg, make binrpm-pkg e
make deb-pkg.
Num computador padrão i386 (o mais
comum), o binário do novo kernel estará
em /usr/src/linux/arch/i386/boot/bzImage.
Esse arquivo deve ser copiado para /boot
(ou criado um link simbólico nesse diretório) e o arquivo de configuração do
carregador de boot (/etc/lilo.conf ou /
boot/grub/grub.conf) deve ser atualizado
para apontar para o novo kernel. No caso
do lilo, é importante reinstalá-lo com o
comando lilo após cada alteração do
arquivo de configuração.
Novas funcionalidades podem exigir
configurações suplementares, como
passar novas opções para módulos. Para
funções compiladas estaticamente, opções podem ser passadas pela instrução
append, no arquivo /etc/lilo.conf. Com
o novo kernel instalado, basta reiniciar
o sistema para passar a utilizá-lo.
Tópico 106:
Carregamento (boot),
início e término do
sistema e runlevels
Objetivo 1.106.1: Carregamento
(boot) do sistema
Antes de carregar o kernel, o lilo apresenta um prompt no qual é possível
alterar o comportamento padrão de
carregamento do sistema. Esse prompt
aparece na forma:
É possível passar parâmetros no formato item=valor. Exemplo de itens:
➧ acpi : Liga/desliga o suporte a
ACPI.
➧ init: Programa para executar no
lugar de /sbin/init.
➧ mem: Montante de memória RAM
do sistema.
➧ root: Especificar o dispositivo raiz.
Outras opções não precisam de parâmetros, como por exemplo:
➧ noinitrd: Não carrega o ramdisk
inicial.
➧ ro: Coloca o dispositivo em modo
somente leitura.
Para carregar o kernel linux, indicando /dev/hda3 como dispositivo raiz, sem
ramdisk inicial e em modo somente leitura, a linha de comando seria:
boot: linux root=/dev/hda3 noinitrd ro
Dessa mesma forma, é possível passar
parâmetros para os módulos compilados estaticamente no kernel. Para que
boot:
os parâmetros sejam automaticamente
passados em todo boot, eles podem ser
Onde é possível indicar o kernel a incluídos na instrução append no arquivo
carregar, passar parâmetros de configu- /etc/lilo.conf. O lilo deverá então ser
ração e alterar o runlevel inicial.
reinstalado. Para os módulos externos,
�����
�
������
�������������
���������
TUTORIAL | Preparação LPI
parâmetros são passados diretamente
pelo comando modprobe/@insmod@, ou
podem constar nos arquivos /etc/modules.
conf ou /etc/modprobe.conf.
Outra possibilidade de uso do prompt
de boot é alterar o runlevel inicial do
sistema. Os valores aceitos são s, single,
S, 1, 2, 3, 4, 5. Por exemplo, para iniciar
o sistema em modo de usuário único
(Single user) usa-se o comando:
boot: linux S
Se nenhum parâmetro for passado, o
runlevel inicial será aquele especificado
em /etc/inittab.
Para inspecionar o processo de inicilização do sistema, é usado o comando
dmesg. As mensagens do carregamento
são armazenadas em /var/log/dmesg,
enquanto as mensagens do kernel podem ser checadas através do arquivo
/var/log/messages.
Objetivo 1.106.2: Alternando
runlevels, desligando e
reiniciando o sistema
Runlevels (níveis de execução do
sistema) são numerados de 0 a 6 e suas
funções podem variar de uma distribuição
para outra. Via de regra o próprio arquivo /etc/inittab, que define os runlevels,
traz também informações a respeito de
cada um. O formato das entradas nesse
arquivo é:
id:runlevels:a&#231;&#227;o:processo
Onde id é um nome de até quatro
caracteres para identificar a entrada do
inittab, runlevels é uma lista dos runlevels para os quais a ação da entrada deverá ser executada, ação é o tipo de ação
a ser tomada e processo é o comando a
ser acionado.
Os tipos mais comuns para ações são:
➧ sysinit: Processo executado durante
o boot do sistema
➧ wait: O processo será executado e
init aguardará seu término
➧ ctrlaltdel: O processo será executado quando o init receber o sinal
SIGINT, o que significa que as teclas
Ctrl+Alt+Del foram pressionas no
console.
Exemplo de trecho de /etc/inittab
# System initialization (runs when system
➥boots).
si:S:sysinit:/etc/rc.d/rc.S
56
Script to run when going single user
➥(runlevel 1).
su:1S:wait:/etc/rc.d/rc.K
Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M
Na maioria dos casos, os runlevels são
assim definidos:
➧ 0: Desligar o sistema
➧ 1: Usuário único (super usuário)
➧ 2: Multiusuário sem serviços de
rede
➧ 3: Multiusuário com serviços de
rede
➧ 4: Livre (não definido, depende da
distribuição)
➧ 5: Multiusuário, serviços de rede e
login gráfico
➧ 6: Reiniciar o sistema
Os únicos runlevels comuns a toda
distribuição Linux são 0, 1 e 6. O runlevel padrão é definido em /etc/inittab,
na entrada:
id:x:initdefault
Onde x é o número do runlevel
padrão ao iniciar o sistema. Esse número jamais pode ser 0 ou 6, por razões óbvias.
O programa que realiza o procedimento de início e troca de um runlevel para
outro é /sbin/init. O init é o primeiro
programa disparado após o kernel acessar
o dispositivo raiz, portanto o PID de init
será sempre 1.
Para alternar entre runlevels, usa-se
o próprio init ou o comando telinit,
fornecendo como argumento o número do runlevel desejado. O comando
runlevel mostra dois números; o primeiro mostra o runlevel anterior, e o
segundo, o runlevel atual.
Para desligar ou reiniciar o sistema, o comando shutdown oferece mais
funcionalidades. Todos os usuários no
sistema são notificados e novos logins
são bloqueados. Todos os processos
recebem o sinal SIGTERM seguido
de SIGKILL antes do sistema desligar
ou alternar o runlevel. O padrão, caso
não sejam usadas as opções -h ou -r, é
que o sistema alterne para o runlevel
1. O comando shutdown deve obedecer
à seguinte sintaxe:
shutdown [opção] horário [mensagem]
Apenas o argumento horário é obrigatório. Ele indica quando efetuar a ação
requisitada, e seu formato pode ser:
➧ hh:mm: Horário para execução.
➧ +m: Minutos restantes.
➧ now ou +0: Imediatamente.
Algumas das opções mais usadas:
➧ -a: Usar o arquivo de permissão
/etc/shutdown.allow
➧ -r: Reiniciar a máquina
➧ -h: Desligar a máquina
➧ -t segundos: Tempo de espera antes do shutdown executar a ação
solicitada.
O argumento mensagem será o aviso enviado a todos os usuários que estiverem
logados no sistema.
Para impedir que qualquer usuário reinicie a máquina pressionando
[Ctrl]+[Alt]+[Del], a opção -a deve
estar presente na linha do /etc/inittab
referente à ação ctrlaltdel. Além disso,
os usuários com permissão para realizar
a ação devem constar no arquivo /etc/
shutdown.allow.
Considerações finais
Apesar de serem tópicos menores, com
conteúdo mais sucinto, deve ser dada especial atenção para os temas desta aula.
Quanto à configuração do X, é muito
importante conhecer em detalhes o
principal arquivo de configuração: /etc/
X11/xorg.conf ou /etc/X11/XF86Config. A
sintaxe das seções e opções dentro desses arquivos certamente será abordada
na prova. Sobretudo, conheça as seções
e suas finalidades.
Os gerenciadores de janelas também
são tema certo na prova. Saiba, no mínimo, onde se situam e para que servem
os arquivos de configuração de cada
um. A utilização do X em ambientes
de rede também é assunto recorrente.
Conheça bem o funcionamento da
variável de ambiente DISPLAY.
Nos outros tópicos, que abordam o
kernel e a inicialização, aspectos fundamentais são mostrados. Tenha familiariedade com comandos como uname e
modprobe. Também é importante conhecer
e saber utilizar o arquivo de configuração
modprobe.conf.
Saiba também os princípios de
como configurar, compilar e instalar
um novo kernel. Ainda que esse assunto não seja detalhadamente abordado na prova, os passos básicos que
constituem essa tarefa certamente
serão requisitados.
Sobre a inicialização do sistema, é
imprescindível conhecer com precisão
cada detalhe do arquivo /etc/inittab.
Conseqüentemente, certifique-se
de saber como funcionam e como
identificar os diferentes runlevels
do sistema. ■
http://www.linuxmagazine.com.br
Download

LPI nível 1: Aula 3