• Nenhum resultado encontrado

Administração de Sistemas Informáticos I

N/A
N/A
Protected

Academic year: 2021

Share "Administração de Sistemas Informáticos I"

Copied!
6
0
0

Texto

(1)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 1

TEMA

Arranque do sistema TEÓRICA-PRÁTICA 1. Introdução

O arranque/iniciação de um sistema é composto por três passos elementares: • Localização do Kernel.

• Iniciação do Kernel.

• Iniciação de processos/serviços. 2. Localização do Kernel

Primeiro, é necessário localizar o kernel do sistema operativo a ser arrancado. A forma exacta como isto acontece depende da plataforma de hardware em questão. Tipicamente, temos uma memória ROM que contém um programa responsável pela alguma iniciação básica 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 básico 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 partição 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 acessíveis pela BIOS. O ficheiro de configuração do LILO é o /etc/lilo.conf. Adicionalmente, sempre que é efectuada uma modificação na configuração do LILO, ou é instalado um novo kernel, é necessário reinstalar o programa, executando: /sbin/lilo.

2.2. GRUB – Grand Unified Bootloader

O GRUB é alternativa ao LILO uma vez que consegue endereçar o boot acima do cilindro 1024, ao contrário do LILO. O ficheiro de configuração 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 números para endereçar os sectores do disco. Cada sector é identificado pelo tripleto: número do cilindro: número da cabeça: numero do sector. Colectivamente conhecido por endereço 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 endereçar 1024 cilindros. 2.3. Iniciação do Kernel

Ao executar, o programa bootstrap deverá (utilizando chamadas à BIOS) carregar o Kernel do sistema operativo para a memória. Uma vez carregado em memória, 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. Iniciação de processos/serviços

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 responsável pela gestão da memória foi iniciado. Tudo isto é preparado para prestar suporte aos processos a serem executados no sistema operativo, no entanto existe uma questão. Acontece, que, em Linux/Unix, a única forma para criar processos é que um processo existente execute um fork. Um

(2)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 2

fork cria um novo processo que contém uma cópia de todas as estruturas e código do processo original. Em muitos casos, o novo processo irá efectuar um exec, que substitui o código e estruturas originais pelas de um novo programa. Por esta razão, é 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 não tem um processo como pai. Desta forma, o init, é responsável pela iniciação de todos os outros serviços do sistema. Os serviços que inicia encontram-se configurados no ficheiro /etc/inittab. O init é também responsável por colocar o sistema num runlevel. Um runlevel é uma configuração do software do sistema que permite que apenas um conjunto de serviços esteja activo. Os runlevels oferecem a flexibilidade de colocar uma máquina a funcionar em diferentes modos de operação. Por exemplo, uma máquina pode estar configurada como servidor de mail num runlevel e noutro ser configurada como uma estação de trabalho.

Este mecanismo de iniciação, denominado System V, é utilizado num grande número de distribuições Linux. Existem no entanto algumas distribuições que funcionam de forma diferente. De uma forma geral, os vários runlevels existentes são num sistema Linux são:

Runlevel Descrição

0 Paragem do sistema

1 Modo single user. Todos os sistemas de ficheiros encontram-se disponíveis, mas apenas um pequeno conjunto de serviços se encontram activos. Apenas o root pode entrar no sistema.

2 Modo multi-utilizador, sem partilha remota de ficheiros.

3 Modo multi-utilizador, com partilha remota de ficheiros, processos e serviços. 4 Não definido.

5 Modo semelhante ao 3, mas com X11 iniciado. 6 Desligar/reiniciar o sistema.

S,s 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 várias sub-pastas (rc0.d, rc1.d, rc2.d, ...) que definem o estado dos serviços para cada runlevel. Na realidade o conteúdo destas sub-pastas não são mais do que links simbólicos para scripts, responsáveis por iniciar e parar os serviços do sistema, que se encontram sob a pasta

/etc/rc.d/init.d.

O nome dos links simbólicos das sub-pastas (rc0.d, rc1.d, rc2.d,...) tem a seguinte forma: XxxNomeServiço, onde X é o caracter K ou S conforme se deseje terminar ou iniciar o serviço e xx é um número inteiro utilizado para indicar a ordem pela qual os serviços devem ser terminados ou iniciados. O ficheiro /etc/rc (que é um script), é o responsável pela mudança 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 serviços de qualquer runlevel é necessário efectuar algumas inicializações. Isto é feito pelo script rc.sysinit, localizado também em /etc/rc.d. Este script é razoavelmente longo, e é responsável por tarefas como: criação do sistema de ficheiros proc, criação da partição de swap, atribuição do nome da máquina, inicializações 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 iniciação adicional, específica ao sistema em causa.

Pode existir, em alguns sistemas, o script rc.serial, para configuração de interfaces série. O conteúdo do directório /etc/rc.d é o seguinte:

(3)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 3

drwxr-xr-x 10 root root 4096 Sep 26 20:57 . drwxr-xr-x 61 root root 8192 Oct 22 11:20 .. drwxr-xr-x 2 root root 4096 Oct 16 17:39 init.d -rwxr-xr-x 1 root root 2330 Jul 14 2002 rc drwxr-xr-x 2 root root 4096 Oct 10 17:00 rc0.d drwxr-xr-x 2 root root 4096 Oct 10 17:00 rc1.d drwxr-xr-x 2 root root 4096 Oct 10 17:00 rc2.d drwxr-xr-x 2 root root 4096 Oct 16 18:28 rc3.d drwxr-xr-x 2 root root 4096 Oct 16 18:28 rc4.d drwxr-xr-x 2 root root 4096 Oct 16 18:28 rc5.d drwxr-xr-x 2 root root 4096 Oct 10 17:00 rc6.d -rwxr-xr-x 1 root root 220 Jul 11 2001 rc.local -rwxr-xr-x 1 root root 22095 Aug 22 2002 rc.sysinit A tabela seguinte apresenta parte do conteúdo do directório /etc/rc3.d (runlevel 3):

lrwxrwxrwx 1 root root 14 Sep 26 22:22 K05innd -> ../init.d/innd

lrwxrwxrwx 1 root root 19 Sep 26 20:57 K05saslauthd -> ../init.d/saslauthd lrwxrwxrwx 1 root root 15 Sep 26 22:26 K15httpd -> ../init.d/httpd

lrwxrwxrwx 1 root root 20 Sep 26 22:25 K15postgresql -> ../init.d/postgresql lrwxrwxrwx 1 root root 19 Sep 26 21:02 K50snmptrapd -> ../init.d/snmptrapd lrwxrwxrwx 1 root root 13 Sep 26 22:27 K50tux -> ../init.d/tux

lrwxrwxrwx 1 root root 13 Sep 26 22:22 K54pxe -> ../init.d/pxe

lrwxrwxrwx 1 root root 17 Sep 26 22:26 K70aep1000 -> ../init.d/aep1000 lrwxrwxrwx 1 root root 17 Sep 26 22:26 K70bcm5820 -> ../init.d/bcm5820 lrwxrwxrwx 1 root root 14 Sep 26 21:36 K74ntpd -> ../init.d/ntpd

lrwxrwxrwx 1 root root 16 Sep 26 22:22 K74ypserv -> ../init.d/ypserv lrwxrwxrwx 1 root root 16 Sep 26 22:22 K74ypxfrd -> ../init.d/ypxfrd lrwxrwxrwx 1 root root 19 Sep 26 21:36 K95firstboot -> ../init.d/firstboot lrwxrwxrwx 1 root root 15 Sep 26 21:01 S05kudzu -> ../init.d/kudzu lrwxrwxrwx 1 root root 18 Sep 26 21:03 S08iptables -> ../init.d/iptables lrwxrwxrwx 1 root root 13 Sep 26 21:12 S60lpd -> ../init.d/lpd

lrwxrwxrwx 1 root root 15 Oct 16 18:28 S65dhcpd -> ../init.d/dhcpd lrwxrwxrwx 1 root root 18 Sep 26 21:02 S80sendmail -> ../init.d/sendmail lrwxrwxrwx 1 root root 13 Sep 26 21:00 S85gpm -> ../init.d/gpm

lrwxrwxrwx 1 root root 15 Sep 26 21:04 S90crond -> ../init.d/crond lrwxrwxrwx 1 root root 13 Sep 26 21:04 S90xfs -> ../init.d/xfs

lrwxrwxrwx 1 root root 17 Sep 26 21:04 S95anacron -> ../init.d/anacron lrwxrwxrwx 1 root root 13 Sep 26 20:59 S95atd -> ../init.d/atd

lrwxrwxrwx 1 root root 15 Sep 26 21:04 S97rhnsd -> ../init.d/rhnsd lrwxrwxrwx 1 root root 11 Sep 26 20:57 S99local -> ../rc.local 2.5. /etc/ inittab

Cada entrada (linha) no ficheiro /etc/inittab é constituída por quatro campos separados por “:” (identificador:runlevel(s):acção: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 acção – Indica como é que o init deve executar o processo.

• O processo – O path absoluto do processo. Tipo de acções:

respawn – reinicia o processo quando este termina.

sysinit – executa o processo durante o arranque do sistema e antes de qualquer entrada com a acção boot ou bootwait

wait – o init espera que este processo termine para passar para a próxima entrada. • once – processar esta entrada uma vez, quando se entra no runlevel.

(4)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 4

boot – processar esta entrada uma vez durante o boot (ingnora os runlevels) • boot-wait – uma combinação de boot e wait.

off – não faz nada.

initdefault – especifica o runlevel de default da máquina.

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 não espera pelo processo.

ctrlaltdel – executado quando o init recebe o sinal SIGINT (ctrl+alt+del). De seguida apresenta-se um ficheiro /etc/inittab mínimo, para análise.

# 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 omissão é 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 razão, 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)

(5)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 5

Alt+F7

• x:5:respawn:/etc/X11/prefdm –nodaemon - Diz para executar o comando prefdm

quando o runlevel 5 inicia. Isto inicia o sistema gráfico X-Windows.

PRÁTICA

1. Arranque do sistema 2. Ligar e desligar serviços

• 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 não funciona.

• Podia-se fazer: service sshd stop

o service <service> <start: stop: restart> 2.1. Exercícios

3. Problema:

3.1. O Sistema Operativo não 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 16 Modes “1024X768” “800X600” “640X480” EndSubsection EndSection • Mudar para runlevel 5.

• Realçar arrancamos com a máquina com permissões de root sem conhecermos a

password de root.

• Solução 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

(6)

________________________________________________________________________

Departamento de Engenharia Informática Pag. 6

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

Referências

Documentos relacionados

ABSTRACT: The toxicological effects of crude ethanolic extracts (CEE) of the seed and bark of Persea americana have been analyzed on larvae and pupae of

A GESTORA buscará manter carteira de títulos com prazo médio superior a trezentos e sessenta e cinco dias calculado conforme metodologia de cálculo do prazo médio regulamentada

O destaque é dado às palavras que abrem signi- ficados e assim são chaves para conceitos que fluem entre prática poética na obra de arte e sua reflexão em texto científico..

O tema proposto neste estudo “O exercício da advocacia e o crime de lavagem de dinheiro: responsabilização dos advogados pelo recebimento de honorários advocatícios maculados

Equipamentos de emergência imediatamente acessíveis, com instruções de utilização. Assegurar-se que os lava- olhos e os chuveiros de segurança estejam próximos ao local de

Os candidatos reclassificados deverão cumprir os mesmos procedimentos estabelecidos nos subitens 5.1.1, 5.1.1.1, e 5.1.2 deste Edital, no período de 15 e 16 de junho de 2021,

Para isso, recentemente, as empresas estão adotando alguns sistemas de custeio alternativos, como o Custeio Kaizen, uma ferramenta de origem japonesa, que visa à melhoria

Tendo em conta que os valores do teor de água que são encontrados no bacalhau que é comercializado se encontra num intervalo entre 40% e 58%, recorrendo aos ensaios anteriores e