Product SiteDocumentation Site

Capítulo 9. Serviços Unix

9.1. Inicialização do Sistema
9.2. Login remoto
9.2.1. Login remoto seguro: SSH
9.2.2. Usando Ambientes Gráficos Remotamente
9.3. Gerenciando Direitos
9.4. Interfaces Administrativas
9.4.1. Administrando por uma Interface Web: webmin
9.4.2. Configurando Pacotes: debconf
9.5. syslog Eventos de Sistema
9.5.1. Princípio e Mecanismo
9.5.2. O Arquivo de Configuração
9.6. O super servidor inetd
9.7. Agendando Tarefas com cron e atd
9.7.1. Formato do Arquivo crontab
9.7.2. Usando o Comando at
9.8. Agendando Tarefas Assíncronas: anacron
9.9. Cotas
9.10. Backup
9.10.1. Cópias de segurança com rsync
9.10.2. Restaurando Máquinas sem Cópias de Segurança
9.11. Hot Plugging: hotplug
9.11.1. Introdução
9.11.2. O Problema da nomeação
9.11.3. Como o udev Funciona
9.11.4. Um exemplo concreto
9.12. Gerenciamento de Energia: Advanced Configuration and Power Interface (ACPI)
Este capítulo abrange uma série de serviços básicos que são comuns a muitos sistemas Unix. Todos os administradores devem estar familiarizados com eles.

9.1. Inicialização do Sistema

Quando você inicializar o computador, algumas mensagens rolarão pelo console automaticamente inicializando e as configurações são automaticamente executadas. Algumas vezes você pode desejar alterar como este estágio funciona, de forma que possa entender isto muito bem. Este é o propósito desta seção.
Primeiro, a BIOS pega o controle sobre o computador, detectando discos, carregando a Master Boot Record, e executa o bootloader. O bootloader assume, localiza o kernel no disco, carrega e o executa. O kernel é então inicializado e começa a pesquisa pela partição e monta a partição contendo o sistema raiz e finalmente o primeiro programa — init. Frequentemente, esta "partição raiz" e este init são, de fato, localizado em um sistema de arquivos virtual que só existe na RAM (daí o seu nome, "initramfs", anteriormente chamado de "initrd" para "initialization RAM disk"). Este sistema de arquivos é carregado na memoria pelo bootloader, muitas vezes a partir de um arquivo em um disco rígido ou da rede. Ele contém o mínimo exigido pelo kernel para carregar o sistema de arquivos raiz "verdadeiro". Este pode ser módulos de driver para o disco rígido ou outros dispositivos sem o qual o sistema pode não carregar, ou, mais freqüentemente, scripts de inicialização e módulos para a montagem de arrays RAID, abrindo partições criptografadas, ativando volumes LVM, etc. Uma vez que a partição raiz é montada, o initramfs libera o controle para o init real, e a máquina voltará para o processo de boot padrão.
O “init real” é atualmente fornecido pelo sysv-rc (“System V”) e essa seção documenta esse sistema init.
Init executa vários processos, seguindo as instruções do arquivo /etc/inittab. O primeiro programa que é executado (o que corresponde à sysinit uma chamadasysvinit) é /etc/init.d/rcS , um script que executa todos os programas no nome do arquivo /etc/rcS.d / diretório.
Entre estes,você encontrará sucessivamente programas responsáveis pela:
  • configurar o teclado do console;
  • carregando drivers: a maioria dos módulos do kernel serão carregados por si assim que o hardware seja detectado; drivers extra então são carregado automaticamente quando o modulo correspondente seja listado em /etc/modules;
  • checar a integridade do sistema de arquivos;
  • montar partições locais;
  • configuração da rede;
  • mountando sistemas de arquivos em rede (NFS).
Após este estágio, o init assume o controle e inicializa os programas habilitados no nível de execução padrão (que geralmente é no nível de execução 2). Ele executa /etc/init.d/rc 2, um script que inicia todos os serviços que estão listados em /etc/rc2.d/ e que comaçam com a letra "S". O número de duas casas que se segue tinha sido historicamente utilizado para definir a ordem em que os serviços teve de ser iniciado. Atualmente, o sistema de boot padrão usa insserv, o qual agenda automaticamente tudo, baseado nas dependências dos scripts. Desta forma, Cada script de inicialização declara as condições que devem ser cumpridos para iniciar ou parar o serviço (por exemplo, se ele deve começar antes ou depois de outro serviço); init em seguida, lança-os na ordem que satisfaça estas condições. A numeração estática dos scripts, portanto, não são mais levados em consideração (mas eles sempre devem ter um nome começando por "S" seguido por dois digitos e o nome atual do script usado por suas dependências). Geralmente, serviços base (tal como registros com o rsyslog, ou numeração de portas com portmap) são inicializados primeiro, seguidos por serviços padrões e a interface gráfica (gdm).
Este sistema de inicialização baseado em dependência torna possível automatizar a numeração, que poderia ser um pouco entediante se tivesse que ser feito manualmente, e limita os riscos de erro humano, já que o agendamento é realizado de acordo com os parâmetros indicados. Outro benefício é que os serviços podem ser iniciados em paralelo quando são independentes um do outro, que pode acelerar o processo de inicialização.
init distingue vários runlevels, então para que ele possa alternar de um para outro com o comando telinitnew-level. Imediatamente,init executa /etc/init.d/rc novamente com novo runlevel. Este script irá, em seguida, iniciar os serviços ausentes e interromper aqueles que não são mais desejado. Para fazer isso, ele se dirige ao conteúdo do /etc/rcX.d(onde X representa o novo runlevel).Scripts começando com "S" (como em "Start") são serviços iniciados; aqueles que iniciam com "K" (como em "Kill") são os serviços interrompidos. O script não inicia qualquer serviço que já estava ativo em runlevel anterior.
Por padrão, o Debian usa quatro runlevels diferentes:
  • Nível 0 é usada apenas temporariamente, enquanto o computador está desligando. Como tal, ele só contém muitos scripts de "K".
  • Nível 1, também conhecido como modo de usuário único, corresponde ao sistema em modo degradado; inclui apenas os serviços básicos e destina-se para operações de manutenção onde interações com usuários comuns não são desejadas.
  • Nível 2 é o funcionamento normal, o que inclui serviços de rede, uma interface gráfica, logons de usuário, etc.
  • Nível 6 é semelhante ao nível 0, exceto que é utilizada durante a fase de desligamento que precede uma reinicialização.
Existem outros níveis, especialmente de 3 a 5. Por padrão, eles são configurados para operar da mesma maneira como nível 2, mas o administrador pode modificá-los (adicionando ou excluindo os scripts nos diretórios correspondentes /etc/rcX.d) para adaptá-los às necessidades específicas.
Seqüência de inicialização de um computador rodando Linux

Figura 9.1. Seqüência de inicialização de um computador rodando Linux

Todos os scripts contidos nos vários diretórios /etc/rcX.d são na verdade apenas links simbólicos — criados durante a instalação de pacotes pelo programa update-rc.d — apontando para os scripts atuais que são armazenados no /etc/init.d/. O administrador pode ajustar os serviços disponíveis em cada nível de execução reexecutando o update-rc.d com parâmetros de ajuste. A página de manual do update-rc.d(1) descreve a sintaxe em detalhes. Note que remover todos os links simbólicos (com o parâmetro remove) não é um bom método para desabilitar um serviço. Ao invés disto você deve apenas configurar ele para não iniciar no nível de execução desejado (enquanto preserva as chamadas correspondentes para parar ele no caso do serviço iniciar num nível de execução anterior). Uma vez que o update-rc.d tem uma interface de certa forma "convoluted", você pode preferir usar rcconf (do pacote rcconf) que fornece uma interface de usuários mais amigável.
Finalmente, init começa a controla programas para vários consoles virtuais (getty). Ele exibe um prompt, esperando por um nome de usuário, em seguida, executa o usuário login user para iniciar uma sessão.