Quando várias máquinas precisam rastrear a mesma árvore de código-fonte, é um desperdício de espaço em disco, largura de banda de rede e ciclos de CPU se cada sistema tiver que baixar o código-fonte e recompilar tudo. A solução é ter uma máquina fazendo a maior parte do trabalho, enquanto o resto das máquinas montam esse trabalho via NFS. Esta seção descreve um método para fazer isso. Para maiores informações sobre o uso de NFS, consulte Seção 29.3, “Network File System (NFS)”.
Primeiro, identifique um conjunto de máquinas que executará o mesmo conjunto de binários, conhecido como conjunto de compilação. Cada máquina pode ter um kernel customizado, mas executará os mesmos binários do userland. A partir desse conjunto, escolha uma máquina para ser a máquina de compilação em que o sistema base e o kernel serão compilados. Idealmente, esta deverá ser uma máquina rápida que tenha CPU suficiente disponível para executar o make buildworld
e o make buildkernel
.
Selecione uma máquina para ser a máquina de teste, que testará as atualizações de software antes de serem colocadas em produção. Esta deve ser uma máquina que você possa se dar ao luxo de ficar inativa por um longo período de tempo. Pode ser a máquina de compilação, mas não precisa ser.
Todas as máquinas neste conjunto de compilação precisam montar o /usr/obj
e o /usr/src
da máquina de compilação através do NFS. Para vários conjuntos de compilação, o /usr/src
deve ser um sistema de arquivos local na máquina de compilação e um sistema montado por NFS nas demais.
Certifique-se de que o /etc/make.conf
e o /etc/src.conf
em todas as máquinas no conjunto de compilação concordem com a máquina de compilação. Isso significa que a máquina de compilação deve compilar todas as partes do sistema base que qualquer máquina no conjunto de compilação irá instalar. Além disso, cada máquina de compilação deve ter seu nome de kernel definido com KERNCONF
em /etc/make.conf
, e a máquina de compilação deve listá-los todos em seu KERNCONF
, listando seu próprio kernel primeiro. A máquina de compilação deve ter os arquivos de configuração do kernel para cada máquina em seu /usr/src/sys/
.arch
/conf
Na máquina de compilação, compile o kernel e o mundo conforme descrito em Seção 23.5, “Atualizando o FreeBSD a partir do código fonte”, mas não instale nada na máquina de compilação. Em vez disso, instale o kernel compilado na máquina de teste. Na máquina de teste, monte /usr/src
e o /usr/obj
via NFS. Em seguida, execute shutdown now
para ir para o modo de usuário único para instalar o novo kernel e o restante do sistema base e execute o mergemaster
como de costume. Quando terminar, reinicialize para retornar às operações multiusuário normais.
Depois de verificar se tudo na máquina de teste está funcionando corretamente, use o mesmo procedimento para instalar o novo software em cada uma das outras máquinas no conjunto de compilação.
A mesma metodologia pode ser usada para a árvore de ports. O primeiro passo é compartilhar o /usr/ports
via NFS para todas as máquinas no conjunto de compilação. Para configurar o /etc/make.conf
para compartilhar os distfiles, configure o DISTDIR
para um diretório compartilhado que possa ser escrito por qualquer usuário root
mapeado pela montagem NFS. Cada máquina deve definir o WRKDIRPREFIX
para um diretório de compilação local, se os ports precisarem ser compilados localmente. Como alternativa, se o sistema de compilação tiver que compilar e distribuir pacotes para as máquinas no conjunto de compilação, configure o PACKAGES
no sistema de compilação para um diretório semelhante ao DISTDIR
.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.