(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

74. Lista das Perguntas Mais Frequentes (FAQ)

Q. Eu carrego meus discos de inicialização e raiz e nada acontece. O que posso fazer?

Veja a Seção Problemas.

Q. Como o disco de inicialização da Conectiva/Red Hat/Slackware/Debian funcionam?

Veja a Seção Como os profisisonais fazem isso.

Q. Como eu posso construir um disquete de inicialização com o arquivo de controle de dispositivos XYZ?

A forma mais simples é obter um kernel do Slackware em um site espelho mais próximo. Os kernels do Slackware são genéricos e tentam incluir arquivos de controle para o maior número de dispositivos possível. Então caso se tenha uma controladora IDE ou SCSI, as chances são grandes de se ter um arquivo de controle para elas em um kernel do Slackware. Vá para o diretório a1 e selecione IDE ou SCSI dependendo do tipo de controladora que se tenha. Verifique o arquivo xxxxkern.cfg do kernel selecionado para ver os arquivos de controle que foram incluídos neste kernel. Caso o dispositivo que se deseje instalar esteja incluído na lista, então o kernel correspondente deve inicializar o seu computador. Transfira o arquivo xxxxkern.tgz e copie para o seu disquete de inicialização conforme descrito acima, na seção de construção de discos de inicialização.

Deve-se checar o dispositivo raiz no kernel usando-se o comando rdev:

        rdev zImage

rdev mostrará o dispositivo raiz atual do kernel. Caso este não seja o mesmo desejado, deve-se usar o rdev para alterá-lo. Por exemplo, um kernel testado apontava para /dev/sda2, porém a partição raiz SCSI era /dev/sda8. Para usar um disquete raiz, deve-se utilizar o comando:

        rdev zImage /dev/fd0

Caso se queira saber como configurar um disquete de inicialização do Slackware, sugere-se verificar o Guia de Instalação Linux ou obter uma distribuição Slackware. Veja a seção denominada "Referências".

Q. Como atualizar um disco de inicialização com um novo kernel?

Simplesmente copie o novo kernel em um disquete de inicialização utilizando o comando dd para um disquete sem sistema de arquivos, ou através do comando cp para um disco de inicialização e raiz. Verifique a seção denominada "inicialização" para detalhes sobre a criação de um disquete de inicialização. A descrição aplica-se perfeitamente à atualização do kernel em um disquete de inicialização.

Q. Como atualizar o disquete raiz com novos arquivos?

A maneira mais simples é copiar o sistema de arquivos do disco raiz de volta ao DISPOSITIVO utilizado, seção Criando um sistema de arquivos. Após monte o sistema de arquivos e faça as alterações necessárias. Deve-se lembrar sempre onde o sistema de arquivos começa e quantos blocos ele ocupa:

dd if=/dev/fd0 bs=1k skip=INÍCIO_RAIZ  count=BLOCOS | gunzip > DISPOSITIVO
mount -t ext2 DISPOSITIVO /mnt

Após as alterações serem concluídas, proceda de acordo com a Seção Empacotando e transfira o sistema de arquivos raiz de volta para o disco. Não se deve retransferir o kernel ou recalcular a palavra do disco em memória caso não tenha havido alterações do ponto de início do novo sistema de arquivos raiz.

Q. Como remover o LILO para ser possível utilizar a inicialização DOS novamente?

No Linux pode-se executar:

        /sbin/lilo -u

Pode-se ainda usar o comando dd para utilizar a cópia de segurança salva pelo LILO do setor de inicialização. Veja na documentação do LILO maiores informações.

No DOS ou Windows pode-se executar o seguinte comando DOS:

        FDISK /MBR

MBR significa Registro Mestre de Inicialização (Master Boot Record), e após o comando acima o setor de inicialização recebe registros DOS sem alterar a tabela de partições. Alguns puristas não concordam com essa abordagem, mas mesmo o autor do LILO, Werner Almesberger, sugere isso, além de ser simples e funcional.

Q. Como inicializar o sistema se o kernel e o disco de inicialização foram perdidos?

Caso não se tenha um disco de inicialização extra, provavelmente o método mais simples será obter um kernel do Slackware para a sua controladora de discos ((IDE ou SCSI) conforme descrito anteriormente em "Como construir um disco de inicialização com o arquivo de controle de dispositivos XYZ?". Pode-se iniciar o sistema com esse kernel e procurar reparar o que estiver danificado.

O kernel obtido pode não conter o tipo de disco e a partição que se deseje. Por exemplo, kernel genérico do Slackware para controladoras SCSI tem o dispositivo raiz configurado para /dev/sda2, e eventualmente a partição raiz pode estar em /dev/sda8. Neste caso o dispositivo raiz do kernel deve ser alterado.

Pode-se mudar os parâmetros de dispositivo raiz e disco em memória no kernel, mesmo que tudo o que tenha seja um kernel ou mesmo a partir de outro sistema operacional, como por exemplo DOS.

rdev altera o kernel através de alterações de valores de deslocamentos fixos do arquivo do kernel, então pode-se utilizar um editor em hexadecimal em qualquer sistema disponível, como por exemplo o Editor de Disco de Utilitários Norton sob DOS. Deve-se checar se é necessário mudar os valores do kernel nos seguintes deslocamentos:

HEX     DEC  DESCRIPTION
0x01F8  504  Byte inferior da palavra do disco em memória
0x01F9  505  Byte superior da palavra do disco em memória
0x01FC  508  Número menor do dispositivo raiz - vide abaixo
0X01FD  509  Número maior do dispositivo raiz - vide abaixo

A interpretação da palavra do disco em memória está descrita na seção Configurando o disco em memória.

O número maior e menor do dispositivo devem ser configurados caso se deseje montar o sistema de arquivos raiz nele. Alguns valores importantes são:

DISPOSITIVO      MAIOR MENOR
/dev/fd0             2     0       primeira unidade de disquetes
/dev/hda1            3     1       partição 1 no primeiro disco IDE
/dev/sda1            8     1       partição 1 no primeiro disco SCSI
/dev/sda8            8     8       partição 8 no primeiro disco SCSI

Uma vez que estes valores estejam configurados, pode-se gravar o arquivo utilizando tanto o editor Norton, quanto um programa chamado rawrite.exe. Este programa é incluído em todas as distribuições, e é executado em ambientes DOS, sendo capaz de gravar os dados de forma direta, ao invés de gravar através do sistema de arquivos. Caso se utilize o Norton deve-se gravar o arquivo em um disco físico com início igual ao do disco de inicialização.

Q. Como fazer cópias adicionais dos disquetes de inicialização e raiz?

Como a mídia magnética pode deteriorar-se com o tempo, deve-se manter diversas cópias dos discos de emergência, para as situações em que o original não funcione.

A forma mais simples de fazer cópias de qualquer disquete, inclusive disquetes que podem ser inicializados e disquetes de utilitários, é através da utilização do comando dd para cópia do disquete original em um disco rígido e após o mesmo comando para copiar do disco rígido para os diversos disquetes. Note que não se deve montar os disquetes, porque o comando dd utiliza o acesso direto ao dispositivo.

Para copiar o disquete original, execute o comando:

        dd if=NOME_DISPOSITIVO of=NOME_ARQUIVO
        onde NOME_DISPOSITIVO é o nome da unidade de disquetes
        e NOME_ARQUIVO é o nome do arquivo de saída (no disco rígido)

Omitindo-se o parâmetro count faz com que o comando copie todo o disquete (2880 blocos de alta densidade).

Para copiar o arquivo resultante para um novo disquete, deve-se inserir o disquete na unidade e executar o comando:

        dd if=NOME_ARQUIVO of=NOME_DISPOSITIVO

Note que o exemplo acima assume que se tenha somente uma unidade de gravação de disquetes. Caso se tenha duas de mesmo tipo, pode-se copiar o disquete usando-se o comando:

        dd if=/dev/fd0 of=/dev/fd1

Q. Como inicializar o sistema sem ter que digitar "ahaxxxx=nn,nn,nn" toda vez?

Quando um dispositivo não pode ser detectado automáticamente, é necessário fornecer ao kernel os parâmetros através do comando de dispositivos, como por exemplo:

        aha152x=0x340,11,3,1
Este parâmetro pode ser fornecido pelo LILO de diversas formas:

  • Informando o comando toda a vez que o sistema for inicializado via LILO. A opção menos aconselhável.
  • Usando o parâmetro ``lock'' para armazenar a linha de comando como a linha padrão de comando, fazendo com que o LILO use estas opções toda a vez que o sistema for carregado.
  • Utilizando o parâmetro append= no arquivo de configuração do LILO. Note que o parâmetro deve estar entre aspas.

Por exemplo, uma linha de comando usando os parâmetros acima poderia ser:

        zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock

Este comando passa os parâmetros do dispositivo, configura o dispositivo raiz em /dev/sda1 e salva todo o comando para reutilização futura.

Um exemplo de comando append:

        \{append} = "aha152x=0x340,11,3,1"

Note que o parâmetro não deve estar entre aspas na linha de comando, mas é obrigatório que assim esteja no comando append.

Note ainda que para que o parâmetro seja ativado, o kernel deve conter o módulo para o dispositivo assinalado. Caso contrário, o comando não surtirá efeito algum e o kernel deverá ser reconstruído para incluir o módulo requerido. Para maiores detalhes sobre a reconstrução do kernel, mude o diretório para /usr/src/linux e veja o arquivo README, e leia o FAQ e o tutorial de instalação. Alternativamente pode-se obter um kernel genérico e instalá-lo.

É extremamente indicado a leitura da documentação LILO antes de se tentar instalá-lo. Usos indevidos do comando BOOT podem causar danos às partições.

Q. Durante a inicialização ocorreu o erro "A: não pode executar B". Por quê?

Há diversos casos em que nomes de programas encontram-se dentro do código de vários utilitários. Este casos não ocorrem em toda parte, mas pode ser uma explicação de porquê um executável aparentemente pode não ser encontrado, apesar de estar presente no sistema. Pode-se descobrir se um determinado programa tem o nome de outro dentro de seu código usando-se o comando strings e conectando sua saída com o comando grep.

Exemplos conhecidos de localizações pré-definidas:

  • Shutdown em algumas versões tem o programa /etc/reboot pré-definido, sendo que reboot deverá estar no diretório /etc .
  • init pode causar alguns problemas, caso o kernel não consiga encontrá-lo em init.

Para corrigir estes problemas, deve-se ou mover os programas para o diretório correto, ou mudar os arquivos de configuração (por exemplo inittab) para apontarem para o diretório correto. Em caso de dúvidas, ponha os programas no mesmo diretório em que eles estavam no disco rígido, e utilize os mesmos inittab e /etc/rc.d da forma como eles estão presentes.

Q. Meu kernel tem suporte a disco em memória, mas aparece com 0 Kb de espaço.

Quando isso ocorre, uma mensagem do kernel aparecerá durante a inicialização:

Dispositivo de disco em memória inicializado: 
16 discos em memória com tamanho de 0K.
Isso se deve provavelmente à definição do tamanho em zero através dos parâmetros de kernel em tempo de inicialização. Algo como:

ramdisk=0

Isso foi incluído como exemplo de configuração do LILO em algumas distribuições antigas, e foi colocado para sobrepor-se a parâmetros anteriores de configuração do kernel. Caso essa linha esteja presente, deve ser retirada.

Note que ao se tentar utilizar um disco em memória com tamanho igual a zero, o comportamento do sistema é imprevisível, e pode resultar em travamentos do kernel.


Página seguinte Página anterior Índice