As “releases” do FreeBSD podem ser construídas por qualquer pessoa com uma máquina rápida e acesso a um repositório de código-fonte. (Isso deveria ser todo mundo, já que oferecemos acesso ao Subversion! Veja a seção sobre Subversion no Handbook para detalhes.) O único requisito especial é que o dispositivo md(4) esteja disponível. Se o dispositivo não estiver carregado em seu kernel, então o módulo do kernel deve ser carregado automaticamente quando o mdconfig(8) for executado durante a fase de criação da mídia de boot. Todas as ferramentas necessárias para construir uma release estão disponíveis no repositório Subversion em src/release
. Essas ferramentas visam fornecer uma maneira consistente de construir versões do FreeBSD. Uma release completa pode ser construída com apenas um único comando, incluindo a criação de imagens ISO adequadas para gravação em CD-ROM ou DVD e um diretório para instalação por FTP. A pagina de manual release(7) documenta completamente o script src/release/generate-release.sh
que é usado para construir uma release. O generate-release.sh
é um invólucro em torno do target do Makefile: make release
.
A página de manual release(7) documenta os comandos exatos necessários para construir uma Release do FreeBSD. As seguintes sequências de comandos podem construir uma versão 9.2.0:
#
cd /usr/src/release
#
sh generate-release.sh release/9.2.0 /local3/release
Depois de executar esses comandos, todos os arquivos preparados da versão estarão disponíveis no diretório /local3/release/R
.
O release Makefile
pode ser dividido em várias etapas distintas.
Criação de um ambiente de sistema limpo em uma hierarquia de diretório separada com “make installworld
”.
Checkout do Subversion de uma versão limpa do código fonte do sistema, da documentação e e da coleção de ports na hierarquia de build do release.
Popula o /etc
e o /dev
no ambiente chrooted (Processo de transferir o diretório root para outro lugar).
Faz chroot na hierarquia de build (construção) da release, para tornar mais difícil para o ambiente externo corromper essa construção.
Execução do comando make world
no ambiente chrooted.
Compilação dos binários relacionados ao Kerberos.
Compilação do kernel GENERIC
.
Criação uma árvore de diretórios temporários onde as distribuições binárias serão compiladas e empacotadas.
Compilação e instalação do toolchain necessário para converter o fonte da documentação (SGML) em HTML e demais documentos de texto que acompanharão a versão.
Compilação e instalação da documentação propriamente dita (manuais do usuário, tutoriais, notas de versão, listas de compatibilidade de hardware e assim por diante).
Empacotamento dos tarballs de distribuição dos binários e fontes.
Criação da hierarquia de instalação por FTP.
(opcionalmente) Criação das imagens ISO para mídia de CDROM/DVD.
Para obter maiores informações sobre a infraestrutura de criação de versões, consulte release(7).
É importante remover qualquer configuração específica do seu servidor do /etc/make.conf
. Por exemplo, seria imprudente distribuir binários que foram compilados em um sistema com CPUTYPE
configurado para um processador específico.
A Coleção de Ports do FreeBSD é uma coleção de mais de 24.000 pacotes de software de terceiros disponíveis para o FreeBSD. A Equipe de Gerenciamento de Ports <portmgr@FreeBSD.org>
é responsável por manter uma árvore de ports consistente que pode ser usada para criar os pacotes binários que acompanham as releases oficiais do FreeBSD.
Começando no FreeBSD 4.4, o Projeto FreeBSD decidiu liberar todas as quatro imagens ISO que eram vendidas anteriormente nas distribuições “oficiais” em CDROM pela BSRi/Wind River Systems/FreeBSD Mall. Cada um dos quatro discos deve conter um arquivo README.TXT
que explica o conteúdo do disco, um arquivo CDROM.INF
que fornece metadados do disco para que o bsdinstall(8) possa validar e usar o conteúdo, e um arquivo filename.txt
que fornece um manifesto para o disco. Este manifesto pode ser criado com um simples comando:
/stage/cdrom#
find . -type f | sed -e 's/^\.\///' | sort > filename.txt
Os requisitos específicos de cada CD são descritos abaixo.
O primeiro disco é quase completamente criado por make release
. As únicas alterações que devem ser feitas no diretório disc1
são a adição de um diretório tools
e tantos pacotes de software de terceiros quanto couberem no disco. O diretório tools
contém software que permite aos usuários criar disquetes de instalação a partir de outros sistemas operacionais. Esse disco deve ser inicializado para que os usuários dos PCs modernos não precisem criar disquetes de instalação.
Se um kernel customizado do FreeBSD precisa ser incluído, então o bsdinstall(8) e o release(7) deve ser atualizado para incluir instruções de instalação. O código relevante está contido em src/release
e src/usr.sbin/bsdinstall
. Especificamente, os arquivos src/release/Makefile
, dist.c
, dist.h
, menus.c
, install.c
, e Makefile
precisarão ser atualizados em src/usr.sbin/bsdinstall
. Opcionalmente, você pode escolher atualizar o bsdinstall.8
.
O segundo disco também é largamente criado por make release
. Este disco contém um “live filesystem” que pode ser usado por bsdinstall(8) para solucionar problemas de instalação do FreeBSD. Este disco deve ser inicializável e também deve conter uma cópia compactada do repositório CVS no diretório CVSROOT
e demos de software comercial no diretório commerce
.
O Sysinstall suporta a instalação de pacotes a partir de vários volumes. Isso requer que cada disco tenha um arquivo INDEX
contendo todos os pacotes em todos os volumes de um conjunto, junto com um campo extra que indica em qual volume esse pacote específico está. Cada volume no conjunto também deve ter a variável CD_VOLUME
definida no arquivo cdrom.inf
para que o bsdinstall possa informar qual volume é qual. Quando um usuário tentar instalar um pacote que não esteja no disco atual, o bsdinstall solicitará que o usuário insira o disco apropriado.
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>.