O documento apresenta os principais conceitos e características do sistema operacional Gentoo Linux, incluindo sua filosofia de compilação a partir do código-fonte, o gerenciador de pacotes Portage e a comunidade envolvida no projeto.
2. Tópicos
● WTF?
● Histórico
● Filosofia
● Portage
● Inicialização
● Segurança
● Comunidade
● Quem usa?
● Instalação
3. WTF?
● Sistema operacional livre
● Baseado no Linux ou no FreeBSD
● Portage
– Gerenciador de pacotes
● METAdistribução
– quem monta o SO é o usuário
● Comunidade
– Gentoo Foundation
4. E qualé a diferença?
● É extremamente configurável
● Quem tem controle é o usuário, e não o criador dos
pacotes
● Gera pacotes com otimização de código e com
apenas as características que você desejar
● Pacotes atualizados
● Pode ser usado como servidor, estação de
desenvolvimento, máquina para jogos, cluster, o que
você quiser
● Portável – roda em várias arquiteturas (:
● x86-64, x86, powerpc, ps3...
5. Filosofia
● Permitir ao usuário desfrutar da riqueza da
comunidade e flexibilidade do software livre
● Permitir que o usuário trabalhe do jeito que seja mais
confortável pra ele
● Ferramenta não deve impor nada ao usuário
● Deve permitir ao usuário fazer o que ele quiser
● Se uma ferramenta não fica no caminho e não é
notada → trabalho bem feito
● Objetivo do Gentoo: ser uma ferramenta que possa
acomodar as necessidades de muitos tipos diferentes
de usuário
6. História
● Criado por Daniel Robbins
● Nome original: Enoch
● Distribuição que fosse compilada a partir do código
fonte
● Correção no gcc: binários pelo menos 10% mais
rápidos
● Famosa pela sua velocidade
● Troca de nome para Gentoo
10. O que é?
● Compilação?
● Otimização de código?
11. Compilação
● Processo de transformar algo escrito em uma
linguagem em algo escrito em outra linguagem
● Ex: português → neo-miguxês:
● Original:
“compilação de código é uma coisa que o gentoo faz bastante”
● Compilado:
“KomPiLaXXAUM dI kOdIgu eh 1 KOiZaH KI u GENtOw fAixXx
BAStaNti”
● C++ → linguagem de máquina (a que o computador
fala)
14. Otimização de código
● Um código otimizado faz a mesma coisa que o original
● Em menos tempo
● Gastando menos memória
15. Portage
● Inspirado no Ports do FreeBSD
● Coração do Gentoo
● 2 partes:
– sistema de ebuilds
– emerge
16. Ebuild
● Arquivo de texto, e não um pacote
● Contém
– Url do programa a ser instalado
– Instruções de como instalá-lo
● Separados por categorias
● Um ebuild por versão do programa
● Sistema de slots – várias versões do mesmo
programa instaladas simultaneamente
18. Emerge
● Instala e gerencia os ebuilds
● Calcula dependências entre pacotes
● Atualiza os pacotes
● Seta as USE flags dos pacotes
● Regula as otimizações do compilador
19. Utilização do emerge
● Atualizando os ebuilds:
# emerge --sync
● Sincroniza os ebuilds com o repositório central do gentoo
● Instalação de pacotes:
# emerge nome-do-pacote
● Instalar versão específica
# emerge =categoria/nome-do-pacote-1.2.3
● Instalar versão maior ou igual 1.2.3
# emerge >=categoria/nome-do-pacote-1.2.3
● Desinstalar todos os menores que a versão 1.2.3
# emerge -C <categoria/nome-do-pacote-1.2.3
20. Utilização do emerge
● Dois conjuntos: system e world
● Atualizar um conjunto
– # emerge -u world
● Considerar árvore de dependências
– # emerge -uD world
22. Configuração
● /etc/make.conf
● CFLAGS e CXXFLAGS
– Controlam quais otimizações do gcc/g++ serão usadas
● CHOST
– Define a arquitetura do processador:
● I686, x86-64, ...
● USE
– Define a funcionalidade que será incluída nos pacotes
– Ex:
● Se a USE flag “mysql” existir, todos os programas serão
compilados com suporte a mysql
23. Pacotes bloqueados
● Pacotes considerados estáveis não são bloqueados
● Pacotes que ainda não foram completamente testados mas que é
sabido que funcionem bem são “mascarados” (masked)
● Pacotes que não estão estáveis ainda são marcados como “hard
masked”
● É possível ter pacotes estáveis e instáveis instalados num mesmo
sistema
● Controle feito por arquivos de configuração:
– /etc/portage/package.unmask
– /etc/portage/package.keywords
– /etc/portage/package.mask
24. Overlays
● É possível usar árvores de pacotes alternativas à árvore oficial do
Portage
● Lista de overlays “oficiais”
● Você pode montar o seu!
26. Inicialização
● Parecido com o System V
● Scripts baseados em dependência
● Run-levels com nomes (ao invés de números)
● Originalmente escrito em bash
● Baselayout-2 desenvolvido
● Escrito em C
● Portável
● Mais rápido
27. rc-update
● Gerencia serviços por runlevel
● Adicionar um serviço
# rc-update add sshd default
● Listar serviços
# rc-update status
● Iniciar um serviço
# /etc/init.d/mysql start
28.
29. Segurança
● Suporte a profiles
● Profile hardened
● Projeto hardened
– Pesquisa, implementação e manutenção de
políticas de segurança
30. Segurança
● Subprojetos
– SELinux e grsecurity
● Política de segurança baseada em listas de acesso para
todos os processos
– PaX
● Proteção contra buffer overflow
– Hardened toolchain
● Compiladores com capabilidades do PaX
– Hardened sources
● Kernel com patches de segurança
31. GLSA
● Gentoo Linux Security Advisory
● Boletim periódico
● Alerta sobre falhas de segurança e
vulnerabilidades
● glsa-check
– Detecta vulnerabilidades no seu sistema
– Instala correções automaticamente
32. Comunidade
● Gentoo Foundation
● Mais de 300 desenvolvedores
● Documentação
● Site, fóruns, listas, desenvolvimento, lançamento de live
cds...
● Conselho do Gentoo eleito anualmente
● Reuniões mensais no irc
● Decisões sobre questões envolvendo múltiplos projetos
● Dias de caça a bugs
33. Documentação
● Gentoo Handbook
– Passo a passo muito detalhado da instalação
● Documentação oficial
● Wiki
● Guias de
– Configuração do sistema
– Otimização
– Localização
– Configuração do kernel
– Computação distribuída
– Servidor (e-mail, samba, banco de dados...)
– (...)
34. Quem usa?
● Hosting e datacenters
– Linode
– Bytemark hosting
– Genesi
● Peel Fresco Music Lounge
– Bar em Hong Kong
– Hospedagem do site