Página seguinte Página anterior Índice geral
Bem-vindo ao meu editor de níveis de execução System V, comumente conhecido e referenciado doravante como KSysV. Esta seção introduz alguns conceitos e explica o que você pode fazer com o KSysV.
A explanação a seguir foi tomada emprestada do tksysv
, que inspirou
o KSysV:
O estilo de iniciação do Sistema V está tornando-se rapidamente o padrão no mundo Linux, como modelo de controle da partida da máquina. Isso porque é mais fácil de usar, poderoso e flexível que a iniciação BSD tradicional.
Não vou contar a história toda aqui (até porque eu não sei :-).
O programa executável init
está localizado no diretório
/sbin
e não no /etc
. Isso é importante, pois permite atualizar uma
máquina de modo que inicie no estilo System V, sem precisar
reinstalar todo o sistema, e sem formatar nada. O kernel do Linux procura
pelo init
no diretório /etc
em primeiro lugar, portanto certifique-se
de que você removeu seu init
velho de lá, se ainda havia um.
A iniciação SysV também difere da iniciação BSD na medida em que seus
arquivos de configuração estão num subdiretório de /etc
, ao
invés de residirem diretamente em /etc
. Este diretório é chamado
rc.d
. Lá você encontrará o arquivo rc.sysinit
e os
seguintes subdiretórios:
init.d/
rc0.d/
rc1.d/
rc2.d/
rc3.d/
rc4.d/
rc5.d/
rc6.d/
init.d
contém uma coleção de scripts. Basicamente, você precisa um
script para cada serviço que você possa precisar iniciar na partida da máquina,
ou ao entrar em outro nível de execução. Os serviços incluem coisas como
serviços de rede, NFS, sendmail, http etc. Não incluem coisas como
setserial
que devem ser executados somente uma vez. Esse tipo de programa
deve constar no arquivo rc.local
.
rc.local
deve estar no diretório /etc/rc.d
se você
tiver um. A maioria dos sistemas possuem esse arquivo mesmo que ele não
faça muita coisa. Você também pode incluir um arquivo rc.serial
no diretório /etc/rc.d
, se você precisa executar quaisquer
procedimentos de configuração das portas seriais na partida da máquina.
A cadeia de eventos ocorre assim:
init
em diversos lugares e executa o
primeiro que encontrar;init
executa o script /etc/rc.d/rc.sysinit
rc.sysinit
executa algumas tarefas necessárias e então
executa o script rc.serial
, se ele existir;init
executa o script rc.local
;init
executa todos os scripts do nível de execução padrão.O nível de execução padrão é decidido em /etc/inittab
. Você deve
ter uma linha próxima ao início do arquivo, parecida com esta:
id:3:initdefault:
Aqui você olha para o segundo parâmetro e vê que o nível de execução
padrão é 3, que deve ser o caso de muitos sistemas. Se você quer mudá-lo,
você pode editar o arquivo /etc/inittab
manualmente e mudar o
número 3. Tenha cuidado ao fazer isso.
Se você bagunçar esse arquivo, poderá ter uma chance de consertá-lo, logo ao início da partida da máquina, perfazendo os seguintes passos:
LILO boot: linux single
Isto *deve* permitir a você entrar em modo monousuário, de modo que você possa pelo menos editar e consertar o arquivo.
Agora, como é que ele executa todos os scripts ? Se você executar o comando
'ls -l
' no diretório /etc/rc.d/rc3.d
, verá algo como
lrwxrwxrwx 1 root root 13 13:11 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 16 13:11 S30syslog -> ../init.d/syslog
lrwxrwxrwx 1 root root 14 13:32 S40cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 13:11 S50inet -> ../init.d/inet
lrwxrwxrwx 1 root root 13 13:11 S60nfs -> ../init.d/nfs
lrwxrwxrwx 1 root root 15 13:11 S70nfsfs -> ../init.d/nfsfs
lrwxrwxrwx 1 root root 18 13:11 S75keytable -> ../init.d/keytable
lrwxrwxrwx 1 root root 23 13:11 S80sendmail -> ../init.d/sendmail.init
lrwxrwxrwx 1 root root 18 13:11 S90lpd -> ../init.d/lpd.init
lrwxrwxrwx 1 root root 11 13:11 S99local -> ../rc.local
O que você vai notar é que não há arquivos reais no diretório. Todos eles
são links para scripts que estão de fato no diretório init.d. Os links
também tem um "S" e um número no começo do nome. A letra "S" significa
que o serviço correspondente deve ser iniciado, enquanto um "K" significaria
que ele deve ser parado. O número serve apenas para estabelecer uma ordem
de execução entre os scripts. O init
iniciará todos os serviços baseado
na ordem em que eles aparecem. Você pode duplicar números, mas isso apenas
deixaria você confuso. Você precisa apenas de um número de dois dígitos,
e uma letra maiúscula "S" ou "K" para iniciar e parar os serviços.
Como ele inicia e pára os serviços ? Simples. Cada um dos scripts é escrito de modo a aceitar um argumento que pode ser "start" ou "stop". Você pode executar esses scripts manualmente via linha de comando:
/etc/rc.d/init.d/httpd.init stop
para parar o servidor httpd. O Init lê o nome, e se ele tem um "K", chama o script com o argumento "stop". Se ele tem um "S", chama o script com o argumento "start".
Algumas pessoas precisam de uma forma fácil de configurar máquinas para múltiplos propósitos. Eu poderia ter um nível de execução "servidor" que executa somente httpd, sendmail, serviços de rede etc. Então eu posso ter outro nível de execução, "usuário", que rode xdm, serviços de rede etc.
Página seguinte Página anterior Índice geral