Escolar Documentos
Profissional Documentos
Cultura Documentos
1. Introduo
O arranque/iniciao de um sistema composto por trs passos elementares: Localizao do Kernel. Iniciao do Kernel. Iniciao de processos/servios.
2. Localizao do Kernel
Primeiro, necessrio localizar o kernel do sistema operativo a ser arrancado. A forma exata como isto acontece depende da plataforma de hardware em questo. Tipicamente, temos uma memria ROM que contm um programa responsvel pela alguma iniciao bsica do hardware e por encontrar e executar um programa denominado bootstrap. No caso de um PC, a BIOS permite definir em que drive deve procurar o bootstrap. Assim, esta ir criar um ambiente bsico que permita executar o bootstrap, localizado no primeiro sector da drive escolhida. Um exemplo de um programa bootstrap, utilizado em Linux, o LILO.
/etc/grub.conf.
O problema do cilindro 1024, est relacionado com o facto da BIOS nas arquiteturas X86 usarem um esquema de 3 nmeros para enderear os sectores do disco. Cada sector identificado pelo tripleto: nmero do cilindro: nmero da cabea: numero do sector. Coletivamente conhecido por endereo CHS(C Cylinder; H Head; S Sector). O problema surge porque o numero de bits para representar o numero do cilindro de 10 bits, ora 210 s permite enderear 1024 cilindros.
R unlevel
0 1 Paragem do sistema
Descrio Modo single user. Todos os sistemas encontram-se disponveis, mas apenas um pequeno conjunto de servios se encontram ativos. Apenas o root pode entrar no sistema. Modo multiutilizador, sem partilha remota de ficheiros
3 4 5 6 S, s
Modo multiutilizador, com partilha remota de ficheiros, processos e servios No definido Modo semelhante ao 3, mas com X11 iniciado. Desligar/ reiniciar o sistema O mesmo que o single user (runlevel 1)
Em qualquer altura, um destes runlevels tem de se encontrar ativo. Quando o sistema arranca, o init examina o ficheiro /etc/inittab para encontrar uma entrada initdefault. Esta entrada determina o runlevel inicial do sistema. Para mudar de runlevels, o root pode utilizar o programa telinit que aceita como argumento o runlevel para o qual se pretende mudar ou para indicar ao init que deve reexaminar o ficheiro /etc/inittab. Os runlevels encontram-se definidos sob a pasta /etc/rc.d. Nesta pasta encontra-se vrias subpastas (rc0.d, rc1.d, rc2.d, ...) que definem o estado dos servios para cada runlevel. Na realidade o contedo destas sub-pastas no so mais do que links simblicos para scripts, responsveis por iniciar e parar os servios do sistema, que se encontram sob a pasta /etc/rc.d/init.d. O nome dos links simblicos das sub-pastas (rc0.d, rc1.d, rc2.d,...) tem a seguinte forma: XxxNomeServio, onde X o caracter K ou S conforme se deseje terminar ou iniciar o servio e xx um nmero inteiro utilizado para indicar a ordem pela qual os servios devem ser terminados ou iniciados. O ficheiro /etc/rc (que um script), o responsvel pela mudana de runlevel. Este recebe como argumento o runlevel para o qual deve mudar e executa os scripts indicados na respetiva pasta do runlevel. Antes de iniciar os servios de qualquer runlevel necessrio efetuar algumas inicializaes. Isto feito pelo script rc.sysinit, localizado tambm em /etc/rc.d. Este script razoavelmente longo, e responsvel por tarefas como: criao do sistema de ficheiros proc, criao da partio de swap, atribuio do nome da mquina, inicializaes de teclado, etc. Adicionalmente, existe o script rc.local, que o ltimo script a ser executado e tem a tarefa de executar algum tipo de iniciao adicional, especfica ao sistema em causa. Pode existir, em alguns sistemas, o script rc.serial, para configurao de interfaces srie. O contedo do diretrio /etc/rc.d o seguinte:
Tipo de aes:
respaw n reinicia o processo quando este termina. sysinit executa o processo durante o arranque do sistema e antes de
qualquer entrada com a ao boot ou bootwait w ait 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-w ait uma combinao de boot e wait. off no faz nada. initdefault especifica o runlevel de default da mquina. Pow erw ait executado quando o init recebe o sinal de SIGPWR que normalmente indica uma falha de energia, o init espera que o processo termine. pow erfail idem, mas o init no espera pelo processo. ctrlaltdel executado quando o init recebe o sinal SIGINT (ctrl+alt+del).
si::sysinit:/etc/rc.d/rc.sysinit - Ordena que seja executado o script rc.sysinit. l0:0:wait:/etc/rc.d/rc0 - Indica que o script rc deve ser invocado com o argumento 0, para a lista de runlevels indicada no segundo campo, no caso apenas o runlevel 0. Wait indica que deve esperar que o script termine. O primeiro campo (l0), um campo descritivo que pode ser qualquer coisa. 1:2345:respawn:/sbin/mingetty tty1 - Indica que deve ser criado um terminal no tty1, em qualquer um dos runlevels de 2 a 5. Respawn indica que o processo deve ser iniciado de novo se, por alguma razo, for terminado. o Para abrir terminais, se o sistema estiver no runlevel 5, portanto no X: Shift+Ctrl+Alt+F(1-6) o Para abrir terminais, se o sistema modo consola: Alt+F(1-6) o Para abrir o X e o sistema estiver em modo consola: Alt+F7 x:5:respawn:/etc/X11/prefdm nodaemon - Diz para executar o comando prefdm quando o runlevel 5 inicia. Isto inicia o sistema grfico XWindows.
Bibliografia
Apontamentos do Engenheiro Nuno Silva para a disciplina de Administrao de Sistemas do DEI ISEP.