Vous êtes sur la page 1sur 5

Arranque do Sistema

o boot loader carrega o kernel E a seguir?


Iniciao do Kernel. Iniciao de processos/servios.

Iniciao do Kernel
Iniciar as estruturas de dados internas. Verificar o hardware do sistema. Verificar a integridade do sistema de ficheiros raiz e montar este sistema. Criar o processo 0 (swapper) e o processo 1 (init).

Iniciao de Processo/Servios
Criar processos em Linux:
fork Todos os processos precisam de um pai.

Runlevel(s)
Runlevel
Conjunto de servios activos no sistema. Permite diferentes modos de operao Exemplo:
No runlevel 3, uma mquina pode estar configurada como servidor web. No runlevel 5, a mesma mquina pode estar configurada para ser uma estao de trabalho

init
PID (Process ID) 1. nico processo que no tem pai Ancestral de todos os processos Iniciao de servios do sistema Coloca o sistema num runlevel

Runlevel(s)
Runlevel 0 1 2 3 4 5 6 S,s Paragem do sistema Modo single user. Apenas um pequeno conjunto de servios se encontram activos. S o root pode entrar no sistema. Modo multi-utilizador, sem partilha remota de ficheiros. Modo multi-utilizador, com partilha remota de ficheiros, processos e servios. No definido. Modo semelhante ao 3, mas com X11 iniciado. Reiniciar o sistema. O mesmo que single user (runlevel 1). Descrio

/etc/inittab
Especifica a configurao de cada runlevel Indica ao init qual o runlevel que deve ser activado

/etc/inittab
Cada entrada (linha) possui quatro campos separados por : Formato: Tipo de aces:

/etc/inittab
respawn reinicia o processo quando este termina. sysinit executa o processo durante o arranque do sistema e antes de qualquer entrada com a aco boot ou bootwait wait o init espera que este processo termine para passar para a prxima entrada. once processar esta entrada uma vez, quando se entra no runlevel. boot processar esta entrada uma vez durante o boot (ignora os runlevels) boot-wait uma combinao de boot e wait. off no faz nada. initdefault especifica o runlevel de default da mquina. powerwait executado quando o init recebe o sinal de SIGPWR que normalmente indica uma falha de energia, o init espera que o processo termine. powerfail idem, mas o init no espera pelo processo. ctrlaltdel executado quando o init recebe o sinal SIGINT (ctrl+alt+del).

identificador:runlevel(s):aco:processo
Identificador Um ou mais caracteres para identificar a entrada. Runlevel(s) Indica o(s) runlevel(s) onde esta entrada processada. O tipo de aco Indica como que o init deve executar o processo. O processo O caminho absoluto do processo a iniciar.

/etc/inittab
id:5:initdefault: # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # 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 xdm in runlevel 5 x:5:respawn:/etc/X11/prefdm -nodaemon

/etc/rc.d/
Os runlevels definidos utilizando o script:
/etc/rc.d/rc <runlevel>

Espera que os servios a configurar em cada runlevel esto definidos sob a pasta /etc/rc.d/:
/etc/rc.d/rc<runlevel>.d/ Exemplos:
/etc/rc.d/rc1.d/ /etc/rc.d/rc2.d/ /etc/rc.d/rc3.d/

/etc/rc.d/
Sob cada pasta rcX.d temos a definio do estado dos servios no runlevel correspondente. Para cada servio, temos um ficheiro que indica o estado do servio
Formato:
XyyNomeServio X conforme se pretende iniciar (S) ou terminar (K) o servio yy nmero que indica a ordem NomeSevio isso mesmo

/etc/rc.d/
Questes
Quantos runlevels esto configurados na pasta /etc/rc.d/ ? No runlevel 3, quais so os servios activos?

/etc/rc.d/init.d
Os scripts que iniciam/terminam os servios da mquina esto na pasta /etc/rc.d/init.d Na realidade, os ficheiros sob as pastas /etc/rc.d/rcX.d so apenas ligaes simblicas para estes Cada script aceita parmetros:
start | stop | restart | status | reload | configtest |

Recapitulando
O init l o /etc/inittab De acordo com a entrada initdefault, chama o /etc/rc.d/rc Para cada ligao simblica dentro da pasta /etc/rc.d/rcX.d, o /etc/rc.d/rc executa o script apontado:
O argumento passado determinado pela primeira letra do nome da ligao simblica A ordem de execuo dos scripts determinada pelos ns do nome da ligao simblica

rc.sysinit; rc.local
A pasta /etc/rc.d/ contm ainda:
rc.sysinit: criao do sistema de ficheiros proc, atribuio do nome da mquina, iniciao do teclado, etc. rc.local: ltimo script a ser executado e tem a tarefa de executar algum tipo de iniciao adicional, especfica ao sistema em causa. Outros:
rc.serial,

/etc/rc.d/
Contedos
$ls la /etc/rc.d/ drwxr-xr-x 10 root drwxr-xr-x 61 root drwxr-xr-x 2 root -rwxr-xr-x 1 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root drwxr-xr-x 2 root -rwxr-xr-x 1 root -rwxr-xr-x 1 root root root root root root root root root root root root root root 4096 8192 4096 2330 4096 4096 4096 4096 4096 4096 4096 220 22095 Sep Oct Oct Jul Oct Oct Oct Oct Oct Oct Oct Jul Aug 26 22 16 14 10 10 10 16 16 16 10 11 22 20:57 11:20 17:39 2002 17:00 17:00 17:00 18:28 18:28 18:28 17:00 2001 2002 . .. init.d rc rc0.d rc1.d rc2.d rc3.d rc4.d rc5.d rc6.d rc.local rc.sysinit

/etc/rc.d/rc3.d
Contedos
$ls la /etc/rc.d/rc3.d lrwxrwxrwx 1 root root 14 lrwxrwxrwx 1 root root 19 lrwxrwxrwx 1 root root 15 lrwxrwxrwx 1 root root 20 lrwxrwxrwx 1 root root 19 lrwxrwxrwx 1 root root 13 lrwxrwxrwx 1 root root 13 lrwxrwxrwx 1 root root 17 lrwxrwxrwx 1 root root 17 lrwxrwxrwx 1 root root 14 lrwxrwxrwx 1 root root 16 lrwxrwxrwx 1 root root 16 lrwxrwxrwx 1 root root 19 Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep Sep 26 26 26 26 26 26 26 26 26 26 26 26 26 22:22 20:57 22:26 22:25 21:02 22:27 22:22 22:26 22:26 21:36 22:22 22:22 21:36 K05innd -> ../init.d/innd K05saslauthd -> ../init.d/saslauthd K15httpd -> ../init.d/httpd K15postgresql -> ../init.d/postgresql K50snmptrapd -> ../init.d/snmptrapd K50tux -> ../init.d/tux K54pxe -> ../init.d/pxe K70aep1000 -> ../init.d/aep1000 K70bcm5820 -> ../init.d/bcm5820 K74ntpd -> ../init.d/ntpd K74ypserv -> ../init.d/ypserv K74ypxfrd -> ../init.d/ypxfrd K95firstboot -> ../init.d/firstboot

Questes
Como se termina o servio cups ? Qual o runlevel actual ? O servio httpd est activo no runlevel 3?

Exerccio
Activar o servio httpd no runlevel 3. Deve ser iniciado depois do sendmail. Ajuda:
Criar ligaes simblicas:
ln s <ficheiro-alvo> <nome-da-ligao>

Comandos teis
init, telinit
Mudar de runlevel: telinit <novo-runlevel>

Chkconfig (RH)
Apresenta/modifica configurao dos runlevels
Exemplo: Activar/Desactivar o httpd nos runlevels 3 e 5:

chkconfig --level 3,5 httpd <on/off>

service (RH)
Controlar servios Exemplo: service httpd start

Servios Standalone e Servios Internet Daemon


Servios Standalone
Servios que gerem os seus pedidos (normalmente iniciados atravs do rc.d)

Servios Internet Daemon


Extended Internet Services Daemon
Em distribuies modernas, o inetd foi substitudo pelo xinetd

Servios Internet Daemon


Quem gere os pedidos o Internet Services Daemon - inetd

Recebe pedidos da rede Encaminha os pedidos para o programa responsvel pelo servio correspondente

/etc/xinetd.conf
Contm a configurao do xinetd Alguns valores por omisso Exemplo: Indica a pasta onde os servios oferecidos pelo xinetd esto configurados Dois tipos de servios:
Externos: Implementados por programas externos Internos: Implementados pelo prprio xinetd

/etc/xinet.d/
O xinetd percorre todos os ficheiros desta pasta para configurar os servios oferecidos

$ ls /etc/xinetd.d chargen daytime-udp rsync chargen-udp echo servers swat daytime echo-udp services

sgi_fam time time-udp telnet

/etc/xinet.d/
Cada um dos ficheiros pode conter uma extensa lista de configuraes O formato bsio bastante simples:
service <nome_do_servio> { <atributo> = <valor> <valor> ... ... }

/etc/xinet.d/
Um exemplo (/etc/xinetd.d/telnet):
# description: The telnet server serves telnet sessions; it uses # unencrypted username/password pairs for authentication. service telnet { type = EXTERNAL # tipo do servio: Interno/Externo flags = NORETRY # como o xinetd se deve comportar... socket_type = stream # tipo do socket: stream;dgram;raw wait = no # no=multithreaded; yes=singlethreaded user = root # utilizador que executa o servio server = /usr/sbin/in.telnetd # programa que executa o servio log_on_failure += USERID # determina que informao deve registar disable = yes # determina que o servio est ligado ou no }

Questes
Quantos servios esto configurados no xinetd? Quais destes so externos?

Exerccio
Colocar o daytime a funcionar. Colocar um servio systat a funcionar:
O servio systat apresenta o resultado do comando ps auwwx

Ajuda
Ao executar um programa, o xinetd envia o stdout para o cliente Para o xinetd executar um comando especificar no ficheiro de configurao:
server <comando> server_args <argumentos> Ficheiro exemplo:
service telnet { type = EXTERNAL socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd disable = yes }

Testar os servios:
Encontar o n de porta do servio, especificado no /etc/services; telnet localhost <porta-do-servio>