Há 5 categorias de problemas que podem ocorrer ao compilar um kernel personalizado. Elas sã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.
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.
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.
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 /kernelSe 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 /kernelNo 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.
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>.