gobolinux · 2016. 12. 18. · kernel do linux gnustep, implementaçªo livre da api do sistema...

40
GoboLinux Revolucionando a estrutura de diretórios do Linux Hisham H. Muhammad - [email protected] Andre Detsch - [email protected] GoboLinux – p.1/40

Upload: others

Post on 05-Feb-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

  • 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