9.6. Se algo der errado

Há 5 categorias de problemas que podem ocorrer ao compilar um kernel personalizado. Elas são:

Falhas na configuração:

Se a rotina config(8) falhar, é provável que você tenha cometido um erro bastante simples. Felizmente, o config(8) indicará o número da linha que está com problema, de forma que você pode tranquilamente ir diretamente à esta linha, com um editor de texto como o vi. Por exemplo, se você encontrar o seguinte erro:

config: line 17: syntax error

Você vai identificar o problema, usando o vi, com o comando 17G no modo de comandos do editor. Certifique-se que o a opção em questão está corretamente configurada, comparando o kernel GENÉRICO com sua outra referência de arquivo de kernel.

Falha no make:

Se o comando make falhar, é indicação de que existem erros no seu arquivo de configuração do kernel, mas estes erros não são suficientemente claros para o config(8) indeitifca-lo. Mas uma vez, dê uma olhada em seu arquivo de configuração do kernel, e se não conseguir solucionar a questão, envie uma mensagem de correio eletrônico para lista de discussão FreeBSD de perguntas genéricas com a configuração do seu kernel, de forma que o problema seja diagnosticado de forma rápida.

Falha na instalação do kernel:

Se o kernel estiver perfeitamente compilado, e não foi instalado corretamente (no caso do comando comando make install ou make installkernel ter falhado), a primeira prividência a se tormar é verificar se seu sistema não está sendo executado com nível de segurança positivo (securelevel 1 ou superior - veja init(8)). O processo de instalação do kernel tenta modifcar a região de memória que armazena informações sobre o kernel, e coloca esta memória em uma outra região. Se o nível de segurança for 1 ou superior, o acesso direto à memória não é permitido. A instalação do kernel precisar ser feita no nível de segurança 0 ou inferior.

O kernel não carrega:

Se o kernel novo não carregar, ou falhar no momento de reconhecer os dispositivos instalados em seu sistema, não se apavore! Felizmente o FreeBSD tem um excelente mecanismo de recuperação de kernel incompatível. Escolha o kernel que você deseja carregar e inicie o FreeBSD com ele. Para fazer isso, quando o sistema de inicialização estiver na contagem regressiva de 10 segundos, aperte qualquer tecla, exceto a tecla Enter, use o comando unload e então mande iniciar o kernel antigo, com o comando boot kernel.old, ou o nome de qualquer outro kernel que você achar conveniente e que exista em seu FreeBSD. É sempre boa idéia manter um kernel confiável (ou uma cópia dele) quando começar o processo de recompilação e instalação de um novo.

Depois de carregar um kernel funcional, verifique o arquivo de configuração do seu kernel customizado (o que falhou), corrija as possíveis deficiências e recompile-o. Um recurso muito útil que pode ajudar, é o fato do arquivo /var/log/messages gravar, entre outras coisas, todas as mensagens dos kernel até o momento em que este foi carregado com sucesso. O comando dmesg(8) imprimirá sempre as últimas mensagens atualmente geradas pelo kernel.

Nota: Se você estiver tendo problemas para compilar um kernel, tome uma precaução, e mantenha um GENERIC, ou qualquer outro kernel funcional, disponível. Você não pode confiar sempre no kernel.old pois no caso de um segundo kernel problemático ser instalado, o problemático anterior será o kernel.old, sobrescrevendo o arquivo funcional. Lembre-se de corrigir o kernel e ter um novo kernel funcional o quanto antes, ou de mover o kernel de segurança para o nome original de kernel, pois comandos como o ps(1) podem não funcionar corretamente. O comando à seguir ``destrava'' as opções de imutabilidade do kernel, e possibilita que ele seja renomeado ou sobreposto.

# chflags noschg /kernel

Se você encontrar qualquer problema relacionado à esta etapa do procedimento de instalação, é provável que esteja usando o FreeBSD em nível de segurança (securelevel(8)) maior que zero. Neste caso edite a linha kern_securelevel no arquivo /etc/rc.conf e ajuste seu valor para -1, depois reinicie o FreeBSD. Esta configuração pode ser feita antes do início da configuração do novo kernel.

Se você quizer assegurar seu kernel e ``trava-lo'' em algum local, de forma que seu kernel funcional não possa ser modificado ou alterado, faça o seguinte:

# chflags schg /kernel

No FreeBSD 5.X, o kernel não é instalado em uma região da memória que não pode ser modificado, de forma que este problema específicamente, seja improvável como causa das dificuldades que você está tendo.

O kernel funciona, mas o ps(1) não funciona mais:

Se você instalou uma versão do kernel diferente da versão dos uitilitários do sistema, por exemplo, um kernel 4.X em um sistema 3.X, vários comandos de estatísticas do sistema como ps(1) e vmstat(8) não não funcionarão mais. A biblioteca libkvm deve ser recompilada, bem como estes utilitários todos. É por essa razão que normalmente não é uma boa idéia usar um kernel de versão diferente de todo o resto do sistema operacional.

Este, e outros documentos, podem ser obtidos em ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

Para perguntas sobre FreeBSD, leia a documentação antes de contatar <questions@FreeBSD.org>.
Para perguntas sobre esta documentação, envie e-mail para <doc@FreeBSD.org>.