(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

67. Discos de Inicialização e o Processo de Inicialização do Sistema

Um disco de inicialização é basicamente uma miniatura de um sistema completo, ou seja é um sistema Linux contido em um disquete. Ele deve executar muitas das funções que o sistema completo permite. Antes de tentar construir um, deve-se conhecer os conceitos básicos do processo de inicialização do sistema, apresentados a seguir, os quais são suficientes para o entendimento do restante deste documento. Alguns detalhes e opções foram omitidos por não serem significativos para o conteúdo deste documento.

67.1 O Processo de Inicialização

Todos os sistemas em microcomputadores começam o processo de inicialização executando o código existente na ROM (especificamente no BIOS ), para carregar o setor 0 do cilindro 0 do dispositivo de inicialização. O dispositivo de inicialização é normalmente a primeira unidade de disquete (denominada A: no DOS e /dev/fd0 no Linux). O BIOS tenta então executar este setor. Em muitos discos inicializáveis, o setor 0, cilindro 0, pode conter ainda:

  • código de um carregador de sistemas, como o LILO, o qual localiza o kernel do sistema escolhido, carrega e executa, de acordo com a opção definida.
  • o início de um kernel de um sistema operacional, como por exemplo o Linux.

Caso o kernel do Linux tenha sido copiado fisicamente para um disquete, o primeiro setor do disco será o primeiro setor do kernel do Linux. O primeiro setor continuará o processo de inicialização, carregando o restante do kernel contido no dispositivo.

Uma vez que o kernel tenha sido completamente carregado, ele executa alguma inicialização básica de dispositivos. Ele tenta carregar e montar o sistema de arquivos raiz a partir de algum dispositivo. Um sistema de arquivos raiz é simplesmente um sistema de arquivos montado como ``/''. Deve-se indicar para o kernel a localização do sistema de arquivos raiz; caso não seja encontrada uma imagem inicializável naquele local, o sistema é paralisado.

Em algumas situações de início do sistema, freqüentemente na inicialização a partir de disquetes, o sistema de arquivos é montado em um disco em memória , o qual é acessado na memória RAM, como se fosse um disco físico. Há duas razões para o sistema ser carregado em discos em memória. Inicialmente, a memória RAM é muitas vezes mais rápida que um disquete, tornando a operação do sistema mais rápida, e segundo, o kernel do sistema pode ser armazenado como um sistema de arquivos compactados em um disquete, e descompactado no disco em memória, permitindo que muitos mais arquivos sejam armazenados no disquete.

Uma vez que o sistema de arquivos raiz é montado, pode-se visualizar uma mensagem similar a:

        VFS:  Raiz montado (sistema de arquivos ext2) somente para leitura.

Neste momento o sistema encontra o programa init no sistema de arquivos raiz (em /bin ou /sbin) e executa-o. O init lê o arquivo de configuração /etc/inittab, procurando por uma linha denominada sysinit, e executa o programa especificado. O programa sysinit é normalmente denominado /etc/rc ou /etc/init.d/boot. Este programa é constituído de uma série de comandos do interpretador de comandos que configuram os serviços básicos do sistemas, como por exemplo:

  • Execução do comando fsck em todos os discos
  • Carga dos módulos necessários ao kernel
  • Inicialização da área de troca
  • Inicialização da rede
  • Montagem dos discos descritos em fstab.

Este programa normalmente aciona diversos outros, tornando o processo de inicialização modular. Por exemplo, na estrutura comum do SysVinit, o diretório /etc/rc.d/ contém uma estrutura complexa de subdiretórios, cujos arquivos definem como iniciar e desligar a maior parte dos serviços do sistema. De qualquer forma, um programa sysinit em um disco de inicialização é normalmente muito simples.

Quando o programa sysinit termina, o controle retorna ao init, o qual entrará no nível de execução padrão, especificado em inittab, através da palavra chave initdefault. A linha de nível de execução normalmente especifica um programa como getty, o qual é responsável pelo gerenciamento das comunicações através do console e dos ttys. É o programa getty que apresenta a expressão familiar ``login:''. O programa getty por sua vez, chama o programa login para administrar o processo de validação e iniciar as sessões dos usuários.

67.2 Tipos de Discos

Após a revisão do processo básico de inicialização, podemos agora definir diversos tipos de discos envolvidos. Podemos classificar os discos em quatro tipos. A discussão aqui contida e através de todo o documento do uso do termo disco refere-se a disquetes, a menos que seja especificado o contrário, observando-se que na verdade, o conceito pode ser aplicado sem distinção a discos rígidos.

inicialização

Um disco contendo um kernel do sistema que pode ser inicializado. O disco pode ser usado para iniciar o kernel do sistema, o qual pode carregar o sistema de arquivos raiz a partir de outro disco. O kernel em um disco de inicialização pode receber informações sobre a localização do sistema de arquivos raiz.

Freqüentemente um disco de inicialização carrega o sistema de arquivos raiz a partir de outro disquete, porém é possível configurar a carga a partir de um sistema de arquivos raiz residente em um disco rígido, por exemplo. Isso é comumente feito quando se está testando um novo kernel (na verdade ``make zdisk'' criará um disco de inicialização automaticamente a partir dos fontes do kernel).

raiz

Um disco com um sistema de arquivos raiz contém os arquivos necessários para a execução de um sistema Linux. Tal disco pode não conter necessariamente nem o kernel e tão pouco o carregador de sistemas disco raiz .

Um disco raiz pode ser usado para executar o sistema independentemente de outros discos, uma vez que o kernel do sistema tenha sido inicializado. Normalmente o disco raiz é automaticamente copiado para um disco em memória, o que torna o acesso às suas informações muito mais rápido e libera a unidade de disquetes para outras atividades.

inicialização/raiz

Um disco pode conter tanto o kernel quanto um sistema de arquivos raiz. Em outras palavras, ele contém todo o necessário para inicializar e executar um sistema Linux, sem a necessidade de um disco rígido. A vantagem desse tipo de disco é que a solução torna-se compacta. Todo o necessário está em um único disco. Por outro lado, o gradual aumento de tamanho dos itens necessários ao processo significa o aumento da dificuldade de colocar-se tudo em um único disquete, mesmo com compactação.

utilitário

É um disco que contém um sistema de arquivos, mas que não será montado como um sistema raiz. É um disco de dados adicionais, e pode ser utilizado para a disponibilização de utilitários, caso o disco raiz não tenha mais espaço disponível.

Em geral, quando falamos de "construir um disco de inicialização" significa a criação das funções de carga do kernel e do sistema de arquivos raiz. Elas podem estar juntas (em um único disco de inicialização e raiz) ou separados (disco de inicialização e disco raiz). A abordagem mais flexível para discos de emergência é provavelmente usar disquetes separados, e um ou mais disquetes de utilitários para gerenciar o que não foi possível colocar nos primeiros.


Página seguinte Página anterior Índice