A inicialização pós boot em um sistema FreeBSD embedded é controlada pelo /etc/rc.diskless2 (o /etc/rc.diskless1 é para o boot diskless usando BOOTP). Este script é chamado através da inserção de uma linha no /etc/rc.conf como a seguir:
diskless_mount=/etc/rc.diskless2
O rc.diskless2 monta o /var em um sistema de arquivo em memória RAM, cria uma lista de diretórios configuráveis no /var com o comando mkdir(1), altera as permissões de alguns destes diretórios, e prepara uma cópia das entradas de dispositivo tornando o /dev uma partição gravável (novamente um sistema de arquivo em memória). Na execução do /etc/rc.diskless2, uma outra variável do rc.conf irá ser consultada - varsize. O /etc/rc.diskless2 cria a partição /var com um tamanho baseado no valor desta variável do rc.conf:
varsize=8192
Lembre-se que este valor está em setores. A criação da partição /dev pelo /etc/rc.diskless2, entretanto, é governada por um valor pré-definido de 4096 setores. É muito simples alterar essa entrada no /etc/rc.diskless2, embora você não precise de mais espaço para o /dev.
É imporante lembrar que o script /etc/rc.diskless2 assume que você já removeu a sua partição /tmp convencional e que já a subistituiu por um link simbólico para /var/tmp. Como o tmp é um dos diretórios criados no /var pelo script /etc/rc.diskless2, e uma vez que o /var é um sistema de arquivo em memória (o qual é montado com permissão para escrita e leitura), o /tmp agora também irá permitir operações de leitura e escrita.
O fato do /var e do /dev serem sistemas de arquivos com permissões de leitura e escrita é uma importante distinção, uma vez que a partição / (e qualquer outra que você tenha em sua midia flash) deve ser montada em modo de apenas leitura. Lembre-se que na Seção 1 nós detalhamos as limitações da memória flash - especificamente a capacidade limitada de escrita por setor. A importância de não montar os sistemas de arquivo da sua unidade flash em modo de leitura e escrita, e a importância de não utilizar uma area de swap, não pode ser menosprezada. Uma area de swap em um sistema de produção sob alta demanda, pode inutilizar uma unidade flash em menos de um ano de uso. A geração intensa de arquivos de logs, bem como a criação e remoção de arquivos temporários em larga escala podem fazer o mesmo. Consequentemente, em complemento a remoção das entradas de swap e do /proc do seu arquivo /etc/fstab, você deve alterar as opções de cada um dos sistemas de arquivos para ro (apenas leitura) como mostrado a seguir:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1a / ufs ro 1 1
Algumas aplicações em um sistema médio irão começar a apresentar problemas imediatamente como resultado desta alteração. Por exemplo, não será possivel instalar um port a partir da árvore de ports porque o arquivo /var/db/port.mkversion não existe, o cron não irá executar de forma correta como resultado da inexistência dos cron tabs no /var criado pelo /etc/rc.diskless2, e o syslog e o dhcp irão encontrar problemas como resultado do sistema de arquivo em modo de apenas leitura e da inexistência de arquivos no /var que o /etc/rc.diskless2 criou. Estes são apenas problemas temporários, os quais já estão endereçados, juntamente com outras soluções para a execução de outros pacotes de software comuns na sessão Seção 6.
Um conceito importante de se ter em mente é que um sistema de arquivos foi montado como apenas leitura pelo /etc/fstab pode ser alterado para o modo de leitura e escrita a qualquer momento através do uso do seguinte comando:
# /sbin/mount -uw partition
e pode ser convertido de volta para o modo apenas de leitura com o comando:
# /sbin/mount -ur partition
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>.