Portes versus PKG
FreeBSD pode utilizar o sistema de portes ou o sistema de pacotes para instalar aplicativos.
No sistema de portes, todos os aplicativos são instalados a partir do código fonte. Para os leigos, isso significa compilar software. Cada porte funciona como um conjunto de instruções que vão preparar o código fonte para ser compilado no formato FreeBSD.
Um porte possui um arquivo Makefile capaz de baixar, descompactar, aplicar os patches, compilar e instalar uma aplicação em seu sistema. O sistema de portes lida com todas as dependências necessárias para instalar um aplicativo.
Compilar pode ser um processo de minutos ou de muitas horas. Compilar, é basicamente uma tradição nerd e pode ser entediante, complexo e confuso para muitas pessoas.
Existe uma alternativa para quem não gosta de compilar, neste caso, a opção é utilizar pacotes que já estão pré-compilados. Isso pode economizar algum tempo, mas limita muitas das escolhas que a compilação proporciona.
Na versão 10.0, um novo sistema de pacotes chamado de
pkg Next Generation (pkgng) foi introduzido. Ele funciona de modo similar ao
YUM ou ao
APT, que você já conhece de sistemas
GNU/Linux. Com o sistema
pkg Next Generation, é possível que programas instalados por portes e pacotes convivam simultaneamente.
Informações adicionais sobre
pkgng, estão em:
Sistemas de arquivos
As primeiras versões de Unix utilizavam um sistema de arquivos identificado simplesmente como FS (File System). FS funcionou bem, enquanto os discos rígidos eram pequenos e lentos. Entretanto, isso mudou radicalmente ao longo do tempo e usar FS se tornou difícil.
O empenho de Marshall Kirk nos anos 1980, levou a um aprimoramento na versão BSD-4.2 e FS passou a ser conhecido como FFS (Fast File System). A partir da versão BSD-4.4 (da qual são derivados FreeBSD, NetBSD e OpenBSD), o aprimoramento de FFS levou ao desenvolvimento do UFS, que é implementado em duas camadas para fins de compatibilidade.
Uma camada superior que provê a estrutura de diretórios e suporta metadados (permissões, propriedade, etc) na estrutura inode e uma inferior que proporciona os recipientes de dados implementados como inodes. Isso é feito de modo que tanto o tradicional FFS quanto LFS (Log-structured File System) compartilhem código para estruturas semelhantes. A camada superior é chamada de UFS e as camadas inferiores são reconhecidas como FFS e LFS. Observe que
ext2 foi inspirado em UFS1, todavia, não são compatíveis.
A versão UFS presente em FreeBSD, estendeu as camadas de FFS (Fast File System) para suportar uma variante nova, denominada UFS2. Isso adiciona ponteiros de bloco de 64 bits, permitindo que os volumes possam crescer até 8 zettabytes.
Entre suas principais características, estão os blocos de tamanho variável, campos sinalizadores estendidos e suporte a atributos estendidos. O FreeBSD também introduziu atualizações leves, além da habilidade de tirar retratos instantâneos (snapshots) tanto para UFS1 quanto UFS2.
Durante a instalação, também é possível criar partições do tipo
ext2, caso precise de um espaço compartilhado entre FreeBSD e sistemas GNU/Linux. Não é possível compartilhar discos UFS com sistemas GNU/Linux ou Windows em modo de gravação. A montagem compartilhada de partições UFS é limitada a somente-leitura (read only) entre sistemas FreeBSD e GNU/Linux.
Outra opção de sistema de arquivos muito famosa em FreeBSD é ZFS - Zetta File System. ZFS é um sistema de arquivos voltado para a criação de um pool de discos (storage) e não é fácil de configurar e gerenciar. A utilização de ZFS é voltada para grandes sistemas corporativos que precisam de muito espaço em disco e facilidades para criar cópias de segurança.
ZFS foi desenvolvido pela Sun Microsystems e inclui proteção contra corrupção de dados (RAID-Z), compressão e criptografia de dados nativa, snapshots, suporte nativo para ACLs em NFSv4 e uma dezena de novas funções voltadas para produtividade, segurança e desempenho. ZFS utiliza discos inteiros em vez de partições, assim, um disco à parte para o sistema operacional é necessário.
Organização dos discos
FreeBSD possui um modo peculiar para identificar as unidades de disco. Observe:
- Discos IDE e SATA são identificados como "ada ou ad".
- Discos SCSI e unidades USB, incluindo pen drivers são identificados por "da".
- CD-ROM IDE ou SATA são identificados por "cd ou acd".
- Unidades de disquete são identificadas como "fd".
- Unidades de fita do tipo SCSI são chamadas por "sa".
- Unidades de fita do tipo IDE são reconhecidas como "ast".
- Unidades de RAID são nomeadas de acordo com o fabricante. Por exemplo, "aacd" para Adaptec Advanced Raid ou "twed" para 3ware Raid. Os nomes são os mais variados possíveis neste caso.
A nomenclatura de discos pode variar em função do particionamento MBR ou GPT. Por exemplo, no particionamento GPT de duas unidades IDE (master e slave), as partições são identificadas do seguinte modo:
- ada0 é a unidade master;
- ada1 é a unidade slave;
- ada0p1 é a primeira partição na unidade master;
- ada1p3 é a terceira partição na unidade slave.
Observe que em GPT não há o conceito de partições lógicas e todas as partições (até 128 partições por disco) são primárias. Observe um arquivo
/etc/fstab típico para um sistema com dois discos IDE (master e slave) utilizando GPT como particionamento.
Em GPT não há os conceitos de slices, partição estendida, partições lógicas. Para GPT todas as 128 partições são primárias.
Quando o particionamento é do tipo MBR, a nomenclatura será outra. Em sistemas MBR FreeBSD pode funcionar utilizando o conceito de pedaços de disco (slice). São permitidos até quatro slices (4 partições primárias).
Considere um disco IDE master (ada0), esse disco já possui um sistema Windows XP na primeira partição, reconhecida como unidade "C:", pelo Windows. Então, essa unidade "C:" do Windows XP é para o FreeBSD reconhecida como
ada0s1 (Unidade Master IDE - ada0 - slice 1).
Caso o restante do disco seja dedicado para FreeBSD, esse pedaço é reconhecido como
ada0s2. O slice é um container para o sistema FreeBSD. Assim, caso o sistema seja instalado com os seguintes pontos de montagem (/, SWAP, /var e /usr), eles serão nomeados com nomes distintos. Para o FreeBSD, as fatias do slice são associadas com letras minúsculas que vão de "a" até "h".
A raiz deve ser associada a
ada0s2a, o SWAP será
ada0s2b, o
/var será
ada0s2e (lógica dentro do slice?) e o
/usr será
ada0s2f (lógica dentro do slice?).
O sistema de arquivos UFS utilizado em FreeBSD, é um dos poucos sistemas de arquivos que permitem a ampliação de uma partição física com o sistema ativo (on the fly). Para tanto, é utilizado o comando:
growfs(8)
Conclusão
FreeBSD nunca será um sistema amigável, mas comparado com versões de 10 anos atrás, ele já é um sistema utilizável sob vários aspectos.
Espero que este artigo desperte, ao menos, a curiosidade de instalar para testes.