Começando 2015, todos se lembram de como foi 2014. Então resolvi escrever com um artigo sobre memória :)
Durante umas das discussões no grupo SOSLinux, alguém postou que já não usava Linux com swap fazia um tempo. Nos meus velhos conceitos Unix adquiridos no século passado isso era algo inconcebível. Uma heresia. Um motivo pra receber um belo dum RTFM.
Esse é o problema de ter "aquela mesma velha opinião formada sobre tudo", como dizia Raul Seixas. As coisas mudam. Os sistemas evoluem. Aquela recomendação de sempre se ter swap, e com fórmulas mágicas sobre seu tamanho, são coisas do passado, de uma era em que Linux era pra servidores e desktops. Agora Linux está em todo lugar. Na minha TV, no meu telefone, no meu tablet, e vai saber mais onde. Talvez já esteja até no meu café e eu ainda não saiba.
Mas o fato é que naquela época a idéia era que as máquinas seriam cada vez maiores, mais potentes, mais gigantes, mais mais, muito mais. Na verdade até são. Mas aconteceu um fato interessante: o cloud. Esse conceito permitiu uma forma de computação mais distribuída, com vários pequenos computadores ao invés de somente um maior. E esse conceito foi se espalhando. Se pensarmos hoje em dia nos celulares, eles são uma extensão computacional de algo que roda num datacenter. Temos uma parte do aplicativo rodando localmente, e outra parte na nuvem.
Nesse novo paradigma, não é preciso tanto swap quanto antes. Meu laptop tem 8 GB de RAM (tinha 12 GB com um pente extra de 4 GB que comprei no Dealextreme, mas o danado teima em dar problema de acesso e travar), mais que suficiente pra muita coisa.
Então resolvi experimentar.
Desabilitei o swap (swapoff /dev/mapper/vg-swap) e comentar a linha que o habilitava durante o boot no /etc/fstab. E funcionou. Mas bastou abrir chrome, firefox, thunderbird e eclipse pra coisa ficar feia (claro que a culpa é do java).
root@elx3030vlm-78:vm# head -16 /proc/meminfo MemTotal: 7926776 kB MemFree: 218640 kB MemAvailable: 889676 kB Buffers: 57568 kB Cached: 750036 kB SwapCached: 0 kB Active: 6672176 kB Inactive: 404504 kB Active(anon): 6282356 kB Inactive(anon): 55548 kB Active(file): 389820 kB Inactive(file): 348956 kB Unevictable: 65852 kB Mlocked: 65852 kB SwapTotal: 0 kB SwapFree: 0 kB
Quando chega próximo do limite de memória, eu simplesmente tenho de aguardar o kernel decidir matar alguma coisa pra eu conseguir mandar um comando. Até fiz um vídeo pra mostrar a situação.
{youtube}ga8lG2xE7wc{/youtube}
Nessas ocasiões a carga do sistema vai às alturas, provavelmente por troca de contexto de processos no kernel, tentando achar memória onde não tem.
Quando isso acontece, uma mudança do ambiente gráfico pro console e um reinicio do mesmo resolve. Mas é chato.
Esses são os load averages que consegui enquanto gerava o vídeo acima:
12:51:51 up 21:12, 6 users, load average: 36.61, 59.21, 75.31 13:01:24 up 21:21, 6 users, load average: 57.21, 51.78, 61.71 13:29:59 up 21:50, 6 users, load average: 110.99, 122.08, 107.70
Então melhor com swap? Não é tanto assim. O sistema evoluiu, mas o problema de gerenciamento de memória é coisa do Linux. Com swap esse tipo de problema também acontece, só demora mais. Eu já tinha visto isso justamente com criação de vídeo no kdenlive. Tinha um bug no melt, possivelmente um memory leak, que ia consumindo toda a memória. Travava? Não, mas tinha de aguardar o kernel matar o melt pra conseguir voltar. Isso levava de 4 a 6 horas. Usando somente RAM acontece o mesmo, mas é mais rápido, por volta de 20 ou 30 minutos.
Eu tentei achar alguma referência de tunning pra ajudar.
Memory Management Approach for Swapless Embedded Systems
http://linux-mm.org/LinuxMMDocumentation
O problema é que a maioria das informações são antigas. No kernel que estou usando, 3.17.7, não tem esses parâmetros. Mas eu tentei melhorar a responsividades alterando algumas coisas:
vm.laptop-mode = 1 vm.memory_failure_early_kill = 1 vm.memory_failure_recovery = 1
O resultado foi bastante satisfatório e agora o sistema tem estado mais responsivo durante alta carga que exige alocação de memória. E com mensagens interessantes vindas do kernel.
Out of memory: Kill process 24223 (chromium-browse) score 332 or sacrifice child Killed process 24223 (chromium-browse) total-vm:1360048kB, anon-rss:242548kB, file-rss:15632kB
Gosto de um sistema que exige sacrifícios.
Acho que agora o tão falado fim da rede social que revolucionou a comunicação na Internet chegou. Não digo em relação à investimentos, interface web ou mudança de tráfego. Falo de código.
Recentemente eu ministrei mais um coding dojo. O assunto escolhido foi... Twitter! Twitter e python. O motivo era simplicidade de ambos. Fácil fazer, rápido pra colocar em produção e testar.
Até preparei meu curso de python twitter pra inglês:
http://prezi.com/phgt99r0-3fx/?utm_campaign=share&utm_medium=copy&rc=ex0share
Palestra pronto, público pronto, então foi hora de bota a mão na massa. Pra não começar com algo enfadonho, aproveitei o intervalo de almoço pra criar uma conta na rede do twitter, pra justamente fazer a aplicação e brincar. A conta foi criada sem problemas, mas na hora de criar a aplicação e mudar a permissão de leitura pra escrita...
Uma das coisas que adorava no Twitter era a facildade. Bastava criar uma conta e usar. Sem burocracia. Então começaram com confirmação de e-mail. Até aí era tranquilo. Criava um mail a mais em um dos meus domínios de Internet e continuava em frente.
Mas agora é preciso cadastrar telefone. Um número pra receber... SMS de confirmação? Até entendo a parte de aumentar a segurança pro usuário com autenticação em 2 passos, mas... complicou. Não tenho várias linhas de prépago pra ficar cadastrando a cada novo usuário que eu criar pra dar um curso ou coding dojo.
Sim... pra mim isso significa o começo do fim. Não são os números, não são os investidores, não é o mercado. É o uso. É o hacking. Esse era o diferencial para mim.
Minhas outras aplicações mais antigas ainda funcionam. Ainda. Mas não sei por quanto tempo. Posso simplesmente cadastrar meu celular? Até poderia, mas não tenho tanto interesse assim que o Twitter ou qualquer outra rede saiba meu celular.
Então é isso... continuarei usando mas... não tanto. Nem pra cursos. Nem pra coding dojos.
É hora de mudar pra outra rede.
Due my current job, I can't offer anymore Debian professional consultant services. It could conflict to company interestes. But I can offer it for free.
So if you are a non-profit organization, like schools, and would like to have a Debian server place in your environment, I can give you certain services and/or directions.
Services that I can help you are:
Do you need them? Or even an install fest? Or someone to talk about Debian and Linux? Then just drop me a mail.
Mail: helio-arroba-loureiro-ponto-eng-ponto-brTwitter: @helioloureiroNo nosso ambiente de desenvolvimento utilizamos Jenkins pra Continuous Integration, ou seja, a cada "commit" de código, compilar e testar a versão de uma forma automatizada. Cada um pode conectar no servidor Jenkins e visualizar o status do build, mas deixamos um display aberto para que todos possam ver como as coisas andam (e não deixar um release quebrado parado pra sempre).
Nada melhor que usar um raspberrypi pra essa atividade, já que é um dispositivo pequeno e com baixo consumo de energia. Aliás é o treco pendurando pra baixo da TV. O único incoveniente é que pra mostrar mais de um servidor Jenkins, as opções atuais são pra utilizar algum código javascript que faz com que a tela troque de URL.
Essas soluções funcionam muito bem em PCs x86_32 e x86_64, mas em um raspberrypi... as limitações de CPU são grandes. Como os browsers que suportam isso são chrome/chromium e firefox, o efeito indesejado é essa "lentidão" em renderizar a página, como mostra a imagem.
Outro problema é que seu um dos servidores Jenkins estiver fora do ar, esses javascripts "quebram", não fazendo a transição pra url seguinte.
Pra completar o problema, decidimos mudar de chromium pra epyphany, pois o mesmo usa muito menos memória que o chromium, e menos CPU. Mas nem tudo é perfeito: o epyphany não suporta script pra trocar entre várias URLs como o chrome.
Durante essas trocas browsers e experimentos, troquei umas mensagens com o Gustavo Noronha, vulgo Kov, que é um dos mantenedores do epyphany, perguntando sobre as possibilidades do mesmo. Ele disse que epyphany não suportava esse tipo de plugin, mas que eu poderia escrever minha própria aplicação em webkit. Então...
Demorou. Acho que trocamos essas mensagens, via twitter, lá pro meio de outubro. Já é quase Natal. Mas finalmente escrevi alguma coisa.
Comecei com um pequeno script baseado num código em C++ com Qt:
#include #include int main(int argc, char **argv){ QApplication app(argc, argv); QWebView wv; QWebPage *page = wv.page(); QWebSettings *settings = page->settings(); settings->setAttribute(QWebSettings::JavascriptEnabled, true); settings->setAttribute(QWebSettings::PluginsEnabled, true); wv.load(QUrl("http://www.youtube.com")); wv.show(); return app.exec();
Acabei trocando o script simples pra uma classe em python, e usando threads. O que era simples ficou um pouco mais... vamos chamar de "refinado". Mas está funcionando. E com menos memória e CPU, que era o objetivo inicial.
Quem quiser dar uma brincada ou mesmo usar, o código está disponível no GitHub:
Isso mesmo. Olhando meus diretórios pra começar um backup, percebi que criei um arquivo com nome "-C". Provavelmente resultando de alguma comando errado.
O que fazer nesse caso? Em geral comandos como "rm" e "mv" não funcionam pois interpretam o "-C" como uma opção do comando, não como arquivo.
Existem várias formas de resolver isso, inclusive algumas mais fáceis via interface gráfica usando nautilus/dolphin ou algo do gênero. Mas vou mostrar a "forma UNIX" de resolver isso.
Primeiramente, onde está o danado do arquivo?
helio@linux:home$ ls backup -C helio fisl lost+found support
No caso estava no meu diretório "/home". E o que era o arquivo?
helio@linux$ home# ls -l total 646124 drwxr-xr-x 2 root root 4096 Nov 21 09:41 backup -rw-r--r-- 1 root root 661555200 Oct 9 12:05 -C drwxr-xr-x 367 helio linux 36864 Nov 21 09:43 helio drwxr-xr-x 6 fisl fisl 4096 Mar 5 2014 fisl drwx------ 2 root root 16384 Nov 16 2013 lost+found drwxr-xr-x 5 support admin 4096 May 17 2013 support
Agora vem o truque. Cada arquivo criado no seu filesystem tem junto um número de i-node, que é onde ele foi efetivamente gravado no disco. É possível usar a opção "-i" do comando "ls" pra verificar cada número de i-node de cada arquivo do diretório, seja um arquivo, seja um diretório, ou seja qualquer outra coisa (em Unix, tudo é arquivo).
root@linux:home# ls -i 15335425 backup 4741 -C 16252929 helio 14942209 fisl 11 lost+found 15466497 support
Verificado qual o número do i-node, 4741, agora é usar o comando "find" com opção de "-inum" pra mexer nesse arquivo, junto com um "-exec". Na opção "-exec", o arquivo encontrado é substituído pelo "{}", que é como se fosse uma variável com o que foi encontrado pelo parâmetros anteriores, no caso o "-inum".
Então basta usar isso pra renomear o arquivo pra qualquer outro nome.
root@linux:home# find . -maxdepth 1 -inum 4741 -exec mv {} arquivo_alien \;
Verificando...
root@linux:home# ls backup helio fisl lost+found support arquivo_alien
Agora descobrindo o que é esse arquivo.
root@linux:home# file arquivo_alien arquivo_alien: POSIX tar archive (GNU) root@linux:home# mv arquivo_alien arquivo_alien.tar root@linux:home# tar tvf arquivo_alien.tar drwxr-xr-x root/root 0 2014-10-09 12:05 home/ drwxr-xr-x fisl/fisl 0 2014-03-05 10:16 home/fisl/ drwxr-xr-x fisl/fisl 0 2014-03-05 10:16 home/fisl/.purple/ -rw-r--r-- fisl/fisl 173 2014-03-05 10:16 home/fisl/.purple/blist.xml drwxr-xr-x fisl/fisl 0 2013-07-04 22:21 home/fisl/.purple/certificates/
Realmente um arquivo do tipo tar. Provavelmente de algum backup que tentei fazer e passei a opção de forma errado. Sem stress e problema resolvido.
root@linux:home# rm arquivo_alien.tar
Durante uma conversa na rede social Diaspora (tenho uma conta no joindiaspora.com), aceite um desafio de ficar 1 mês fora do FaceBook.
Qual o motivo da ausência? Segundo o desafio, era impossível de se ficar fora da rede, que a rede nos obrigava a estar lá. O desafio também incluia uma ausência conjunta do Whatsapp, mas essa foi fácil, pois já faz algum tempo que substitui pelo Telegram. Entre as maiores vantagens desse, além da tão falada criptografia e segurança (que não acredito muito, mas vá lá) tem o fato de funcionar como webapp em qualquer browser. Isso facilita em muito a vida e não entendo as pessoas continuando a usar o Whatsapp. É tão anos 2010.
Mas voltando ao contro do assunto, e falando mais da ausência do Facebook. Foi assim, sem mais nem menos. Sem aviso. Apenas parei de usar. Como estava num processo de recuperação do meu celular - que eu tinha brickado tentando instalar cyanogenmod, o que consegui depois - então não tinha o app do Facebook no celular. Restava somente via browser, o que bastou somente não acessar.
Mantive o acesso do Twitter e do Google+, afinal, segundo o desafio, eles não tinham a dominação do Facebook e não fariam diferença. E claro, continuei com o Diaspora.
No fim até que foi um bom desafio pois pude ficar fora do Facebook justo durante o período das eleições. Até onde tinha visto, a coisa tinha virado briga de torcida, então foi um lado bom.
No Twitter não foi muito diferente, mas ao contrário do Facebook, Google+ e Diaspora, dá pra usar um aplicativo cliente não oficial, e esses em geral permitem filtrar tipo de posts indesejados. Então foi só botar algumas palavras-chave pra me ver livre da briga de torcidas das eleições.
No Google+ eu nunca usei muito, nem o Diaspora, mas essa ausência também não me fez aumentar o uso. Aliás o pouco que entrei em ambas as redes, as eleições davam o tom. Um tom de lixo não reciclável, que fedia a racismo e difamação, de todos os lados. Achei melhor assistir mais o Netflix.
Eu mantive meus aplicativos enviando mensagens pra dentro do Facebook, como Flickr e RunKeeper, onde geralmente posto minhas fotos (quase sempre do tempo fechado e frio) e meus passeios de bike. Não sei se tiveram repercurssão ou não, acho que vou descobrir agora.
O que mudou na minha vida então depois desse 1 mês fora do Facebook? Na verdade foi mais de 1 mês. Foram 5 semanas, pois esperei passar o segundo turno das eleições e depois resolvi esperar passar o chororô de quem perdeu. Apenas uma pausa: acho que ambos os candidatos eram só mais do mesmo. Ganhar um ou outro não mudará em nada pra onde a coisa está se encaminhando no Brasil e a resposta será amarga. Voltando ao assunto, senti falta dos grupos. Eu já não sou muito usuário da timeline, que passava de vez em quando dando <like> em tudo, e depois mudava pros grupos. Os que mais gosto são:
Tem outros grupos que gosto de participar também, mas nem todos são abertos ou eu participo tanto. Também perdi contato com os amigos que ficaram no Brasil.
Ainda não entrei com tudo no Facebook, mas foram poucas mensagens em que fui citado (68) e algumas pessoas tentaram conversar comigo (5). Dessas conversas, 4 foram de assuntos técnicos, com Linux.
Ou seja, em pouco mais de 1 mês fora do Facebook, 5 semanas, perdi 35 dias. E só.
Pra celebrar mais um Halloween que chega (e que nesse ano celebro de verdade), um conto de terror. Conto? Terror? Não. Mais pra piada que eu tentei achar o original, mas... foi-se.
É sobre Jesus e o Diabo, numa competição de computadores. Existe a versão original, mas a adaptada, powered by Linux, é muito mais engraçada. Infelizmente essa eu não achei. Então peguei a original e dei "aquela ajustada" pra ficar coisa fina.
Divirtam-se e bom Halloween.
Jesus e Satã estavam tendo uma discussão sobre quem era o melhor em computação.
A discussão já ocorria fazia dias, e Deus já estava divinamente cansado de ouvir tanto mimimi. Então finalmente Deus disse "Ok, eu vou preparar uma competição de 2 horas e vou julgar quem é o melhor em computação".
Assim Santã e Jesus sentaram numa mesa pra competir. Satã rodando o último Windows 10 (pre-release), num laptop Aliewware, 21 polegadas, 98 GB de RAM, 2 TB de disco SSD, e 2 CPUs Intel Core i7. Jesus com seu velho laptop Dell, 14 polegadas, 32 MB de RAM e rodando Slackware. Sem interface gráfica.
Eles abriram seus editores de texto preferidos, Satã com o último Microsoft Word 2013 e Jesus com vi, e começaram a digitar. Satã digitou logo de cara 100 palavras, depois 1000, logo 10000, usando 10 dedos, algumas vezes até 15 dedos. Digitava como um louco alucinado. Jesus estava lá, catando o milho que Deus abençoou, usando um dedo de cada mão, no máximo. Tinha algo como 10 palavras digitadas.
Todos estavam ansioso pra ver a performance divina de Jesus, mas aparentemente ele não tinha feito nenhum curso de digitação.
Mas 10 minutos antes do tempo terminar, repentinamente uma luz piscou pelo céu, um trovão se fez ouvir, e uma chuva forte caiu e, claro, caiu a eletricidade também. Aparentemente ambos os laptops estavam sem bateria, uma certa providência divina.
Satã olhou sua tela negra e xingou alguma coisa numa palavra que somente o submundo poderia entender. E Jesus suspirou.
Após alguns minutos, a eletricidade finalmente voltou, e os computadores reiniciaram.
O computador de Satã não reiniciou. Ao invés disso apenas apresentou a famigerada BSOD, mostrando que algo havia se corrompido com o crash. Ele então começou a teclar freneticamente, quase quebrando o teclado, tentando fazer com que o sistema voltasse. Mas nada aconteceu. Apenas sua voz se ouvia, gritando e esbravejando "Se foi! Tudo se foi! Maldito sistema! Maldito! Alguém traga um DVD que preciso reinstalar o windows!"
Enquanto isso, Jesus calmamente aguardava o final do fsck. Quando isso aconteceu, um prompt de login do Linux apareceu. Ao entrar no sistema, Jesus pode ver que o texto, com suas 15 palavras digitadas no vi com muito custo, estavam lá.
Satã ao perceber isso, ficou irado. "Pare! Ele roubou! Com isso pode ter acontecido!?"
Então Deus, com um sorriso maroto e já declarando Jesus o vencedor, olhou de canto de olho e disse "só vi salva".
Novamente falando sobre armazenamento no cloud depois do fim do UbuntuOne e Condoleezza Rice se juntar ao board do Dropbox.
Antes eu tinha descrito uma mudança experimental pro Box.com. Foi bem experimental mesmo. Totalmente. Depois de usar um pouco, simplesmente desisti. Quando alguém não suporta bem Linux, é um trabalho ingrato pra ter as coisas funcionando corretamente. O Box.com não sincronizava bem via webdavs. Às vezes só corrompia o arquivo, às vezes não copiava nada e ficava travado.
Entre post daqui e dali desse assunto, sobre abandonar o dropbox em favor do box.com, o amigo Kemel Zaidan me falou do Copy. Um serviço de storage com mais espaço disponível, 15 GB, e que tinha aplicativo pra Linux. Ao tentar acessar, descobri que até já tinha me registrado, mas nunca usado efetivamente. Bastou pedir pra re-enviar a senha pra ter tudo no lugar.
Uma das coisas boas do Copy era a possibilidade de copiar os dados do Dropbox pra ele, diretamente, o que fiz. Fiz o sincronismo no disco e juntei os dados do UbuntuOne. E pronto! Todos os meus storages de cloud num só lugar. E que funciona tanto no Linux quanto nos meus dispositivos móveis, celular e tablet.
O Copy é mantido pela empresa Barracuda Networks. A primeira vista eu achei que era uma empresa ligada aos HDs Barracuda, mas esses eram uma linha de HDs da Seagate. E só. Barracuda Networks é uma outra empresa, localizada no vale do silício, que tem soluções para redes. Entre essas, tem o storage.
Vale do silício? Sim. Então significa que não deve estar muito longe da xeretagem da NSA. Continua não sendo um meio confiável pra informações confidenciais, o que continua não sendo meu caso. Em geral armazeno scripts pra evitar fazer rsync pra todo lado, e documentos em pdf.
Outro ponto negativo é que tem aplicativo pra Linux, mas não necessariamente com código aberto. É possível baixar e instalar, mas não verificar o que está fazendo exatamente. É instalar um binário e rezar pra não ter código malicioso ali. Eu não rodo como root, mas não significa que não tenha acesso aos meus dados importantes de usuário.
Sim Com certeza. Mas eles só fornecem 2 GB gratuitos.
Como meus dados não são lá muito secretos, eu prefiro no momento um sistema que é suscetível à NSA, mas se eu fosse armazenar dados confidenciais, com certeza escolheria outra opção.
Entenda que "sigilo" não é "confidencialidade". É como seus dados bancários: a informação é sigilosa, que só você e o banco podem ver. Mas não é criptografada. Quem tiver permissão de acesso às contas, pode ver seu saldo, seus gastos, histórico de gastos, etc. É mais ou menos o que acontece com seus dados em empresas como a Copy: meus dados estão lá e são sigilosos, mas não estão criptografados pros sistemas da empresa. Então eventualmente podem ser buscados com um "grep" pra achar informações.
Não gosta que ninguém olhe seus arquivos? É um ponto justo. E nesse caso o melhor é usar os serviços do SpideOak ou mesmo instalar seu próprio cloud com owncloud.
Mega tem a vantagem de oferecer 50 GB de espaço. É de longe o maior espaço disponível. E diz manter a confidencialidade e o sigilo dos dados armazenados. Parece legal, mas até agora não tem aplicativo cliente pra Linux, e eu não quero um storage em cloud onde meus dados fiquem somente lá. Quero um replicação de dados. Ainda mais que Kim Dotcom, o dono do Mega, está no foco do FBI. A qualquer momento pode ter seu site fechado novamente.
Com isso, nesse momento, eu estou preferindo o Copy. Mas é um mundo de Internet. Amanhã posso usar outra coisa.
Finalmente criei vergonha na cara e criei um certificado pra usar https no site. Não que eu não usasse criptografia antes, mas era um certificado auto-assinado com aquele "SnakeOil". Motivo? Simplesmente uso conexão segura pra postar no site, e mais nada.
E os usuários? Bom... eu não tenho um "grande" site com muito tráfego. Acho que ninguém vai se sentir ofendido pelo fato de não ser possível acessar o conteúdo via https. Aliás, até é mas vi que várias coisas no Joomla estão apontando pra http ao usar https. Um dia eu devo arrumar isso. Ou mudar o tema pra algum que tenha isso corrigido.
Mas o importante de ter um certificado ssl pro meu https é que consegui um assinado. E gratuitamente. A autoridade certificadora startssl fornece gratuitamente certificados de nível 1. São os mais simples, mas pra quem quer algo gratuito, vale a pena.
O melhor é que bastou seguir uma receita de bolo que o pessoal da DigitalOcean fez:
Rápido, fácil e funcional. Quem ainda não tiver um certificado assinado, vale a pena tanto por ser gratuito quanto pelo aprendizado.
Acho o Linus Torvalds genial. Não que seja um cara que criou um kernel, mas é um cara que criou um sistema de crontrole de versão de software, o GIT, em 2 semanas. Ou seja, ele é genial.
E ele apareceu na DebConf 14, que ocorreu faz poucas semanas, em Portland, EUA, pra falar um pouco. Foi uma sessão de perguntas e respostas.
O que esperar de alguém que criou o kernel de um sistema operacional? Perguntas técnicas de altíssimo nível? Um semi-deus falando? Escovação de bits?
Pois o grupo de desenvolvedores de Debian (ou seria "empacotadores") mostrou que não. De perguntas técnicas a perguntas idiotas. Sim, idiotas. Debian é um projeto de distro aberta. Isso não significa uma supremacia em inteligência. Tem muita gente que se preocupa com "comunidade", com o Linus chamando de idiota alguém que mereça.
Mas vamos falar um pouco sobre tudo que foi dito durante a DebConf 14. Claro que não na ordem em que foi apresentado, mas na que me lembro (não, não vou ficar vendo o vídeo novamente e escrevendo notas sobre o mesmo pra descrever aqui. Deal with it).
Linus foi perguntado e responde sobre o famigerado "systemd". É bom? É ruim? Eu concordo muito com ele, que é uma grande inovação. Endereçou vários aspectos que eram deficitários no Unix por mostivos históricos de design. É melhor? Essa é a grande pergunta. Essa inovação trouxe junto uma complexadade que quebrou com o velho e bom KISS (Keep It Simple Stupid). Mas sempre existe o dilema do "manter o velho" ou "quebrar tudo e ir pro novo". No momento, é algo interessante, que parece promissor, mas ainda falta muita coisa pra melhorar, como um tempo de resposta menor na lista de bugtrack.
Eu pessoalmente não estou convencido da melhoria do systemd. Boot mais rápido? Meu laptop reboota com um kernel novo, sincronizado via git, a cada 30-45 dias. Boot rápido realmente não importa pra mim nesse caso.
Esse foi um ponto interessante, pois ele deixou claro que não usa, nem pretende usar. Não que Debian seja bom ou ruim pra ele, mas ele basicamente usa um sistema de desenvolvimento de kernel. Isso significa um sistema que depois da instalação esteja pronto pra seu uso, sem muita firula, nem ambientes gráficos dos melhores. Apenas gcc e kernel. Uma coisa que o incomoda é o fato de precisar gerar um pacote DEB pra ter o kernel em seu lugra pra testar (provavelmente se referindo ao kernel-package). Para ele, uma distro tem de prover um sistema rápido para usar "make; make install" e poder testar.
Faz anos que não uso "make; make install" pra instalar o kernel. Sempre uso o kernel-package pela facilidade de ter um pacote pronto e gerenciável. Então não sei nem o que dizer sobre essa reclamação do Linus. Claro que o uso dele é bem específico.
Linus disse que ainda sonha com a dominação do Linux no Desktop, assim como já domina os ambientes de servidor e de mobile. Mas que nesse ponto não depende do kernel, mas das distros. Elas que preparam o sistema pros usuários. E disse que os exemplos que ele enxerga com futuro nessa linha são os chrome books (chrome OS) e... Ubuntu. Qual usuários ele se refere? Ele deixa claro que não os usuários como nós, que já usam Linux, mas os iniciantes como crianças, idosos, etc, ou seja, pessoas que não são da área de TI. Esse são o foco que as distros têm de ter pra conseguir dominar o Linux no desktop.
Outro ponto que comentou foi em relação à steam, que a mesma está trazendo um visão de Linux desktop para os usuários. Infelizmente isso exige que ela distribua grandes pedaços de binários (linkados estaticamente) por conta da grande variedade de distros, cada uma com sua visão de sistema. Essa diversidade, por ser um ponto forte por um lado, é um ponto fraco no ponto de distribuição de binários diretamente pros usuários.
Nesse ponto ele comenta que decidiu não ir pelo caminho da GPLv3 pelo fato dela "exigir" a liberdade de quem usa o código. A GPLv2 permite uma troca de liberdades: eu permite que use meu código, se o melhorar, peço que devolva essa melhoria. Então a GPLv2, ao seu ver, é muito mais flexível e perto de uma licença BSD de uso. Já a GPLv3 exige que ao usar um código livre, o mesmo seja disponibilizado. Esse pequeno argumento muda o conceito de trocas, que tanto Linus preza. Então preferiu manter com a GPLv2 mas foi enfático em dizer que a GPLv3 não é ruim, mas não se adequa ao que ele quer pro kernel Linux como modelo de desenvolvimento.
Houve uma certa reclamação quanto a FSF e a forma que mudou a GPLv2 pra GPLv3, mas eu acho melhor deixar essa parte da discussão as puritas dos assuntos de liberdade. Por enquanto sigo a recomendação do Linus que disse que se quer falar de liberdade, melhor a EFF que a FSF.
É conhecido o fato do Linus Torvalds ter uma certa aversão a aparecer em público. O motivo? Ele não é uma das melhores pessoas do mundo. Não luta contra fome ou coisas do tipo. É um geek, um nerd, e como tal, tem seus momentos de explosão temperamental. Infelizmente esses momentos ficam gravados em listas e mails. Quando estão pessoalmente com ele, muitas das pessoas da audiência o julgam por seu comportamento, esperando dele algum tipo de de atitude mais "magnânima", mais em "pról da comunidade". Mas somos todos humanos, demasiados humanos, já dizia Nietzche.
Na DebConf, que não tem uma comunidade especificamente técnica, mas alguns desses goiabas que gostam do assunto político ao invés do técnico, então isso não fugiu do roteiro. Como sempre, um tipo de "saia justa" pra ele, que se saiu muito bem (ao meu ver) com um "respeito não é algo que se ganha, mas que se conquista". E isso é especialmente quando alguém tenta mexer no kernel que ele criou.
Linus comentou sobre outras coisas, como SELinux, que usa um framework de segurança no kernel (e que de acordo com ele torna tudo mais lento), mas o melhor é assistir ao vídeo.
Usually I don't open my own site (and blog) for other posts than mine. But I received a request to do that. I read the post and found it quite interesting, and bringing a new insight about the recent controversies in Linux world.
So I opened this possibility and here the article is. It isn't my own, but I agree with several points showed here.
Helio
----
The New Mobile Scene and The Old Linux GNU/Linux Naming Controversy Two Objectives and Four Conclusions This document is licensed under the “Creative Commons – Attribution-ShareAlike 3.0” Copyright (C) 2011 Some rights reserved. Additional information can be found at: http://creativecommons.org/licenses/by-sa/3.0/us/ Marcio Barbado, Jr. (marcio.barbado [AT] bdslabs.com.br) Twitter https://twitter.com/mbjunior Contents 1- Introduction 1.1- Why was RMS imprecise/incomplete? 1.2- Why was RMS incoherent? 2- PoC 3- Conclusions 4- Final remarks 5- References 1- Introduction "... My name's Pitt, and yo ass ain't talkin' your way outta this shit!..." [1] [2] Poor rhetoric attempts as the one used to fool Jules (Samuel L. Jackson) in that grand Pulp Fiction movie are not going to work [1] [2]. It is time for contraposition, and refining concepts. Someone has to do this dirty job. There is this great barrier from the FOSS community in resuming this unresolved issue. Now, mobile technologies' evolution brought the subject back. Google's Android, specifically, which is held as one great success case, derived from the 20-year-old Linux kernel. Present writer was described by colleagues as "obsessed", simply because of this need for bringing to light an issue that deserves review, in the face of one renewed technological scene. Firstly, it is important to mention this text's author sees the Free Software Foundation as one of the world's most respectable institutions. Thus, the content herein intends not to attack the GNU Project. Rather, going deeper into the old "Linux GNU/Linux naming controversy" — this time with new parameters, are necessary as a means to safely reach 2 main objectives: i- to seek an unbiased and universal term to use with Linux kernel based systems ("whole systems" in general); and ii- to briefly analyze Google, into the FOSS scene (including the referred corporation's strategy to use FOSS and make money). The reflection exposed in these lines seeks unbiased answers, and by the end, 4 new important conclusions are presented to the reader. Then let this arguing start by remembering some FOSS community members claim one should not use the "GNU/Linux" term, the same way "Windows NT" is not used for recent Windows' versions. That is merely a proprietary-case analogy, not a real argument. Groups supposedly for the "GNU/Linux" name strangely classify debates on this matter as a mere waste of time. However, linguistics matters as it conducts and exposes thoughts and impressions for some given historical moments, and thus, it not only documents history, but it helps in understanding the present for a sensible progress. In this sense, great importance should be given to the referred naming dispute's dynamics. Asked whether one should always make use of the GNU/Linux term, Richard Stallman states as a generic rule: "... Not always — only when you're talking about the whole system. When you're referring specifically to the kernel, you should call it “Linux”, the name its developer chose. When people call the whole system “Linux”, as a consequence they call the whole system by the same name as the kernel. This causes many kinds of confusion, because only experts can tell whether a statement is about the kernel or the whole system. By calling the whole system “GNU/Linux”, and calling the kernel “Linux”, you avoid the ambiguity..." [3] It would be impossible to start any kind of analysis without commenting the second paragraph, which assumes an absolute imbecility reigns in the human mind, reducing us to such a retarded condition, we would never be able to provide a clarification on a given conversation, like: "Linux, the kernel" or "Linux, the system". Now note the alleged confusion could be easily resolved. And of course, an "expert" would not be needed to achieve such. That, if RMS was not just playing with the word “experts”. Even the average Joes are not “hosts”, whose operating systems require name servers and aliases to get better working results. Humans achieve amazing solutions in dialoguing. And back to Mr. Stallman’s answer’s 1st part. Basically, a kernel is one significant operating system’s component, for it makes possible communication between hardware and applications. Therefore, the Linux kernel takes responsibility for instance in brokering “communications” between web browser and networking hardware on a Linux-based operating system. As a matter of fact, just like the UNIX kernel, being a traditional monolithic kernel, the Linux one is already an operating system. It concentrates so many “mediation responsibilities” (system calls and etc) [4]. And Richard Stallman, who likes not monolithic architectures (as one can infer from Hurd’s [5]), has stated an official answer leading to misinterpretation for it is imprecise/incomplete and incoherent [3]. 1.1- Why was RMS imprecise/incomplete? Mr Stallman's words make it seems that every operating system based on the Linux kernel should be called a GNU/Linux system. There is not a clear explanation as to the need for GNU applications' support, which does constitute a prerequisite for what he wants. Lastly, RMS should have clarified his statement was based on the fact that, since the early 90s, Linux kernel itself has been mostly compiled with GCC, one very important program, maintained by the GNU Project [6]. But GCC's use in compiling the kernel, which had already reached its “3.x” releases series [7] [8], is not a rule today. Take LinuxDNA for instance, which is compiled with Intel’s ICC, a compiler regarded as a superior performance tool when compared to GCC in compiling the Linux kernel [9] [10] [11]. 1.2- Why was RMS incoherent? The argumentation used by RMS gets much more nebulous and contradictory when considering the inconsistencies observed in his answer to an Android related question: "... There are systems that contain Linux and not GNU; Android is an example. Android is very different from the GNU/Linux system — because it doesn't contain GNU, only Linux. In effect, it's a totally different system. If you think of the whole system as “Linux”, you find it necessary to say things like, “Android contains Linux, but it isn't Linux, because it doesn't have the usual Linux [sic] libraries and utilities [meaning the GNU system].” Android contains just as much of Linux as GNU/Linux does. What it doesn't have is GNU...." [12] Basically, RMS performs a linguistic “deadlock”, such is the response’s confusion, using — among all that "poetical" construction, the "[sic]" adverb in something created by himself. But wait, there is more. When asked about the importance of his preferred terminology, Stallman writes: “... Although the developers of Linux, the kernel, are contributing to the free software community, many of them do not care about freedom. People who think the whole system is Linux tend to get confused and assign to those developers a role in the history of our community which they did not actually play. Then they give inordinate weight to those developers' views...” [13] To start with, had Stallman any respect for his own terminology, it would be needless to write “Linux, the kernel” — which by the way is exactly what this text recommends, since he says the word Linux, alone, should refer to the kernel, uniquely. The “preacher” does not practice his doctrine for he clearly understands the inconsistency he would incur. Moreover, even by disregarding that, if RMS was correct, he would also be a bit partial. Note that if a supposed and lopsided historical debt would be the pillar for such insistence on language error, that is, using the GNU/Linux term whatsoever the context, one could always remember that GCC for instance, should be called EGCS/GCC because it would be important to exhibit in an explicit manner the beneficial influence brought by the EGCS (pronounced “eggs”) experiment into GNU’s notorious compiler’s development [14]. However, by the time it bowed to EGCS in 1999, GCC changed its name, without initials changing. The “GNU C Compiler” name became “GNU Compiler Collection”, and no direct reference to EGCS was ever given. 2- PoC Let's try to apply the referred Stallman's "rule" [3] to Google's Android "whole system", which is built upon the Linux kernel [15]. By removing Android's kernel, which, by the way, is compiled with this Bionic software, not GCC [16], there is nothing but not-GPL-licensed code. No support to GNU Project's main libraries such as the GNU C Library (glibc) [17], containing standard C libraries. Not even the alternative uClibc was used. In fact, the Bionic libc was developed because there was this necessity for a BSD licensed C library [16]. As a result, the "rule" fails because Stallman's statement is too generic. It fails with one of the most prominent projects built upon the Linux kernel. 3- Conclusions Stressing that this text wants not to awaken the wrath of those Free Software Foundation's "enthusiastic parrots" (I mean those hallucinated kids who just repeat everything they hear and read from the FSF) — a minority in there, for good, it is clear one is not that "free" with Google's Android OS, and using the "GNU/Linux" term for it, following the referred generic rule, would be a gross error. Notwithstanding, the following conclusions are completely unbiased, and prove that Richard Stallman's official statements on the controversy are inaccurate and incoherent [3] [12]. A conceptual “update” is needed. Conclusion i Free as in jail. Android is NOT a GNU/Linux OS but a Linux OS, or a Google/Linux OS. And some like to call it an Android/Linux OS. And above their concerns with "fragmentation" — which would already attack Freedom number 3 (the forking freedom), Google is now making this move towards BSD licensing in their C libraries to Android. The kernel they use is not even compiled with GCC [16], the main GNU program according to Linus Torvalds [18]. Conclusion ii By using the "Linux" term — even for "whole systems", one is NEVER gonna go wrong. It's a universal categorization. But in case one decides to use GNU/Linux with nowadays most successful Linux kernel's derived project (Android), he is certainly gonna go wrong. In fact, more than a mistake, that categorization would be unfair with the ideals within GNU/Linux systems. Conclusion iii It is interesting to study how Google make money with FOSS, besides, obviously, with workforce’s exploitation. As any genuine corporation, they seek profits, not FOSS activism. And seeing them as FOSS fighters is one appalling demonstration of naivety. Conclusion iv Just because one does not say "GNU/Linux" as a rule for "whole systems", it doesn't mean he does not know or respect the GNU Project, which, in turn, urgently need to update their philosophy, taking corporations’ moves into account. And Stallman is an excellent and respectable leader, not a prophet, as "computer science" refers to something fairly noticeable in the name itself: science; it does not refer to religion. 4- Final remarks This material is also the result of social interactions achieved on the "Identi.ca" microblogging service between MAY 22nd and 23rd, 2011. Interestingly, on JUNE 1st, 2011, nine days after the referred interactions, this respected Brazilian FOSS activist, Alexandre Oliva, who’s on “Identi.ca” as well, wrote a few lines on the naming controversy [19]. Alexandre is sort of a sub-celebrity. He attends most of tech events in Brazil — one diligent man. And as a member of “FSF Latin America” [20], of course he argued in favor of his “prophet”. Good parrot, a respected one. He used his text to sickeningly repeat Stallman. Worst: either caused by a topsy-turvy dialectical insight or by a desperate attempt in gaining recognition, referred psittacine — terribly indoctrinated, enhances his mumbo-jumbo citing reference “[6]” (which had also been through “Identi.ca”) as a support for his arguing, insisting upon a 20-year-old deprecated context, ignoring all of the historical and technological unfoldings mentioned here. As a reference within Brazilian free software community, he somewhat constitutes an evidence of referred country's difficulty in promoting and coordinating legitimate local movements. Formulating original proposals based upon local reality may sound like a no-brainer platitude to some foreign social circles, but there seems to be this sense of inferiority amongst Brazilians, a psychological barrier once called “the mongrel complex”. Lack of identity may actually be referred people's identity after all. Many of our exponents — even capable of combating local blemishes, adhere to elsewhere causes in a subservient way. Oliva is a computing guru himself but chooses intellectual cowardice as a refuge. Owning ability to publicly inquire Stallman, he opts to unconditional obedience, this way gaining position and honorable mentions. Employee of the month politics, properly fed egos, subordinates under control. Mentioned situation keeps computing community away from critical thought. If point is straight repetition, we already got CTRL+C CTRL+V, recorders and Psittaciformes. It resembles mathematics. There is a rule. One finds some exception case(s), and all of a sudden, there's no rule anymore. Meaning that computer science is not like sports games, and enthusiastic postures may hamper its complete understanding. So, this text expresses the results of a quest for the least biased and most universal term to use with Linux kernel derivatives. Android's detestable case shows this is "Linux". "... And I will strike down upon thee with great vengeance and furious anger, those who attempt to poison and destroy my brothers!..." [1] [2] 5- References [1] Pulp Fiction (1994) – IMDb: http://www.imdb.com/title/tt0110912/ [2] Pulp Fiction - Ezekiel 25:17 [3] Should we always say “GNU/Linux” instead of “Linux”? http://www.gnu.org/gnu/gnu-linux-faq.html#always [4] Modern Operating Systems / Andrew S. Tanenbaum [5] GNU Hurd: http://www.gnu.org/software/hurd/ [6] Notes for linux release 0.01: http://www.kernel.org/pub/linux/kernel/Historic/old-versions/RELNOTES-0.01 [7] Linux Kernel Mailing List - Re: (Short?) merge window reminder: https://lkml.org/lkml/2011/5/23/405 [8] 3.0-rc1 log: http://www.kernel.org/pub/linux/kernel/v3.0/testing/ChangeLog-3.0-rc1 [9] LinuxDNA: http://www.linuxdna.com/ [10] LinuxDNA Supercharges Linux with the Intel C/C++ Compiler: http://www.linuxjournal.com/content/linuxdna-supercharges-linux-intel-cc-compiler [11] Intel’s compilers and libraries: http://software.intel.com/en-us/articles/intel-compilers/ [12] Can't there be Linux systems without GNU? http://www.gnu.org/gnu/gnu-linux-faq.html#justlinux [13] Why is the name important? http://www.gnu.org/gnu/gnu-linux-faq.html#whycare [14] History – GCC: http://gcc.gnu.org/wiki/History [15] Android's kernel patches: http://android.git.kernel.org/ [16] Patrick Brady dissects Android: http://www.zdnet.com/blog/burnette/patrick-brady-dissects-android/584 [17] GNU C Library: http://www.gnu.org/software/libc/ [18] Linus Torvalds on GNU/Linux: [19] GNU and Linux grew together and supported each other! http://lwn.net/Articles/445646/ [20] Alexandre Oliva: http://www.fsfla.org/~lxoliva/
Apesar de adorar Debian e Ubuntu, o trabalho me exige mexer com pacotes RPM. Ao contrário do format DEB, os pacotes RPM são mais simples de gerar. Basta ter um arquivo SPEC, que informa os dados dos pacote como dependência e scripts para instalação, que é possível gerar usando rpmbuild. Mesmo num Debian/Ubuntu.
Mas cai no caso de uma aplicação de opensaf já compilada. E precisava gerar um pacote só com versão diferente, pra testar uma campanha de upgrade. A solução seria desmontar o pacote RPM e montar novamente. Um "unrpm" por assim dizer. Eu tentei usar um pacote "rpmrebuild", mas o mesmo é feito pra sistemas já com uso de RPM, e precisa que o pacote esteja instalado pra conseguir reconstuir o mesmo. Com certeza não o meu caso.
A parte do conteúdo não é difícil de fazer pois o pacote RPM é na verdade um arquivo de CPIO. Usando como exemplo o pacote aalib-libs do fedora 20, com comandos rpm é possível ver as informações do pacote e seu conteúdo:
helio@debian:~$ rpm -qip aalib-libs-1.4.0-0.23.rc5.fc20.x86_64.rpm
warning: aalib-libs-1.4.0-0.23.rc5.fc20.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 246110c1: NOKEY
Name : aalib-libs
Version : 1.4.0
Release : 0.23.rc5.fc20
Architecture: x86_64
Install Date: (not installed)
Group : System/Libraries
Size : 159154
License : LGPLv2+
Signature : RSA/SHA256, Fri 16 Aug 2013 05:21:44 PM CEST, Key ID 2eb161fa246110c1
Source RPM : aalib-1.4.0-0.23.rc5.fc20.src.rpm
Build Date : Sat 03 Aug 2013 02:17:12 AM CEST
Build Host : buildvm-07.phx2.fedoraproject.org
Relocations : (not relocatable)
Packager : Fedora Project
Vendor : Fedora Project
URL : http://aa-project.sourceforge.net/aalib/
Summary : Library files for aalib
Description :
This package contains library files for aalib.
helio@debian:~$ rpm -qlp aalib-libs-1.4.0-0.23.rc5.fc20.x86_64.rpm
warning: aalib-libs-1.4.0-0.23.rc5.fc20.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 246110c1: NOKEY
/usr/lib64/libaa.so.1
/usr/lib64/libaa.so.1.0.4
/usr/share/doc/aalib-libs
/usr/share/doc/aalib-libs/COPYING
/usr/share/doc/aalib-libs/ChangeLog
/usr/share/doc/aalib-libs/NEWS
/usr/share/doc/aalib-libs/README
Com o comando rpm2cpio seguido de cpio, é possível verificar que o conteúdo é o mesmo, sem perdas.
helio@debian:~$ cat aalib-libs-1.4.0-0.23.rc5.fc20.x86_64.rpm | rpm2cpio - | cpio -itv
lrwxrwxrwx 1 root root 14 Aug 3 2013 ./usr/lib64/libaa.so.1 -> libaa.so.1.0.4
-rwxr-xr-x 1 root root 125872 Aug 3 2013 ./usr/lib64/libaa.so.1.0.4
drwxr-xr-x 2 root root 0 Aug 3 2013 ./usr/share/doc/aalib-libs
-rw-r--r-- 1 root root 25265 Apr 26 2001 ./usr/share/doc/aalib-libs/COPYING
-rw-r--r-- 1 root root 3649 Apr 26 2001 ./usr/share/doc/aalib-libs/ChangeLog
-rw-r--r-- 1 root root 764 Apr 26 2001 ./usr/share/doc/aalib-libs/NEWS
-rw-r--r-- 1 root root 3604 Apr 26 2001 ./usr/share/doc/aalib-libs/README
314 blocks
Para extrair o conteúdo, bastaria usar as opções "-idv" do cpio.
Mas ainda falta os scripts de instalação que fazem a parte de pré-instalação, pós-instalação, pré-remoção e pós-remoção. Como escolhi um pacote de biblioteca, esses não precisam de algo assim. Pegando um pacote de servidor, no caso o bind - servidor de dns, é possível ver esses scripts que compões o SPEC. Basta usar o comando "rpm --scripts -qp <pacote>".
helio@debian:~$ rpm --scripts -qp bind-9.9.4-8.fc20.x86_64.rpm
warning: bind-9.9.4-8.fc20.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 246110c1: NOKEY
preinstall scriptlet (using /bin/sh):
if [ "$1" -eq 1 ]; then
/usr/sbin/groupadd -g 25 -f -r named >/dev/null 2>&1 || :;
/usr/sbin/useradd -u 25 -r -N -M -g named -s /sbin/nologin -d /var/named -c Named named >/dev/null 2>&1 || :;
fi;
:;
postinstall scriptlet (using /bin/sh):
/sbin/ldconfig
if [ $1 -eq 1 ] ; then
# Initial installation
/usr/bin/systemctl preset named.service >/dev/null 2>&1 || :
fi
if [ "$1" -eq 1 ]; then
# Initial installation
[ -x /sbin/restorecon ] && /sbin/restorecon /etc/rndc.* /etc/named.* >/dev/null 2>&1 ;
# rndc.key has to have correct perms and ownership, CVE-2007-6283
[ -e /etc/rndc.key ] && chown root:named /etc/rndc.key
[ -e /etc/rndc.key ] && chmod 0640 /etc/rndc.key
fi
:;
preuninstall scriptlet (using /bin/sh):
# Package removal, not upgrade
if [ $1 -eq 0 ] ; then
# Package removal, not upgrade
/usr/bin/systemctl --no-reload disable named.service > /dev/null 2>&1 || :
/usr/bin/systemctl stop named.service > /dev/null 2>&1 || :
fi
postuninstall scriptlet (using /bin/sh):
/sbin/ldconfig
# Package upgrade, not uninstall
/usr/bin/systemctl daemon-reload >/dev/null 2>&1 || :
if [ $1 -ge 1 ] ; then
# Package upgrade, not uninstall
/usr/bin/systemctl try-restart named.service >/dev/null 2>&1 || :
fi
Com essas informações é possível construir um pacote RPM binário. Claro que no caso isso não é necessário pois bastaria pegar o pacote SRC e fazer o build novamente. No meu caso, eu não sabia onde estavam os fontes e essa forma foi muito mais rápida, ainda mais que eu só precisava modificar a informação de versão pra testar upgrade.
É comum encontrar em fóruns algumas discussões acaloradas sobre o uso do termo "GNU/Linux" ao invés de "Linux", e que o mesmo não seria o que é, pois é somente um kernel, sem o GNU.
Concordo em número, gênero e grau sobre a importância do GNU na história do software livre, e mesmo na do Linux. Sem a influência de liberdade, Linus nunca teria pensado em ter um sistema completamente aberto. Mas será mesmo que ele precisava das ferramentas da GNU, ou de outro modo não conseguiria sair do zero?
Em uma entrevista de 1993, Linus Torvalds comenta que não teria nem tentando criar o Linux se o 386BSD existisse.
Pra quem não lembra, Linux foi criado em 1991, enquanto que o FreeBSD apareceu somente em 1993. Onde estava o BSD esse tempo todo?
Em 1991, Berkeley estava sofrendo um processo judicial por parte da AT&T, a dona do código fonte do UNIX, que tinha compartilhado com Berkeley durante sua origem, nos anos 70. O UNIX BSD sempre fora distribuído gratuitamente, e com códigos fontes abertos e livres, sob a licença BSD. Enquanto a AT&T tinha o UNIX como um projeto de laboratório, uma brincadeira dos engenheiros, isso não importava muito. Mas no final da década de 80 o UNIX já era muito difundido e usado tanto nas universidades quanto fora delas. Quando a AT&T chegou ao fim de seu contrato de monopólio das telecomunicações, ela simplesmente resolveu comercializar seu UNIX. E como lidar com o seu concorrente livre, o BSD? Não teria problema se continuasse dentro das universidades, mas existia uma empresa que vendia um UNIX derivado do BSD, o BSDi. Então entra um processo judicial no meio do caminho.
BSD estava na sua versão 4, que incluia o stack recém criado de redes, o TCP/IP. O processo terminou em 1992, quando foi feito um acordo em que o código BSD seria re-escrito sem a parte que pertencia à AT&T. Surgia a especificação 4.4BSD-lite. Nessa época, a revista Dr.Dobbs iniciou uma série de artigos que vinham com o código pra ter o BSD rodando em computadores com o processador i368. Era o surgimento do 386BSD.
Mas o 386BSD tinha o problema de ter dono, Lynne Jolitz e William Jolitz. Apesar do código estar totalmente publicado e permitir qualquer um compilar seu próprio UNIX BSD, era preciso passar quase 2 dias aplicando patches de voluntários pra ter o sistema atualizado e funcional. Nesse ambiente sugiram os sistemas FreeBSD e NetBSD, como uma forma mais colaborativa de participação e manutenação do código.
E o GNU?
Nesse meio tempo entre 1990 e 1993, pode-se dizer que os UNIX BSDs praticamente pararam seu desenvolvimento. Eles existiam dentro de máquinas PDP, os mini computadores da época, mas não nos computadores pessoais, que era o que Linus usava em casa pra programar. Os BSDs precisavam do GNU? Precisavam mas não do GNU como um todo. Eles usavam o compilador GCC, que foi um dos marcos mais importantes do software livre. O restante, dos comandos básicos ao kernel, já tinham em BSD. Linux é um kernel enquanto que FreeBSD é um sistema operacional completo. E descendente direto do UNIX.
Se Linus tivesse começado um pouco depois, em 92, ele poderia ter construído o Linux em cima de uma base BSD. E continuaria um software livre. Vantagens? Acho que talvez mudasse o licenciamento pra BSD, mas provavelmente seria muito semelhante com o que temos hoje.
Possível, é. Valeria o esforço? Eu diria que não. Linux funciona muito bem com a parte GNU. Se um dia surgisse algum problema de licenciamento, o que é impossível com softwares da GNU, ele poderia eventualmente ter um esforço pra mudar.
Benefícios de desempenho? Acho que também não. Apesar dos BSDs terem um stack de rede com desempenho superior ao do Linux, isso não é imutável e frequentemente acontece de um passar o desempenho do outro. Recentemente o Facebook anunciou uma iniciativa de melhorar o stack de rede do Linux pra igualar ao do FreeBSD. Eu espero que supere, pra assim o grupo do BSD ter um objetivo pra melhorar mais :-)
E os BSDs não estão na frente em tudo. O próprio "grep" da GNU é muito mais rápido e eficiente que seu semelhante BSD, pra listar apenas alguns.
Então, antes de dizer que Linux não seria nada sem o GNU, lembre dos BSD. Atualmente nem o compilador é mais o GCC, sendo um sistema operacional totalmente funcional sem precisar necessariamente do GNU. E 100% software livre.
Atualização: Tue Aug 19 18:30:18 CEST 2014
Eu esqueci completamente de comentar (obrigado pelo lembrete Bruno Máximo) mas o Android é um kernel Linux sem GNU, totalmente feito em cima de BSD. E sim, o desempenho é muito bom.
Page 16 of 34