Академический Документы
Профессиональный Документы
Культура Документы
O processo init
O processo init o primeiro programa executado pelo kernel de qualquer sistema operacional Linux/Unix na sua inicializao. Neste captulo sero mostradas as diferenas de inicializao que existem entre as diversas distribuies Linux/Unix e como podemos personalizar a inicializao de um sistema Linux.
O processo init
No momento em que o computador ligado ou reinicializado (boot), o BIOS procura no primeiro setor do disco (master boot record) selecionado para carga do sistema operacional (que pode ser um disco rgido, um disquete, um CD-ROM, um ZIP-DRIVE ou um LS-120, e isto definido no SETUP) um programa para executar, que ser o carregador do sistema operacional (boot loader). O LILO e o GRUB so os programas de carga de sistema operacional mais comuns no Linux. Eles permitem selecionar qual partio ser utilizada para carga do sistema operacional, possibilitando assim a escolha de mltiplos sistemas operacionais, ou mesmo verses diferentes do kernel do Linux, ou configuraes dos discos. Posteriormente, no Captulo 19 Gerenciamento do kernel do Linux, veremos como configurar e personalizar o LILO e o GRUB de acordo com as nossas necessidades. Depois de carregado na memria, o kernel do Linux, normalmente compactado, descompactado antes de iniciar a sua execuo (isso feito por meio de um pequeno programa colocado no incio do arquivo do kernel do Linux). Logo em seguida, exibida uma srie de mensagens enviadas pelo kernel, durante a deteco e configurao do hardware existente no computador. Depois de concluir a deteco e configurao do hardware, o kernel monta o root filesystem (o diretrio /) a partir de um parmetro fornecido ao LILO, pelo seu arquivo de configurao, /etc/lilo.conf, ou ao GRUB, pelo seu arquivo de inicializao /boot/grub/menu.lst, e executa o processo init, que o pai de todos os processos, carregando o programa /sbin/init. Todos os outros processos so denominados como sendo filhos deste e so monitorados pelo init. Este o nico processo que no pode ser abortado. Existem dois estilos de inicializao para os sistemas operacionais Linux/Unix: SysV init e BSD init. A maioria das distribuies Linux utiliza inicializao estilo SysV init em virtude do maior nmero de recursos e da maior flexibilidade do que o BSD init.
99
SysV init
Na inicializao SysV init, o processo init troca o estado do kernel para multitarefa e l o arquivo /etc/inittab. Esse arquivo define em que nvel de execuo (runlevel) o Linux inicializar a seqncia de shell scripts que sero executados para inicializar todos os servidores e o programa mingetty, que configura os terminais e viabiliza o login. Os nveis de execuo definem como o sistema operacional inicializar e subdividem-se de 0 a 6, s e S. Os shell scripts (ou programas) de inicializao esto definidos em /etc/inittab, com o seguinte formato:
[id]:[nveis_de_execuo]:[ao]:[processo]
Onde o id uma seqncia de 1 a 4 caracteres para nomear esta linha; os nveis de execuo so um ou mais dos valores que falamos anteriormente; a ao um dos valores: respawn, wait, once, boot, bootwait, off, ondemand, initdefault, sysinit, powerwait, powerfail, powerokwait, ctrlaltdel, kbrequest; e por ltimo, processo o programa a ser executado. Nvel de execuo
0 1 2 3 4 5 6 S ou s
Os scripts de inicializao do Linux esto localizados no diretrio /etc/rc.d (ou /etc em outras distribuies como a Debian). Nesse diretrio so encontrados os scripts de inicializao: rc.sysinit, rc, rc.serial e rc.local e os diretrios: init.d, rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d e rc6.d. O diretrio init.d contm vrios scripts de inicializao; j os diretrios rc0.d, rc1.d, rc2.d, rc3.d, rc4.d, rc5.d e rc6.d contm links simblicos para os scripts de inicializao existentes no diretrio init.d. Cada script do diretrio /etc/rc.d/init.d escrito para aceitar argumentos como start, stop, restart, status e pode ser executado manualmente, se necessrio. Por exemplo, para inicializar, parar e reinicializar o servidor httpd, digita-se:
# /etc/rc.d/init.d/httpd # /etc/rc.d/init.d/httpd # /etc/rc.d/init.d/httpd start stop restart
Author:
100
# Things to run in every runlevel. ud::once:/sbin/update # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now # When our UPS tells us power has failed, assume we have a few minutes # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. Pf::powerfail:/sbin/shutdown -f -h +2 Power Failure; System Shutting Down # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c Power Restored; Shutdown Cancelled # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 3:2345:respawn:/sbin/mingetty tty3 4:2345:respawn:/sbin/mingetty tty4 5:2345:respawn:/sbin/mingetty tty5 6:2345:respawn:/sbin/mingetty tty6 # Run prefdm (which can points to xdm, kdm, gdm) in runlevel 5 x:5:respawn:/etc/X11/prefdm nodaemon
Tenha bastante cuidado ao editar esse arquivo, porque ele pode variar bastante nas diversas distribuies Linux. Tenha bastante cuidado ao verificar as referncias que ele faz a outros arquivos. O que se demonstrou aqui foi baseado no Red Hat Linux. Os caracteres # (quase sempre), ; e ! (algumas vezes) so usados para fazer comentrios, sendo ignorados todos os caracteres seguintes a eles que se encontram na mesma linha. No Linux/Unix, isto se aplica a todos os arquivos de configurao, scripts e programas-fonte. O nvel de execuo atual do sistema pode ser visualizado pelo comando runlevel e modificado pelo comando init <n>, onde n o runlevel.
101
102
Este procedimento inicializar o servidor de impresso toda vez que o Linux for inicializado, nos nveis de execuo 2345.
103
Ao
start stop restart status
Descrio
Inicializa um servio. Interrompe um servio. Reinicializa um servio. Fornece o estado de operao do servio.
Exemplos:
# /etc/rc.d/init.d/lpd
start
lpd
start
chkcong
Gerencia os scripts de inicializao dos servios e seus links simblicos localizados nos diretrios /etc/rc.d/init.d e /etc/rc.d/rc[0-6].d. O comando chkcong requer algumas linhas de comentrios adicionais nos scripts de inicializao dos servios, para inform-los em que nveis de execuo devem inicializar e nalizar (criando os links simblicos). Essas linhas tiradas do script /etc/rc.d/init. d/lpd so as seguintes:
# chkcong: 2345 60 50 # description: lpd e o daemon de impressao
A primeira linha, que um marcador para o chkcong, informa que o script dado deve ser inicializado nos nveis de execuo 2, 3, 4 e 5, com uma ordem de inicializao de 60 e uma ordem de nalizao de 50. A segunda linha uma descrio do que o servio em questo realiza. chkcong <opo> <servio>
Opo
--add --del --levels <nveis> <servio> <off|on>
Descrio
Adiciona um servio. Remove um servio. Especica os nveis de execuo.
Exemplos:
# chkcong # chkcong # chkcong
104
ntsysv
Exemplo:
# ntsysv
BSD init
O estilo de inicializao BSD init bem mais simples que o SysV init. Suas caractersticas principais so: No possui arquivo /etc/inittab. O arquivo /etc/rc usado no seu lugar. No tem nveis de execuo. Os arquivos e/ou scripts de inicializao em sistemas BSD esto localizados no diretrio /etc. Outros arquivos so /etc/rc.serial e /etc/rc.local. O Linux Slackware utiliza um estilo de inicializao BSD init modificado, no qual existe um arquivo /etc/inittab no lugar de /etc/rc e aceita nveis de execuo.
105
Essa mensagem, que pode ser modificada, encontra-se no arquivo /etc/issue. Aps introduzidos o nome do usurio e, em seguida, a senha (password), o comando login testa se os dados introduzidos so corretos e o shell destinado a esse usurio inicializado. Normalmente, o shell-padro o bash, mas pode ser modificado no arquivo /etc/passwd. Toda a sesso deste usurio consiste neste processo shell e os subprocessos criados a partir deste. Para sair da sesso, utilizamos os comandos logout ou exit.
Desligando o sistema
No correto desligar o sistema de qualquer forma, pois muitos arquivos podem estar abertos para escrita e usurios podem estar logados em terminais do sistema. O comando shutdown usado para parar o sistema (opo -h) ou reinicializ-lo (opo -r). Essa parada ou reinicializao do sistema pode ser: (1) imediatamente (opo now), (2) na hora programada (introduzindo hh:ss), (3) daqui a n minutos (+minutos). Alguns exemplos: Parada imediata
# shutdown -h now
ou
# init 0
ou
# halt
Reboot imediato
# shutdown -r now
ou
# init 6
ou
# reboot
106
Pressione <Enter>, o sistema inicializar em modo monousurio e o superusurio root ser "logado" automaticamente sem pedir senha, e ento basta executar o comando:
# passwd
No GRUB
Ao ligar-se a mquina, quando aparecer a tela do GRUB, selecione o Linux e pressione <e>. Ento aparecer a linha de comando de inicializao, onde dever ser includo o nmero 1 ao final da linha. Para isso, pressione <e> novamente para editar a linha de comando e adicione um espao e o nmero 1 no final da linha. Agora basta pressionar <Enter> e depois <b>, que o computador ir inicializar em modo monousurio e o superusurio root ser logado automaticamente sem pedir senha, e ento ser suficiente executar o comando:
# passwd
Inclua a linha:
su:S:wait:/sbin/sulogin
107
Para:
ca::ctrlaltdel:/sbin/halt
108