Aula #2 - Inicialização e desligamento do sistema

Inicialização e Desligamento do Sistema





É importante ter uma noção dos passos básicos da sequência de inicialização, e compreender o papel da BIOS / UEFI e dos principais boot loaders. 
Os arquivos de configuração na pasta /etc controlam o comportamento de inicialização, em especial aqueles em /etc/sysconfig e /etc/default. 
Desligar e reiniciar o sistema pode ser feito de maneiras diferentes.



 Os passos básicos na sequência de inicialização são:



  •     A BIOS / UEFI localiza e executa o programa de inicialização ou o boot loader.

  •     O boot loader carrega o kernel.

  •     O kernel inicia o processo init (pid = 1).

  •     O init administra a inicialização dos serviços do sistema, usando scripts de inicialização SysVinit convencionais, ou usando o Upstart ou systemd.


Os computadores estão adotando o UEFI, que é um substituto para a BIOS, mas que no fim faz mais ou menos o mesmo. 

 


  Na arquitetura x86, a BIOS contém o código necessário para obter acesso inicial ao teclado, tela, unidades de disco, comunicação serial, e uma série de funções auxiliares. Uma vez que o sistema operacional está em execução, a maioria destes dispositivos terá capacidade reforçada quando os drivers de dispositivos são carregado.

A BIOS é normalmente colocada em um chip de memória ROM que vem com o computador (que é muitas vezes chamado de BIOS ROM). Isso garante que a BIOS estará sempre disponível e não será danificada por falhas de disco. Isso também torna possível que um computador possa inicializar sozinho.

Durante o processo de inicialização, a BIOS carrega o boot loader da MBR.






A sequência de boot


Quando o computador é ligado, ele só consegue fazer o que a BIOS (Basic Input Output System ou sistema básico de entrada e saída) consegue fazer. A BIOS é um programa, como uma versão super simplificada de um sistema operacional.

Primeiro, a BIOS executa o POST (Power On Self Test ou auto-teste de inicialização), que consulta e testa a memória e o hardware para em seguida procurar um boot loader. 
Normalmente, o programa de inicialização é encontrado na MBR (Master Boot Record ou registro de inicialização principal) de dispositivos de armazenamento. O controle do computador é então transferido para este programa de inicialização (geralmente GRUB).

O boot loader carrega o kernel na memória e inicia sua execução. Em plataformas x86 (e em muitas outras), o primeiro passo do kernel é se descompactar. Em seguida, realiza verificações de hardware, ganha acesso a periféricos de hardware importantes, e se tudo correr bem executa o init, que é o processo pai de todos os processos da camada do usuário. 
O processo init por sua vez, continua a inicialização do sistema, executando os scripts de inicialização do SysVinit ou nas versões mais recentes chama o Upstart ou o systemd.






Existem vários boot loaders para o Linux, incluindo:
    GRUB
    LILO
    efilinux
    Das U-Boot



Praticamente todas (excluindo embarcados) distribuições Linux modernas usam o GRUB (GRand Unified Boot Loader). 
Recursos do GRUB incluem a capacidade de iniciar vários sistemas operacionais, possuir interface texto e gráfica, permitir uso fácil através da porta serial, oferecer linha de comando com recursos poderosos para configuração interativa, permitir boot diskless pela rede, e vários outros recursos avançados.  
O Linux Loader (LILO) é velho e obsoleto.

efilinux é um boot loader alternativo desenhado para lidar com o mecanismo UEFI.

Das U-Boot é o mais usado em Linux embarcado.


GRUB

Lilo


U-Boot rodando num FreeRunner (o 'Smartphone Open Source')

Mais tarde vamos mostrar como as distribuições Linux colaboram para criar padrões para locais de arquivos importantes. 
Normalmente os arquivos de configuração de todo o sistema são colocados no diretório /etc , enquanto os arquivos de configuração específicos de cada usuário são colocados em suas pastas home particulares.

Distribuições evoluem as suas próprias regras sobre onde colocar exatamente alguns arquivos dentro do /etc. Por exemplo, todos os sistemas baseados no Red Hat usam muito a pasta /etc/sysconfig, enquanto as distribuições baseadas em Debian usam o /etc/default. Curiosamente, o RHEL 7 e o SUSE usar ambos.



Em um sistema RHEL 6:

$ ls -F /etc/sysconfig





e apenas para ver um arquivo:


$ cat /etc/sysconfig/network

NETWORKING=yes
HOSTNAME=testes
GATEWAY=172.22.0.1


que está apenas configurando algumas variáveis de ambiente usadas por vários scripts de inicialização.



Os arquivos neste diretório são normalmente utilizados pelo service que controla os scripts na pasta /etc/init.d; 
por exemplo o script /etc/init.d/network inclui o arquivo com a linha:

. /etc/sysconfig/network


que define essas variáveis de ambiente quando a rede é inciada...



 Em um Ubuntu 14.10:

$ ls -F /etc/default/



O Ubuntu usa este diretório de forma parecida com o que a Red Hat faz com o /etc/sysconfig:

Os arquivos são usados para ajustes finos dos serviços. É comum ter código que determina e configura o valor de variáveis de ambiente.


Por exemplo o arquivo /etc/default/useradd configura os padrões para a criação de usuários.

O comando shutdown é usado para desligar o sistema de forma segura, notificando todos os usuários que o sistema será desligado e parando todos os serviços de forma limpa e suave. Após concluir estes procedimentos o sistema é desligado ou reiniciado.

Um erro comum é não incluir o argumento de tempo (como now ou alguma quantidade real de tempo). Outro erro comum é não usar nem a opção -r (reboot) nem a opção -h (desligar) para desligar a máquina. Não existe um padrão para o comportamento quando nem o -r nem o -h são passados, mas em alguns casos o -h é usado por padrão.

Há também o comandos legado como reboot, halt, e poweroff, que muitos usuários veteranos utilizam com frequência.

                     
Exemplos de shutdown

$ sudo shutdown -h +1 "Falha de energia iminente"

$ sudo shutdown -h now

$ sudo shutdown -r now

$ sudo shutdown now



As opções podem ser vistas pela mensagem de ajuda:


$ shutdown --help
Utilização: shutdown [OPTION]... TEMPO [MENSAGEM]
Desligue o sistema.

Options:
  -r                          reboot after shutdown
  -h                          halt or power off after shutdown
  -H                          halt after shutdown (implies -h)
  -P                          power off after shutdown (implies -h)
  -c                          cancel a running shutdown
  -k                          only send warnings, don't shutdown
  -q, --quiet                 reduce output to errors only
  -v, --verbose               increase output to include informational messages
      --help                  display this help and exit
      --version               output version information and exit

TEMPO pode ter diversos formatos, o mais comum é simplesmente a palavra 'now' que desligará o sistema imediatamente. Outros formatos válidos são +m, onde m é a quantidade de minutos a esperar até o desligamento e hh:mm que
especifica a hora no formato 24h.

Usuários logados serão notificados por uma mensagem enviada a seus terminais.
Você pode incluir uma MENSAGEM opcional. As mensagens  podem ser enviadas sem desligar o sistema usando a opção -k.

Se TEMPO é dado, o comando irá permanecer em primeiro plano até o desligamento do sistema. Isto pode ser cancelado usando  Control-C, ou por outro usuário usando a opção -c.

O sistema é desligado em modo de manutenção (single-user) por padrão. Você pode mudar isto com a opção -r ou com a opção -h que especifica a reinicialização ou desligamento respectivamente. A opção -h pode ser modificada com -H ou -P para especificar se o sistema deve ser desligado no instante ou depois. O padrão é deixado aos scripts de desligamento.

Mais vistos no mês:

As melhores distribuições Linux para 2017

Teste de Performance de Rede com Iperf

TuxMath - Tux, do Comando da Matemática. Ensino e diversão a crianças.

Aula #14 - Os sistemas de arquivos ext2/ext3/ext4

Modelo Firewall Completo em Iptables para pequena rede/office

DHCP - Guia Completo

OPNsense - Firewall Open Source

SSD no linux

Administração de sistema e Deploys: Ansible, Chef, Fabric, Puppet ou Salt?

Oracle Linux 7.0 Server com Xfce - Instalação e configurações iniciais