3. Construção da Release (Versão)

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.

3.1. Construindo uma Release (Versão)

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).

Nota:

É 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.

3.2. Software Contribuído (ports)

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 é 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.

3.3. ISOs das Releases (Versões)

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.

3.3.1. Disco 1

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.

3.3.2. Disco 2

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.

3.3.3. Suporte para vários volumes

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>.