Mitos sobre o FreeBSD

O FreeBSD e seus derivados não são tão conhecidos quanto algumas distribuições GNU/Linux, tal como o Ubuntu, Debian, Opensuse etc.
A falta de informações, às vezes, pode nos levar a acreditar em ou a disseminar fatos que não são verdadeiros sobre um determinado assunto.
Pensando nisto, elaborei este texto (baseado em outros textos) para lançar uma luz mais realista sobre este excelente sistema operacional, chamado FreeBSD.
Vamos abordar alguns dos mitos mais frequentes sobre o sistema operacional FreeBSD.
freebsd logo full

O FreeBSD não é UNIX

Para a resposta não soar tão ambígua quanto à questão, vamos esclarecer um fato sobre a palavra UNIX: é uma marca registrada e você precisa de autorização de seus detentores para usá-la comercialmente ou não.
Sob o ponto de vista legal, nós não podemos chamar o FreeBSD de UNIX, portanto.
Já sob o ponto de vista tecnológico/técnico, o FreeBSD é tão unix quanto o Solaris, o HP UX etc.

O FreeBSD é ótimo para servidores, mas ruim para desktops e notebooks

Quando falamos de uso no desktop, queremos um sistema que tenha capacidade, entre outras coisas, de executar aplicativos e arquivos multimídia.
O fato é que o FreeBSD tem um subsistema de som pleno de recursos.
Seu kernel permite que múltiplas aplicações façam uso dos recursos de áudio simultaneamente e independentemente, sem qualquer configuração preliminar.
A instalação padrão do FreeBSD já inclui o X.org — o mesmo usado largamente nas várias distribuições Linux. Portanto, se você já é usuário do KDE, GNOME ou outro ambiente desktop, nada impede que você os continue usando. Basta instalar.
freebsd demon multimedia
O PC-BSD é um sistema derivado do FreeBSD que já vem melhor preparado para usuários iniciantes e possui um sistema de instalação muito mais fácil de usar e, opcionalmente, dispõe de suporte comercial.

O modelo de desenvolvimento do FreeBSD é fechado

São mais de 400 desenvolvedores ao redor do mundo que detém acesso commit ao repositório. Muitos destes recebem patches de terceiros (programadores independentes ou que trabalham em grandes empresas etc.)
É possível ter uma idéia da enorme quantidade de patches e de pessoas que trabalharam e trabalham para submetê-los fazendo uma busca por “submitted by” nos logs do commit — o número supera 20 mil pessoas.
O projeto tem uma dinâmica democrática. As decisões são tomadas pelas pessoas que trabalham nele.
Em caso de discordâncias, há um grupo de desenvolvedores que decide o rumo a ser tomado. Este grupo é eleito a cada 2 anos. Todo mundo que trabalha, enviando código para o projeto pode votar.

O FreeBSD é apenas um OS X sem a parte boa…

Isto é tão falso quanto dizer que o OS X é apenas o FreeBSD com uma GUI bonitinha.
O fato é que os dois sistemas operacionais têm muito código (e desenvolvedores) em comum.
freebsd-daemon-phk
Por exemplo, muitos dos utilitários e a própria biblioteca C, no OS X são derivados de versões existentes no FreeBSD.
Algumas vezes o fluxo de desenvolvimento do código toma direções diferentes em um sistema operacional, em relação ao outro.
O FreeBSD 9.1 e suas versões posteriores incluem um stack e um compilador C++ originalmente desenvolvidos para o OS X. Boa parte deste trabalho foi feito por pessoal da Apple.
Os dois sistemas operacionais são “parentes muito próximos”, tẽm uma quantidade razoável de colaboração mútua… mas não são a mesma coisa.

A parte boa do FreeBSD vem do Solaris

Bem. O FreeBSD adotou dois recursos espetaculares do OpenSolaris: o DTrace e o ZFS.
O sistema de arquivos ZFS, em particular, tem o foco e a atenção de muitos desenvolvedores envolvidos com o FreeBSD — o que inclui o pessoal da iXsystems, uma empresa que dá suporte ao desenvolvimento do FreeNAS e comercializa dispositivos NAS baseados no FreeBSD.
Existe um trabalho muito próximo entre os contribuidores do FreeBSD e os desenvolvedores do Illumos, um fork de código aberto do sistema operacional Unix Solaris, no sentido de aprimorar estes dois recursos.
Embora o ZFS seja importante dentro do FreeBSD, ele é uma peça relativamente pequena dentro do sistema, como um todo.
Veja alguns números.
O ZFS e o DTrace, juntos, não somam 4% de todo o código do kernel — e este não chega a 10% do código do sistema básico do FreeBSD.
Faça as contas: o código destes recursos relevantes que vieram do Solaris, não chega a 0,4% de todo o FreeBSD.

No FreeBSD, tenho que compilar tudo do código fonte

A coleção de ports do FreeBSD é uma maneira muito poderosa de instalar softwares e permite que você personalize opções para uma grande variedade de programas e bibliotecas de terceiros.
Compilar programas a partir do código fonte, pode ser algo muito simples — mas não é o único jeito de se instalar no FreeBSD.
Você sempre tem a opção de instalar softwares de pacotes binários.
O projeto pkgng tem adicionado novos formatos e ferramentas de empacotamento, o que resulta em um conjunto moderno de aplicativos e utilitários para gestão de pacotes binários.

O FreeBSD é um UNIX dos anos 90 (ou 80)

Se você acha que o UNIX é velho demais para você, precisa saber a idade de outro sistema operacional muito usado: os primórdios do Windows datam da década de 60.

Softwares antigos, com desenvolvimento ainda ativo, em geral, são softwares estáveis e de boa qualidade.

Softwares ganham estabilidade e maturidade com o passar do tempo.
O FreeBSD tem um longa história e é descendente linear do UNIX original, que fazia parte da Berkeley Software Distribution. E ele tem evoluído durante todo este tempo.
Existem razões importantes para o fato de o UNIX ter se tornado tão popular.
Visualmente, o FreeBSD pode usar a CLI (Command Line Interface) ou uma GUI (Graphics User Interface) moderna GNOME, KDE etc.

O FreeBSD não tem drivers para todos os dispositivos

Ninguém tem.
O problema de falta de drivers para algum dispositivo é enfrentado por todos os sistemas operacionais — o que inclui o Windows.
Por outro lado, ninguém liga para a quantidade de drivers disponíveis para seu sistema operacional. O que importa é que tenha aqueles necessários para fazer funcionar adequadamente o seu hardware.
Alguns fabricantes são omissos para produzir drivers para seus produtos funcionarem no FreeBSD e no Linux.
O problema poderia ser facilmente resolvido se liberassem as especificações para a comunidade de desenvolvedores. Até nisso, são omissos e descomprometidos com os clientes.
A divisão de placas gráficas AMD/Radeon é um dos casos mais notórios desta omissão, tanto para FreeBSD, quanto para Linux.
freebsd-news
Existem opções, contudo, de outros fabricantes para placas de vídeo, placas de redes, hardware de som etc.
Usar o FreeBSD e cobrar os fabricantes a desenvolver drivers para a sua plataforma é a melhor forma de ajudar.

Depois da versão 4.x o sistema decaiu

O pessoal do projeto FreeBSD tem muito orgulho da série 4.x. De fato, a estabilidade é uma de suas marcas.
Mas, o que aconteceu depois?
Muitos a continuaram usando por anos.
As séries 5.x foram marcadas pela introdução de um sistema de multithreading aprimorado.
Esta transição envolveu a substituição de dispositivos de trava ao redor do kernel — uma tarefa complexa, entre outras coisas.
Este foi um tipo de trabalho que, além de muito intenso, é fácil dar errado.
Paralelamente, a série 5.x foi lançada com duas implementações de threading
As primeiras duas releases da série eram “developers only“, ou seja, não estavam prontas para sistemas em produção.
freebsd-releases
Já a versão 5.2 foi lançada para um público mais amplo e falhou em satisfazer as expectativas da base de usuários do FreeBSD.
O resultado é que um grande número de usuários se manteve na (ou voltou para a) série 4.x, enquanto outros optaram por diferentes sistemas operacionais.
Esta versão representa uma lição dolorosa para o projeto, da qual houve um importante aprendizado.
A série seguinte, 6.x, recobrou a estabilidade pela qual a 4.x ficou conhecida.
Na série 7.x recuperou-se ganhos de performance em sistemas de processamento único.
Já na série 8.x, os benchmarks de terceiros mostravam que o FreeBSD escalava melhor que outros SOs em sistemas multiprocessados.
Desde então, a estabilidade e a performance permanecem como objetivos principais dos desenvolvedores. O que não tem impedido as substanciais melhorias nos subsistemas de som, no ZFS, no DTrace, no journaling do UFS, entre outros.

Falta aplicativos para FreeBSD

A ports collection do FreeBSD contém, atualmente, mais de 23.500 peças de software.
Boa parte destes softwares roda nativamente sobre o FreeBSD.

O importante é que tenha os softwares que você precisa.

Outros softwares são OS-agnostic ou seja, não “se importam muito” com o sistema operacional sobre o qual estão rodando e, às vezes, pedem poucas mudanças para funcionar adequadamente.
Há aplicativos que são executados sobre algum tipo de emulação. Por exemplo, os binários para Linux podem ser executados sobre uma camada Linux ABI, onde as system calls do Linux são traduzidas para suas equivalentes no FreeBSD.
O versão Linux do plugin Flash roda sobre um browser nativo do FreeBSD, usando o NSPluginWrapper.
Você pode, ainda usar o WINE para rodar aplicativos Windows.

O FreeBSD não tem suporte a virtualização

O FreeBSD 9 tem suporte, quando executado como hóspede Xen, tanto na arquitetura x86, quanto na x86-64 — o que inclui o Amazon EC2.
Após trabalho conjunto da Microsoft, NetApp e Citrix, passou a ser possível rodar o FreeBSD sobre o hypervisor Microsoft Hyper-V.
Há várias versões do FreeBSD disponíveis na lista do VMware ou do Virtualbox — e você pode rodar o próprio Virtualbox de dentro do FreeBSD.

O FreeBSD 10 age como sistema operacional hospedeiro para bhyve ou BSD Hypervisor, o que dá uma variedade maior de opções de máquinas virtuais para você.
Finalmente, se você não precisa de virtualização completa, ainda pode usar o jail subsystem para rodar userlands isolados do FreeBSD — ou, mesmo, userlands Linux, através da camada Linux ABI, tudo sobre um único kernel FreeBSD.

A licença BSD permite que as empresas usem seu código e não contribuam de volta

A licença permite que pegue código do FreeBSD e faça o que quiser com ele, contato que não os processe de volta ou faça de conta que o código é seu.
Sem a obrigação legal de compartilhar, é possível usar o código em qualquer lugar que você quiser.
Muitas empresas, de fato, tiram código do FreeBSD em benefício próprio e nunca dão nada em troca. São livres para fazer isto.
Muitas outras empresas não tem este comportamento, contudo.

Conclusão

Espero, com estes fatos, lançar uma luz sobre o projeto e a maravilhosa comunidade do FreeBSD.
Espero, ainda, ajudar a desconstruir mitos bobos que impedem que alguns usuários experimentem esta belíssima plataforma e a empreguem e seus projetos.

Referências

https://wiki.freebsd.org/Myths.
https://www.freebsd.org/advocacy/myths.html.

Como rodar o FreeBSD em uma máquina virtual QEMU.

Se você já teve o desejo de conhecer o FreeBSD e aprender um pouco sobre o ele, mas ainda não tem um PC ou laptop disponível para instalar e testar o sistema, sugiro começar a experimentá-lo em uma máquina virtual.
Pôr no ar uma máquina virtual QEMU, rodando uma imagem atual do FreeBSD é bastante fácil e, dependendo da sua conexão á Internet, pode ser bastante rápido também.
freebsd logo full
Isto se deve ao fato de que você pode baixar várias imagens do site oficial (veja links ao final) prontas para uso — voltadas para mais de uma arquitetura de hardware.

Requisitos de hardware para rodar o FreeBSD

As versões mais atuais do FreeBSD não são “famintas” por recursos. O sistema é bastante enxuto e pode ser executado em condições bastante modestas:

  • Memória — Os requisitos mínimos de memória começam em 64 MiB. Um sistema especializado, deve começar em 128 MiB. Se você estiver pensando em uma instalação desktop completa, 4 GiB garantirão mais conforto para trabalhar.
  • Armazenamento em disco — O mínimo aceitável é 1,5 GiB, para ter um sistema funcional, mas com pouquíssimo espaço livre para trabalhar.
  • Arquitetura e processador — O FreeBSD pode ser executado sob várias arquiteturas. O suporte a PCs 64-bit começa em AMD Athlon™64, AMD Opteron™, Intel® Xeon™ multi-core e Intel® Core™ 2.
    No que tange a arquitetura 32-bit, qualquer 486 ou superior faz o serviço.

Instale o QEMU

No Debian, Ubuntu e derivados, use o apt para instalar o qemu:

sudo apt install qemu

Usuários do Opensuse, podem usar o Zypper:

sudo zypper install qemu

Baixe a imagem do FreeBSD

Há vários lugares de onde você pode baixar imagens do FreeBSD. O site oficial é um deles.
Você pode usar o utilitário wget para fazer o download rapidamente:

wget ftp://ftp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/10.3-RELEASE/amd64/Latest/FreeBSD-10.3-RELEASE-amd64.qcow2.xz

Veja, ao final do texto, link para o site de download, onde você poderá encontrar outras versões, que podem ser mais adequadas.
A seguir descompacte o arquivo:

unxz FreeBSD-10.3-RELEASE-amd64.qcow2.xz

Como rodar a imagem do FreeBSD

Não há nada errado em usar o VirtualBox, se você o preferir. A imagem baixada provavelmente rodará bem nele.
Neste texto, contudo, o nosso foco será o QEMU.
Para rodar a imagem em uma máquina virtual com 256 MiB, use a seguinte linha de comando:

qemu-system-x86_64 -hda FreeBSD-10.3-RELEASE-amd64.qcow2 -m 256M -cpu qemu64 -name 'FreeBSD 10.3 64 bit'

freebsd 10.3 screenshot boot


O que o comando acima faz?
Vamos responder por partes, a partir do comando ‘qemu-system-x86_64’, as opções usadas são as seguintes:

  • -hda FreeBSD-10.3-RELEASE-amd64.qcow2 — roda a imagem baixada em um disco virtual (hda).
  • -m 256M — determina a quantidade de memória da máquina virtual.
    Você pode experimentar usar outros valores.
  • -cpu qemu64 — faz uso da cpu padrão, de 64 bit, do qemu.
  • -name 'FreeBSD 10.3 64 bit' — coloca um nome bonito no título da janela do emulador.
    Escreva o que quiser entre as aspas.

Se você acha o comando para executar a sua imagem muito grande, experimente criar um mini-script para ele, assim:

echo "qemu-system-x86_64 -hda FreeBSD-10.3-RELEASE-amd64.qcow2 -m 256M -cpu qemu64 -name 'FreeBSD 10.3 64 bit'" > freebsd.sh
chmod +x freebsd.sh
# para executar, rode o script assim:
./freebsd.sh

Fácil, não é?
Se você tem interesse em copiar e colar entre a janela da máquina virtual do FreeBSD e as outras do seu sistema hospedeiro, inclua a opção ‘-display curses’:

qemu-system-x86_64 -display curses -hda FreeBSD-10.3-RELEASE-amd64.qcow2 -m 256M -cpu qemu64

Neste modo, a opção ‘-name’ não tem efeito. Mas ele permite, por exemplo, que você copie comandos de tutoriais e os cole direto na janela do FreeBSD.

Como logar e criar um novo usuário no FreeBSD?

Assim que chegar à tela de login, autentique-se como root (a senha estará em branco, por enquanto).
Após a autenticação, crie uma nova senha para o usuário root e um novo usuário com privilégios normais:

passwd
adduser

Depois de criar o novo usuário saia do root:

exit

… e autentique-se com novo o nome de usuário criado.
E, que comece a brincadeira! 😉

Referências e downloads

Download da versão 10.3: ftp://ftp.freebsd.org/pub/FreeBSD/releases/VM-IMAGES/10.3-RELEASE/amd64/Latest/.
Página oficial de downloads: https://www.freebsd.org/where.html.

Instale o Telegram Messenger CLI no Linux

Vou ser bem objetivo neste post, por imaginar que você já sabe exatamente o que quer ao ler este texto — além disto, quero ensinar os bizus para mais de uma distribuição do Linux, incluindo o OSX, lá no final.
Não vou te incomodar com papo-furado e vamos ao que interessa: baixar, instalar e pôr pra funcionar a versão de linha de comando do Telegram.
Usuários do Ubuntu 16.04 LTS “Xenial Xerus”, ou superior, podem usar o SNAP como metodologia de instalação. Leia mais aqui.

Instalar Telegram no Linux e no MacOSX
Clique para ampliar

Como baixar e instalar o Telegram no Linux

Há basicamente 2 formas de baixar o código do aplicativo: via GitHub ou trazendo o pacote .zip, com wget.
Para clonar o repositório GitHub, proceda assim:

git clone https://github.com/vysheng/tg.git && cd tg

O output do comando git deve ser algo parecido com este:

Cloning into 'tg'...
remote: Reusing existing pack: 1608, done.
remote: Total 1608 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (1608/1608), 1.35 MiB | 358.00 KiB/s, done.
Resolving deltas: 100% (1061/1061), done.
Checking connectivity... done

ou faça o download, via wget, do pacote .zip e faça a sua extração:


wget https://github.com/vysheng/tg/archive/master.zip -O tg-master.zip

unzip tg-master.zip && cd tg-master

Agora, siga instalando as bibliotecas (veja as instruções específicas pra sua distro) — e, se algo não funcionar direito, deixe-me saber, nos comentários.
No Ubuntu, Debian etc. use o apt-get:


sudo apt-get install libreadline-dev libconfig-dev libssl-dev lua5.2 liblua5.2-dev

Ou faça a instalação com o snap, no Ubuntu.

No Fedora, OpenSuSE, Red Hat, CentOS etc. use o yum:


sudo yum install lua-devel openssl-devel libconfig-devel readline-devel

No Gentoo, use o emerge:


sudo emerge -av sys-libs/readline dev-libs/libconfig dev-libs/openssl dev-lang/lua

No FreeBSD:


pkg install libconfig libexecinfo lua52

… e no OpenBSD:


pkg_add libconfig libexecinfo lua

O procedimento, a seguir vale para todas as distribuições Linux e BSD.


./configure
make

Pronto. Você já pode fazer uso do aplicativo com o comando:


./telegram -k servidor_de_chave_publica

A sua chave pública deve estar armazenada na mesma pasta em que você se encontra, chamada tg-server.pub ou em /etc/telegram/server.pub.
Se não for este o caso, você sempre poderá especificar o local onde encontrar a chave pública:


./telegram -k tg-server.pub

Ao entrar no sistema, faça as configuração básicas iniciais. Basta fornecer o número do seu dispositivo móvel e aguardar o código aparecer na tela do celular. Forneça o código ao programa, no seu computador.
Se tudo der certo, você receberá uma notificação na tela do celular, tal como a da figura abaixo:

Instalar telegram no ubuntu linux - tela de notificação no celular Android
Clique para ampliar

Como instalar o Telegram no Apple Mac OS X

O cliente precisa das bibliotecas readline e libconfig, que não são incluídas no OS X. Você as terá que instalar manualmente. Pode fazer isto com Homebrew.


brew install libconfig

brew install readline

brew install lua

export CFLAGS="-I/usr/local/include -I/usr/local/Cellar/readline/6.2.4/include"

export LDFLAGS="-L/usr/local/lib -L/usr/local/Cellar/readline/6.2.4/lib"

./configure && make

A seguir instale os seguintes ports:

  • devel/libconfig
  • devel/libexecinfo
  • lang/lua52

A seguir, prossiga com esta sequencia de comandos:


env CC=clang CFLAGS=-I/usr/local/include LDFLAGS=-L/usr/local/lib LUA=/usr/local/bin/lua52 LUA_INCLUDE=-I/usr/local/include/lua52 LUA_LIB=-llua-5.2

./configure

make

Leia mais

Você pode obter mais informações sobre a instalação e modo de usar no site: https://github.com/vysheng/tg/blob/master/README.md#messaging.