Depois da chamada para ajuda à FSF na BR-Linux, Projeto GNU precisa da nossa contribuição – e não de brigas internas na comunidade, resolvi me associar a ela para ajudar. Afinal nada mais prazeroso que escrever meus artigos como um membro da FSF.
E um recado que nunca pode ser esquecido: free software é software livre, não gratuito.
Também fiz uma contribuição à FreeBSD Foundation, só pra manter o equilíbrio do universo. Ao menos do universo de software livre.
E chegou 2016. Nada como fazer uma análise sobre o tráfego no site durante o ano de 2015. Em geral eu fazia isso de forma fácil com o j4age, mas... resolvi atualizar o site no final de 2015 e terminei destruindo a instalação do joomla 2.5 que tinha, o que me forçou a instalação do joomla 3 e migração dos artigos. Com isso estou na última versão do joomla 3, mas perdi algumas das ferramentas (módulos e plugins) que usava. E entre eles o j4age. Mas como eu faço a monitoração via google também, alguma coisa restou pra ser olhada.
Em geral tive 81 mil visualizações, sendo 2 do mesmo acesso, com 34 sessões. São quase 9 visualizações/hora. Pra um site que não tem divulgação nenhuma, acho que está de ótimo tamanho. Em relação ao ano anterior, 2014, as visualizações eram da ordem de 100/dia e agora subiram para 224/dia. Já me sinto o rei do camarote das buscas orgânicas.
As estatísticas mostram baixo engajamento, ou volta de usuário. Eu acho que isso se deve por conta de filtros de cookies. Continuem assim pois meu objetivo não é fazer tracking de quem lê meus posts. Snowden approves you.
A grande maioria é brazuca (duh!). Mas há algum crescimento de locais como Portugal, que é até compreensível, e... China!? Isso eu não sei explicar. Aliás a posição 5 deve ser algum bloco IP que foi alocado recentemente e não deve ter sua geo-localização ainda mapeada. Eu acho que essa maioria de países estrangeiros acessando o site é por conta de alguns artigos em inglês, mas a maioria é mesmo pela minha assinatura de mail, que tem links pro site.
E novamente Chrome é o rei, com mais que o dobro do segundo colocado, o Firefox. Interessante ter acessos de Safari no site, acima até de Internet Explorer.
Já desisti de ver essa estatística liderada por outro sistema operacional que não seja Windows. Android já mostra metade do tráfego de Linux, mas ainda ambos juntos não chegam ao número de usuarios com Windows. Gente, é 2016. Criem vergonha na cara e parem de usar Windows. Ao menos pra acessar meu site.
E durante o ano todo, o campeão foi #XGH!!!! Artigos genéricos de opinião misturados com artigos técnicos, mas claramente uma preferência por textos não técnicos. Escovação de bits está ficando fora de moda :(
E esse foi um pequeno resumo de meu 2015. Como participei da organização de outras coisas como hackathons e palestras técnicas, acabei ficando sem muito tempo pra atualizar o site com informações. Não é uma meta pra 2016 (aliás não fiz meta nenhuma, mas quando atingir, eu dobro a meta) mas espero poder escrever mais. Vídeos no estilo VLOG? Eu acho complicado manter a peridiocidade, por isso prefiro participar de hangouts. Outras formas de mídia? Acho que vou ficar mesmo com Twitter e Facebook, e talvez dar uma tentanda no Reddit. Mas nada de muito sério. E assim inicio meu 2016.
Por uma coincidência incrível, daquelas que ocorrem a cada alinhamento de planetas ou algo do gênero, assisti ontem a palestra do John Maddog Hall na campus party 7 cujo nome é esse do texto: fique rico com software livre. É o tipo de assunto que gosto de accompanhar, mas eu tinha baixado a palestra pra assistir e tinha esquecido completamente. Eis que o wifi estava ruim ontem, Netflix não funcionando, Internet intermitente e... sim, resolvi vasculhar o HD pra ver se tinha algo que eu pudesse ler ou assistir. Incrível o poder de abandonar coisas interessantes conforme a capacidade do HD aumenta...
Em várias listas e grupos que participo existe uma noção errada, e até um pouco ingênua, de que software livre é o que basta pro negócio dar certo. Que com software livre já existe uma vantagem competitiva. Nessa apresentação do Maddog, que está em inglês, ele toca nesse ponto. Eu peguei algumas partes pra comentar.
Esse primeiro slide é bem interessante. Ele comenta sobre as liberdades que definem um software como livre. E coloca bem claro na parte de baixo: ninguém disse que não devia fazer dinheiro escrevendo software livre. Sim, software livre pode ser vendido. Pode-se ganhar dinheiro com ele. Já comentei algumas vezes em sobre a 5a liberdade que criaram - mais acirramente no Brasil - onde transformar software livre em dinheiro virou algum tipo de pecado. Não é.
Business as usual. Software livre significou uma quebra de paradigma na forma de fazer software, mas não na de fazer negócios. Para ganhar dinheiro com software livre é preciso conhecer seu mercado, seus concorrentes, seu produto, seus consumidores, enfim tratar como outro negócio qualquer. Não existe mágica com software livre. Software é software e negócios são negócios.
O por qual motivo as pessoas escrevem software livre? São inumeradas as razões, que diferem em muito do software proprietário, onde somente um modelo de negócios existe. Mas não acredite que software livre é feito somente por hobbistas. Grandes empresas já fazem ou contribuem com a maioria dos projetos de software livre. Em termos de negócios, abrir seu software como livre pode não trazer um benefício direto. Pode ajudar na correção de bugs e adição de melhorias, mas não necessariamente no negócio em si (software livre não é vantagem competitiva, lembra?).
E alguém pagaria pra ter um software livre? Sim! Maddog inumera alguma das razões. A maior dela é usar o software livre pra atender mais rapidamente alguma necessidade da empresa. Então essa empresa com certeza pagaria o desenvolvedor, ou que se quiser manter o software, pra adicionar uma melhoria. Ou mesmo criar um fork.
São consideradas outras facetas do software livre como negócio, mas não vou comentar uma por uma pois o melhor é assistir a palestra por inteiro. Apenas lembre-se que é possível ganhar dinheiro com software livre, mas isso não significa que software livre seja uma vantagem competitiva pro negócio.
Colaboração: Anahuakim Skywalker
Acontecimentos recentes precisam acionar todos os alarmes do ativismo Jedi. O golpe final está muito próximo. O algoz é a saga Star Wars e a vítima é o GNU. O plano tem se baseado na repetição incansável de que o sistema intergalácticol livre, que é um marco cinematológico, se chama Star Wars, nasce em 1977 e se baseia nos conceitos revolucionários dos Jedis. E onde está o GNU que nasceu uma década depois? Não sou eu quem está fazendo uma acusação leviana, é a própria saga Star Wars quem o diz em seu documentário "O império contra-ataca". Trata-se de uma sequência em seis episódios, feita com primor e precisão cirúrgica para convencer até os velhos ativistas de que o GNU nunca existiu.
Qualquer pessoa que não conhecer a história toda e vir essa sequência da Star Wars terá certeza absoluta que tudo começou em 1977 e não saberá nem que um dia existiu o GNU.
A força da repetição, levada a uma escala galáctica é impossível de deter. Nobres significados já foram subvertidos antes, como o termo "jedi" que virou sinônimo de bandido intergaláctico pelo simples interesse de colocar todos, os bandidos e os questionadores, no mesmo balaio. Questionar, aprender, testar, compartilhar e colocar o "status quo" em uma posição incômoda não é crime. Mas incomoda. O mesmo acontece com a marca Star Wars, sendo repetida a exaustão para remover os conceitos ideológicos que o GNU carrega em si. Matar o GNU é matar a contraposição provocada pela liberdade do código. Foi exatamente com o objetivo de eliminar esse incômodo que a estrela da morte foi criada.
Mas esse é um enredo bem conhecido e, infelizmente, ignorado pela maioria dos envolvidos em Star Wars. É como se eliminar o GNU fosse algo "cool", bacana, legal, simples. Quantas vezes tive que ouvir que dizer "GNU/Jedi" era difícil, e que ajudava mais na aceitação do novato dizer apenas Jedi. Bom, hora de assumir sua parcela de culpa na
tentativa de extinção do GNU.
Alerta vermelho!
Como assim? Simples: no pensamento Jedi o que realmente importa é o acesso à força, no limite necessário, para melhorar os meios de combate com sabres de luz. Mais rápido, eficiente, com mais qualidade e muito mais barato. Trata-se de um modelo de força e se os Siths aderirem a esse modelo, que mal há? Não acredita? Leia matéria original
direto da Wookipedia.
O que dirá Software Livre então? Nem pensar! O professor Masdra Narsgodi deixa isso muito claro neste episódio intitulado de "la galaxia dividida". É uma aparição pequena, fria e calculista. Ele baixa os escritos Jedis, olha os fontes e encontra códigos de conduta não livres. Simples e preciso. Nenhum lero-lero ideológico. Não deixe de conferir.
O que mais você precisa para perceber que se não fizermos algo o GNU será extinto? Se não agirmos rápido permitiremos que os valores difundidos pela Federação e pelo GNU, de que o acesso ao código deve empoderar os usuários para inverter a relação entre esses e os Jedis, serão suplantados pela outra ideologia, que defende o acesso ao sabre de luz como um pilar para meios de proteção mais eficientes.
Perceba que não se tratam de ações isoladas e desconexas. Fica cada vez mais evidente que é uma ação deliberada para extinguir a Galáxia Livre, suplantando-a pela Força. Uma pesquisa rápida demonstrará que o termo "Jedi" tem sido usado mundialmente como sinônimo de "livre". Mas não significam a mesma coisa, não tem o mesmo peso ideológico, não se baseiam nas mesmas premissas e não reagem na sociedade da mesma forma. Jedi/Sith defende meios de proteção e Federação/Livre buscam mudar a sociedade em busca de uma Galáxia melhor. Como o "status quo" não tem interesse em mudanças que alterem as relações de poder, então o Jedi/Sith é estimulado como uma versão mais suave deliberdade. Assim, subitamente parece que o mundo todo aderiu ao "Jedi": Jedi Mind, Jedi Data, Jedi Office, Jedi Temple e por ai vai.
Que fique claro: algo jedi não é necessariamente livre. E é exatamente dessa dubiedade que o "status quo" se alimenta. Vende liberdade, mas fornece prisões.
Algumas ações são mais simples que outras, mas todas são possíveis e qualquer uma delas, mesmo que seja uma só, fará toda a diferença. Lembre-se que sua participação é fundamental.
* Diga somente GNU! Não se refira mais ao sistema planetário como Jedi. Minha sugestão é que você sequer diga GNU/Jedi. Mesmo que você não concorde plenamente, neste momento, ajuda muito se fizermos um esforço para reforçar o GNU. Estamos tentando virar o jogo, lembra? E depende muito apenas de você e de cada um de nós. Por que? Oras, porque quando você disser GNU, o desavisado não saberá ao que você se refere e essa é a oportunidade para falar
sobre liberdade, compartilhamento que revoluciona e como essa ação tem o poder de transformar a sociedade. Jedi? Isso é só mais um programa de proteção que nem sequer é livre.
* Não use mais o sabre de luz. Adote outros mascotes para referenciar seu apreço pelo Software Livre. O sabre de luz é o logo dos Jedi. Jedi não é livre. Portanto esqueça o sabre de luz. A fauna do Software Livre é imensa e com certeza você vai encontrar uma outra proteção que lhe agrade. Na dúvida, opte pelo próprio GNU.
* Não seja Jedi. Existe um conjunto de planetas GNU que não são Jedi: LinuxJedi é um exemplo. Esses sistemas operacionais usam um kernel chamado linux-jedi , um Jedi "desenjedixicado" e mantido pela Federação, que funciona em
qualquer outra rebelião, inclusive contra o Império.
É claro que a lista poderia ser muito mais longa, mas se você se comprometer a fazer apenas uma delas, podemos reverter o cenário e evitar a extinção do GNU.
Seja um "Jedi do GNU", seja #jediGNU!!!
Saudações Livres!
Depois de quase 3 dias fora do ar (ou intermitente), eis que o site volta ao ar.
Nada como férias pra tentar coisas arriscadas, como um upgrade do Joomla. E não saiu como esperado. E claro que o backup via Akeeba não deu certo.
Então nada melhor que arregaçar as mangas, pegar um café (ou cerveja) e fazer a instalação e migração na mão. Algumas coisas ainda estão meio que quebradas, mas aparentemente o grosso do site foi migrado corretamente. De Joomla 2.5 pro último release de 3.
Mas a luta continua! Algumas coisas ainda apresentam erros de edição e mesmo o template ainda faltam as imagens.
Quem participa dos grupos que faço parte, principalmente no FaceBook, sabem que uma das minhas respostas mais comuns é "leia o guia foca Linux".
O objetivo é trollar quem pergunta, sempre, mas também fazer a pessoa abrir os olhos sobre a documentação que existe na Internet. Mas claro que é mais fácil perguntar primeiro, e ler depois. Isso quando lêem. Também sei que o nome mudou pra "guia foca gnu/linux", mas prefiro chamar pelo nome mais curto. Questão de simplicidade, mesmo que gladiadores da liberdade não gostem.
O guia surgiu pela iniciativa de Gleydson Mazioli pra suprir uma demanda de material sobre Linux, acessível e em português. Claro que atualmente abudam os livros, os sites e os blogs, mas na época em que o guia foi lançado isso não era tão verdadeiro assim. Longe disso. Era 1999.
O guia ajudou muita gente a iniciar e aprender Linux e Unix. As bases são quase as mesmas nos últimos 40 anos de Unix (mesmo Linux não sendo Unix). Mas como tudo em tecnologia, o guia está defasado. Faltam coisas como systemd, novas distros, e até mesmo sobre git.
Então chegou a hora de poder contribuir. Se algum dia fez uso de algum material disponível gratuitamente na Internet como o guia foca gnu/linux, ou mesmo do guia em si, aproveite pra contribuir e melhorar o mesmo, para que mais pessoas possam entrar nesse nosso mundo tão pequeno de software livre.
Eu criei um repositório do guia no GitHub: https://github.com/helioloureiro/guiafocalinux
basta fazer um clone do dele, criar ou atualizar os documentos e mandar seus pull requests.
Não é um fork do guia. A idéia é melhorar o guia com atualizações e enviar as sincronizações pro próprio Gleydson, para atualizar no site.
Como contribuir? O guia está escrito em SGML, que é um tipo de HTML mais direcionado para documentos. Mas não precisa ficar preocupado com isso. Basta adicionar o documento que queira implementar, e depois eu dou uma revisada e adiciono as tags necessárias. O importante é escrever. Se quiser começar de forma mais simples, pode editar um dos arquivos existentes e atualizar o mesmo. É necessário utilizar o pacote debiandoc-sgml para ter os templates usados no documento no lugar e poder gerar o guia. Então é mais fácil usar um Debian/Debian-alike como distro. Claro que não é necessário e Docker sempre pode ajudar se for preciso.
Até agora eu converti somente os arquivos de iso-8859-1 para utf-8 e criei um Makefile para gerar o guia em pdf. O próximo passo será descrever systemd. E você? Já pensou em como vai contribuir?
Aguardo seus pull requests :)
Quando li sobre docker e containers pela primeira vez, meu pensamento foi "ah... outra forma de ter uma VM". Eu não sabia das facilidades que isso gerariam no meu dia-a-dia de trabalho em relação aos outros métodos de virtualização.
Docker, ao contrário de outras formas de virtualização, não é um sistema isolado onde se carrega um sistema operacional inteiro. Por exemplo em KVM/Qemu ou KVM/Xen é possível instalar Windows, Android ou FreeBSD pois é um sistema completo de virtualização, que emula até uma camada de BIOS. Já containers, como o Docker, não. Eu não consigo rodar outro sistema que não seja aquele que roda na minha máquina em termos de versão de kernel e libc. Então enquanto Qemu e Xen rodam em servidores com Linux ou FreeBSD, Docker é inerente somente ao Linux.
A parte de containers é relativamente nova no Linux. Ela já existe faz uns 10 anos no FreeBSD com jails e mais ainda em Solaris com o zoneadm. Depois que implementaram o cgroups no kernel que Linux começou a explorar essa possibilidade. Os primeiros containers que surgiram no Linux foram através de LXC, que criava um segundo ambiente dentro do seu. Em FreeBSD e Solaris containers significam compartilhar seu sistema em vários pequenos sistemas, o que faz sentido afinal, mas em Linux... Linux é um kernel. Dizemos Linux por simplicidade, mas o sistema operacional que inclui kernel, Linux, e aplicativos, GNU por exemplo, é o que chamamos de distro. Ubuntu é um sistema operacional, RedHat é outro sistema operacional, Debian outro ainda e assim por diante. Então eles não rodam com as mesmas bibliotecas, nem usam o mesmos sistemas de pacotes. E isso é um problema. Os containers em LXC são capazes de criar um ambiente baseado no que está rodando, mas não uma outra distro dentro dessa distro original.
Nesse ambiente de possibilidades surgiu o Docker. Docker permite rodar um container que tenha uma outra distro completamente diferente daquela que roda no sistema principal. Mais ainda: Docker tem um repositório no estilo de GitHub que permite carregar ou baixar máquinas virtuais criadas por outras pessoas.
Então basta instalar Docker para começar a brincar. Apesar de ter servidores Debian, eu rodo bastante Docker no meu laptop. Então sei o procedimento pra Ubuntu via ppa, mas acredito que Debian deve ser bem parecido. Outras distros não devem ser muito diferentes.
Adicione diretamente o repositório nas configurações de fontes do apt:
root@laptop:~# cat << EOF > /etc/apt/sources.list.d/docker.list deb https://get.docker.io/ubuntu docker main EOF
Depois atualize a listagem de pacotes disponíveis e instale docker.io.
root@laptop:~# apt-get update; apt-get install docker.io
Então é preciso adicionar seu usuário ao grupo docker pra poder rodar sem precisar usar "sudo":
root@laptop:~# usermod -a -G docker helio
Reiniciada sua sessão (não precisa rebootar), docker deve estar disponível pra uso.
Com o Docker é possível verificar quais imagens estão disponíveis pra uso no repositório público.
helio@laptop:~$ docker search centos NAME DESCRIPTION STARS OFFICIAL AUTOMATED centos The official build of CentOS. 1575 [OK] ansible/centos7-ansible Ansible on Centos7 60 [OK] jdeathe/centos-ssh-apache-php CentOS-6 6.6 x86_64 / Apache / PHP / PHP m... 11 [OK] blalor/centos Bare-bones base CentOS 6.5 image 9 [OK] jdeathe/centos-ssh CentOS-6 6.6 x86_64 / EPEL/IUS Repos / Ope... 8 [OK] torusware/speedus-centos Always updated official CentOS docker imag... 7 [OK] million12/centos-supervisor Base CentOS-7 with supervisord launcher, h... 7 [OK] nimmis/java-centos This is docker images of CentOS 7 with dif... 6 [OK] feduxorg/centos 3 [OK] nathonfowlie/centos-jre Latest CentOS image with the JRE pre-insta... 3 [OK] centos/mariadb55-centos7 2 [OK] tcnksm/centos-node Dockerfile for CentOS packaging node 2 [OK] nathonfowlie/centos-jira JIRA running on the latest version of CentOS 1 [OK] feduxorg/centos-postgresql Centos Image with postgres 1 [OK] lighthopper/orientdb-centos A Dockerfile for creating an OrientDB imag... 1 [OK] yajo/centos-epel CentOS with EPEL and fully updated 1 [OK] layerworx/centos CentOS container with etcd, etcdctl, confd... 1 [OK] feduxorg/centos-apache Run Apache Event MPM on Centos 1 [OK] blacklabelops/centos Blacklabelops Centos 7.1.503 base image wi... 0 [OK] feduxorg/centos-rack Centos to run rack applications like Ruby ... 0 [OK] jsmigel/centos-epel Docker base image of CentOS w/ EPEL installed 0 [OK] lighthopper/openjdk-centos A Dockerfile for creating an OpenJDK image... 0 [OK] jasonish/centos-suricata Suricata base image based on CentOS 7. 0 [OK] pdericson/centos Docker image for CentOS 0 [OK] feduxorg/centos-geminabox Gem in a box on centos 0 [OK]
É possível adicionar outros repositórios e, claro, fazer sua própria instalação. Um problema sobre esse repositório público é que não existe garantia de não ter um malware junto. Se o seu uso for como o meu, corporativo, não use. Se for pra brincar e testar, vale o tempo.
A beleza do Docker é que pra rodar, basta chamar o comando. Se o container não existe, ele busca imediatamente no repositório e roda.
helio@laptop:~$ docker run -it centos bash Unable to find image 'centos:latest' locally latest: Pulling from centos 47d44cb6f252: Pull complete 168a69b62202: Pull complete 812e9d9d677f: Pull complete 4234bfdd88f8: Pull complete ce20c473cd8a: Pull complete centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:3aaab9f1297db9b013063c781cfe901e2aa6e7e334c1d1f4df12f25ce356f2e5 Status: Downloaded newer image for centos:latest [root@1512dcd70309 /]# hostname 1512dcd70309
Então, em outro terminal é possível ver a instância de Docker ativa.
helio@laptop:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1512dcd70309 centos:latest "bash" 2 minutes ago Up 2 minutes jolly_sinoussi
A cada nova chamada pra rodar Docker, uma nova instância é criada.
helio@laptop:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3b48633e67cc centos:latest "bash" 8 seconds ago Up 6 seconds romantic_turing 1512dcd70309 centos:latest "bash" 4 minutes ago Up 4 minutes jolly_sinoussi
Como se deve imaginar, cada instância de Docker é completamente diferente uma da outra. E não persistente. Uma vez terminada a sessão, os dados adicionados são removidos. Assim, se aplicar um upgrade no container e quiser manter, tem de criar um "snapshot" dele. Então pra salvar uma atualização no container:
[root@1512dcd70309 /]# yum update Loaded plugins: fastestmirror base | 3.6 kB 00:00:00 extras | 3.4 kB 00:00:00 systemdcontainer | 2.9 kB 00:00:00 updates | 3.4 kB 00:00:00 (1/5): base/7/x86_64/group_gz | 154 kB 00:00:00 [... várias coisas seguem...]
é preciso fazer:
helio@laptop:~$ docker commit -m "Atualizado com yum update" 1512dcd70309 centos-atualizado ff0f333c4abd4d9045ff074121df8fea7d109e87cc1dcb88317254fa0cfd66e4
É preciso usar o ID do container uma vez que várias instâncias podem existir originados da mesma imagem "centos". Pra verificar suas imagens de containers, basta usar:
helio@laptop:~$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE centos-atualizado latest ff0f333c4abd 40 seconds ago 269.9 MB fedora2 latest d97facef5329 31 minutes ago 398.7 MB fedora latest c7d2f0130dae 5 days ago 204.3 MB centos latest ce20c473cd8a 3 weeks ago 172.3 MB susebuilder4 latest 97c67ab3589f 4 weeks ago 882.1 MB susebuilder3 latest 15af476bea7b 4 weeks ago 784.6 MB susebuilder2 latest 299ff2fa953d 4 weeks ago 685.6 MB susebuilder latest 9ca4e4487b77 4 weeks ago 661.3 MB kiwi latest a037d86af491 12 weeks ago 436.7 MB aekeroth/synapse latest a56b155c49a4 5 months ago 450.4 MB
Pra remover alguma dessas images, como por exemplo esse aekeroth/synapse que nem lembro o motivo de estar ali, onde todos os "snapshots" relacionados serão removidos também:
helio@laptop:~$ docker rmi aekeroth/synapse Untagged: aekeroth/synapse:latest Deleted: a56b155c49a427661055b1a45c9233107b59fc6ec801467f04a29659a8330624 Deleted: b1c70ec40fcc659efd9da36beade75b8c2505c56c53499b231be692e29330d15 Deleted: 051d6978b0a8d3f344c0b6fdbdcae3e172f8e24c839d3969e118f2e6c1c64174 Deleted: b856d151b9c77a47d3d706e64880f898939afeb8312727a8fb5d715ef64ccf86 Deleted: c908ae302de39cb78669241ab2a65dfa1c750eb7f0818820286551bc450b5b0d Deleted: 8927bb4878535574411efe47e5006049662fffa3f8984288b00ea49436fe5caf Deleted: a055b38089a89db6f97c4bef2de139ebe06fd56976a87ef442ce6a9f5047497d Deleted: 1057eb355528fc473af4bb6e9f529fdd70d7b8b02b764bf873166d7650341bd0 Deleted: 7bfe65031a48db2cc6206d6b4af9e52063a7d538a8e3d13b2f6e4f5d888e0f08 Deleted: cec2959569e4d51aee4bcc0409cebfc4a0a46b9d42142e4611c0fe6294824a8b Deleted: ed5b1f07a6c393d55598770da45ec197be4682bfedabdf26bbab0208d5b7061a Deleted: 2103b00b3fdf1d26a86aded36ae73c1c425def0f779a6e69073b3b77377df348 Deleted: 4faa69f72743ce3a18508e840ff84598952fc05bd1de5fd54c6bc0f8ca835884 Deleted: 76b658ecb5644a4aca23b35de695803ad2e223da087d4f8015016021bd970169 Deleted: f0dde87450ec8236a64aebd3e8b499fe2772fca5e837ecbfa97bd8ae380c605e Deleted: 511136ea3c5a64f264b78b5433614aec563103b4d4702f3ba7d4d2698e22c158
Depois dessa rápida introdução ao Docker e containers, fica a pergunta: cadê a tal vantagem? Pois precisei fazer uso dela recentemente por causa do LSB, Linux Standard Base.
Quando ouvi falar de LSB achei que era algo como padronização de diretórios como "/opt" e "/usr/local" além de localização de arquivos de inicialização em "/etc/init.d". É, mas não é só isso. LSB cria uma base comum pra se compilar um binário em uma distro e rodar em outra. Isso evita precisar ter ambientes diferentes com distros diferentes e versões dessas distros diferentes. É uma facilidade. Mas... Debian, e consequentemente Ubuntu, não seguem mais a LSB. Primeiro que é algo complicado, pois envolve verificação de compatibilidade de ABI, segundo que se não tem um interesse econômico, leia-se alguém pra pagar por isso, não vale a pena manter.
Como na empresa desenvolvemos binários pra RedHat e Suse, meu laptop se tornou um local inóspito pra compilar os binários que usamos. São de OpenSAF, um projeto de software livre, mas é complicado manter um ambiente de compilação pra cada sistema. E caro. A solução inicial que adotamos foi instalar servidores com as versões de RedHat e Suse pra podermos compilar e verificar.
Daí lembrei do Docker :)
Bastou criar um container com os pacotes de compilação necessários como gcc, g++ e rpmbuild. Mas o repositório está no laptop, que roda Ubuntu. Como compilar? Como acessar os dados?
Primeiramente criei um usuário no container Docker com mesmo UID e GID que o meu, pra não criar tudo como root. Em seguida chamei o Docker com parâmetros pra usar meu filesystem:
helio@laptop:~$ docker run -it -v /home/helio/OpenSAF:/opensaf --user=helio -w /opensaf susebuilder4 ./configure
e pronto! Binários compilados num ambiente que suporta LSB. Docker mapeia meu diretório local "/home/helio/OpenSAF" como "/opensaf" no container. Inicia como usuário "helio" dentro do diretório "/opensaf" e roda o comando "./configure". E pronto. Quando termina o comando, o container desaparece.
Sim, saem lágrimas dos olhos de tão lindo.
Docker permite isso. Imagine então rodar um ambiente virtual com servidor web ou qualquer outra aplicação. Uma vez terminada, some o container. Quer aumentar capacidade? Só criar outro container. Eu não comentei muito, mas é possível mapear portas locais pra portas internas do container, além de rodar o próprio como daemon.
Docker é um monstro de tão bom. Não é uma baleia, mas um Moby Docker! Vale testar.
Graças aos entraves do software proprietário, resolvi melhorar minhas opções de uso OpenVPN e com meu roteador DD-WRT. A história toda começou com alguns jogos que comprei numa promoção na Xbox Live no Brasil (é... Microsoft, eu sei...). Comprei sem problemas, mas não instalei os jogos. Acontece que depois mudei de país e... quem disse que consigo ativar os jogos? A bela idéia de que algo que comprou, que é seu, mas não é seu de verdade. Só o software proprietário te permite entraves assim.
Uma opção que tentei fazer foi através de túnel de DNS, do mesmo tipo que se usa pra Netflix. Eu tenho o serviço do Unlocator, mas ele não foi suficiente pra passar o bloqueio imposto pela Microsoft. Consegui baixar o conteúdo, mas o mesmo não executa pela diferença de região.
Então resolvi realmente criar um túnel até o Brasil e sair por um IP de lá. E pra isso fiz um combo de VPS com AWS (Amazon), OpenVPN e DD-WRT. Simplesmente levantar uma máquina virtual com Linux (escolhi Ubuntu), iniciar OpenVPN em modo servidor, e conectar a partir do roteador DD-WRT como cliente.
Então aqui estão os passos pra isso.
Tentei uma configuração mais simples de OpenVPN static-home, que existe no diretório de exemplos. Mas descobri que o DD-WRT não funciona com essa configuração. E exige toda infraestrutura de chaves, com autoridade certificadora e tudo mais. Mas existe um pacote Debian/Ubuntu que facilita nessa tarefa: easy-rsa.
Primeiramente, instale o pacote. Como root:
apt-get install easy-rsa
Note que o comando é rodado em sua máquina de trabalho, como meu laptop no caso. Nem na VPS nem no roteador. É importante rodar separado pra poder guardar as chaves para usar depois.
Crie um diretório vpn e faça links simbólicos de todos os scripts instalados pelo easy-rsa. Todos os passos seguintes não precisam ser feitos como root.
mkdir vpn cd vpn ln -s /usr/share/easy-rsa/* .
Crie primeiro o certificado de autoridade certificadora (CA). Para isso, faça "source" no arquivo vars e em seguinda limpe qualquer configuração com "clean-all".
. vars ./clean-all ./build-ca
Basta ir respondendo as perguntas e criar o certificado com seus dados.
Country Name (2 letter code) [US]:BR State or Province Name (full name) [CA]:SP Locality Name (eg, city) [SanFrancisco]:Tucanistao Organization Name (eg, company) [Fort-Funston]:Loureiro Software Organizational Unit Name (eg, section) [MyOrganizationalUnit]:Loureiro Engenharia Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:openvpn Name [EasyRSA]: Email Address [This email address is being protected from spambots. You need JavaScript enabled to view it. ]:This email address is being protected from spambots. You need JavaScript enabled to view it.
Apesar de não ter escrito nada a respeito, acho que fica bem explícito que os dados podem ser fictícios. Então qualquer coisa serve, apenas para identificar seu próprio certificado, ou melhor, entidade certificadora que assinará as chaves.
Em seguida crie o certificado do servidor e assine. Basta rodar o comando seguinte que o mesmo pedirá para entrar como uma senha e pra assinar a chave. Não entre com senha (tecle <Enter> somente), pois isso facilitará a configuração. Mas selecione pra assinar o certificado.
./build-key-server server
O próximo passo é a criação da chave do DD-WRT. Para isso use o comando:
./build-key dd-wrt
Assim como no passo do servidor, não entre com uma senha, para tornar as coisas mais simples.
Por último basta gerar os parâmetros de Diffie-Hellman pro servidor (chave pública-privada). Leva um certo tempo esse passo de geração.
./build-dh
Terminados os passos de geração de certificados e chaves, terá um diretório "keys" com todas as informações criadas:
$ ls -1 keys/ 01.pem 02.pem ca.crt ca.key dd-wrt.crt dd-wrt.csr dd-wrt.key dh2048.pem index.txt index.txt.attr index.txt.attr.old index.txt.old serial serial.old server.crt server.csr server.key
Através do AWS, a Amazon permite criar uma conta gratuita por 1 ano. Então pra minha finalidade foi perfeito. E tem a vantagem de permitir criar o servidor em qualquer lugar do mundo onde a Amazon tenha datacenter. Isso significa EUA, Brasil, Irlanda, Alemanha, Japão, Singapura e Austrália. E a criação simplesmente a um clique de distância.
Não vou descrever o processo de criação de uma instância no AWS (máquina virtual) pra não deixar o artigo muito extenso, e também porque existem já bastantes documentos sobre o assunto. Mas é basicamente clicar pra criar uma instância, decidir o tipo gratuito, que foi Ubuntu no meu caso, e esperar a máquina virtual ser criada e ativada.
É importante permitir a instância receber tráfego na port 1194 com protocolo UDP pra estabelecer a VPN.
Uma vez a instância funcionando, basta instalar o pacote openvpn e copiar as chaves criadas para dentro do servidor.
ssh root@servidor_aws aws# apt-get install openvpn aws# exit scp -r keys root@servidor_aws:/etc/openvpn
Eu resolvi deixar tudo dentro de "/etc/openvpn" pra facilitar a configuração.
A configuração do lado servidor pode ser inserida dentro do arquivo "/etc/openvpn/dd-wrt-server.conf":
dev tun verb 4 dh /etc/openvpn/keys/dh2048.pem ca /etc/openvpn/keys/ca.crt cert /etc/openvpn/keys/01.pem key /etc/openvpn/keys/server.key tls-server mode server client-to-client persist-key persist-tun push "redirect-gateway" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" push "dhcp-option DOMAIN aws.lan" keepalive 15 60 server 10.1.0.0 255.255.255.0 auth sha256 cipher aes-256-cbc link-mtu 1570 comp-lzo
e dentro de "/etc/default/openvpn" basta inserir a linha:
AUTOSTART="dd-wrt-server"
e reiniciar o daemon de openvpn pra ter tudo funcionando. O servidor também precisa permitir tráfego e fazer NAT do mesmo, então os seguintes comandos são necessários (e podem ser colocados em scripts dentro da configuração do openvpn):
iptables -t nat -A POSTROUTING -s 10.1.0.0/24 -o eth0 -j MASQUERADE sysctl -w net.ipv4.ip_forward
DD-WRT não tem uma das melhores formas de debugar conexão. Então caso queira testar de um outro computador, basta criar um arquivo "dd-wrt-client.conf" com a seguinte configuração:
dev tun
remote 52.30.152.15
verb 3
client
remote-cert-tls server
resolv-retry infinite
nobind
persist-key
persist-tun
float
route-delay 30
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/dd-wrt.crt
key /etc/openvpn/keys/dd-wrt.key
comp-lzo
No caso basta apenas trocar a linha "remote 52.30.152.15" pra da VPS no AWS. Como no servidor, copie as chaves para dentro do diretório "/etc/openvpn/keys" para facilitar a configuração.
Para iniciar o túnel, basta chamar openvpn como root ou via sudo:
sudo openvpn --config dd-wrt-client-conf
e testar se a conexão está estabelecida corretamente.
No DD-WRT, basta ir na aba de "services/VPN" e habilitar o "OpenVPN". A configuração é a seguinte:
Em "Server IP/Name", basta colocar o IP da instância da AWS. Em CA Cert, o certificado da entidade certificadora, basta copiar e colar o conteúdo de "keys/ca.crt". Em "Public Client Cert" é copiado o conteúdo de "keys/dd-wrt.crt" inteiro, inclusive os dados que estão no início (e que parecem não ser necessários, mas são). Por último em "Private Client Key" vão os dados de "keys/dd-wrt.key", que é a chave privada.
Terminada a configuração, basta salvar e aplicar pra ter seu túnel OpenVPN iniciado diretamente do roteador.
E deu certo no final?
Não. Eu mudei minha conta pra UK pra ter conteúdo em inglês. Então preciso mudar de novo pro Brasil, mudança permitida somente a cada 3 meses, pra ativar os jogos. Não é à toa que Bill Gates é o homem mais rico do mundo.
De agora em diante, só jogos em mídia digital pro playstation e steam.
Ano passado durante uma arrumação das coisas em casa, pra encaixotar e mudar, encontrei um CD do Direto GNU. Desde então tenho essa idéia de escrever sobre a história do mesmo, mas sempre tinha alguma coisa a mais pra escrever e acabava esquecendo. Hoje apareceu a oportunidade.
Antes de continuar devo dizer que tudo que escrevo aqui não é fato comprovado. É algo do tipo "ouvi do porteiro do amigo da cunhada de um sogro de um amigo meu". Quem quiser saber se o fato é verídico ou não, o melhor é buscar por si mesmo as fontes pois não sou jornalista investigativo buscando um Pulitzer e isso aqui não é um blog que busca pela veracidade de notícias e fatos (não que tudo postado aqui seja mentira).
O que era ou é esse tal de Direto GNU?
O Direto GNU foi uma das primeiras experimentações de software público com software livre. Como no início dos anos 2000 o software livre no Brasil tinha sua meca no FISL, em Porto Alegre, nada a se estranhar que o órgão de TI do governo estadual, a PROCERGS, estivesse tocando algo assim.
O Direto GNU era uma suite de aplicativos de mail pra escritórios. Em termos gerais, era um substituto livre do Exchange server da Microsoft. Fazia as partes de servidor de mail, webmail e agenda integrados. Talvez tivesse algo além disso, mas nunca nem olhei. Ganhei o CD da PROCERGS num dos FISLs e guardei.
Meu interesse nunca foi muito além disso pois eu não trabalhava com nada que precisasse do Direto GNU (não era mais sysadmin) e o sistema era feito em Java. Até hoje eu olho com cara de quem chupou limão galego quando alguém fala em software livre e código em Java. Aliás, como tenho trabalhando bastante com python e Java, eu atualmente olho pra quem programa em Java com uma certa dó, pela falta de conhecimento de algo melhor.
Software livre, nome até com GNU, Copyleft PROCERGS, Java, FISL... até aí estava tudo bem. Tudo se encaixava nos moldes de software livre no Brasil. Então... cadê o Direto GNU? Onde ele foi parar? Será que foi abandonado pra em pról do uso de Jegue Panel? É aí que entram as partes que são... rumores. Ou quase...
Era software livre? Boa pergunta. Eu achava que era. O CD ao menos mostrava um "Copyleft PROCERGS". Mas eu resolvi dar uma boa olhada de perto e...
helio@laptop:DiretoGNU$ ls direto-instalacao direto-instalacao.tar.gz Direto.pdf Fontes Fontes.zip Manual Instalacao.pdf Manual_Instalacao_Pdf.zip Manual_Usuario_Pdf.zip helio@laptop:DiretoGNU$ cd Fontes/ helio@laptop:Fontes$ ls Agenda AutorizaPresentation.java Catalogo DiretoProperties.java ImapAdminInterface.java ObjectPool.java Usuario.java Applet Editor BusinessInterface.java Correio diretorio ImapAdmin.java parseHash.java Util.java Autoriza.java ByteArrayDataSource.java Direto.java Hoje JDBCConnectionPool.java PresentationInterface.java helio@laptop:Fontes$ rgrep -i gpl * helio@laptop:Fontes$ rgrep -i copyright * Agenda/Evento.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/Reminder.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/Agenda.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/AgendaBusiness.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/EventoExport.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/ReminderThread.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Agenda/AgendaPresentation.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Catalogo/OptionsInterface.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Catalogo/CatalogoBusiness.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Catalogo/CatalogoPresentation.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Catalogo/DiretoOptions.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Catalogo/Catalogo.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados Correio/FollowUp.java:* Copyright (c) 2000 PROCREGS Projeto Direto. Todos os direitos reservados Correio/Correio.java: * Copyright (c) 2000 PROCREGS Projeto Direto. Todos os direitos reservados Correio/MailUserData.java: * Copyright (c) 1998 The Java Apache Project. All rights reserved. Correio/MailUserData.java: * 1. Redistributions of source code must retain the above copyright Correio/MailUserData.java: * 2. Redistributions in binary form must reproduce the above copyright Correio/FollowUpServer.java:* Copyright (c) 2000 PROCREGS Projeto Direto. Todos os direitos reservados Correio/CorreioProgramado.java: * Copyright (c) 2000 PROCREGS Projeto Direto. Todos os direitos reservados Direto.java:* Copyright (c) 2000 PROCERGS Projeto Direto. Todos os direitos reservados
Com exceção do software da Apache, o resto era tudo propriedade da PROCERGS.
Qual foi a consequência disso? Volto a frisar que é um rumor que ouvi do amigo, do amigo, do porteiro do vizinho. Mas ao trocar o governo, com a eventual verificação de caixa - que sempre está baixo pro seguinte - o governador em exercício teve uma idéia brilhante: fechar os fontes e cobrar pelo uso do software.
Na época em que fomentavam o Direto GNU o governador do Rio Grande do Sul era Olívio Dutra do PT. Um dos primeiros políticos que realmente abraçou o uso do software livre em sua administração. E não somente pra baixar custos, mas pra criar uma vantagem competitiva à região. E conseguiu, com muito sucesso. Então todos os órgãos de administração pública do estado adotaram o software. Empresas de energia elétrica, água, transporte, etc... tudo e todos.
Infelizmente a mudança de governo, que sempre acontece de tempos em tempos, fez uma curva de 180º nas diretivas de software livre indo totalmente na contra-mão do que existia. E o novo governador teve uma brilhante idéia pra reforçar a arrecadação da máquina estatal: cobrar pelo software. E pra cobrar era preciso... fechar o software!
Como a maioria das empresas estaduais já usavam o software, por exigência da administração anterior, virou quase um caso de ser tornar refém de seu uso. Como o software não existia em repositório, foi fácil mudar tudo pra uma licença proprietária fechada e cobrar pelo uso. Simples assim.
Foi assim que o DiretoGNU virou um direto na boca do estômago de todo mundo.
Atualmente o governo federal tem um software na mesma linha, o Demoisele, mas o aprendizado do Direto GNU os levou a ter certeza de ter a licença LGPL e de que o software está publicado num repositório externo. Depois veio também o Expresso, que fica próximo ao Direto GNU em termos de funcionalidade. Também publicado sob GPL e em repositórios públicos.
Essa foi a lição aprendida em termos governamentais sobre a gestão de conteúdo de software livre. Mas o seu uso pode ser totalmente abolido caso um novo governo assuma, o que eventualmente deve acontecer, e o mesmo quiser apagar o "legado" do governo anterior. Por isso é tào importante ter software livre como uma estratégia de crescimento pro país, e não de um partido.
O software livre não é de direta, nem de esquerda, nem de centro. É software, e disponível para todos, assim como os algoritmos de matemática.
Se sabe usar corretamente, não precisa de nenhuma outra ferramenta.
Acho que nada dá mais prazer no trabalho que receber um laptop novo. Tem gosto de natal. Em geral esse sentimento de felicidade se dá a cada 3 ou 4 anos, dependendo da política da empresa (e do faturamento, claro).
Ano passado, pela mudança de local e país, eu já tinha recebido um "monstrobook" HP ZBook 15 para trabalhar. Apesar da versão mais nova de hardware, não era muito diferente do meu antigo laptop, também "monstrobook", que descrevi em "rodando Linux no HP EliteBook 8570w" e que pesava por volta de 5 Kg com a fonte de alimentação. Notebook parrudo, mas muito, muito pesado.
No final do ano passado recebi a excelente notícia que todos os notebooks corporativos HP deveriam ser trocados pra Dell pros que usavam Linux, que é meu caso. Felicidade transbordando, vamos às compras.
Entre as opções corporativas, vários notebooks, vários latitudes e inspirions. Notebooks bons, mas sem muita diferença pra o que eu já tinha antes. Então resolvi arriscar e pegar um ultrabook, ainda mais um que tinha a cara do que eu queria: Dell XPS 13 Ubuntu Developer Edition. Eu nunca tinha usado um laptop tão pequeno e principalmente sem drive de CD/DVD. Mas se Linus Torvalds trabalha num MacBookAir, então resolvi arriscar em algo parecido.
Não vou comentar muito da parte burocrática, pois foi algo chato e que não acrescenta muito. Apenas que o laptop demorou uma eternidade pra chegar por ser teclado US e quando chegou, veio com o teclado nórdico. No fim a Dell mandou outro laptop ao invés de trocar o teclado. Excelente serviço pós-venda deles. Ao menos pros clientes corporativos.
E gravei o unboxing do brinquedo novo (aliás, como é difícil abrir e desempacotar tudo com uma só mão):
Do laptop, nada a reclamar. Leve, muito leve. Algo como 1,2 Kg sem a fonte, que também é pequena. Parte externa metálica. E bateria que dura por volta de 6 horas. Isso mesmo. Eu passo quase que o dia inteiro trabalhando sem conectar na energia. Coisa maravilhosa.
A placa de vídeo não é das mais fortes. É uma placa Intel Broadwell-U. Funciona bem com os kernels mais novos (estou rodando o 4.1.2 no momento) mas tem alguns problemas pra usar monitor externo na versão de Ubuntu que vem de fábrica.
Falando no Ubuntu, sim eu tive de remover. Nada contra Ubuntu ou algo assim, mas usamos uma versão corporativa dele na empresa. Então tive de remover o Ubuntu 14.04 que veio instalado pra instalar... Ubuntu 14.04.
O sistema roda redondo, sem problemas de driver ou algo do gênero. Vantagem do árduo esforço da Intel junto ao Linux pra implementar seus drivers. Bluetooth, wifi, controle de volume pelo teclado, tudo, absolutamente tudo sai funcionando de primeira em Linux. Mais precisamente Ubuntu, mas acredito que não será diferente com outras distros.
O único ponto bizarro dele é mesmo a webcam, que fica na parte de baixo da tela. Então eu fico com um certo olhar de superioridade em todas as conferências que faço via skype ou algo do tipo. Eu já sabia desse ponto, mas não diria que é um ponto negativo a ponto de abandonar a aquisação dele.
Outro ponto que é um limitante é a memória RAM. Pra manter o sistema compacto o suficiente pra caber tudo num ultrabook, a memória RAM é soldada diretamente na placa mãe. Com isso, nada de upgrades. Então a máquina veio com 8 GB de RAM e esses mesmos 8 GB vão ficar por aqui até o fim da vida útil dele. Sem problemas agora, mas será que não vou achar pouco daqui 3 ou 4 anos? Bom... só não rodar Java já libera uns 4 GB com certeza.
Outro ponto é que são somente duas portas USB. USB 3.0, mas só 2. Então um HUB USB é essencial pra poder conectar mouse, pendrive e HD externo. Além da interface ethernet quando dá pau no wifi. Tem saída de vídeo display port, portanto um cabinho display port pra hdmi no DealExtreme é realmente algo necessário. E tem um mostrador de nível de bateria, que é muito útil quando se desliga o laptop, mas usa a porta USB pra alimentar o celular. Tem leitor de memória SD que uso de vez em quando e só. E tudo funcionando lindamente em Linux.
Outro problema que tenho de tempos em tempos é bug com a placa de vídeo. Conectar em monitores externos e remover, dá uns crashes bonitos no drive da Intel de vez em quando. Então meu uptime não é muito alto. Mas sobrevivo bem com o disco SSD que faz o boot em alguns segundos.
Dados técnicos (saídas de comandos como lspci, lsusb, etc):
Ainda hoje muita gente mostra supresa quando digo que estou rodando um kernel recém lançado em meu sistema. Apesar de quase todo mundo saber que Linux é o kernel apenas, uma parte do sistema operacional, pouca gente compila seu próprio kernel. E isso é uma coisa bastante simples com Debian e Ubuntu, ou qualquer outro sistema baseado neles.
Também vejo pessoas distribuindo o kernel em forma de download em sites como 4share, mega, etc. É legal contribuir com comunidade, mas distribuir um kernel assim, a parte mais vital do sistema, dá brecha de segurança pra que alguém insira um malware ali. Então evite fazer isso. E compile seu próprio kernel.
O primeiro passo é ter o código fonte do Linux. Depois que passou a utlizar o git pra controle de versão (e muito mais que isso), eu também passei a usar o mesmo pra sincronizar meus fontes. No diretório "/usr/src", como root, crie o repositório git local da seguinte forma:
root@jessie:src# git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git
Não é um processo rápido. O sistema vai baixar mais de 1 GB de arquivos no diretório "/usr/src/linux-stable".
Antes de botar a mão na massa, crie um novo "branch" com a versão que irá compilar. É possível ver as versões disponíveis pelo comando "git tag -l". No meu caso eu usei a versão v4.1-rc7. Então a coisa toda pra listar e criar seu "branch" fica assim:
root@jessie:linux-stable# git tag -l | grep v4.1 root@jessie:linux-stable# git checkout -b v4.1-rc7 tags/v4.1-rc7
O próximo passo é criar uma configuração de kernel antes de compilar. Em geral eu copio o arquivo "/root/config-<minha versão corrente>". Se quiser fazer isso, o comando correto é:
root@jessie:linux-stable# cp /boot/config-$(uname -r) .
Existem outras maneiras de configurar o kernel, como usando o comando "make menuconfig" ou "make xconfig", entre outros. Mas é preciso saber exatamente o que se quer do kernel pra configurar o que se realmente deseja. Uma tarefa não muito fácil pras primeiras compilações.
O passo seguinte é instalar um pacote chamado "kernel-package". Esse pacote é que faz toda a mágica da compilação e geração de pacotes pra você. Isso mesmo: ao final do processo terá um kernel seu num arquivo .deb. Eu já usei isso muito pra compilar em uma máquina e instalar em várias outras. Voltando ao pacote, instale usado "apt-get", "apt" (novíssimo), ou "aptitude".
root@jessie:linux-stable# apt install kernel-package
O passo seguinte é chamar o kernel-package pra criar o kernel. Eu pessoalmente uso da seguinte forma:
root@jessie:linux-stable# make-kpkg --initrd --append-to-version "-helio" --bzimage --revision 1 -j 4 kernel_image
O comando passado e os parâmetros são:
Ao iniciar a compilação, o sistema passará por uma etapa de revisão da configuração que foi definida anteriormente. Todo opção nova passará por uma pergunta se deve ou não ser incluída, ou ficar como módulo (pra ser carregado dinamicamente). Toda pergunta já vem com alguma sugestão de resposta. Em geral essa é a melhor opção a menos que realmente saiba o que aquela configuração significa.
Passada essa etapa, pode ir pegar um café. Um café? Melhor um bule inteiro. E pode ir assistir ao último episódio de Game of Thrones que a compilação demora um pouco.
Uma vez terminada, se não tiver nenhum erro, será gerado um pacote com o formato "/usr/src/linux-image-<versão do kernel><nome que você personalizou>_<revisão>_<arquitetura da máquina>.deb". No meu caso foi o pacote "/usr/src/linux-image-4.1.0-rc7-helio_1_amd64.deb". Basta instalar e rebootar o computador pra testar a nova versão.
root@jessie:linux-stable# cd .. root@jessie:linux-stable# dpkg -i linux-image-4.1.0-rc7-helio_1_amd64.deb root@jessie:linux-stable# reboot
Se por acaso alguma coisa der errado, basta segurar o <Shift> ou <Esc> na inicialização da máquina, antes de carregar o Grub, pra poder ver o menu do mesmo. Em seguida escolher o kernel que se estava rodando antes e inicializar por ele. Depois basta remover o kernel criado, algo que e facilitado pela geração do pacote .deb.
root@jessie:linux-stable# dpkg -r linux-image-4.1.0-rc7-helio
Se for compilar o mesmo kernel, mas com opções de configuração diferentes, pode usar outra revisão. Aliás incrementar a mesma. Isso aparecerá no pacote gerado, mas não no kernel.
Boa compilação e boa diversão :)
Não é um fenômeno recente. Faz alguns anos que esse sintoma tem aparecido. Mas não é no mundo todo. Até o momento só vi isso vindo do Brasil, o mesmo país que pede pela volta dos militares ao poder com a chamada "intervenção militar no Brasil". Temas distintos, modus operandi similar.
O princípio é "se não for como eu quero, então está errado". Isso pode ser usado em qualquer âmbito: religião, futebol e até mesmo em... software livre!
Essa discussão em software livre já vem caminhando nessa direção faz algum tempo. E sempre com extremismo. Os pontos são sempre "se não for livre, então é outra coisa". A moda do momento é chamar como "OSIsta", uma alusão pejorativa de quem usa ou endossa a iniciativa do "open source". Notem novamente o "modus operandi": é preciso ter um nome, um label, um rótulo, algo pra classificar, desmerecer, pra fazer um dualismo, uma contra-posição.
Essa tendência repete-se nitidamente na política, como se verificou nas últimas eleições presidenciais. Ao invés de um debate democrático, partiu-se pra um enfrentamento de "nós x eles". No caso da política, de ambos os lados, e todos recheados de mentiras e números mágicos pra comprovar alguma coisa. O ponto era sempre irrelevante, o importante era ter uma "torcida" contra e outra a favor.
Em software livre estamos na fase das "torcidas". É um tal de "minha distro é melhor que a sua" e de "pra resolver esse problema, instale a distro tal". Perdemos o saber, o conhecimento, o prazer técnico. Voltamos à idade da pedra digital. Batalhas épicas são travadas por causa de interfaces gráficas. Ninguém mais liga se é possível instalar essa mesma interface em outra distro ou não. Ajudar? Escrever software? Não, muito obrigado.
O que é uma comunidade? A wikipedia, que é uma comunidade, nos ajuda a responder do ponto de vista sociológico:
Uma comunidade é um conjunto de pessoas que se organizam sob o mesmo conjunto de normas, geralmente vivem no mesmo local, sob o mesmo governo ou compartilham do mesmo legado cultural e histórico. Os estudantes que vivem no mesmo dormitório formam uma comunidade, assim como as pessoas que vivem no mesmo bairro, aldeia ou cidade. Fichter, 1967 em suas Definições para uso didático ressalta que uma palavra que é rodeada de significados múltiplos, requer uma cuidadosa definição técnica, ao que propõe: comunidade é um grupo territorial de indivíduos com relações recíprocas, que servem de meios comuns para lograr fins comuns.
https://pt.wikipedia.org/wiki/Comunidade
São indivíduos reunidos por algo comum em buscar de reciprocidade pra chegar nos mesmos objetivos. Isso significa que pra fazer parte de uma comunidade basta... participar!
E numa comunidade de software livre? O que se espera de alguém que participe de software livre? Pode parecer loucura minha, mas se espera que a pessoa faça... software! E livre! Livre! Que coisa doida, não é?
Claro que nem todos têm essa capacidade de escrever software. Mas sempre podem colaborar como membros de um grupo, ou até vários. Podem ajudar com traduções, escrevendo novos documentos de uso, compartilhando experiências em blogs, participando de grupos, fazendo eventos, palestrando, escrevendo relatórios de bugs e... eventualmente... escrevendo software!
Numa comunidade esse é o caminho do aprendizado, vai se crescendo conforme se participa e adquire mais maturidade. Uma comunidade de software, seja livre ou não, não vive por muito tempo se ninguém se dispuser a escrever o software. No caso de uma comunidade de software livre, temos de fazer sempre software, e livre.
E como define liberdade? Como um software é livre?
Nisso o Richard Stallman já nos ajudou mostrando que pra um software ser livre, ele precisa atender as 4 liberdades. Eu já tinha descrito no post "freesoftware e negócios", mas o faço novamente aqui:
Então pra fazer parte de uma comunidade de software livre, basta criar softwares partindo desse princípio básico. E a licença? Sempre depende de quem criou. Alguns gostam da GPL (sendo que GPLv2 e GPLv3 são muito diferentes), já outros preferem BSD, ou Artistic License. Eu uso uma no estilo da Artistic License, a BWL.
Veja que software livre não é algo que dá poder ao programador ou desenvolvedor, mas ao usuário, que pode usar o software como quiser e quando quiser. Inclusive pra vender. O desenvolvedor permite que qualquer um possa usar e melhorar seu software.
Foi esse tipo de liberdade que me atraiu pro software livre. Não foi pra libertar um país de nenhum ditador, nem pra subverter a economia, muito menos pra derrotar o capitalismo. Eu gostei da visão pragmática do software livre, onde todos têm acesso ao código fonte e podem melhorar o software. Isso pra mim foi e ainda é liberdade.
Mas aparentemente não pra galerinha que gosta de rotular. Software livre extrapolou os limites do software pra se tornar uma luta de classes. Como ideologias econômicas temos o capitalismo, o socialismo, e agora o softwareliberalismo. Não, não existe, mas para alguns, aparemente é o que é.
E como se define um líder numa comunidade? Em geral é pela meritocracia. Meritocracia de fazer polêmica? Não, meu caro. Deveria ser por ter passado por todos os estágios de uma comunidade de software livre. Mas quantos que gritam pelas ruas pela "liberdade do software" realmente se encaixam nesse perfil?
Muitos desses "lutadores da liberdade", ou melhor, "gladiadores da liberdade" escolheram o Ubuntu como alvo. Qual o motivo? Duas respostas simples:
1) Ubuntu lidera o mercado de desktops Linux
2) Ubuntu não é uma distribuição criada por uma comunidade, mas por uma empresa, a Canonical
Então qual é o mais fácil de atacar? Quem tem o menor número de usuários ou o maior? Claro que o maior. Por isso que Ubuntu é sempre escolhido como alvo preferido. E enquanto mantiver essa liderança, continuará sendo. Pra isso não importa se trouxeram mais usuários pra Linux, se mantém um portal pra correções de bugs ou que façam doações de mídia de instalação gratuitas. É corporativo, é do mal. O que antes era ocupado pela Microsoft como visão de antagonismo, agora é a Canonical com seu Ubuntu. É sempre preciso ter um inimigo pra lutar contra.
Os problemas citados? Vou apenas comentar um: Ubuntu "monitora seus usuários". A Canonical, mais uma vez como empresa, decidiu monetizar o Ubuntu utilizando as "lentes" de seu ambiente desktop pra fazer buscas na Amazon e assim conseguir algum financiamento com essas buscas. O mesmíssimo mecanismo usado por... FIREFOX! Sim, o browser Firefox. Quando se faz a pesquisa na caixa de pesquisas do browser, ele envia ou pra Google ou pra Yahoo, pra monetizar o projeto e assim poder financiar seu desenvolvimento.
Mas o Firefox, ou melhor, a Mozilla não é líder. Nem em browsers, nem em telefones (que recém lançaram e não fez muito diferença pros usuários). Então não vale a pena receber o ódio dos gladiadores da liberdade. É preciso ter um significado, mostrar alguém com monstro, como contradição. É preciso ter um diabo pra existir um deus.
Todos os outros comentários sobre Ubuntu, e que podiam ser pra qualquer outro, caem no caso de factóides. São apenas meia-verdades contadas pra criar um fato, um caso. Apenas pra gerar polêmica e buscar atenção. Não vou comentar mais nenhum, mas da próxima vez que ouvir sobre algo assim, pergunte a si mesmo qual é a licença usada nesse software/produto da Canonical, se o código fonte está disponível, se é usado pela Canonical, pelo kernel (Linux), se é usado por outras distribuições profissionais como RedHat e Suse, e se qualquer usuário poderia optar por remover ou não pelo gerenciador de pacotes. Se está entre algum desses, factóide na certa.
Acho que não. Ubuntu não precisa disso ou de qualquer um de nós. É gerido por uma empresa, e não por uma comunidade. Como tal, toma suas decisões como melhor convier pra seu negócio.
E se em algum momento o Ubuntu ou a Canonical se sentirem lesados por essas atitudes, tenham certeza que seus advogados agirão.
Eu gosto do Ubuntu pela facilidade de entrada ao mundo de software livre que proporciona às pessoas. Não é feito pra mim ou pra qualquer um que já use Linux, mas pra quem nunca usou ou experimentou. Esse tipo de usuários (veja que não me refiro como comunidade, mas usuário) não tem interesse ou conhecimento sobre liberdade. Não nesse primeiro contato, que é muito importante.
Eu sou fã irrestrito do Debian, mas simplesmente desisti de tentar esse primeiro contato através dele. Por que? Debian não é bom? É bom pra mim. É ótimo. Mas toda vez que tentei fazer uma instalação pra amigo, pra convencer a usar, virei um tipo de suporte técnico. Aliás personal suporte técnico. E problemas não faltaram. De upgrade que parou de funcionar ambiente gráfico a modem que não conectava mais na Internet.
Atualmente recomendo usar Ubuntu sem medo. Se gostar e quiser aprender mais, ensino sobre Debian. Se achar horroroso e difícil, já abandona ali mesmo. Ganhei tempo ao invés de perder.
Esse é o discurso que todos deveriam adotar em software livre: inclusão. Mas ao contrário disso decidimos por ir direto pela segregação.
Incrivelmente alguns realmente acham que esse caminho dará certo. Eu prefiro concordar com a imagem que o Patola postou num dos grupos que discutiam esse tipo de assunto. Deixa bem claro quem realmente ganha com a ajuda dos gladiadores da liberdade.
Page 14 of 33