Como descobrir a versão do FreeBSD?

Quando você precisa fornecer informações sobre o software instalado, para obter ajuda ou saber se um determinado tutorial vai servir ou não, conhecer a versão do FreeBSD e o kernel instalado, pode ser muito útil.
Veja, aqui, algumas maneiras de obter estas informações.
O comando freebsd-version procura determinar a versão e o patch level do sistema instalado.
Pode ser executado “puro” ou acompanhado das opções ‘-k’ ou ‘-u’. Veja o exemplo:

freebsd-version 
10.3-STABLE

A opção ‘-k’ exibe a versão e o patch level do kernel instalado.
Diferente do uname, que iremos abordar mais a frente, se alguma versão mais nova do kernel tiver sido instalada, o freebsd-version vai imprimir a versão do novo kernel e não do atual, mesmo que você ainda não tenha reiniciado a máquina.
A opção ‘-u’ exibe a versão e o patch level do userland instalado.


O comando uname vai exibir um conjunto maior de informações, que inclui a versão do kernel instalado e a arquitetura da máquina.
No exemplo, abaixo, o comando exibe todas as informações que ele consegue obter do sistema:

uname -a 
FreeBSD brain 10.3-STABLE FreeBSD 10.3-STABLE #0 r300060: Tue May 17 19:23:37 UT
C 2016
root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC  amd64

Você pode obter apenas a versão do FreeBSD, com o comando uname, assim:

uname -rs 
FreeBSD 10.3-STABLE

Veja um conjunto de exemplos:

# exibe o kernel ident 
uname -i 
GENERIC

# mostra a versão do kernel do FreeBSD
uname -K 
1003502

# exibe o tipo de arquitetura da plataforma em que está sendo executado
uname -m 
amd64

# mostra o nome dado a este sistema
uname -n 
brain

# faz o mesmo que -s, para manter a compatibilidade com outros sistemas
uname -o 
FreeBSD

# exibe o tipo de arquitetura do processador atual
uname -p 
amd64

# exibe a versão atual do sistema operacional
uname -r 
10.3-STABLE

# exibe o nome do sistema operacional instalado
uname -s 
FreeBSD

# mostra a versão do FreeBSD dentro do ambiente de usuário
uname -U 
1003502

# mostra o nível de versão do sistema operacional
uname -v
FreeBSD 10.3-STABLE #0 r300060: Tue May 17 19:23:37 UTC 2016     root@releng1.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC

Você pode obter informações sobre a arquitetura do sistema com o getconf:

getconf LONG_BIT 
64

Por fim, é possível saber mais sobre o processador do sistema de hardware, com o comando sysctl. Veja um exemplo:

sysctl -a | egrep -i 'hw.machine|hw.model|hw.ncpu' 
hw.machine: amd64
hw.model: AMD Phenom(tm) 9550 Quad-Core Processor
hw.ncpu: 1
hw.machine_arch: amd64

Referências

http://serverfault.com/questions/593318/where-does-uname-get-version-number-in-freebsd-release.

Como instalar e configurar o sudo no FreeBSD

Novos usuários do FreeBSD, recém chegados de distribuições GNU/Linux, como Debian ou Ubuntu, sentirão falta de realizar tarefas administrativas triviais, sem a necessidade de ter que se autenticar como root, o tempo inteiro.
O sudo permite instalar um programa “rapidinho” e seguir usando o sistema como usuário normal e em segurança.
Algumas instalações padrão do FreeBSD podem não vir com o sudo pronto para usar.
Se você já configurou o Ports no seu sistema, siga o procedimento descrito abaixo:

login root
cd /usr/ports/security/sudo
make install clean

Depois de finalizado, será necessário apenas configurar o sudo.
No FreeBSD, o arquivo de configuração do utilitário fica em /usr/local/etc/sudoers.
Para editá-lo, é necessário usar o comando visudo.
Se você não sabe como deve configurar o sudo, leia este post.
Em seguida, faça logout do usuário root e teste o sudo:

exit
sudo ls 
             
            We trust you have received the usual lecture from the local System
            Administrator. It usually boils down to these three things:

                #1) Respect the privacy of others.
                #2) Think before you type.
                #3) With great power comes great responsibility.

            Password: 
            .cshrc          .login_conf     .mailrc         .rhosts         .ssh
            .login          .mail_aliases   .profile        .shrc
            $  

Como instalar aplicativos do Ports Collection no FreeBSD

O sistema operacional FreeBSD, provê o Ports Collection como recurso simplificador da instalação de aplicativos no seu sistema.
Cada port contém todo e qualquer patch necessário para permitir que o código fonte original do software seja compilado — e o binário resultante possa ser executado.
Normalmente, o Ports Collection é selecionado para download, já durante a instalação do sistema. Se isto não foi feito, você terá um diretório /usr/ports vazio.

Como trazer o Ports Collection

Antes de poder usar o recurso, é necessário obter a coleção e guardá-la no diretório /usr/ports.
O comando portsnap, do FreeBSD, automatiza o processo para você — baixando, instalando e, quando necessário, sincronizando o Ports Collection da internet.
Use o ‘fetch’, para pegar “a coleção”:

portsnap fetch
Looking up portsnap.FreeBSD.org mirrors... none found.
Fetching snapshot tag from portsnap.FreeBSD.org... done.
Fetching snapshot metadata... done.
Updating from Wed Jul 20 15:21:53 BRT 2016 to Wed Jul 20 16:36:14 BRT 2016.
Fetching 4 metadata patches... done.
Applying metadata patches... done.
Fetching 0 metadata files... done.
Fetching 5 patches.
(5/5) 100.00%  done.
done.
Applying patches...
done.
Fetching 0 new ports or files... done.

A função deste comando é baixar um snapshot, ou imagem, da árvore de ports ou atualizar o que já existe.
Depois do download/sincronização, é hora de extrair a árvore de ports, colocando cada arquivo em seu lugar.
Note que o comando que segue (extract) só deve ser usado na primeira vez em que você for instalar os Ports Collection em seu sistema — uma vez que ele irá sobrepor todo o conteúdo do /usr/ports e seus subdiretórios.

portsnap extract

O processo pode ser um pouco demorado, a depender da sua conexão.
Se o diretório /usr/ports não estiver vazio, o comando ‘update’ deverá ser usado no lugar do ‘extract’.
Daqui pra frente, em resumo, não use mais o ‘extract’.
O comando ‘update’ pode ser usado para atualizar a árvore de ports previamente extraída.
É necessário rodar este comando para aplicar as mudanças feitas aos ports, após os downloads de atualizações através do ‘fetch’ ou do ‘cron’.
Este comando sobrescreve o conteúdo preexistente.

portsnap update
portsnap update 
Removing old files and directories... done.
Extracting new files:
/usr/ports/devel/avro-c/
 ...
/usr/ports/net/ntpa/
Building new INDEX files...  

Como encontrar aplicativos para instalar no FreeBSD

Você pode pesquisar dentro dos ports ou dentro do próprio diretório /usr/ports — para encontrar os aplicativos que necessita e saber exatamente o nome do pacote a ser instalado.
Se souber o nome exato do pacote, pode usar o comando whereis, assim:

whereis mpg123 
mpg123: /usr/ports/audio/mpg123

Caso queira encontrar os nomes dos pacotes relacionados ao Apache 2.4, use um dos dois métodos abaixo:

pkg search apache24 
apache24-2.4.23_1              Version 2.4.x of Apache web server

ou (preferível):

make search name=apache24 

Certifique-se de estar sob o diretório /usr/ports, para executar este comando.

Port:   apache24-2.4.23_1
Path:   /usr/ports/www/apache24
Info:   Version 2.4.x of Apache web server
Maint:  apache@FreeBSD.org
B-deps: apr-1.5.2.1.5.4 autoconf-2.69_1 autoconf-wrapper-20131203 automake-1.15_
1 automake-wrapper-20131203 db5-5.3.28_4 expat-2.2.0 gdbm-1.12 gettext-runtime-0.19.8.1 indexinfo-0.2.4 libtool-2.4.6 libxml2-2.9.3 m4-1.4.17_1,1 pcre-8.39 perl 5-5.20.3_13
R-deps: apr-1.5.2.1.5.4 db5-5.3.28_4 expat-2.2.0 gdbm-1.12 gettext-runtime-0.19.8.1 indexinfo-0.2.4 libxml2-2.9.3 pcre-8.39 perl5-5.20.3_13
WWW:    http://httpd.apache.org/

Ao usar o ‘make search’ ou o ‘pkg search’, não é necessário saber o nome exato do pacote. Você pode fazer uma busca por parte do nome e usar o comando grep para filtrar os resultados:

make search name=libreoffice | grep -i portuguese
Path:   /usr/ports/portuguese/libreoffice
Path:   /usr/ports/portuguese/libreoffice-pt_BR

Use os parâmetros ‘search key’ para obter uma lista de pacotes relacionados ao que você deseja:

make search key=php7

Se a lista for muito grande, use o comando less, para pausar a exibição:

make search key=php7 | less 

Como instalar aplicativos no sistema

Entre no diretório do aplicativo e execute a instalação.
Veja um exemplo de como instalar o emulador dosbox no FreeBSD:

cd /usr/ports/emulators/dosbox
make install clean  
===> Building/installing dialog4ports as it is required for the config dialog
===>  Cleaning for dialog4ports-0.1.6
===> Skipping 'config' as NO_DIALOG is defined
===>  License BSD2CLAUSE accepted by the user
===>   dialog4ports-0.1.6 depends on file: /usr/local/sbin/pkg - found
=> dialog4ports-0.1.6.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://m1cro.me/dialog4ports/dialog4ports-0.1.6.tar.gz
===>  License GPLv2 accepted by the user
===>  Found saved configuration for dosbox-0.74_11
===>   dosbox-0.74_11 depends on file: /usr/local/sbin/pkg - found
=> dosbox-0.74.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch http://downloads.sourceforge.net/project/dosbox/dosbox/0.
74/dosbox-0.74.tar.gz

Para remover este mesmo pacote, futuramente, use o ‘deinstall’:

make deinstall all

Note que o comando deve ser executado dentro daquele mesmo diretório. Fique atento.

Como obter a fase da Lua, em qualquer data, no Linux.

O comando pom é um dos comandos tradicionais e presentes, por padrão, nas distribuições Linux.
Pode ser usado dentro de um script, em que se precise estabelecer que “algo” aconteça em determinada fase da Lua.
Pelo fato de o comando ser muito simples, vou mostrar o seu funcionamento em uma máquina Debian 9 Stretch e em uma FreeBSD 10.3.
Há pequenas variações em seu funcionamento.
Em ambas, é possível obter a fase lunar atual, com uma simples execução:

pom
The Moon is Waxing Gibbous (81% of Full)

Ou seja “A Lua está um Quarto Minguante (81% cheia)”.

O pom no Linux

A versão empacotada no Debian, é escrita por Keith Brandt e é bastante simplificada.
Você pode ver um exemplo de uso do comando no site http://www.die.net/moon/moon phase
Se quiser obter a fase da Lua em uma data específica, informe-a da seguinte maneira:

pom 2016080623
Sat 2016 Aug  6 23:00:00 (UTC):  The Moon will be Waxing Crescent (17% of Full)

Repare no formato correto da data.

Os significados dos textos do pom

O pom irá usar, em função da fase lunar, os seguintes textos:

  • The Moon will be new — A Lua será nova.
  • The Moon will be Waning Crescent — A Lua estará Minguante Crescente.
  • The Moon will be Waxing Crescent — A Lua estará Quarto Crescente
  • The Moon will be Waxing Gibbous — A Lua estará Quarto Minguante
  • The Moon will be Full — A Lua será cheia
  • The Moon will be Waning Gibbous — A Lua estará Minguante
  • The Moon will be at the Last Quarter — A Lua estará no Último Quarto

O pom no FreeBSD

O pom faz parte do meta pacote bsd-games, presente nos sistemas operacionais da família BSD e no GNU/Linux.
O código do pom, no FreeBSD 10.3 é um pouco mais novo do que a versão presente no Debian.
A página do manual, contudo, não informa seu autor — mas o funcionamento básico é exatamente o mesmo.
Há algumas opções a mais para quem rodar o pom no sistema do Beastie.
Se quiser obter apenas o valor percentual, indicativo do quanto a Lua está cheia, use ‘-p’:

pom -p            
#79

Este resultado é perfeito para ser usado dentro de um script.
O formato da data é diferente também:

pom -d 2017.08.15
The Moon is Waning Crescent (50% of Full)

Se você não informar a hora, o padrão será às 23h daquele dia.
Se quiser obter uma informação com a precisão de hora, minuto e segundo, use este exemplo:

pom -d 2022.10.20 -t 15:03:45 
The Moon is Waning Crescent (23% of Full)

Referências

Coleção de jogos Unix/Linux para brincar no terminal.
https://pt.wikipedia.org/wiki/Fases_da_Lua.
http://www.calendario-365.com.br/lua/fases-da-lua.html.

Qual BSD escolher?

Há basicamente 3 grandes sistemas operacionais UNIX-like que contém a sigla BSD em seus nomes: FreeBSD, NetBSD e OpenBSD.
Neste post, vamos compreender as semelhanças e as diferenças entre algumas das distribuições BSD e os tipos de aplicações em que cada uma se encaixa.
O Berkeley Software Distribution, ou apenas BSD, historicamente, era um sistema operacional Unix, desenvolvido e distribuído pela Universidade da Califórnia, Berkeley — entre 1977 e 1995.
Veja como ele sempre esteve associado a projetos de grande porte, na história da computação.
Foi desenvolvido dentro de um departamento de pesquisas da universidade, chamado Computer Systems Research Group, ou CSRG. Inicialmente, este departamento tinha a tarefa de se dedicar a aperfeiçoar o Unix da AT&T, de onde o BSD se originou.

O CSRG era patrocinado pela Defense Advanced Research Projects Agency ou Agência de Projetos de Pesquisa Avançada de Defesa — ou simplesmente DARPA. Esta agência foi responsável pelo desenvolvimento da ARPANET, precursora do que, hoje, se conhece como a Internet.

Atualmente, o termo “BSD” é usado genericamente para se referir a qualquer um dos descendentes do sistema operacional original — o BSD Unix ou Berkeley Unix.
Seus descendentes formam uma família de sistemas operacionais importantes, de desenvolvimento ativo e largamente usados.
Historicamente, são ramificações do AT&T Unix, tendo compartilhado seu código e design até o início da década de 90.
Em função de algumas disputas judiciais e do desejo dos desenvolvedores do BSD em manter seu código livre (em liberdade), o BSD se separou de sua ascendência. Todo o código proprietário foi substituído e, em 1992, as primeiras versões livres já estavam sendo disponibilizadas.
A última versão do BSD original, de Berkeley, foi o BSD 4.4-Lite Release 2, em 1995, com a dissolução CSRG.
A partir daí, as distribuições derivadas adquiriram vida própria e independente, como iremos ver.

Além do FreeBSD, OpenBSD e do NetBSD, outros importantes projetos derivaram da versão livre do BSD — tais como o Darwin, código TCP/IP usado no Windows NT e boa parte do código que sustenta os atuais sistemas operacionais da Apple.

Os sistemas da família BSD são muito semelhantes, mas não são iguais. Tem propósitos e propostas diferentes.
Mesmo no universo GNU/Linux, há amplo espaço para o uso de código BSD, Grandes distribuições, como a Debian, podem ser baixadas e instaladas com o kernel do FreeBSD ou NetBSD.

O NetBSD

Muito similar ao FreeBSD, com código em comum, seu maior objetivo é oferecer um sistema operacional que pode ser instalado em qualquer plataforma de hardware.
O objetivo é obter a máxima portabilidade possível.
Você pode rodar o NetBSD no VAX, dispositivos PocketPC e em servidores de ponta Alpha. A lista segue com as plataformas de hardware ARM, PA-RISC, 68k, MIPS, PowerPC, SH3, SPARC, RISC-V, x86 etc.
netbsd oficial new logo
A portabilidade do NetBSD é auxiliada pelo uso de interfaces de camadas de abstração do hardware, que dá acesso ao nível mais baixo dos componentes físicos do sistema — tais como bus de entrada/saída ou a DMA.
O uso desta camada de portabilidade permite que um driver possa ser usado em diversas plataformas e reduz as horas de trabalho para portar o sistema.
Em outros sistemas operacionais, o código do driver precisa ser reescrito para cada arquitetura nova.
Na versão 7.x, o NetBSD tem suporte às mais atuais arquiteturas e plataformas de desenvolvimento:

  • 256 CPUs da arquitetura 64 bits da AMD
  • placas de múltiplos processadores ARM
  • dentre as placas ARM: Raspberry Pi 2, ODROID-C1, BeagleBoard, BeagleBone, BeagleBone Black, MiraBox, Allwinner A20,
    A31: (Cubieboard2, Cubietruck (Cubieboard3), Banana Pi etc.), Freescale i.MX50, i.MX51: (Kobo Touch, Netwalker), Xilinx Zynq: (Parallella, ZedBoard) etc.
  • kernel scripting em Lua
  • GCC 4.8.4
  • O NetBSD tomou emprestado do OpenBSD os sysctls, para impedir ataques DoS sob protocolo IPv6
  • tomou emprestado o port do Linux 3.15 DRM/KM5, para adicionar suporte a dispositvos gráficos atuais da Intel e da AMD (Radeon)

Enfim o NetBSD, de acordo com o site oficial, deve a segunda parte de seu nome ao BSD 4.4-Lite e ao lendário BSD386. A primeira parte é uma referência a Internet, como infraestrutura fundamental para seu crescimento.

O OpenBSD

O foco deste membro da família é a segurança, o que inclui ter um código o mais correto possível.
As políticas de segurança da distribuição manda revelar publicamente as falhas descobertas — o que permite às instituições que dependem dele tomar decisões para neutralizar as potenciais ameaças o mais rápido possível.
OpenBSD logo puffy
Esta política é conhecida como full disclosure e inclui outras práticas:

  • auditorias exaustivas do código, em busca de bugs e possíveis falhas que possam comprometer a segurança
  • recursos de segurança variados, como a tecnologia de proteção de página W^X e uso pesado de randomização
  • uma filosofia de segurança por padrão ou segurança desde o início (ou secure by default), que mantém desligados todos os serviços não essencial para o funcionamento do sistema. As configurações iniciais são as mais básicas e enxutas possível
  • criptografia integrada

O projeto OpenBSD deu origem a outros projetos importantes, tais como o OpenSSH, OpenNTPD, OpenBGPD, OpenSMTPD, PF, CARP, e LibreSSL. Muitos destes, projetados para substituir alternativas restritivas.

O DragonFly BSD

O principal objetivo do projeto DragonFly é oferecer suporte nativo ao clustering dentro kernel.
Este tipo de funcionalidade requer um framework sofisticado de gestão do cache para espaços de nomes do sistema de arquivos, além de espaços de arquivos e espaços de máquinas virtuais.
O DragonFly BSD tem a habilidade de permitir que programas altamente interativos rodem em múltiplas máquinas com garantia de coerẽncia de cache em todos os aspectos.
Dragonfly BSD logo
Em outras palavras, o foco é a obtenção de máxima escalabilidade — o que inclui ser fácil de entender e permitir o desenvolvimento para infraestruturas de multiprocessadores.
O projeto é um fork do FreeBSD 4.8. A esta época, os desenvolvedores desejavam promover mudanças radicais na arquitetura do kernel e introduzir suporte a plataformas de multiprocessamento simétrico.
Como objetivo de longo prazo, prover imagem transparente single system em ambientes de clusters.
Originalmente, havia suporte a plataformas IA-32, x86-64 (ou AMD64). Contudo, a partir da versão 4.0, o DragonFlyBSD abandonou o suporte a IA-32 para se concentrar apropriadamente em implementações SMP.
Trata-se de um dos mais novos membros da família, estabelecido em 2004.

O FreeBSD

Este é o BSD mais conhecido, atualmente. O foco desta distribuição é a performance. Ao mesmo tempo, ela se equilibra entre a portabilidade entre múltiplas plataformas, a segurança e a facilidade de uso.
freebsd logo full
Se “qualquer BSD” está bom para você e não houver necessidades específicas, esta é uma ótima distribuição.
Há muitas vantagens em fazer uso de sistemas operacionais ou distribuições genéricas — principalmente quando se é novato.
O fato de ser o BSD mais documentado, também ajuda no aprendizado e na implementação de projetos envolvendo esta plataforma.

O PC-BSD

Derivado direto do FreeBSD, esta é uma versão voltada para quem gostaria de ter uma interface mais facilitada de instalação e que prefere usar o ambiente gráfico.
O PC-BSD pode ser uma opção mais interessante para quem deseja aprender a usar o sistema operacional BSD, mas não quer abrir do ambiente gráfico desde o início.
PC-BSD logo oficial
Como o nome dá a entender, é voltado para instalação em PCs — desktops e notebooks, por exemplo.
Embora você possa tê-lo instalado com o KDE, XFCE, Mate ou qualquer outro ambiente com o qual você já esteja acostumado no Linux. As próximas versões oferecem o Lumina, como padrão.
lumina pc-bsd screenshot

Conclusão

Há ainda muito o que se falar sobre cada uma destas ramificações do BSD. Cada qual tem sua história.
O próprio BSD e o UNIX têm histórias muito ricas e densas.
Para ser justo, ainda há outros BSD disponíveis e que vale a pena conhecer.
Entre os que são voltados para o mesmo público do PC-BSD, citam-se o GhostBSD e o DesktopBSD.
Há o caçula da família, o Bitrig (2014) — com “foco em ferramentas e plataformas modernas”.
O BSD é grande e, tal como o Linux, não cabe em um único artigo ou verbete de enciclopédia.
Não esqueça de dar uma olhada nos links (no texto e na seção de referências, abaixo), para se aprofundar mais e conhecer melhor o universo BSD.

Referências

https://en.wikipedia.org/wiki/Berkeley_Software_Distribution.
https://en.wikipedia.org/wiki/Comparison_of_BSD_operating_systems.
http://www.netbsd.org/about/.
https://www.openbsd.org/goals.html.
https://www.dragonflybsd.org/history/.
http://www.pcbsd.org/.
https://lumina-desktop.org/screenshots/.