(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

70. Colocando tudo junto: Construindo o(s) disco(s)

Neste ponto, tem-se um kernel e um sistema de arquivos raiz. Caso se esteja construindo um único disco de inicialização e raiz, deve-se verificar o seu tamanho e estar seguro de que eles caberão em um único disco. Caso se esteja construindo dois discos, deve-se verificar se o sistema de arquivos cabe em um único disquete.

Deve-se decidir pelo uso ou não do LILO no disquete de inicialização do kernel. A alternativa será copiar o kernel diretamente no disquete e iniciar o sistema sem o LILO. A vantagem de utilizar o LILO reside na possibilidade de passagens de parâmetros para o kernel, o que pode ser necessário para inicializar algum equipamento (deve-se verificar o conteúdo do arquivo /etc/lilo.conf. Caso exista alguma linha do tipo ``append=...'', provavelmente esta facilidade será necessária). A desvantagem de usar o LILO é que a construção do disco de inicialização torna-se mais complexa e mais espaço é necessário. Deve-se construir um pequeno sistema de arquivos em separado, o qual nós denominamos sistema de arquivos do kernel, para onde se pode transferir o kernel e algumas outras coisas necessárias para o LILO.

Caso se vá utilizar o LILO, siga adiante, caso contrário pode-se ir diretamente para a seção Transferindo o kernel sem o LILO.

70.1 Transferindo o kernel com o LILO

O primeiro item que deve ser criado é um pequeno arquivo de configuração do LILO. Ele deve ser similar ao seguinte:


        boot      =/dev/fd0
        install   =/boot/boot.b
        map       =/boot/map
        read-write
        backup    =/dev/null
        compact
        image     = KERNEL
        label     = Disquete_Inic
        root      =/dev/fd0

Para obter detalhes destes parâmetros, por favor verifique a documentação de usuário do LILO. Pode ser desejável ainda adicionar a linha append=... copiada do arquivo /etc/lilo.conf existente em disco.

Deve-se salvar o arquivo como bdlilo.conf e a seguir criar um pequeno sistema de arquivos, o qual será denominado , para distingüí-lo do sistema de arquivos raiz.

Inicialmente, deve-se verificar o tamanho que o sistema de arquivos terá. Verifique o tamanho do kernel em blocos (o tamanho é mostrado através do comando ``ls -l KERNEL'' dividido por 1024 e arredondado para cima) e acrescido de 50, referentes ao espaço necessário aos inodes e outros arquivos. Pode-se calcular o número exato ou simplesmente utilizar 50. Caso se esteja criando um conjunto com dois disquetes, pode-se superestimar o espaço usado pelo kernel. Denominaremos este número de NÚCLEO_BLOCOS.

Deve-se colocar um disquete no dispositivo (para simplificar assumiremos que será em /dev/fd0) e após criar um sistema de arquivos tipo ext2 para o kernel:

        mke2fs -i 8192 -m 0 /dev/fd0 NÚCLEO_BLOCOS

O parâmetro ``-i 8192'' especifica que desejamos um inode para cada 8192 bytes. Após, deve-se montar o sistema de arquivos, remover o diretório lost+found e criar os diretórios dev e boot para o LILO:

        mount /dev/fd0 /mnt
        rm -rf /mnt/lost+found
        mkdir /mnt/{boot,dev}

Após, deve-se criar os dispositivos /dev/null e /dev/fd0. Ao invés de procurar pelos números dos dispositivos, pode-se simplesmente copiá-lo do disco rígido utilizando-se -R:

        cp -R /dev/{null,fd0} /mnt/dev

O LILO necessita de uma cópia de seu carregador de inicialização, boot.b, o qual pode ser encontrado no disco rígido, normalmente no diretório /boot .

        cp /boot/boot.b /mnt/boot

Finalmente, deve-se copiar os arquivos de configuração do LILO criado conforme a seção anterior, assim como o kernel. Ambos devem estar presentes no diretório raiz:

        cp bdlilo.conf KERNEL /mnt

Todo o necessário para que o LILO possa ser executado está presente no sistema de arquivos do kernel. Deve-se então executar o LILO com o parâmetro -r para instalar o carregador de inicialização :

        lilo -v -C bdlilo.conf -r /mnt

O LILO deverá ser executado sem erros, após o qual o sistema de arquivos do kernel deve ter a seguinte aparência:


total 361
  1 -rw-r--r--   1 root     root          176 Jan 10 07:22 bdlilo.conf
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:23 boot/
  1 drwxr-xr-x   2 root     root         1024 Jan 10 07:22 dev/
358 -rw-r--r--   1 root     root       362707 Jan 10 07:23 vmlinuz
boot:
total 8
  4 -rw-r--r--   1 root     root         3708 Jan 10 07:22 boot.b
  4 -rw-------   1 root     root         3584 Jan 10 07:23 map
dev:
total 0
  0 brw-r-----   1 root     root       2,   0 Jan 10 07:22 fd0
  0 crw-r--r--   1 root     root       1,   3 Jan 10 07:22 null

Não há motivos para preocupação caso os tamanhos de arquivos sejam um pouco diferentes.

Pode-se ir agora para a seção Configurando o disco em memória.

70.2 Transferindo o kernel sem o LILO

Caso não se esteja utilizando o LILO, o kernel pode ser transferido para o disco de inicialização com o comando dd :

        % dd if=KERNEL of=/dev/fd0 bs=1k
        353+1 records in
        353+1 records out

Neste exemplo, dd gravou 353 registros completos e 1 parcialmente, concluindo-se que o kernel ocupou 354 blocos do disquete. Denominaremos este número como NÚCLEO_BLOCOS , o qual será utilizado na próxima seção.

Finalmente, deve-se configurar o disquete como o dispositivo raiz e dar-lhe permissões de leitura e gravação:

        rdev /dev/fd0 /dev/fd0
        rdev -R /dev/fd0 0

Deve-se ter o máximo cuidado ao usar o -R maiúsculo no comando rdev .

70.3 Configurando o disco em memória

Dentro da imagem do kernel está a palavra (dois ou mais bytes) de configuração do disco em memória que especifica onde o sistema de arquivos raiz deve ser encontrado, em conjunto com as suas opções. A palavra é definida em /usr/src/linux/arch/i386/kernel/setup.c e é interpretada da seguinte forma:

bits  0-10:     deslocamento para início da memória, em blocos de 1024 bytes
bits 11-13:     sem utilização
bit     14:     Indicador se o disco em memória deve ser carregado
bit     15:     Indicador de prompt antes da carga do sistema de arquivos raiz

Caso o bit 15 esteja configurado, no processo de inicialização será solicitada a inserção de um novo disquete na unidade. Isso é necessário no caso de conjuntos de dois disquetes de inicialização.

Há dois casos, dependendo da construção de um único disquete ou de um conjunto de dois disquetes (inicialização e raiz).

  1. Caso se esteja construindo um único disco, o sistema de arquivos raiz será colocado exatamente após o kernel, sendo o deslocamento então igual ao primeiro bloco livre (o que deve ser igual a NÚCLEO_BLOCOS). O bit 14 será configurado com 1 e o bit 15 com zero.
  2. Caso se esteja construindo um conjunto de dois disquetes, o sistema de arquivos raiz começará no bloco zero e o deslocamento será igual a zero. Bit 14 será igual a 1 e o bit 15 também será igual a 1.
Após calcular cuidadosamente o valor da palavra de disco em memória, deve-se configurá-la com rdev -r. Esteja seguro de utilizar valores decimais. Caso se esteja utilizando o LILO, o argumento rdev deve ser igual ao caminho do kernel, por exemplo /mnt/vmlinuz; caso o kernel tenha sido copiado com dd, deve-se usar o nome do dispositivo de disquetes (por exemplo,/dev/fd0).

        rdev -r NÚCLEO_OU_UNIDADE_DE_DISQUETE

Caso se esteja utilizando o LILO, a unidade de disquetes deve ser desmontada agora.

70.4 Transferindo o sistema de arquivos raiz

O último passo é a transferência do sistema de arquivos raiz.

  • Caso o sistema de arquivos raiz seja colocado no mesmo disco que o kernel, a transferência deve ser efetuada utilizando-se o comando dd com a opção seek, a qual especifica quantos blocos devem ser ignorados até que a gravação tenha início:
            dd if=rootfs.gz of=/dev/fd0 bs=1k seek=BLOCOS_NÚCLEO
    
  • Caso o sistema de arquivos raiz seja colocado em um segundo disco, deve-se remover o primeiro disquete e colocar o segundo na unidade, transferindo-se o sistema de arquivos raiz:
            dd if=rootfs.gz of=/dev/fd0 bs=1k
    

Parabéns, serviço concluído!

DEVE-SE SEMPRE TESTAR UM DISCO DE INICIALIZAÇÃO ANTES DE GUARDÁ-LO, PARA USO EM UMA EMERGÊNCIA


Página seguinte Página anterior Índice