NOME
inittab - formato do ficheiro inittab usando pelo processo init compatível com sysv
DESCRIÇÃO
O ficheiro inittab descreve quais processos são iniciados no arranque e durante a operação normal (ex. /etc/init.d/boot, /etc/init.d/rc, gettys...). O init(8) distingue múltiplos runlevels, cada um dos quais pode ter o seu próprio conjunto de processos que é arrancado. Os runlevels válidos são 0-6 mais A, B, e C para entradas ondemand. Uma entrada no ficheiro inittab tem o seguinte formato:
id:runlevels:action:process
As linhas que começam com ’#’ são ignoradas.
id |
é uma sequência única de 1-4 caracteres que identifica uma entrada em inittab (para versões do sysvinit compiladas com a antiga libc5 (< 5.2.18) ou bibliotecas a.out o limite é de 2 caracteres). |
Nota: tradicionalmente, para o getty e outros processos de login, este valor do campo id é mantido no mesmo que o sufixo do tty correspondente, ex. 1 para tty1. Alguns programas antigos de contabilidade de login podem esperar isto, apesar de não me lembrar de nenhum.
runlevels
lista os runlevels para os quais a acção especificada deve ser tomada.
action |
descreve qual a acção que deve ser tomada. |
process
especifica o processo a ser executado. Se o campo de processo começar com um caractere ’+’, o init não irá contabilizar tmp e wtmp para esse processo. Isto é preciso para gettys que insistem em fazer a sua própria limpeza utmp/wtmp. Isto é também um bug histórico. O comprimento deste campo está limitado a 127 caracteres.
Por favor note que incluir certos caracteres no campo de processo irá resultar no init a tentar lançar uma shell para interpretar o comando contido no campo de processo. Os caracteres que pode despoletar uma shell são: ~’!$^&*()=|}[];
Em sistemas que não tenham uma shell para ser lançada ou quais não se deseja usar uma shell para interpretar o campo do processo, o campo de processo pode ser prefixado com o símbolo @. O @ irá ser ignorado e tudo o que se segue será tratado como o comando a ser lançado, literalmente, pelo serviço init.
Em casos que ambos sinais + e @ vão ser usados (para desligar os relatórios e interpretação da shell) coloque o sinal + antes do símbolo @. Ambas bandeiras irão ser lidadas e depois tudo o que se segue ao @ irá ser lidado pelo init
O campo runlevels pode conter vários caracteres para diferentes runlevels. Por exemplo, 123 especifica que o processo deve ser iniciado nos runlevels 1, 2, e 3. Os runlevels para entradas ondemand podem conter um A, B, ou C. O campo runlevels das entradas sysinit, boot, e bootwait é ignorado.
Quando o runlevel do sistema é mudado, quaisquer processos a correr que não estão especificados para o novo runlevel são mortos, primeiro com SIGTERM , e depois com SIGKILL .
As
acções válidas para o campo
action são:
respawn
O processo será reiniciado sempre que termine (ex. getty).
wait |
O processo irá ser iniciado assim que se entra no runlevel especificado e o init irá esperar pelo seu término. | ||
once |
O processo irá ser executado uma vez quando se entra no runlevel especificado. | ||
boot |
O processo será executado durante o arranque do sistema. O campo runlevels é ignorado. |
bootwait
O processo será executado durante o arranque do sistema, enquanto init espera pelo seu término (ex. /etc/rc). O campo runlevels é ignorado.
off |
Isto não faz nada. |
ondemand
Um processo marcado com um runlevel ondemand será executado sempre que o runlevel ondemand especificado é chamado. No entanto, nenhuma mudança de runlevel irá ocorrer (os runlevels ondemand são ’a’, ’b’, e ’c’).
initdefault
Uma entrada initdefault especifica o runlevel em que se deve entrar após o arranque do sistema. Se não existir nenhum, o init irá pedir um runlevel na consola. O campo process é ignorado.
sysinit
O processo será executado durante o arranque do sistema. Será executado antes de qualquer entrada boot ou bootwait. O campo runlevels é ignorado.
powerwait
O processo será executado quando a energia vai abaixo. O init é geralmente informado disto por um processo que fala com uma UPS ligada ao computador. O init irá esperar que o processo termine antes de continuar.
powerfail
Como para powerwait, excepto que o init não espera pelo final do processo.
powerokwait
Este processo será executado assim que o init é informado que a energia foi restaurada.
powerfailnow
Este processo será executado quando é dito ao init que a bateria da UPS externa está quase vazia e a energia está a falhar (desde que a UPS externa e o processo de monitorização sejam capazes de detectar esta condição).
ctrlaltdel
O processo será executado quando o init receber o sinal SIGINT. Isto significa que alguém na consola do sistema pressionou a combinação de teclas CTRL-ALT-DEL. Tipicamente alguém quer executar alguma espécie de shutdown seja para ir para nível de único-utilizador ou para reiniciar a máquina.
kbrequest
O processo será executado quando o init receber um sinal a partir do manipulador do teclado que uma combinação especial de teclas foi pressionada no teclado da consola.
A documentação para esta função ainda não está completa; pode ser encontrada mais informação nos pacotes kbd-x.xx (o mais recente foi kbd-0.94 na altura que isto foi escrito). Basicamente você deseja mapear alguma combinação do teclado para a acção "KeyboardSignal". Por exemplo, para mapear Alt-SetaCima para este objectivo use o seguinte no seu ficheiro keymaps:
alt keycode 103 = KeyboardSignal
EXEMPLOS
Isto é um exemplo de uma inittab que é semelhante à inittab antiga do Linux:
# inittab for
linux
id:1:initdefault:
rc::bootwait:/etc/rc
1:1:respawn:/etc/getty 9600 tty1
2:1:respawn:/etc/getty 9600 tty2
3:1:respawn:/etc/getty 9600 tty3
4:1:respawn:/etc/getty 9600 tty4
Este ficheiro inittab executa /etc/rc durante o arranque e inicia gettys em tty1-tty4.
Uma inittab mais elaborada com diferentes runlevels (veja os comentários no interior):
# Nível
para onde correr
id:2:initdefault:
# Script de
configuração/inicialização do
sistema durante o arranque.
si::sysinit:/etc/init.d/rcS
# O que fazer
em modo de único-utilizador.
~:S:wait:/sbin/sulogin
# /etc/init.d
executa os scripts S e K na comutação
# do runlevel.
#
# Runlevel 0 é parar.
# Runlevel 1 é único-utilizador.
# Runlevels 2-5 são multi-utilizador.
# Runlevel 6 é reiniciar.
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
# O que fazer
na "saudação dos 3 dedos".
ca::ctrlaltdel:/sbin/shutdown -t1 -h now
# Runlevel 2,3:
getty on virtual consoles
# Runlevel 3: getty on terminal (ttyS0) and modem (ttyS1)
1:23:respawn:/sbin/getty tty1 VC linux
2:23:respawn:/sbin/getty tty2 VC linux
3:23:respawn:/sbin/getty tty3 VC linux
4:23:respawn:/sbin/getty tty4 VC linux
S0:3:respawn:/sbin/getty -L 9600 ttyS0 vt320
S1:3:respawn:/sbin/mgetty -x0 -D ttyS1
FICHEIROS
/etc/inittab
AUTOR
init foi escrito por miquels [AT] cistron.nl">Miquel van Smoorenburg. Este manual foi escrito por lederer [AT] francium.de">Sebastian Lederer e modificado por u31b3hs [AT] pool.de">Michael Haardt.