Sunteți pe pagina 1din 6

Administrao de Sistemas Informticos I

ISEP

TEMA Arranque do sistema TERICA-PRTICA 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 exacta 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. 2.1. LILO - Linux Loader O LILO um programa bootstrap, baseado em chamadas da BIOS. Este programa pode ser instalado no MBR ou na partio raiz do sistema Linux. De notar que, por ser baseado em chamadas BIOS, todos os ficheiros que o LILO precisa de aceder para executar a sua tarefa devem ser acessveis pela BIOS. O ficheiro de configurao do LILO o /etc/lilo.conf. Adicionalmente, sempre que efectuada uma modificao na configurao do LILO, ou instalado um novo kernel, necessrio reinstalar o programa, executando: /sbin/lilo. 2.2. GRUB Grand Unified Bootloader O GRUB alternativa ao LILO uma vez que consegue enderear o boot acima do cilindro 1024, ao contrrio do LILO. O ficheiro de configurao do GRUB o /etc/grub.conf. O problema do cilindro 1024, est relacionado com o facto da BIOS nas arqitecturas 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. Colectivamente conhecido por endereo CHS(C Cylinder; H Head; S Sector). O problema surge porque o numero de bits 10 para representar o numero do cilindro de 10 bits, ora 2 s permite enderear 1024 cilindros. 2.3. Iniciao do Kernel Ao executar, o programa bootstrap dever (utilizando chamadas BIOS) carregar o Kernel do sistema operativo para a memria. Uma vez carregado em memria, o kernel ir efectuar os seguintes passos: Iniciar as estruturas de dados internas. Verificar o hardware do sistema. O kernel apenas procura por hardware sobre o qual tem conhecimento. Verificar a integridade do sistema de ficheiros raiz e mapear este sistema. Criar o processo 0 (swapper) e o processo 1 (init). 2.4. Iniciao de processos/servios Nesta altura, o kernel foi carregado, as suas estruturas de dados iniciadas, o hardware foi encontrado e o sistema de ficheiros est pronto a ser utilizado. O processo responsvel pela gesto da memria foi iniciado. Tudo isto preparado para prestar suporte aos processos a serem executados no sistema operativo, no entanto existe uma questo. Acontece, que, em Linux/Unix, a nica forma para criar processos que um processo existente execute um fork. Um

________________________________________________________________________
Departamento de Engenharia Informtica Pag. 1

Administrao de Sistemas Informticos I

ISEP

fork cria um novo processo que contm uma cpia de todas as estruturas e cdigo do processo original. Em muitos casos, o novo processo ir efectuar um exec, que substitui o cdigo e estruturas originais pelas de um novo programa. Por esta razo, criado o processo init. Este processo o processo ancestral de todos os processos num sistema Linux. Ele tem sempre o PID (process ID) 1, iniciado pelo kernel e o nico processo que no tem um processo como pai. Desta forma, o init, responsvel pela iniciao de todos os outros servios do sistema. Os servios que inicia encontram-se configurados no ficheiro /etc/inittab. O init tambm responsvel por colocar o sistema num runlevel. Um runlevel uma configurao do software do sistema que permite que apenas um conjunto de servios esteja activo. Os runlevels oferecem a flexibilidade de colocar uma mquina a funcionar em diferentes modos de operao. Por exemplo, uma mquina pode estar configurada como servidor de mail num runlevel e noutro ser configurada como uma estao de trabalho. Este mecanismo de iniciao, denominado System V, utilizado num grande nmero de distribuies Linux. Existem no entanto algumas distribuies que funcionam de forma diferente. De uma forma geral, os vrios runlevels existentes so num sistema Linux so: Runlevel 0 1 2 3 4 5 6 S,s Descrio Paragem do sistema Modo single user. Todos os sistemas de ficheiros encontram-se disponveis, mas apenas um pequeno conjunto de servios se encontram activos. Apenas 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. Desligar/reiniciar o sistema. O mesmo que single user (runlevel 1).

Em qualquer altura, um destes runlevels tem de se encontrar activo. 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 re-examinar 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 respectiva pasta do runlevel. Antes de iniciar os servios de qualquer runlevel necessrio efectuar 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 directrio /etc/rc.d o seguinte:

________________________________________________________________________
Departamento de Engenharia Informtica Pag. 2

Administrao de Sistemas Informticos I

ISEP

drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x

10 root root 61 root root 2 root root 1 root root 2 root root 2 root root 2 root root 2 root root 2 root root 2 root root 2 root root 1 root root 1 root root

4096 Sep 26 20:57 . 8192 Oct 22 11:20 .. 4096 Oct 16 17:39 init.d 2330 Jul 14 2002 rc 4096 Oct 10 17:00 rc0.d 4096 Oct 10 17:00 rc1.d 4096 Oct 10 17:00 rc2.d 4096 Oct 16 18:28 rc3.d 4096 Oct 16 18:28 rc4.d 4096 Oct 16 18:28 rc5.d 4096 Oct 10 17:00 rc6.d 220 Jul 11 2001 rc.local 22095 Aug 22 2002 rc.sysinit

A tabela seguinte apresenta parte do contedo do directrio /etc/rc3.d (runlevel 3): lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx lrwxrwxrwx 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root root root root root root root root root root root root root root root root root root root root root root root root root root 14 Sep 26 22:22 K05innd -> ../init.d/innd 19 Sep 26 20:57 K05saslauthd -> ../init.d/saslauthd 15 Sep 26 22:26 K15httpd -> ../init.d/httpd 20 Sep 26 22:25 K15postgresql -> ../init.d/postgresql 19 Sep 26 21:02 K50snmptrapd -> ../init.d/snmptrapd 13 Sep 26 22:27 K50tux -> ../init.d/tux 13 Sep 26 22:22 K54pxe -> ../init.d/pxe 17 Sep 26 22:26 K70aep1000 -> ../init.d/aep1000 17 Sep 26 22:26 K70bcm5820 -> ../init.d/bcm5820 14 Sep 26 21:36 K74ntpd -> ../init.d/ntpd 16 Sep 26 22:22 K74ypserv -> ../init.d/ypserv 16 Sep 26 22:22 K74ypxfrd -> ../init.d/ypxfrd 19 Sep 26 21:36 K95firstboot -> ../init.d/firstboot 15 Sep 26 21:01 S05kudzu -> ../init.d/kudzu 18 Sep 26 21:03 S08iptables -> ../init.d/iptables 13 Sep 26 21:12 S60lpd -> ../init.d/lpd 15 Oct 16 18:28 S65dhcpd -> ../init.d/dhcpd 18 Sep 26 21:02 S80sendmail -> ../init.d/sendmail 13 Sep 26 21:00 S85gpm -> ../init.d/gpm 15 Sep 26 21:04 S90crond -> ../init.d/crond 13 Sep 26 21:04 S90xfs -> ../init.d/xfs 17 Sep 26 21:04 S95anacron -> ../init.d/anacron 13 Sep 26 20:59 S95atd -> ../init.d/atd 15 Sep 26 21:04 S97rhnsd -> ../init.d/rhnsd 11 Sep 26 20:57 S99local -> ../rc.local

2.5. /etc/ inittab Cada entrada (linha) no ficheiro /etc/inittab constituda por quatro campos separados por : (identificador:runlevel(s):aco:processo): Identificador Um ou mais caracteres que servem para identificar a entrada. runlevel(s) Indica o(s) runlevel(s) em que esta entrada deve ser processada. O tipo de aco Indica como que o init deve executar o processo. O processo O path absoluto do processo. Tipo de aces: 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.

________________________________________________________________________
Departamento de Engenharia Informtica Pag. 3

Administrao de Sistemas Informticos I

ISEP

boot processar esta entrada uma vez durante o boot (ingnora 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).

De seguida apresenta-se um ficheiro /etc/inittab mnimo, para anlise. # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) # 1 - Single user mode # 2 - Multiuser, without NFS # 3 - Full multiuser mode # 4 - unused # 5 - X11 # 6 - reboot (Do NOT set initdefault to this) # 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 id:5:initdefault - Isto indica que o runlevel por omisso o 5. 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:
Pag. 4

________________________________________________________________________
Departamento de Engenharia Informtica

Administrao de Sistemas Informticos I

ISEP

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 X-Windows.

PRTICA 1. Arranque do sistema 2. Ligar e desligar servios chkconfig --list sshd chkconfig --level <runlevel(s)> service <on:off:reset> Criar um utilizador Fazer ssh com esse utilizador: ssh localhost l <username> Desligar o ssh no runlevel 3 Verificar que est a funcionar Mudar para outro runlevel: telinit 1 Voltar novamente ao runlevel 3 Voltar a fazer ssh com o mesmo utilizador Verifica-se que no funciona. Podia-se fazer: service sshd stop o service <service> <start: stop: restart> 2.1. Exerccios 3. Problema: 3.1. O Sistema Operativo no consegue arrancar, devido a problemas com o servidor X Arrancar em single user mode: No arranque carregar em a e depois digitar linux single Ir ao /etc/X11/XF86config . . . Section Screen Identifier screen0 Device RIVA TNT Monitor Monitor0 DefaultDept 16 Subsection Display Depth Modes 16 1024X768 800X600 640X480

EndSubsection EndSection Mudar para runlevel 5. Realar arrancamos com a mquina com permisses de root sem conhecermos a password de root. Soluo colocar password no GRUB ou LILO. 4. Colocar password no GRUB Gerar password: o grub-md5-crypt o password: asi1 o $1$ONnZbO$jKUJPPaEebxhDjuCXp9Qy60 Acrescentar o hash no ficheiro /etc/grub.conf a seguinte linha: o password md5 $1$ONnZbO$jKUJPPaEebxhDjuCXp9Qy60

________________________________________________________________________
Departamento de Engenharia Informtica Pag. 5

Administrao de Sistemas Informticos I

ISEP

default=0 timeout=10 splashimage=(hd0,1)/boot/grub/splash.xpm.gz password --md5 $1$ONnZbO$jKUJPPaEebxhDjuCXp9Qy60 title Red Hat Linux (2.4.18-14) root (hd0,1) kernel /boot/vnlinuz-2..4.18-14 ro root=LABEL=/ initrd /boot/initrd-2.4.18-14. img title Windows 2000 Server rootnoverify (hd0,0) chainloader +1 5. Colocar password no LILO Para colocar uma password no LILO, basta editar o ficheiro /etc/lilo.conf e acrescentar a seguinte linha: o password <password> prompt timeout=50 default=DOS boot=/dev/hda map=/boot/map install=/boot/boot.b message=/boot/message lba32 image=/boot/vmlinuz-2.4.18-14 password=password restricted label=linux initrd=/boot/initrd-2.4.18-14.img read-only append="root=LABEL=/" other=/dev/hda1 optional label=DOS Executar o comando /sbin/lilo

________________________________________________________________________
Departamento de Engenharia Informtica Pag. 6

S-ar putea să vă placă și