| FreeBSD e Dispositivos de Estado Sólido | ||
|---|---|---|
| Anterior | ||
Na sessão Seção 3, foi mencionado que o sistema de arquivos /var criado pelo /etc/rc.diskless2 e a presença de uma partição raiz em modo de apenas leitura causariam problemas com muitos softwares utilizados normalmente com o FreeBSD. Nesta sessão vamos dar algumas sugestões para rodar com sucesso o cron, o syslogd, o web server apache, instalação de aplicativos via ports.
No /etc/rc.diskless2 existe uma variável chamada var_dirs. Esta variável consiste em uma lista de diretórios (separados por espaço em branco) os quais serão criados dentro do /var depois que ele for montado como um sistema de arquivo em memória. O diretório cron e o cron/tabs não estão nesta lista, e sem estes diretórios, o cron não irá executar. Inserindo o cron, cron/tabs, e se possível também o at, e o at/jobs como elementos desta variável, você irá possibilitar a execução dos daemons cron(8) e at(1).
Entretanto, isto não resolve o problema de manutenção das tabs do cron entre um boot e outro. Quando o sistema reseta, o sistema de arquivos /var que esta em memória irá desaparecer, e qualquer tab do cron que você tenha nele irá desaparecer também. Desta forma, uma solução pode ser criar as tabs do cron para os usuários que precisam delas, monte o seu / em modo de leitura e esscrita e copie as tabs do cron para algum lugar seguro, como por exemplo para /etc/tabs, e então adicione uma linha no final do /etc/rc.diskless2 que copie estas crontabs para o diretório /var/cron/tabs depois que o diretório tiver sido criado durante a inicialização do sistema. Você pode precisar adicionar uma linha que altere as permissões dos diretórios que você criou e dos arquivos que você copiou com o /etc/rc.diskless2.
O syslog.conf especifica a localização de certos arquivos de log que precisam existir no diretório /var/log. Estes arquivos não são criados pelo /etc/rc.diskless2 durante a inicialização do sistema. Desta forma, em algum lugar no /etc/rc.diskless2, depois da sessão que cria os diretórios no /var, você vai precisar criar algo como:
# touch /var/log/security /var/log/maillog /var/log/cron /var/log/messages # chmod 0644 /var/log/*
Voce também terá que adicionar o diretório log a lista de diretórios que o /etc/rc.diskless2 cria.
Antes de iniciar a discussão sobre as alterações necessárias para usar com sucesso a árvore do ports, é necessário um lembrete a respeito da natureza de apenas leitura do seu sistema de arquivos na sua unidade de memória flash. Uma vez que ele é montado em modo de apenas leitura, você irá precisar montá-lo temporariamente em modo de leitura e escrita usando a sintaxe de comando mostrada na sessão Seção 3. Você deve remontar esses sistemas de arquivos em modo de apenas leitura sempre que finalizar qualquer tipo de manutenção - operações de escrita desnecessárias podem encurtar consideravelmente a vida útil da sua memória flash.
Para que seja possivel entrar no diretório de um port e executar com sucesso o comando make install, e necessário que o arquivo /var/db/port.mkversion exista, e que contenha a data correta. Além disso, nós precisamos criar um diretório para os pacotes em um sistema de arquivo que não seja montado em memória RAM, o qual irá manter o registro dos nossos pacotes entre um boot e outro. Por causa disso é necessário montar o seu sistema de arquivos em modo leitura e escrita sempre que que for necessário instalar algum aplicativo, de forma que é correto assumir que teremos que reservar uma área em nossa unidade flash na qual as informações dos pacotes serão gravadas.
Primeiro, crie um diretório para conter o banco de dados dos pacotes. Ele normalmente fica localizado no /var/db/pkg, mas nós não podemos colocá-lo ali, pois do contrário ele irá desaparecer sempre que o sistema for resetado. Desta forma precisamos colocá-lo em um local seguro, por exemplo:
# mkdir /etc/pkg
Agora, adicione uma linha ao /etc/rc.diskless2 a qual cria um link simbólico do /var/db/pkg para o diretório /etc/pkg . Algo como:
# ln -s /etc/pkg /var/db/pkg
Adicione uma outra linha no /etc/rc.diskless2 a qual cria e povoa o arquivo /var/db/port.mkversion
# touch /var/db/port.mkversion # chmod 0644 /var/db/port.mkversion # echo 20010412 >> /var/db/port.mkversion
onde 20010412 deve ser a data apropriada para a sua versão específica do FreeBSD.
Agora, sempre que você montar o seu sistema de arquivo em modo de leitura e escrita e instalar um pacote, o comando make install irá funcionar corretamente, pois ele irá encontrar um /var/db/port.mkversion adequado, e as informações do pacote serão gravadas com sucesso no /etc/pkg (porque o sistema de arquivo estará, neste momento, montado em modo de leitura e escrita) o qual estará sempre disponível para o sistema operacional como /var/db/pkg.
O apache mantém seus arquivos de processo (pids) e logs no apache_install/logs. Uma vez que este diretório fica localizado no sistema de arquivo montado em modo de apenas leitura, ele não irá funcionar. E necessário adicionar um novo diretório a lista de diretórios que o /etc/rc.diskless2 cria no /var, para linkar o apache_install/logs para o /var/log/apache. Também será necessário configurar as permissões e o proprietario deste novo diretório.
Primeiro, adicione o diretório log/apache à lista de diretórios a serem criados pelo /etc/rc.diskless2.
Segundo, adicione os comandos abaixo ao /etc/rc.diskless2 logo depois da sessão de criação dos diretórios:
# chmod 0774 /var/log/apache # chown nobody:nobody /var/log/apache
Finalmente, remova o diretório apache_install /logs, e o substitua por um link simbólico:
# rm -rf (apache_install)/logs # ln -s /var/log/apache (apache_install)/logs
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>.