Inicialização e interrupção do sistema (Debian) [Artigo] - página 2
gjr_rj
Tenho visto muitas dúvidas e perguntas sobre como colocar um script ou um aplicativo para iniciar no boot. Tenho visto algumas respostas que apesar de funcionarem, não creio que sejam a melhor alternativa para alguns casos. Por isso resolvi escrever esse artigo, tentando explicar o processo de inicialização e interrupção do Linux.
[ Hits: 41.129 ]
Por: Geraldo José Ferreira Chagas Júnior em 02/04/2008 | Blog: http://prginfo.blogspot.com
Processo de inicialização
Aqui iremos mostrar como o Linux começa a preparar o sistema para o uso, através do script de partida. Importante é observar o uso de variáveis que indicam o nível de execução ou estados do sistema.
O estado do sistema surgem da necessidade de separar a forma com que o sistema é percorrido, de acordo com a forma de manutenção que está sendo executada. Você vai encontrar uma descrição de vários níveis de execução no arquivo /etc/inittab.
# Runlevel 0 is halt. ( desligar )
# Runlevel 1 is single-user. ( mono usuário )
# Runlevels 2-5 are multi-user. (sendo que 2 é multiusuário sem NFS, será igual ao nível 3 se você não utilizar rede - 3 modo multiusuário completo - 4 não é usado, é para caso necessite configurar um especial - 5 é o modo X11)
# Runlevel 6 is reboot. (reboot
Quem usa o Linux em modo texto, como no caso de servidores, deve ainda encontrar a linha:
Essa linha indica que após carregar o núcleo (kernel) do sistema, o Linux deve ser executado, por padrão, em nível 3. Entretanto o pessoal que usa em modo gráfico deve ter a linha indicando para carregar em modo X11, ou seja, nível de execução 5. Esses níveis padrão são configurados na instalação do sistema. Dessa forma a linha que aparecerá, para modo gráfico, deve ser:
Agora veremos os níveis de execução, incluindo o primeiro script de partida na tabela de inicialização do sistema, o /etc/rcS/*, que é executado uma vez na hora da inicialização pelo comando init. A estrutura de diretório /etc/rcX.d e o que esses scripts fazem.
O init é o "pai de todos os os processos" e seu primeiro papel é carregar os processos armazenados no script /etc/inittab. Muito da forma com que o Linux carrega seus processos após a carga do núcleo vem de outro UNIX, System V. Na realidade o init do Linux é compatível com o init do System V.
Você pode ver evidências desse processo usando o comando pstree.
# pstree
init-+-cpid
| pache2 *[apache2]
| atd
| cron
| cupsd usb
|events/0
Mesmo não estando toda a saída do comando pstree mostrada aqui, verificamos que o init é o pai de todos os processos, é dele que partem todos os processos subsequentes. O init trabalha analisando o script /etc/inittab e executando os scripts de /etc/rcX.d de acordo com o default ou com o nível de execução desejado. Cada script pode iniciar ou parar o serviço, como um serviço de impressão, compartilhamento de internet, serviço de rede etc.
Aqui está a lista de diretórios rc* de /etc/:
rc0.d/
rc1.d/
rc2.d/
rc3.d/
rc4.d/
rc5.d/
rc6.d/
rcS.d/
Os diretórios rc's contém vários scripts para iniciar ou parar um processo, os detalhes de cada um não serão mostrados aqui, mas você poderá descobrir a função de cada um pelo nome do arquivo ou pelas curtas descrições contidas dentro deles.
A quantidade de scripts depende do número de pacotes escolhidos na instalação do sistema.
Em geral, cada script está destinado a responder a comandos da seguinte forma:
<script> {start | stop | status | restart }
Assim, esses scripts podem ser controlados por outros programas ou scripts, dependendo da sintaxe usada.
Ao ler o arquivo /etc/inittab após a linha:
id:X:initdefault:
que define qual o nível de execução default, encontra-se a linha:
que indica que a primeira tarefa a ser executada pelo sistema de inicialização será carregar os scripts deste diretório. Esses scripts são os responsáveis por:
Ajustar algumas variáveis $PATH iniciais;
Configurar a conexão com a rede;
Ajustar clock do sistema;
Carregar configuração de teclado;
Começar a troca pela memória virtual;
se usarmos o comando "ls -l" no diretório /etc/rcS.d será mostrada uma saída aproximadamente assim:
S01glibc.sh -> ../init.d/glibc.sh
S02hostname.sh -> ../init.d/hostname.sh
S02mountkernfs.sh -> ../init.d/mountkernfs.sh
S03udev -> ../init.d/udev
S04mountdevsubfs.sh -> ../init.d/mountdevsubfs.sh
S05bootlogd -> ../init.d/bootlogd
S05keymap.sh -> ../init.d/keymap.sh
S07hdparm -> ../init.d/hdparm
S10checkroot.sh -> ../init.d/checkroot.sh
S11hwclock.sh -> ../init.d/hwclock.sh
S12mtab.sh -> ../init.d/mtab.sh
A próxima tarefa do init será carregar os scripts do nível de execução determinado.
Se você observar a lista de diretórios rc em /etc, verá vários diretórios rcX.d, onde X é um número de 0 a 6.
2. Processo de inicialização
3. Diretórios rcX.d
4. Níveis de execução
5. Como interromper o sistema
6. Notas finais
Linvox - Sistema Linux voltado para deficientes visuais
X Window, Controladores de Janelas e Ambientes Desktop
Configurando Servidor de Nomes - DNS (Debian)
Vírus de computador e criação de um vírus em C/C++ (parte 1 - básico)
Montando um ambiente utilizando Tomcat + Java + MySQL (Debian)
Teste de distribuições GNU/Linux em pendrive
Como utilizar o Kurumin dentro de uma única partição Windows
Qual distribuibuição GNU/Linux devo utilizar?
Instalando Debian 5.0 e deixando com todos os programas que você gosta
Instalação dual boot com 2 HDs com Windows XP e Ubuntu Linux
[1] Comentário enviado por exercitobr em 03/04/2008 - 08:55h
Muito interessante e bem explicado, parabéns!
[2] Comentário enviado por Andre_A_Ferreira em 03/04/2008 - 09:18h
?comentario=Excelente contribuição, as vezes precisamos entender simples funcionamento para desenvolver complexos sistemas.
?comentario=Excelente contribuição, as vezes precisamos entender simples funcionamento para desenvolver complexos sistemas. Parabéns.
[3] Comentário enviado por brnlino em 04/04/2008 - 12:53h
Show de bola esse seu Artigo,
ainda irei criar uma artigo nesse nivel.
Show de bola esse seu Artigo, ainda irei criar uma artigo nesse nivel. Parabens mesmo.
[4] Comentário enviado por .pedrao em 23/07/2008 - 09:07h
Muito bom mesmo cara...aliás, muito bom é pouco, eu tava precisando muito destas informações e tava difícil de encontrar...
Brigadão ae.. de verdade!!! XD
Muito bom mesmo cara...aliás, muito bom é pouco, eu tava precisando muito destas informações e tava difícil de encontrar... Brigadão ae.. de verdade!!! XD