Linux - Guia prático para administradores de sistemas
18 pág.

Linux - Guia prático para administradores de sistemas


DisciplinaSistemas Operacionais I7.761 materiais168.713 seguidores
Pré-visualização4 páginas
00:00:00 [kthread]
root 22 12 0 2008 ? 00:00:06 [kblockd/0]
root 63 12 0 2008 ? 00:00:00 [cio_chp]
root 64 12 0 2008 ? 00:00:00 [cio]
root 65 12 0 2008 ? 00:00:00 [cio_notify]
root 66 12 0 2008 ? 00:00:00 [kslowcrw]
root 117 12 0 2008 ? 00:00:00 [appldata]
root 131 12 0 2008 ? 00:01:30 [pdflush]
root 132 12 0 2008 ? 00:00:12 [pdflush]
root 133 1 0 2008 ? 00:01:16 [kswapd0]
root 134 12 0 2008 ? 00:00:00 [aio/0]
root 140 12 0 2008 ? 00:00:00 [cqueue/0]
root 160 1 0 2008 ? 00:00:00 [kmcheck]
root 388 1 0 2008 ? 00:00:17 [kjournald]
Inicialização do sistema 4
root 437 1 0 2008 ? 00:00:03 /sbin/udevd --daemon
root 707 1 0 2008 ? 00:00:00 /usr/sbin/vsftpd
root 1405 1 0 2008 ? 00:00:00 [kjournald]
root 1407 1 0 2008 ? 00:00:01 [kjournald]
root 1409 1 0 2008 ? 00:00:05 [kjournald]
root 1411 1 0 2008 ? 00:03:24 [kjournald]
root 1413 1 0 2008 ? 00:00:02 [kjournald]
root 1415 1 0 2008 ? 00:00:00 [kjournald]
root 1417 1 0 2008 ? 00:00:00 [kjournald]
...
O Processo INIT
Após a carga e inicialização, o kernel inicia o primeiro programa em user space. Até esse momento, nenhuma outra
aplicação baseada em blibliotecas padrão C é executada.
De modo geral, em desktops e servidores linux padrão, após a carga do kernel, o programa /sbin/init é executado,
porém isso não é obrigatório. Dispositivos embarcados, por exemplo, não requerem uma inicialização extensiva
através do init. É possível por exemplo, após a inicialização do kernel, iniciar um utilitário shell e a partir deste
iniciar os processos necessários.
O arquivo de configuração que determina o funcionamento do processo init é o /etc/inittab, entretando pelo fato
desse arquivo não ter uma sintaxe fácil de compreender, as distribuições Linux atuais utilizam-se deste para, a partir
de um processo (/etc/init.d/rc), determinar o conjunto de scripts que deverão ser executados, dependendo do runlevel
escolhido.
Por padrão esses scripts são armazenados sob a estrutura de diretórios /etc/rc.d/rc[0-6,S].d/ e são na verdade scripts
simples, baseados em sh (base na verdade) com a função de além de realizar configurações simples durante o
processo de boot (hostname, endereço ip, rotas, etc) também são responsáveis por iniciar, parar e reiniciar os
daemons que devem ficar em execução no servidor.
No decorrer do processo init, o programa getty é invocado e executado a partir do arquivo de configuração
/etc/inittab com a finalidade de abrir conexões ttys (sejam dispositivos reais ou virtuais localizados em /dev) como
por exemplo: consoles virtuais, portas seriais, portas do modem, dentre outros, e iniciar a autenticação do usuário
chamando o processo login, o qual fica no estado de espera, aguardando o nome do usuário e senha. Caso as
informações estejem corretas, uma conexão tty será liberada para o usuário autenticado.
Níveis de Execução (runlevel)
0 - Nível em que o sistema está completamente desligado
1 ou S - representa o modo de monousuário
2 - Primeiro modo multiusuário (sem rede)
3 - Modo multiusuário
4 - Não Usado ( "definível" )
5 - Modo multiusuário (X11)
6 - Reboot (Nível onde o sistema ficará reinicializando)
Inicialização do sistema 5
GRUB : O GRand Unified Boot Loader
O GRUB é o gerenciador de boot mais popular nos dias atuais, e também o padrão das maiores distribuições Linux
existentes ( Suse, RedHat, Fedora ). A vantagem mais perceptível do GRUB é que ele transformou o processo usual
de 2 estágios em um processo de 3 estágios (1, 1.5 e 2), onde no estágio intermediário ( 1.5 ) o boot loader toma
conhecimento do sistema de arquivos onde o kernel reside e não mais acesso a um setor "raw" do disco rígido. Não
requer, como o LILO, que o setor de boot seja atualizado a cada modificação no arquivo de configuração. Após o
GRUB ser instalado no setor de boot (MBR) com o  comando grub-install o seu arquivo de configuração será lido a
cada inicialização, o que garante uma maior flexibilidade a esse gerenciador de boot.
O GRUB não faz distinção entre discos IDE e SCSI, ou seja, existe uma referência na ordem de como os discos são
reconhecidos na BIOS influenciando na nomenclatura dos dispositivos válidos no GRUB, por exemplo, se um
servidor tiver 02 discos rígidos IDE, 01 SCSI e 01 floppy disk, o GRUB identificará da seguinte forma:
--> Primeiro disco: IDE ( hd0 )
--> Segundo disco: IDE ( hd1)
--> Terceiro disco: SCSI ( hd2 )
--> Floppy Disk: ( fd0 )
Nesse exemplo, caso o segundo disco tenha 02 partições, a representação pelo GRUB será: (hd1,0) e (hd1,1).
Como instalar o GRUB no disco master da controladora IDE primária?
grub-install '(hd0,0)'
Exemplo de um arquivo de configuração GRUB (/boot/grub/grub.conf)
default=0
timeout=10
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
title OpenSuse 11.0
 root (hd0,0)
 kernel /boot/vmlinuz-2.6.9-5 ro root=/dev/hda1
title WindowsXP
 rootnoverify (hd0,0)
 chainloader +1
Scripts de Inicialização
Exemplo do script de inicialização do sshd:
Observação: O campo # Default-Start, no exemplo abaixo, significa que os valores padrões para a inicialização do
serviço de sshd pelo script de inicialização, serão os níveis de execução 3 e 5. No campo # Default-Stop, informa que
esse serviço estará parado quando os níveis de execução forem 0, 1, 2 e 6.
#! /bin/sh
# Copyright (c) 1995-2000 SuSE GmbH Nurenberg, Germany.
#
# Author: Jiri Smid <feedback@suse.de>
#
# /etc/init.d/sshd
#
# and symbolic its link
#
Inicialização do sistema 6
# /usr/sbin/rcsshd
#
### BEGIN INIT INFO
# Provides: sshd
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Description: Start the sshd daemon
### END INIT INFO
SSHD_BIN=/usr/sbin/sshd
test -x $SSHD_BIN || exit 5
SSHD_SYSCONFIG=/etc/sysconfig/ssh
test -r $SSHD_SYSCONFIG || exit 6
. $SSHD_SYSCONFIG
SSHD_PIDFILE=/var/run/sshd.init.pid
. /etc/rc.status
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v ditto but be verbose in local rc status
# rc_status -v -r ditto and clear the local rc status
# rc_failed set local and overall rc status to failed
# rc_reset clear local rc status (overall remains)
# rc_exit exit appropriate to overall rc status
# First reset status of this service
rc_reset
case &quot;$1&quot; in
 start)
 if ! test -f /etc/ssh/ssh_host_key ; then
 echo Generating /etc/ssh/ssh_host_key.
 ssh-keygen -t rsa1 -b 1024 -f /etc/ssh/ssh_host_key -N ''
 fi
 if ! test -f /etc/ssh/ssh_host_dsa_key ; then
 echo Generating /etc/ssh/ssh_host_dsa_key.
 ssh-keygen -t dsa -b 1024 -f /etc/ssh/ssh_host_dsa_key -N ''
 fi
 if ! test -f /etc/ssh/ssh_host_rsa_key ; then
 echo Generating /etc/ssh/ssh_host_rsa_key.
Inicialização do sistema 7
 ssh-keygen -t rsa -b 1024 -f /etc/ssh/ssh_host_rsa_key -N ''
 fi
 echo -n &quot;Starting SSH daemon&quot;
 ## Start daemon with startproc(8). If this fails
 ## the echo return value is set appropriate.
 startproc -f -p $SSHD_PIDFILE /usr/sbin/sshd $SSHD_OPTS -o &quot;PidFile=$SSHD_PIDFILE&quot;
 # Remember status and be verbose
 rc_status -v