-
GoboLinuxRevolucionando a estrutura de diretórios do Linux
Hisham H. Muhammad - [email protected]
Andre Detsch - [email protected]
GoboLinux – p.1/40
-
IntroduçãoQuando falamos de GoboLinux, estamosfalando de duas coisas:
de uma distribuição Linux alternativade um novo modelo de hierarquia dediretórios para sistemas UNIX
GoboLinux – p.2/40
-
SumárioMotivação
Princípios do GoboLinux
Outras abordagensIdéia geral da Estrutura
Um tour pelo GoboLinux
Distribuição GoboLinux
Futuro do GoboLinux
GoboLinux – p.3/40
-
A Árvore UnixContexto histórico:
Décadas de 60/70Computação centralizada
Diretórios servem para diferenciar:
Categorias de arquivosLocalização na rede
GoboLinux – p.4/40
-
A Árvore Unix
Executáveis Bibliotecas Headers
Remoto/usr/bin/usr/sbin
/usr/lib /usr/include
Local
/usr/local/bin/usr/local/sbin/bin/sbin
/usr/local/lib/lib
/usr/local/include
GoboLinux – p.5/40
-
A realidade atualSoftware livre, instalação freqüente de novasversões
Gerenciadores de pacotes
Instalação de aplicativos a partir da compilação docódigo fonte leva a inconsistência na base de dados
"Contorno":
/usr para programas instalados via pacotes
/usr/local para programas compilados
GoboLinux – p.6/40
-
A realidade atualContinua o problema: como remover do/usr/local?
/opt
Uma "brecha" no padrão Unix FHSÉ o reconhecimento da existência doproblema
Será esta a filosofia ideal para o mundodesktop?
GoboLinux – p.7/40
-
Princípios do GoboLinux
GoboLinux – p.8/40
-
ObjetivosOrganizar a estrutura de diretórios
Compilação de programasTroca de versões compiladasRemoção de programas
Manter compatibilidade total com a árvoreUNIX
GoboLinux – p.9/40
-
Mac OS XSucessor do Mac OS, da Apple
Kernel Mach 3.0, ferramentas baseadas noFreeBSD
Desafio: combinar a hierarquia UNIX àinterface do Mac OS
Solução encontrada: exibir na interfacegráfica um subconjunto da árvore real
GoboLinux – p.10/40
-
AtheOSSO livre voltado para PCs desktop
Alto grau de compatibilidade UNIX
/usr é utilizado como /opt
Nas aplicações nativas, os caminhos sãodefinidos em função do diretório ^ (diretóriodo executável)
Permite mover aplicaçõesTécnica incompatível com o UNIX
GoboLinux – p.11/40
-
Depot, GNU Stow e EncapDuas árvores de diretórios:
Árvore real, com um diretório por aplicaçãoÁrvore de links simbólicos
Combinação das árvores de cada aplicação
Depot: mantém uma base de dados
GNU Stow: make e make install comcaminhos diferentes
Encap: similar, mas com suporte a versões
GoboLinux – p.12/40
-
LinuxStepConstrução de um sistema operacional apartir do:
Kernel do LinuxGNUStep, implementação livre da API dosistema NeXTSTEP
Alguns diretórios similares aos do GoboLinux
Não há comprometimento comcompatibilidade com hierarquia atual
Projeto em estágios iniciais
GoboLinux – p.13/40
-
Estrutura do GoboLinuxCombina algumas das idéias anteriores emum modelo de fácil utilização
Três níveis de hierarquias:
Real -/ProgramsLinks -/System/LinksLegacy -/usr, /bin, /lib, /sbin, /etc
GoboLinux – p.14/40
-
Hierarquia Real - /ProgramsDiretório que contém a grande maioria dosarquivos propriamente ditos
Cada aplicação possui seu subdiretório
Desta forma, não precisamos degerenciadores de pacotes como RPM eapt-get
GoboLinux – p.15/40
-
Hierarquia Links -/System/Links
Centraliza, através de links, os arquivos dahierarquia real por categoria
Os arquivos são divididos em:
ExecutáveisBibliotecasHeadersDocumentação
GoboLinux – p.16/40
-
Hierarquia LegacySérie de links criados para satisfazercaminhos hardcoded existentes emaplicações.
/bin
/sbin
/etc
/usr/lib
/usr/share, etc.
Pode ser “escondida” através de programaespecífico
GoboLinux – p.17/40
-
Um tour pelo Gobolinux
GoboLinux – p.18/40
-
/ProgramsCada programa possui um diretório
/Programs/XFree86
Cada versão possui um diretório
/Programs/XFree86/4.3
/Programs/XFree86/4.3/bin
/Programs/XFree86/4.3/lib
...
GoboLinux – p.19/40
-
/ProgramsA versão atualmente usada é indicada porum link
/Programs/XFree86/Current 4.3
As configurações são independentes deversão
/Programs/XFree86/Settings
GoboLinux – p.20/40
-
/System/System/Links
/Executables executáveis (bin esbin)/Libraries bibliotecas (lib)/Headers headers (include)/Shared arquivos compartilhados entreaplicações (share)/Manuals documentação (man e info)
GoboLinux – p.21/40
-
/System/System/Settings:
Contém arquivos globais de configuração e linkspara os arquivos de configuração das aplicações
Na hierarquia legacy, este diretório é conhecidocomo /etc
/System/Boot:
Contém arquivos para o boot do sistema: kernel,System.map e configuração do bootloader.
Equivale ao /boot
GoboLinux – p.22/40
-
/System/System/Devices
Contém os dispositivos do sistema/dev
/System/Status
Contém as informações sobre processos eestado do sistema/proc
GoboLinux – p.23/40
-
/Users, /Mount/Users
Contém os diretórios dos usuários/Users/gobo
Não há /home
/Mount
Contém os pontos de montagem dedispositivos/Mount/Floppy
Não há /mnt
GoboLinux – p.24/40
-
/FilesArmazena arquivos compartilhados pordiversas aplicões
Obtidos, em geral, de forma “avulsa”, semrelação direta com alguma determinadaaplicação
Agluns exemplos:
/Files/Fonts
/Files/Codecs
/Files/Plugins
GoboLinux – p.25/40
-
Distribuição GoboLinux
GoboLinux – p.26/40
-
HistóricoA distribuição existe há um ano
Versão atual: 006Delta
Estável
Utilizada como sistema único pelosdesenvolvedores
gobolinux.org desde outubro de 2002
GoboLinux – p.27/40
-
Estado do GoboLinuxDocumentação
Artigo apresentado no Fórum Software Livre 2002
Man-pages dos scripts GoboLinux
Livro do GoboLinux em desenvolvimento
Página
Vários textos online no site: FAQ, instalação...
Mais de 400 pacotes disponíveis para download
Lista de discussão: [email protected]
GoboLinux – p.28/40
-
Compilação de ProgramasScript ins - três passos básicos internos:
Preparação da compilação: rodaconfigure se disponível, modificaMakefile se necessárioCompilação: execução do makeInstalação:
Execução do make install emambiente restrito (sandbox)Geração dos links
GoboLinux – p.29/40
-
Sistema de PacotesUm pacote é simplesmente o diretório daaplicação, compactado.
Por exemplo:KDE--3.1.1--i686.tar.bz2
Contém: KDE/3.1.1/{bin,lib,...}
O script package gera um pacote
GoboLinux – p.30/40
-
Instalação de pacotesunpackage instala um pacote
O mesmo procedimento de geração de linksusado na compilação de programas é usadopelo unpackage nos pacotes instalados.
Diferentes versões de bibliotecas instaladaspodem co-existir
A migração do GoboLinux para o GCC 3 foitrivial
GoboLinux – p.31/40
-
Instalando o GoboLinuxCD-ROM bootável
1. Criar uma partição2. Montar a partição nova3. Instalar o sistema base4. Configurações básicas5. Instalar o boot loader6. Reiniciar :-)
GoboLinux – p.32/40
-
Sistema de bootExistem dois modelos tradicionais do UNIX:
System V : RedHat, SlackwareBSD: Debian, FreeBSD
GoboLinux introduz um modelo próprio
Scripts de boot localizados em/System/Settings/BootScripts
GoboLinux – p.33/40
-
Sistema de bootArquivos executados na inicialização efinalização: Init e Done
Arquivos específicos para operaçãorealizada:Reboot, Shutdown, Single eMulti
Arquivo para customizações: Options
Suporte a temas
Emular a aparência de outras distribuições
Tema próprio GoboLinux, versões texto e gráfica
GoboLinux – p.34/40
-
Metodologia de ScriptsUma série de tarefas podem serautomatizadas através de scripts
Pacote /Programs/Scripts
Provê um kit de funções básicas parageração de novos scriptsGeração de documentação dos scripts
GoboLinux – p.35/40
-
Exemplos de scriptsRemoção de links quebrados
Correção de atributos de arquivos
Automação da compilação do kernel
Front-ends para comandos UNIX
g: grepf: findl: lscolormake: make...
GoboLinux – p.36/40
-
GoboHidePermite ocultar determinados arquivos daárvore de diretórios
Arquivos permanecem acessíveis ao sistema
Usado para ocultar a hierarquia legacy
Implementado em duas partes:
Patch do kernelFerramenta user-space paragerenciamento
GoboLinux – p.37/40
-
RootlessPacote que “emula” o GoboLinux dentro deum diretório qualquer
Para ser utilizado por usuários não-root emoutras distribuições
Uma forma de organizar a instalação deprogramas dentro do $HOME
Utiliza o pacote de Scripts padrão doGoboLinux
GoboLinux – p.38/40
-
FuturoChangedFiles: gerenciamento de links emkernel
pacotes “source”: compilação duranteinstalação
GoboLinux enquanto distribuição
GoboLinux enquanto estrutura de diretórios
Importância de distribuição não convencionalpara "melhorar" a flexibilidade do softwarelivre
GoboLinux – p.39/40
-
DemonstraçãoAgora, um breve “passeio” pelos diretórios...
GoboLinux – p.40/40
IntroduçãoSumárioA Árvore UnixA Árvore UnixA realidade atualA realidade atual~ObjetivosMac OS X AtheOSDepot, GNU Stow e EncapLinuxStepEstrutura do GoboLinuxHierarquia Real - exttt {/Programs}Hierarquia Links -\ exttt {/System/Links}Hierarquia Legacy~exttt {/Programs}exttt {/Programs}exttt {/System}exttt {/System}exttt {/System}exttt {/Users}, exttt {/Mount}exttt {/Files}~HistóricoEstado do GoboLinuxCompilação de ProgramasSistema de PacotesInstalação de pacotesInstalando o GoboLinuxSistema de bootSistema de bootMetodologia de ScriptsExemplos de scriptsGoboHideRootlessFuturoDemonstração