Você está na página 1de 24

Configurando o kernel do FreeBSD

O kernel o corao do sistema FreeBSD. Ele responsvel por gerenciar a


memria, reforar controles de segurana, pela rede, pelo accesso a disco, e muito
mais. medida que mais e mais o FreeBSD torna-se dinmicamente configurvel,
ocasionalmente faz-se necessrio configurar e recompilar seu kernel.
Depois de ler este captulo, voc saber:
Porque voc poder precisar compilar um kernel customizado.
Como escrever um arquivo de configurao do kernel, ou alterar um arquivo
de configurao existente.
Como usar o arquivo de configurao do kernel para criar e compilar um novo
kernel.
Como instalar o novo kernel.
Como criar quaisquer entradas no /dev caso isso venha a ser necessrio.
Como resolver problemas se algo der errado.

Porque compilar um kernel customizado?


Tradicionalmente, o FreeBSD teve o que foi chamado de kernel ``monoltico''. Isto
significa que o kernel era um grande programa, contendo uma lista fixa de
dispositivos suportados, e se voc quisesse alterar seu comportamento ento seria
necessrio compilar um novo kernel, e ento reiniciar seu computador com ele.
Hoje, o FreeBSD est movendo-se rapidamente para um modelo onde muitas das
funcionalidades do kernel esto contidas em mdulos que so carregados e
descarregados dinmicamente conforme eles so necessrios. Isto permite que o
kernel imediatamente se adapte a um novo hardware tornando-o disponvel (tais
como cartes PCMCIA para laptop), ou a novas funcionalidades serem inseridas no
kernel que no eram necessrias quando o ele foi originalmente compilado. Isso
conhecido como kernel modular. Coloquialmente eles so chamados KLDs.
Apesar disto, ainda necessrio carregar algumas configuraes estticas no kernel.
Em alguns casos isto est assim porque estas funcionalidades esto to amarradas ao
kernel que elas no podem ser carregadas dinmicamente. Em outros casos, isto pode
simplesmente estar assim porque ningum ainda conseguiu tempo para escrever um
mdulo de carga dinmico do kernel para cada uma delas.
Compilar um kernel personalizado um dos rituais mais importantes que cada
usurio de UNIX deve enfrentar. Este processo, embora consuma tempo, trar
muitos benefcios para o seu sistema FreeBSD. Diferentemente do kernel GENERIC,
o qual necessita de suporte a uma abrangente lista de equipamentos, um kernel
personalizado somente conter suporte para o hardware do seu PC. Isto tem inmeros
benefcios, tais como:
Tempo de inicializao mais rpido. Visto que o kernel apenas testar o
equipamento que voc tiver em seu sistema, o tempo de testes ao inicializar a
mquina diminuir drasticamente.
Menor uso da memria. Um kernel personalizado frequentemente utiliza
menos memria que o kernel GENERIC, o que importante porque o kernel
deve sempre estar presente na memria fsica. Por esta razo, um kernel
personalizado especialmente til em um sistema com pouca quantidade de
RAM.
Suporte adicional de hardware. Um kernel personalizado permite a voc
adicionar suporte a dispositivos, tais como placas de som, que no esto
presentes no kernel GENERIC.

Compilando e instalando um kernel


customizado
Primeiramente, deixe-nos apresentar rapidamente o diretrio de compilao do
kernel. Todos os diretrios mencionados sero relativos ao diretrio
principal,/usr/src/sys, que tambm poder ser acessado diretamente atravs de /sys.
H um nmero de subdiretrios que representam partes diferentes do kernel, mas os
mais importantes, para nossos objetivos, so arch/conf, onde voc editar sua
configurao de kernel personalizado, e compile, que a rea de preparao onde seu
kernel ir ser compilado. Arch representa uma das arquiteturas suportadas pelo
FreeBSD como i386, alpha, ou pc98 (um ramo de desenvolvimento alternativo de
hardware do PC, popular no Japo). Tudo que est dentro de um diretrio de uma
arquitetura especfica diz respeito somente a esta arquitetura; o resto do cdigo do
FreeBSD comum para todas as plataformas s quais ele poder ser potencialmente
convertido. Observe a organizao lgica da estrutura de diretrio, com cada
dispositivo suportado, sistema de arquivos, e opes em seu prprio subdiretrio. As
verses do FreeBSD 5.X e superiores tem suporte para sparc64, e algumas outras
arquiteturas em desenvolvimento.
Nota: Se no existir o diretrio /usr/src/sys no seu sistema, ento o fonte do kernel
no foi instalado. A maneira mais fcil para fazer isso rodando/stand/sysinstall
como root, escolher Configure, Distributions, src, e ento sys. Se voc tiver alguma
averso ao sysinstall e possuir acesso a um FreeBSD CDROM ``oficiais'', ento voc
poder tambm instalar o fonte atravs da linha de comando:
# mount /cdrom
# mkdir -p /usr/src/sys
# ln -s /usr/src/sys /sys
# cat /cdrom/src/ssys.[a-d]* | tar -xzvf -
Depois, v at o diretrio arch/conf e copie o arquivo de configurao GENERIC
com o nome que voc quiser para o seu kernel. Por exemplo:
# cd /usr/src/sys/i386/conf
# cp GENERIC MYKERNEL

Tradicionalmente, este nome tem todas letras em maisculas, se voc mantm


mltiplas mquinas FreeBSD com diferentes hardware, uma boa idia nome-lo
prefixando o hostname da sua mquina. Para a finalidade deste exemplo, ser usado o
nome MYKERNEL.
Dica: Guardar os arquivos de configurao do seu kernel diretamente abaixo do
/usr/src pode ser uma m idia. Se voc tiver problemas poder ser tentado a apenas
apagar o /usr/src e iniciar tudo novamente. Cinco segundos depois disto feito, voc
poder perceber que removeu o seu arquivo de configurao de kernel personalizado.
No edite diretamente o arquivo GENERIC, pois ele pode ser sobrescrito da prxima
vez que voc for atualizar a rvore do cdigo fonte; suas modificaes do kernel
sero perdidas.
Voc pode querer manter em outro local seu arquivo de configurao do
kernel, e ento criar um link simblico deste arquivo para o diretrio i386.
Por exemplo:
# cd /usr/src/sys/i386/conf
# mkdir /root/kernels
# cp GENERIC /root/kernels/MYKERNEL
# ln -s /root/kernels/MYKERNEL
Nota: Voc dever executar todos estes comandos sob a conta do root seno
ocorrero erros de permisso negada.
Agora, edite o MYKERNEL com seu editor de texto favorito. Se voc for comear a
configurar, provavelmente somente o vi esteja disponvel, o qual muito complexo
para explicar aqui, mas coberto em muitos livros indicados na bibliografia.
Entretanto, o FreeBSD oferece um editor mais fcil chamado ee que, se voc for um
novato, deve ser o editor de sua escolha. Sinta-se livre para mudar as linhas de
comentrios, principalmente para identificar sua configurao e as alteraes que
diferenciam seu arquivo do GENERIC.
Se voc tiver que compilar um kernel sobre SunOS ou qualquer outro Sistema
Operacional BSD, muito destes arquivos sero muito familiar a voc. Se voc vier de
outro sistema operacional tal como DOS, o arquivo de configurao GENERIC pode
impressionar voc, sendo assim siga as descries do Arquivo de Configurao
lentamente e com cuidado.
Nota: importante voc sempre verificar o arquivo /usr/src/UPDATING, antes de
executar todas as etapas da atualizao, No caso voc pode sincronizar sua rvore de
cdigo com o cdigo fonte do ltimo projeto do FreeBSD. Neste arquivo todas as
importantes alteraes para atualiao do FreeBSD so digitadas. Ajuste sempre sua
verso do cdigo fonte do FreeBSD de acordo com /usr/src/UPDATING, pois estas
notas so mais precisas para novas informaes que o handbook.
Voc deve agora compilar o cdigo fonte do kernel. Esto aqui dois procedimentos
que voc pode usar para isto, e qual voc usar, vai depender de como quer
recompilar seu kernel, e a verso do FreeBSD que voc est rodando.
Se voc tiver instalado somente o cdigo fonte do kernel, use o procedimento
1.
Se voc tiver rodando um FreeBSD verso anterior ao 4.0, e voc no tiver
atualizazao para o 4.0 ou mais atual use o procedimento make world,
procedimento 1.
Se voc estiver recompilando um kernel novo sem atualizar o cdigo fonte
(talvez para adicionar uma nova opo, tal como IPFIREWALL) voc teria
que usar o outro procedimento.
Se voc estiver recompilando o kernel como parte de um processo de um
make world, use o procedimento 2.
Procedimento 1. Compilando um Kernel da Maneira ``Tradicional''
1. Execute config(8) para gerar o cdigo fonte do kernel.
# /usr/sbin/config MYKERNEL
2. Mude o diretrio de configurao. Isto e mostrado aps rodar o comando
acima mencionado.
# cd ../compile/MYKERNEL
Para FreeBSD anterior a 5.0, usa-se preferivelmente:
# cd ../../compile/MYKERNEL
3. Compilando o kernel.
# make depend
# make
4. Instalando o novo kernel.
# make install
Procedimento 2. Compilando um Kernel da ``Nova'' maneira
1. Mude de diretrio para /usr/src.
# cd /usr/src
2. Compilando o kernel.
# make buildkernel KERNCONF=MYKERNEL
3. Instalando o novo kernel.
# make installkernel KERNCONF=MYKERNEL
Nota: No FreeBSD 4.2 e anteriores troque KERNCONF= por KERNEL=. Aps o
4.2-STABLE esta opo j foi atualizada, e antes de Fevereiro de 2001 o sistema no
reconhece KERNCONF=.
Se voc no atualizou seu cdigo de alguma maneira (as formas possveis incluem
CVSup, CTM, ou anoncvs), ento deve-se usar os comandos config, make
depend,make, make install nesta sequncia.
O novo kernel ser copiado para o diretrio do root como /kernel e o velho kernel
ser movido para /kernel.old. Agora, desligue o sistema e reinicie-o, para carregar seu
novo kernel. Caso algo saia errado, h algumas instrues para resolver problemas no
final deste captulo. interessante que voc leia a seo de como recuperar o sistema
caso seu novo kernel no carregue.
Nota: No FreeBSD 5.0, o kernel instalados junto com os mdulos em /boot/kernel,
e os kernel velhos so colocados em /boot/kernel.old. Outros arquivos relacionados
ao processo de carregamento, tal como o carregamento do sistema por meio do
loader(8) e suas configuraes so armazenadas tambm em /boot. Mdulos
personalizados de terceiros normalmente so colocados em /boot/modules, embora os
usurios devam estar cientes que manter os mdulos em sincronizao com o kernel
compilado muito importante. Se os mdulos pretendidos no rodarem com o kernel
compilado, isso pode resultar em instabilidade ou inconformidades no sistema.
Nota: Se voc adicionar qualquer dispositivo novo (tal como Placa de Som) e estiver
rodando FreeBSD 4.X ou verses anteriores, pode ser necessrio adicionar algum
dispositivo de controle em seu diretrio /dev antes que eles possam ser utilizados
corretamente, Para mais informaes, d uma olhada na seo Criando dispositivos
de controle posteriormente neste mesmo captulo.

O arquivo de configurao
O formato geral do arquivo de configurao bastante simples. Cada linha contm
uma palavra-chave e mais algum argumento. Para simplificar, a maioria das linhas
contm somente um argumento. Qualquer coisa que segue um # considerado um
comentrio e ignorado. As seguintes sees descrevem cada palavra-chave,
geralmente na ordem que so listadas no GENERIC, embora algumas palavras-
chaves relacionadas sejam agrupadas em uma nica seo (tal como rede) mesmo que
sejam descartados durante todo o arquivo GENERIC. Uma lista completa de opes
mais detalhadas, a explicao de cada um dos dispositivos presentes no arquivo de
configurao do kernel, esto disponveis no arquivo LINT, localizado no mesmo
diretrio do GENERIC. Se voc tiver na dvida a respeito da necessidade de uma
linha, verifique primeiro no LINT.
Nota: No FreeBSD 5.X e superiores o LINT no existe. Veja o arquivo NOTES para
opes dependentes de arquitetura. Algumas opes, principalmente independentes
da arquitetura, so armazenadas no arquivo /usr/src/sys/conf/NOTES. aconselhvel
revisar as opes dispostas neste arquivo tambm.
A seguir um exemplo de arquivo de configurao GENERIC do kernel com vrios
comentrios adicionais, onde eles forem necessrios, para esclarecimentos. Este
exemplo deve se equivaler uma cpia que voc tem disponvel em
/usr/src/sys/i386/conf/GENERIC. Para obter detalhes sobre todas as opes possveis
do kernel, veja/usr/src/sys/i386/conf/LINT.
#
# GENERIC -- Generic kernel configuration file for FreeBSD/i386
#
# For more information on this file, please read the handbook section on
# Kernel Configuration Files:
#
# http://www.FreeBSD.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig-
config.html
#
# The handbook is also available locally in /usr/share/doc/handbook
# if you've installed the doc distribution, otherwise always see the
# FreeBSD World Wide Web server (http://www.FreeBSD.org/) for the
# latest information.
#
# An exhaustive list of options and more detailed explanations of the
# device lines is also present in the ../../conf/NOTES and NOTES files.
# If you are in doubt as to the purpose or necessity of a line, check first
# in NOTES.
#
# $FreeBSD: src/sys/i386/conf/GENERIC,v 1.380 2003/03/29 13:36:41 mdodd Exp $

Em seguida esto as palavra-chaves obrigatriamente necessrias em todos os kernels


que voc for compilar:
machine i386

Est a arquitetura da mquina. Deve ser algum dos seguintes valores: i386, pc98,
sparc64, alpha, ia64, amd64 ou powerpc.
cpu I486_CPU
cpu I586_CPU
cpu I686_CPU

A opo acima especifica o tipo da CPU em seu sistema. possvel manter mltiplas
entradas desta definio, em casos onde no souber ao certo que classes de CPU
devem ser suportadas em seu kernel, nesse caso, as opes escolhidas so I586_CPU
ou I686_CPU), entretanto, para personalizar um kernel, melhor especificar apenas a
CPU que voc dispe, quando esta puder ser prevista. Se voc estiver inseguro
quanto classe da sua CPU, pode verificar o arquivo /var/run/dmesg.boot para
verificar as mensagem do carregamento do sistema.
O suporte I386_CPU ainda est disponvel no fonte do FreeBSD, mas esta opo
agora desativada por padro em ambos -STABLE e -CURRENT. Isto significa que
para instalar o FreeBSD com um processador de classe 386, voc ter que optar por
uma das seguintes alternativas:
Instale uma verso mais antiga do FreeBSD e recompile o sistema como
descrito na Seo 9.3.
Compile as aplicaes em nvel de usurio e o kernel em outra mquina e
instale-as no 386 em questo, usando os arquivos previamente compilados,
armazenados em /usr/obj (para mais detalhes veja a Seo 21.5).
Gere sua prpria verso do FreeBSD incluindo suporte a I386_CPU no
kernel de instalao via CD-ROM.
A primeira destas opes provavelmente a mais fcil, mas voc necessitar de
muito espao em disco em uma mquina de classe 386, o que pode ser difcil de
encontrar.
ident GENERIC

Est a identificao do kernel. Voc pode mudar o nome do seu kernel para
qualquer um, mas como exemplo da configurao do nosso kernel customizado,
oMYKERNEL, voc deve acompanhar as instrues dos prximos exemplos. O
nome que voc colocou no ident sero mostrados quando o kernel for carregado, de
forma que a opo utilizada para dar um nome novo ao kernel, ou um nome
diferente se voc quiser distinguir seu novo kernel do kernel atual (especialmente til
quando quiser compilar um kernel experimental).
maxusers n

A opo maxusers ajusta uma srie de tabelas importantes do sistema. Esta opo no
deve ser utilizada de forma a se igualar ao nmero de usurios simultneos esperados
em sua mquina.
Desde o FreeBSD 4.5, o sistema ajusta automaticamente esta configurao, se seu
valor for modificado para 0[1]. No FreeBSD 5.X, maxusers definido por padro
com o valor 0 quando for omitido. Se sua verso do FreeBSD for anterior ao 4.5, ou
voc deve definir est varivel manualmente sempre, e o valor de maxusers deve ser
no mnimo 4, especialmente se for usando o Sistema de Janelas X, ou compilando
programas com frequncia. A razo que a tabela mais importante ajustada por meio
domaxusers o nmero mximo de processos, que definido como 20 + 16 *
maxusers, de forma que, se voc ajustar maxusers para o valor 1, podero existir no
mximo 36 processos simultneos, incluindo ai os 18 processos que o sistema carrega
na hora da inicializao, e os 15 que voc provavelmente ir criar quando iniciar o
sistema de interface grfica. Mesmo tarefas simples como a leitura de uma pgina de
manual ser iniciada levantando nove processos para filtro, decompactao e
visualizao do manual. Colocando maxusers em 64 permitir que voc tenha 1044
processos simultneos carregados, o que deve ser o suficiente para a maioria de suas
necessidades. Entretanto, se voc se deparar com o erro proc table is full ao tentar
iniciar outro programa, ou se o sistema em questo tratar de um servidor com um
grande nmero de usurios simultneos (digamos, como o ftp.FreeBSD.org por
exemplo), possvel aumentar o valor da varivel maxusers e recompilar o kernel do
sistema.
Nota: maxusersno limita o nmero de usurios que podem logar em sua mquina.
Ele apenas define o valor de vrias tabelas quantias razoveis considerando o
nmero mximo de usurios e processos que voc provavelmente ter rodando em
seu sistema. A opo que possibilita limitar o nmero de logins remotos simultneous
e de terminais grficos pseudo-device pty 16.
# Floating point support - no desabilite.
device npx0 at nexus? port IO_NPX irq 13

npx0 a opo que disponibiliza suporte lgico ponto flutuante em unidades


matemticas do FreeBSD, que faz o papel de equipamento co-processador, ou
simplesmente emulador matemtico lgico. Esta definio no opcional.
# Pseudo devices - o nmero indica quantas unidades sero alocadas.
pseudo-device loop # Network loopback

Trata-se do dispositivo genrico de comunicao TCP/IP interna via loopback. Por


exemplo, se voc fizer uma conexo telnet ou FTP para localhost (ou seja,127.0.0.1)
a conexo voltar voc atravs deste pseudo-dispositivo. Este comportamento
mandatrio.
Todas as outras opes no decorrer do arquivo so consideravelmente optativas. Veja
as notas em cada uma das opes abaixo, para obter mais informaes.
#To statically compile in device wiring instead of /boot/device.hints
#hints "GENERIC.hints" #Default places to look for devices.

No FreeBSD 5.X e verses posteriores, o device.hints(5) usado para configurar


algumas opes de dispositivos de controle. Por padro o loader(8) verifica as opes
em/boot/device.hints. Usando a opo hints estas definies podem ser estaticamente
compiladas dentro do seu kernel, de forma que a necessidade de cirar o
arquivodevice.hints dentro de /boot seja suprimida.
#makeoptions DEBUG=-g #Build kernel with gdb(1) debug symbols

O processo normal de compilao do FreeBSD no inclui informaes sobre


problemas com a compilao do kernel, e remove a maioria dos smbolos depois que
o kernel instalado, para economizar algum espao em disco. Caso voc esteja
fazendo testes com kernel na srie -CURRENT, ou alterando opes de
desenvolvimento de seu prprio kernel FreeBSD, pode ser interessante descomentar
esta linha. Isto ir habilitar o uso da opo -g que habilita a adio de informaes de
depurao do programa, realizados pelo config(8), caso voc esteja compilando seu
kernel da maneira ``tradicional'' (veja a Seo 9.3 para obter mais informaes.).
options MATH_EMULATE #Support for x87 emulation

Esta linha permite que o kernel simule um co-processador matemtico se seu


computador no tiver um disponvel (386 ou 486SX). Caso seu PC seja um 486DX,
ou um 386 ou 486SX (com um chip 387 ou 487 separado), ou superior (Pentium,
Pentium II, etc.), esta opo poder ser comentada.
Nota: As rotinas normais para emulao matemticas do co-processador que vem
com o FreeBSD no so muito precisas. Se voc no dispe de um co-processador
matemtico mas tem necessidade de uma emulao mais precisa, substituia a opo
anterior por GPL_MATH_EMULATE, de forma a usar o suporte co-processamento
matemtico GNU que no habilitado por padro em razo de questes legais da
licena GPL.
No FreeBSD 5.X, a emulao matemtica desabilitada por padro, em
outras CPUs que no tem suporte a ponto flutuante matemtico nativo, a
emulao menos comum, e em muitos casos no so sequer suportados
pelo kernel GENERIC sem que outras opes adicionais sejam includas.
options INET #InterNETworking

Suporte a Rede. Mantenha esta opo ainda que voc no planeje se conectar a uma
rede. Muitos programas tem necessidade mnimas que necessitam de suporte rede,
como o uso da interface de loopbacl (isto , conexes internas de rede), de forma que
esta opo mandatria.
options INET6 #IPv6 communications protocols

Trata-se do protoclo de comunicao IPv6.


options FFS #Berkeley Fast Filesystem
options FFS_ROOT #FFS usable as root device [keep this!]

Trata-se do sistema de arquivos essencial do FreeBSD. Mantenha esta opo se voc


planeja controlar algum disco rgido.
Nota: partir do FreeBSD 5.X, FFS_ROOT no mais necessrio.
options UFS_ACL #Support for access control lists

Esta opo, est presente apenas no FreeBSD 5.X; ela habilita o suporte do kernel
listas de controle de acesso. Seu uso requer as opes de atributos extendidos e
UFS2, e os detalhes so descritos na Seo 10.13. ACLs so habilitadas por padro, e
no devem ser desabilitadas no kernel se tiverem sido previamente utilizadas no
sistema de arquivos, pois remover a lista de controle de acessos, modificando os
atributos dos arquivos protegidos para valores imprevisveis.
options UFS_DIRHASH #Improve performance on big directories
Est opo inclui recursos para aumentar a velocidade de operaes de disco em
diretrios grandes, ao custo de usar um pouco de memria adicional. Normalmente
interessante usufruir desta opo em um grande servidor, ou em situaes onde haja
grande demanda de interao com estaes de trabalho; remova esta opo quando
estiver usando o FreeBSD em um pequeno sistema onde memria a prioritria e
velocidade de acesso a disco menos importante, como um firewall.
options SOFTUPDATES #Enable FFS Soft Updates support

Esta opo habilita o mtodo Soft Updates no kernel, isto ir ajudar a aumentar a
velocidade de escrita ao disco. Mesmo sendo habilitada no kernel, estes recursos
ainda precisam ser atribudos cada partio de disco. Revise a sada do comando
mount(8) para obter detalhes sobre que sistemas de arquivos esto com Soft
Updateshabilitados. Caso no esteja observando a opo, necessrio ativa-la usando
o tunefs(8) (para sistemas de arquivos existentes) ou newfs(8) (para novo sistema de
arquivos).
options MFS #Memory Filesystem
options MD_ROOT #MD is a potential root device

Trata-se basicamente de um espao em memria mapeado para armazenamento


rpido de arquivos temporrios, se voc tiver uma boa quantidade de memria real e
virtual, pode forar a utilizao deste recurso em outros pontos tambm. Uma idia
interessante montar como MFS o diretrio /tmp, se houver necessidade de muito
desempenho nesta unidade. Neste caso, adicione por exemplo a seguinte linha no
arquivo /etc/fstab:
/dev/ad1s2b /tmp mfs rw 0 0
Agora basta reiniciar seu sistema ou rodar o comando mount /tmp.
Nota: No FreeBSD 5.X, a opo md(4) usada com grande vantagem sobre MFS.
Mais informaes sobre a configurao de sistemas de arquivo em memria, podem
ser obtidas nos manuais mdconfig(8) e mdmfs(8), e tambm na Seo 12.10.
Consequentemente, a opo MFS no mais suportada na srie 5.X.
options NFS #Network Filesystem
options NFS_ROOT #NFS usable as root device, NFS required

Trata-se do sistema de arquivos de rede. A menos que voc no planeje montar


parties UNIX sob rede TCP/IP, comente esta linha.
options MSDOSFS #MSDOS Filesystem

Trata-se do sistema de arquivos MS-DOS. Se voc no pretende montar parties


formatadas em DOS, pode seguramente retirar esta opo. Se voc tiver necessidade
de montar sistemas DOS posteriormente, o mdulo ser automaticamente carregado.
O timo conjunto de programas mtools (disponvel na Coleo de Ports) permite que
voc acesse disquetes DOS sem ter que mount-los e desmont-los (e no requer
MSDOSFS).
options CD9660 #ISO 9660 Filesystem
options CD9660_ROOT #CD-ROM usable as root, CD9660 required

O sistema de arquivos ISO 9660 utilizado em CDROMs. Pode ser interessante


comentar esta opo se voc no tem um dispositivo ptico de leitura de CDROM, ou
se tem a necessidade ocasional de montar CDs de dados (uma vez que o mdulo
correspondendo pode ser carregado dinamicamente quando for necessrio montar um
CD de dados). CDs de udio no necessitam deste suporte.
options PROCFS #Process filesystem

Trata-se do sistema de arquivo de processos. Este sistema de arquivo tem a funo de


criar e montar o ambiente /proc que permite o uso de programas como ps(1) para
voc ter mais informaes sobre quais processos est rodando. No FreeBSD 5.X, o
uso do PROCFS no mais necessrio por vrios motivos, visto que a maioria das
ferramentas de monitoramento tem que ser adaptadas para rodar sobre PROCFS. Em
adio, o kernel 5.X-CURRENT que usa PROCFS deve agora tambm incluir
suporte para PSEUDOFS:
options PSEUDOFS #Pseudo-filesystem framework

PSEUDOFS no est disponvel sob FreeBSD 4.X. Ao contrrio do FreeBSD 4.X, as


novas instalaes do FreeBSD 5.X no montam, por padro, o sistema de arquivos de
processos.
options COMPAT_43 #Compatible with BSD 4.3 [KEEP THIS!]

Compatibilidade com BSD 4.3. Deixe isto descomentado, alguns programas agiro
estranhamente se voc comentar isto.
options COMPAT_FREEBSD4 #Compatible with FreeBSD4

Esta opo necessria no FreeBSD 5.X i386 e Sistemas Alpha para suporte
aplicativos compilados em outras verses do FreeBSD, que usa outro sistema de
interfaces de chamadas. Recomenda-se que esta opo seja usada sobre todos i386 e
sistemas Alpha que podem rodar outros aplicativos; plataformas que ganham suporte
somente em 5.X, tal como ia64 e Sparc64, no tem esta necessidade.
options SCSI_DELAY=15000 #Delay (in ms) before probing SCSI

Isso faz com que o kernel pare por 15 segundos antes de procurar pelos dispositivos
SCSI em seu sistema. Se voc dispor apenas de discos IDE, pode ignorar esta opo;
em discos SCSI, pode ser interessante baixar at 5 segundos, para acelerar a
inicializao. Naturalmente, se depois disso o FreeBSD tiver problemas para
reconhecer algum dispositivo SCSI, suba este valor novamente.
options UCONSOLE #Allow users to grab the console

Permite que a console usada por aplicaes grficas sejam acessadas por outros
usurios. Por exemplo, se voc criar um terminal xterm com xterm -C, tudo que
estiver sendo feito pelo write(1), talk(1), e todas as outras mensagens que voc
receber, assim como algumas mensagens de console emitidas pelo kernel, sero
capturadas.
Nota: No FreeBSD 5.X, UCONSOLE no mais necessria.
options USERCONFIG #boot -c editor

Esta opo permite carregar e editar as configuraes do menu de inicializao.


options VISUAL_USERCONFIG #visual boot -c editor

Esta opo permite carregar e editar as configuraes do menu de inicializao em


modo grfico.
Nota: partir doFreeBSD 5.0, a opo USERCONFIG foi substituda pelo novo
mtodo device.hints(5). Para maiores informaes sobre device.hints(5) por
gentileza, visite a Seo 7.5.
options KTRACE #ktrace(1) support

Esta opo permite rastrear os processos do kernel, que so usados em rotinas de


verificao e tratamento de erros.
options SYSVSHM #SYSV-style shared memory

Est opo fornece compartilhamento de memria no estilo System V. O uso mais


comum deste, so as extenses XSHM do X, com muitos programas de grficos-
intensivos que obtero automaticamente vantagens e acrscimo de velocidade. Se
voc usa X, mantenha esta opo ativa.
options SYSVSEM #SYSV-style semaphores

Suporte semforos padro System V. Geralmente so pouco usados, e adicionam


algumas centenas de bytes no tamanho total do kernel.
options SYSVMSG #SYSV-style message queues

Suporte mensagens interprocessos em padro System V. Mais uma vez, tambm


requer poucas centenas de bytes no kernel.
Nota: O comando ipcs(1) listar algum processo que estiver fazendo uso de alguma
funcionalidade padro System V.
options P1003_1B #Posix P1003_1B real-time extensions
options _KPOSIX_PRIORITY_SCHEDULING

Extenses em tempo real adicionadas em 1993 ao padro POSIX. Determinadas


aplicaes da coleo do ports usam estes recursos (tal como StarOffice).
Nota: No FreeBSD 5.X, todas estas funcionalidades agora so fornecidos pela opo
_KPOSIX_PRIORITY_SCHEDULING, e P1003_1B no mais necessria.
options ICMP_BANDLIM #Rate limit bad replies
Est opo permite limitar a quantidade de resposta de erros de ICMP. Normalmente
esta opo auxilia a proteo do sistema contra ataques do tipo degao de servio
por pacotes ICMP. recomendado manter esta opo.
Nota: No FreeBSD 5.X, esta caracterstica habilitada por padro e a opo
ICMP_BANDLIM no mais necessria.
# To make an SMP kernel, the next two are needed
#options SMP # Symmetric MultiProcessor Kernel
#options APIC_IO # Symmetric (APIC) I/O

Ambas opes acima so necessrias para suporte multiprocessamento simtrico


(SMP).
device isa

Todos os PCs com FreeBSD suportam esta opo. Caso seu computador seja um IBM
PS/2 (Arquitetura Micro Canal), o FreeBSD fornece um suporte um pouco limitado.
Para maiores informaes sobre este, veja a opco MCA, em
/usr/src/sys/i386/conf/LINT.
device eisa

Inclua esta opo caso sua placa-me seja EISA. Esta opo habilita a auto-deteco
e suporte a configurao de todos os dispositivos sobre o barramento EISA.
device pci

Inclua este opo se sua placa-me suporta PCI. Esta opo habilita a auto-deteco e
suporte a configurao demplacas PCI e os que estiverem em transio do
barramento ISA para PCI.
device agp

Inclua esta opo se voc dispor de uma placa de AGP em seu sistema. Esta opo
habilita suporte AGP e AGP GART em placas com estes recursos.
# Floppy drives
device fdc0 at isa? port IO_FD1 irq 6 drq 2
device fd0 at fdc0 drive 0
device fd1 at fdc0 drive 1

Trata-se do controlador de disco flexvel. Fd0 o drive flexvel A:, e fd1 o drive B:.
device ata

Este driver suporta todos dispositivos ATA e de ATAPI. Voc necessitar somente
uma linha com a entrada device ata para que o kernel detecte todos os dispositivos
PCI ATA/ATAPI em uma mquina moderna.
device atadisk # ATA disk drives

Esta opo necessrio em conjunto com a device ata para dispositivos de controle
de discos ATA.
device atapicd # ATAPI CDROM drives

Esta opo necessrio em conjunto com a device ata para dispositivos de de


controle de drives de CD ATAPI.
device atapifd # ATAPI floppy drives

Esta opo necessrio em conjunto com a device ata para controle dispositivos de
unidades de disquetes ATAPI.
device atapist # ATAPI tape drives

Esta opo necessrio em conjunto com a device ata para dispositivos de de


controle de dispositivos de fitas ATAPI.
options ATA_STATIC_ID #Static device numbering

Esta opo faz o controle esttico de nmero identificador ATA, no padro antigo, ou
os nmeros de dispositivos que so alocados dinmicamente.
# ATA and ATAPI devices
device ata0 at isa? port IO_WD1 irq 14
device ata1 at isa? port IO_WD2 irq 15

usado em sistemas mais antigos, que no suportam padro PCI.


# SCSI Controllers
device ahb # EISA AHA1742 family
device ahc # AHA2940 and onboard AIC7xxx devices
device amd # AMD 53C974 (Teckram DC-390(T))
device dpt # DPT Smartcache - See LINT for options!
device isp # Qlogic family
device ncr # NCR/Symbios Logic
device sym # NCR/Symbios Logic (newer chipsets)

device adv0 at isa?


device adw
device bt0 at isa?
device aha0 at isa?
device aic0 at isa?

Controladoras SCSI. Caso alguma destas controladoras no estejam disponveis em


seu sistema, comente a linha em questo. Caso voc tenha apenas discos IDE, todas
opes aqui podem ser completamente removidas.
# SCSI peripherals
device scbus # SCSI bus (required)
device da # Direct Access (disks)
device sa # Sequential Access (tape etc)
device cd # CD
device pass # Passthrough device (direct SCSI
access)

Perifricos SCSI. Mais uma vez, se algum destes perifricos no estiverem


disponveis em seu sistema, comente a linha em questo. Caso voc tenha apenas
discos IDE, todas opes aqui podem ser completamente removidas.
# RAID controllers
device ida # Compaq Smart RAID
device amr # AMI MegaRAID
device mlx # Mylex DAC960 family

Suporte controladoras RAID. Voc pode manter apenas suporte aos equipamentos
que voc tem disponvel, removendo o suporte s controladoras RAID no
disponveis.
# atkbdc0 controls both the keyboard and the PS/2 mouse
device atkbdc0 at isa? port IO_KBD

O controlador de teclado (atkbdc) fornece recursos de controle operaes de E/S


para o teclado AT e teclados e dispositivos de apontamento PS/2 (como mouse e
canetas). Este dispositivo necessrio ao suporte de teclado (atkbd) bem como ao
dispositivo de controle PS/2 (psm).
device atkbd0 at atkbdc? irq 1

O dispositivo de controle atkbd, em comjunto com o atkbdc, provm accesso ao


teclado AT 84 ou teclados AT, modelos aprimorados e convencionais.
device psm0 at atkbdc? irq 12

Use este dispositivo caso seu mouse seja do tipo que requer conectores PS/2.
device vga0 at isa?

Dispositivo de controle de vdeo.


# splash screen/screen saver
pseudo-device splash

Possibilita que seja adicionada uma tela de sobreposio (bitmap) na inicializao do


sistema. Protetores de tela tambm exijem suporte a este dispositivo.
# syscons is the default console driver, resembling an SCO console
device sc0 at isa?

Sc0 o dispositivo padro de controle do console do sistema, e se assenelha ao


console de sistema SCO. A maioria dos terminais requerem este suporte mesmo
terminais que fazem uso do mapeamento termcap, mas no deve ser relevante quando
o dispositivo vt0 for utilizado, uma vez que este compatvel com o console VT220.
Neste caso, ao se logar, basta definir a varivel de ambiente TERM como scoansi
especialmente alguma aplicao que ocupe a tela inteira apresentar inconformidades
no console.
# Enable this and PCVT_FREEBSD for pcvt vt220 compatible console driver
#device vt0 at isa?
#options XSERVER # support for X server on a vt console
#options FAT_CURSOR # start with block cursor
# If you have a ThinkPAD, uncomment this along with the rest of the PCVT lines
#options PCVT_SCANSET=2 # IBM keyboards are non-std

Trata-se de um dispositivo de controle VT220 compatvel com o console, padres


VT100/102. Esta opo aconselhada para computadores mveis que tenham
problemas de compatibilidade com sc0. Ajuste tambm o valor da varivel TERM
para vt100 ou vt220 logar-se no terminal. Este dispositivo pode ser usado para
interconectar um grande nmero de diferentes mquinas em um ambiente de rede,
onde termcap ou terminfo contenham entradas para o dispositivo sc0 vt100 deve
estar virtualmente disponvel em todas estaes.
# Power management support (see LINT for more options)
device apm0 at nexus? disable flags 0x20 # Advanced Power Management

Suporte Gerenciamento Avanado de Energia. Usado especialmente em laptops.


# PCCARD (PCMCIA) support
device card
device pcic0 at isa? irq 10 port 0x3e0 iomem 0xd0000
device pcic1 at isa? irq 11 port 0x3e2 iomem 0xd4000 disable

Suporte PCMCIA. Especialmente til em laptop.


# Serial (COM) ports
device sio0 at isa? port IO_COM1 flags 0x10 irq 4
device sio1 at isa? port IO_COM2 irq 3
device sio2 at isa? disable port IO_COM3 irq 5
device sio3 at isa? disable port IO_COM4 irq 9

Suporte portas de comunicao serial. Estes dispositivos so anlogamente


referentes s portas COM1 at COM4, em ambientes MS-DOS/Windows.
Nota: Se voc tiver um modem interno na COM4 e uma porta serial na COM2, voc
ter que mudar a IRQ do modem para 2 (pelas razes tcnicas IRQ2 = IRQ 9) de
forma que o FreeBSD compreenda estas definies. Se voc tiver um carto serial de
mltiplas interfaces seriais, verifique a pgina de manual sio(4) para obter maiores
informaes sobre os valores apropriados para esta linha de opo do kernel. Algunas
placas vdeo (especialmente aquelas com chip baseado em S3) usam endereo de E/S
no formato 0x*2e8, e como vrias placas seriais simplesmente ignoram qualquer
possibilidade de convivncia com uma placa de vdeo destas, seu endereamento de
E/S 16-bit costumam conflitar com estes dispositivos, que querem operar na porta
COM4 - normalmente indisponvel.
Cada porta serial requer uma IRQ exclusiva (a no ser que voc esteja
usando um carto multi-portas onde as interrupes compartilhadas so
suportadas), sendo assim as IRQs padro para COM3 e COM4 no so
habilitadas automaticamente.
# Parallel port
device ppc0 at isa? irq 7
Trata-se da porta paralela para a interface de barramento ISA.
device ppbus # Parallel port bus (required)

Suporta o barramento de porta paralela.


device lpt # Printer

Suporte porta paralela de impressoras.


Nota: Todos os trs acima so necessrios para habilitar suporte impressora
paralela.
device plip # TCP/IP over parallel

Dispositivo de controle para a interface de rede via porta paralela.


device ppi # Parallel port interface device

Uma porta paralela de propsito geral (``geek port'') padro de E/S IEEE1284.
#device vpo # Requires scbus and da

Trata-se do suporte ``Zip Drive'' da Iomega. Requer ainda suporte scbus e da.
Melhor performance garantida com portas em modo EPP 1.9.
# PCI Ethernet NICs.
device de # DEC/Intel DC21x4x (``Tulip'')
device fxp # Intel EtherExpress PRO/100B (82557, 82558)
device tx # SMC 9432TX (83c170 ``EPIC'')
device vx # 3Com 3c590, 3c595 (``Vortex'')
device wx # Intel Gigabit Ethernet Card (``Wiseman'')

Suporte uma srie de placas de rede PCI. Voc pode comentar ou remover os
dispositivos que controlam placas de rede que voc no disponha em seu sistema.
# PCI Ethernet NICs that use the common MII bus controller code.
device miibus # MII bus support

O suporte ao barramento MII necessrio para o correto funcionanento de uma srie


de placas de rede PCI 10/100, especficamente as placas com transceivers MII-
compatveis ou ento os que implementam a interface de controle em questo,
operando como MII. Adicionar a opo device miibus prov suporte uma API de
barramento MII genrica, e a todos os dispositivos de controle PHY, incluindo um
genrico para PHYs no declarados no momento da negociao dos recursos.
device dc # DEC/Intel 21143 and various workalikes
device rl # RealTek 8129/8139
device sf # Adaptec AIC-6915 (``Starfire'')
device sis # Silicon Integrated Systems SiS 900/SiS 7016
device ste # Sundance ST201 (D-Link DFE-550TX)
device tl # Texas Instruments ThunderLAN
device vr # VIA Rhine, Rhine II
device wb # Winbond W89C840F
device xl # 3Com 3c90x (``Boomerang'', ``Cyclone'')

Suporte placas de rede que usam o cdigo controlador do barramento MII.


# ISA Ethernet NICs.
device ed0 at isa? port 0x280 irq 10 iomem 0xd8000
device ex
device ep
# WaveLAN/IEEE 802.11 wireless NICs. Note: the WaveLAN/IEEE really
# exists only as a PCMCIA device, so there is no ISA attachment needed
# and resources will always be dynamically assigned by the pccard code.
device wi
# Aironet 4500/4800 802.11 wireless NICs. Note: the declaration below will
# work for PCMCIA and PCI cards, as well as ISA cards set to ISA PnP
# mode (the factory default). If you set the switches on your ISA
# card for a manually chosen I/O address and IRQ, you must specify
# those parameters here.
device an
# The probe order of these is presently determined by i386/isa/isa_compat.c.
device ie0 at isa? port 0x300 irq 10 iomem 0xd0000
device fe0 at isa? port 0x300
device le0 at isa? port 0x300 irq 5 iomem 0xd0000
device lnc0 at isa? port 0x280 irq 10 drq 0
device cs0 at isa? port 0x300
device sn0 at isa? port 0x300 irq 10
# requires PCCARD (PCMCIA) support to be activated
#device xe0 at isa?

Tratam-se de dispositivos de controle de interfaces Ethernet padro ISA Ethernet


drivers. Veja a lista de placas suportadas por cada um destes dispositivos
em/usr/src/sys/i386/conf/LINT.
pseudo-device ether # Ethernet support

ether necessrio caso voc tenha alguma placa de rede disponvel. Este dispositivo
inclui suporte ao cdigo genrico do protocolo Ethernet.
pseudo-device sl 1 # Kernel SLIP

sl o suporte SLIP. Esta tecnologia foi quase completamente substituda pelo PPP,
que mais fcil de configurar, mais flexvel e melhor suporte conexo modem-a-
modem, e mais mais poderoso. O valor na frente da entrada sl indica quantas
sesses simultneas da conexees SLIP sero suportadas.
pseudo-device ppp 1 # Kernel PPP

Trata-se do suporte PPP no kernel, usado especialmente para conexes discadas. H


tambm uma outra verso do PPP implementada em nvel de usurio com o
dispositivotun e oferece mais flexibilidade e caractersticas tais como exigem as
conexes discadas. O valor de conexes aps a entrada ppp, define a quantidade de
conexes simultneas suportadas pelo PPP.
pseudo-device tun # Packet tunnel.

usada pelo programa que implementa o suporte PPP em nvel de usurio. O valor
na frente da entrada tun indica o nmero de sesses simultneas suportadas pelo PPP.
Veja a PPP deste livro para obter maiores informaes.

pseudo-device pty # Pseudo-ttys (telnet etc)


Trata-se de um ``pseudo-terminal'' que simula a interface de login no sistema.
usado pelo telnet bem como por sees rlogin, xterm, e algumas outras aplicaes
comoEmacs. O valor aps a entrada pty indica o nmero de dispositivos pty que
devem ser criados. Se voc tem a necessidade de mais de 16 sesses simultneas de
xterm ou acessos remotos, pode aumentar este valor at o mximo de 256.
pseudo-device md # Memory ``disks''

o pseudo-dispositivo para discos de memria.


pseudo-device gif

ou
pseudo-device gif 4 # IPv6 and IPv4 tunneling

Implementa tunelamento do protocolo IPv6 sobre IPv4, bem como tunelamento IPv4
sobre IPv4, e IPv6 sobre. partir do FreeBSD 4.4 o dispositivo gif pode ser criado
por demanda, e a primeira entrada (sem o identificador numrico aps o gif) pode ser
usada. Verses anteriores do FreeBSD requerem esta definio.
pseudo-device faith 1 # IPv6-to-IPv4 relaying (translation)

Este pseudo-dispositivo captura os pacotes que so emitidos e desva-os ao daemon


da traduo IPv4/IPv6.
pseudo-device bpf # Berkeley packet filter

Trata-se do Filtro de Pacotes de Berkeley. Este pseudo-dispositivo permite que as


interfaces da rede sejam colocadas em modo promscuo, capturando cada pacote que
trafegar publicamente na rede. Estes pacotes podem ser capturados e salvos em disco
ou examinados com o programa tcpdump(1).
Nota: A opo pseudo-device bpf usada tambm pelo dhclient(8) para obter o
endereo IP do roteador padro (gateway) e assim por diante. Se voc usa DHCP,
mantenha esta opo descomentada.
# Suporte USB
#device uhci # UHCI PCI->USB interface
#device ohci # OHCI PCI->USB interface
#device usb # USB Bus (required)
#device ugen # Generic
#device uhid # ``Human Interface Devices''
#device ukbd # Keyboard
#device ulpt # Printer
#device umass # Disks/Mass storage - Requires scbus and da
#device ums # Mouse
# USB Ethernet, requires mii
#device aue # ADMtek USB ethernet
#device cue # CATC USB ethernet
#device kue # Kawasaki LSI USB ethernet

Estas opes adicionam suporte vrios dispositivos USB.


Para obter mais informaes sobre cada dispositivo USB suportado pelo FreeBSD
por gentileza, veja /usr/src/sys/i386/conf/LINT.
9.4.1. Grandes Configuraes de Memria (PAE)
Mquinas com grandes configuraes de memria tem a necessidade de que sejam
acessados endereos de memria que superam o limite de 4 Gigabytes de espao no
ambiente de usurio e do kernel (KVA). Devido esta limitao, a Intel adicionou
suporte espao de endereamento fsico de 36-bit nos processadores no Pentium em
sua linha de CPUs Pro e posteriores.
A extenso de endereo fsico (PAE) possibilida que as CPUs Intel Pentium Pro e
posteriores possam ter at 64 gigabytes de memria. O FreeBSD oferece suporte
este recurso por meio da opo PAE na configurao do kernel, disponvel na srie
4.X partir da verso 4.9-RELEASE e no 5.X partir do 5.1-RELEASE. Devido
limitaes da arquitetura de memria Intel, no possvel distinguir o que
endereado acima ou abaixo dos 4 gibabytes. A memria alm dos 4GB meramente
inclusa e mapeada ao pool de memria disponvel.
Para habilitar suporte ao PAE, basta adicionar ao arquivo de configurao do kernel,
a seguinte linha:
options PAE

Nota: O suporte PAE no FreeBSD limita-se processadores Intel IA-32. Deve-se


tambm notar, que o suporte PAE no FreeBSD ainda no foi totalmente testado, e
considerado de qualidade beta, quando comparado com outros recursos estveis do
FreeBSD.
O suporte PAE no FreeBSD tem algumas limitaes:
Um mesmo processo no pode alocar mais do que 4 gigabytes do espao da
VM.
Mdulos KLD no podem ser carregados dentro em um kernel com PAE
habilitado, devido a diferenas na estrutura da configurao do mdulo de
kernel.
Dispositivos de controle no usam o a interface bus_dma(9) podem causar
corrompimento de dados em um kernel com PAE, portanto no so
recomendados para uso em conjunto com PAE. Por esta razo um arquivo
especfico para configurao de um kernel com PAE est disponvel
separadamente no FreeBSD 5.X, onde os dispositivos de controle conflitante
esto ausentes.
Alguns valores ajustveis no kernel do sistema so baseados na quantidade de
memria que foi configurada no kernel, estaticamente, no momento da
compilao deste. Alguns destes valores podem ter necessidade de serem
realocados devido natureza do suporte muita memria disponvel em
sistemas com PAE. Um bom exemplo a MIB ajustvel via sysctl(8),
kern.maxvnodes, que controla o nmero mximo de vnodes que podem ser
alocados no kernel. recomendado que este e outros valores ajustveis sejam
redefinidos um valor rasovel, em sistemas com PAE.
Pode ser necessrio aumentar o espao virtual de endereamento do kernel
(KVA) ou diminuir a quantidade de recursos utilizados com maior demanda
no kernel, objetivando evitar a exausto do KVA. A opo KVA_PAGES pode
ser usada na configurao do kernel para aumentar o espao disponvel para
oKVA.
Para mais dicas sobre performance e estabilidade, recomendado a leitura da pgina
de manual tuning(7). A pgina de manual pae(4) contm informao recentes sobre o
suporte PAE no FreeBSD.
Notas
O algoritmo de ajuste automtico do maxuser define o valor igual a quantidade de memria do
sistema, respeitando o valor mnimo de 32, e o mximo de 384.

Criando Dispositivos de Controle


Nota: Se voc estiver usando o FreeBSD verso 5.0 ou posterior, pode seguramente
pular esta seo. Estas verses usam o devfs(5) para criar os dispositivos de controle
de forma completamente transparente para o usurio.
Quase todos dispositivo no kernel usam um ``dispositivo de controle'' que fica no
diretrio /dev. O usurio normal visualiza estes dispositivos como arquivos regulares,
mas na realidade so entradas especiais no kernel do sistema, que os programas usam
para acessar os recursos do sistema. Existe uma rotina shell, o /dev/MAKEDEV, que
executado quando voc instala o sistema operacional pela primeira vez; esta rotina
cria quase todos os dispositivos de controle suportados no sistema. Entretanto, no
criatodos, de forma que ao adicionar suporte para novos dispositivos, esta rotina deve
ser usada para criar a entrada apropriada neste diretrio e acima dele. Veja um
exemplo simples:
Vamos supor que voc adicionou um CD-ROM IDE e requer que ele seja suportado
pelo kernel. A linha no kernel deve ser a seguinte:
device acd0

Ou seja, a entrada acd0 deve estar disponvel no /dev, possivelmente seguida por uma
letra, tal como c, ou precedido por uma letra r, que significa tratar-se de um
dispositivo cr (``raw''). Existe contudo uma grande possibilidade destes arquivos no
estarem presentes sob este diretrio, neste caso voc pode entrar no diretrio /dev:
# sh MAKEDEV acd0

Quando a rotina terminar de ser executada, devero existir as entradas acd0c e racd0c
sob /dev.
Para placas de som, o seguinte comando cria as entradas apropriadas:
# sh MAKEDEV snd0

Nota: Ao criar dispositivos de controle tais como Placas de Som, se outras pessoas
tiverem acesso sua mquina, pode ser necessrio proteger os dispositivos contra
acesso externo adicionando os arquivos no /etc/fbtab. Veja o manual do fbtab(5) para
obter maiores informaes.
Siga este simples procedimento quando quizer adicionar dispositivos de controle
outros equipamentos no GENRICOS que no tiverem entradas apropriadas.
Nota: Todas as controladoras SCSI usam a mesma entrada sob o /dev, de forma que
estes no requerem que os dispositivos sejam manualmente criados. As placas de rede
e SLIP/PPP no tem dispositivos de controle sob o /dev, de forma que voc no deve
se preocupar tambm com estes equipamentos.

Se algo der errado


H 5 categorias de problemas que podem ocorrer ao compilar um kernel
personalizado. Elas so:
Falhas na configurao:
Se a rotina config(8) falhar, provvel que voc tenha cometido um erro
bastante simples. Felizmente, o config(8) indicar o nmero 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 opo em questo est corretamente
configurada, comparando o kernel GENRICO com sua outra referncia de
arquivo de kernel.
Falha no make:
Se o comando make falhar, indicao de que existem erros no seu arquivo de
configurao do kernel, mas estes erros no so suficientemente claros para o
config(8)indeitifca-lo. Mas uma vez, d uma olhada em seu arquivo de
configurao do kernel, e se no conseguir solucionar a questo, envie uma
mensagem de correio eletrnico para lista de discusso FreeBSD de perguntas
genricas com a configurao do seu kernel, de forma que o problema seja
diagnosticado de forma rpida.
Falha na instalao do kernel:
Se o kernel estiver perfeitamente compilado, e no foi instalado corretamente
(no caso do comando comando make install ou make installkernel ter falhado), a
primeira prividncia a se tormar verificar se seu sistema no est sendo
executado com nvel de segurana positivo (securelevel 1 ou superior -
veja init(8)). O processo de instalao do kernel tenta modifcar a regio de
memria que armazena informaes sobre o kernel, e coloca esta memria em
uma outra regio. Se o nvel de segurana for 1 ou superior, o acesso direto
memria no permitido. A instalao do kernel precisar ser feita no nvel de
segurana 0 ou inferior.
O kernel no carrega:
Se o kernel novo no carregar, ou falhar no momento de reconhecer os
dispositivos instalados em seu sistema, no se apavore! Felizmente o FreeBSD
tem um excelente mecanismo de recuperao de kernel incompatvel. Escolha o
kernel que voc deseja carregar e inicie o FreeBSD com ele. Para fazer isso,
quando o sistema de inicializao estiver na contagem regressiva de 10
segundos, aperte qualquer tecla, exceto a tecla Enter, use o comando unload e
ento 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 idia manter um kernel confivel (ou uma cpia dele)
quando comear o processo de recompilao e instalao de um novo.
Depois de carregar um kernel funcional, verifique o arquivo de configurao do
seu kernel customizado (o que falhou), corrija as possveis deficincias 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 precauo, e mantenha um GENERIC, ou qualquer outro kernel
funcional, disponvel. Voc no pode confiar sempre no kernel.old
pois no caso de um segundo kernel problemtico ser instalado, o
problemtico anterior ser okernel.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 segurana para o
nome original de kernel, pois comandos como o ps(1) podem no
funcionar corretamente. O comando seguir ``destrava'' as opes 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 instalao, provvel que esteja usando o FreeBSD
em nvel de segurana (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 configurao pode ser
feita antes do incio da configurao do novo kernel.
Se voc quizer assegurar seu kernel e ``trava-lo'' em algum local, de
forma que seu kernel funcional no possa ser modificado ou alterado,
faa o seguinte:
# chflags schg /kernel
No FreeBSD 5.X, o kernel no instalado em uma regio da memria
que no pode ser modificado, de forma que este problema
especficamente, seja improvvel como causa das dificuldades que
voc est tendo.
O kernel funciona, mas o ps(1) no funciona mais:
Se voc instalou uma verso do kernel diferente da verso dos uitilitrios do
sistema, por exemplo, um kernel 4.X em um sistema 3.X, vrios comandos de
estatsticas do sistema como ps(1) e vmstat(8) no no funcionaro mais. A
biblioteca libkvm deve ser recompilada, bem como estes utilitrios todos. por
essa razo que normalmente no uma boa idia usar um kernel de verso
diferente de todo o resto do sistema operacional.