Organização de Sistema GNU/Linux

Como um sistema GNU/Linux é organizado? Me parece uma bagunça! Mas acho que depois dessa oficina entenderei a lógica (ou a falta dela), as arbitrariedades e acidentes históricos na organização de GNU/Linux, o que me ajudará muito a usar um sistema operacional livre no meu computador!

Organização de Sistema GNU/Linux

Objetivo

Para falar sobre como se organiza sistema existem duas documentações que são super boas e recomendadíssimas especialmente para quem utiliza uma distribuição do tipo debian e ubuntu.

Para entendermos sistema de arquivos, vamos começar pela referência debian. Para quem está no site, escolha um formato, txt, html, documento curto, etc.

Fundamentos do Debian

Vamos entrar no guia de referência. Explica as distribuições:

  • 2.1.3 A distribuição stable
  • 2.1.4 A distribuição testing
  • 2.1.5 A distribuição unstable
  • 2.1.6 A distribuição frozen

São nomenclaturas para indicar as versões de diversas etapas do desenvolvimento do debian.

  • Testing – tem estabilidade para ser usado em sua casa. (Wheezy)
  • Frozen – versao congelada para viarar estável
  • Versão Estável – já foi bastante testado e já é bastante confiável, mas não significa ser isento de defeitos;

Atualmente a versão estável se chama Squeeze e o Wheezy é a atual versão teste.

Os nomes das versão do Debain são inspiradas no filme Toy Story e geralmente a versão teste fica uns 2 anos até ser congelado.
Para ter uma visão: Acessem o terminal e digitem:

ls / # para listar a raiz do seu sistema e ver o que tem nela:

Sistema de arquivos do linux

Adaptado desta seção. Importante divisão dos arquivos:

  • Arquivos de texto.
  • Arquivos binários (programas e mídia).

As principais pastas são:

  • Pasta /bin – arquivos binários executáveis.
  • Pasta /boot – arquivos de inicializacao do sistema
  • Pasta /dev – diretório de dispositivos onde acessamos o hardware
  • Pasta /etc – onde ficam todos os arquivos de configuração;
  • Pasta /home – todos os arquivos do usuário ficam nesse diretório.
  • Pasta /lib – arquivos que podem ser usados por mais de um programa, isto é, bibliotecas.
  • Pasta /media – mídias externas que não estão no computador
  • Pasta /mnt – ponto de montagem
  • Pasta /opt → optional → opcional – a boa prática é instalar programa que não fazem parte da distribuição que vc está usando.
  • Pastas /proc e /sys – informações de sistema (quantidade de memória, cpu, processos em execução, disco rígido é memória permanente).
  • Pasta /root – a pasta “pessoal” do usuário/a principal (root = raíz), “the root of all evil – a raíz de todo o mal” :P
  • Pasta /sbin – aplicativos de superusuário/a (só o superusuário tem acesso aos arquivos deste diretório). comandos do consoles – mais básicos. usuários normais podem ler, mas não rodar (nem escrever)
  • Pasta /selinux – arquivos de segurança
  • Pasta /srv
  • Pasta /usr – user – muitos programas são instalados aqui. caracteristicas: arquivos de programas gerais, menos básicos.TRON – I fight for the user! Eu luto pelo usuário/a!
  • Pasta /tmp – arquivos temporários.
  • Pasta /var – “home dos aplicativos”

Uma coisa básica do UNIX é: uma zona, mas uma zona com padrão; É importante levar em conta que essa é uma convenção (FHS), mas isso não quer dizer que todo o software instalado ou todo/a administrador/a de sistema segue essa convenção.

Para ter uma ideia de como chegamos onde chegamos em mais de 30 anos de desenvolvimento, veja A árvore genealógica do Unix.

Quando vc tem um software instalado no seu linux. O executável provavelmente fica nalgum diretório bin (/bin, /usr/bin, /usr/local/bin …); a configuração fica no /etc.

Para fazer backup, o que é importante?

  • /etc
  • /var
  • /home
  • /opt
  • /root

Todas as outras pastas podem ser reconstruídas a partir de uma nova instalação, especialmente se você tem uma lista ou lembra dos programas que tinha instalado. Saiba mais sobre backups aqui.

Alguns consoles são sofisticados e ficam parecendo um carnaval de tão colorido que fica – cores são usadas para identificar o tipo de arquivo :P. Para identificar.

Brincando com os arquivos

Podemos saber o que cada arquivo é utilizando o programa “file”:

file /bin/ls

Vamos ver agora o que existe no /etc!

ls /etc

Quanto arquivo! Vejamos um exemplo: /etc/fstab. O que será que tem nele?

ls /etc/fstab
file /etc/fstab 

O que tem dentro dele? Vamos usar o cat, que é um comando que concatena e exibe conteúdo de arquivos.

cat /etc/fstab

O que será que esse arquivo /etc/fstab faz?

Ah! O fstab é um arquivo responsável pela configuração dos “pontos de montagem” dos volumes de armazenamento no seu sistema, isto é, ele mapeia as partições dos volumes às sua pasta pessoal.

Mas o que são volumes de armazenamento e partições? Bom, hora de ver os dispositivos do seu sistema. Vejamos então agora o /dev:

ls /dev
  • A partição eh um pedaço do seu disco rígido. Podemos formatar de diversos sistemas de arquivos (EXT3, EXT4, FAT, etc) e cada um tem suas particularidades, vantagens e desvantagens.
  • O sistema de arquivos eh o como as infos binárias irão de organizar no disco rígido (físico).
  • Sistema de arquivos FAT não cabe arquivos de mais de 2gb; muito comum em pendrives. Na época em que foi desenvolvido o FAT não existiam muitos arquivos superiores a 2gb. :P
  • Alguns tem tolerância a queda de energia e outros não.
  • No caso do windows é preciso desfragmentar muito.

Montar: tornar um volume de informação acessível. É o mapeamento do volume (partição) com a pasta no FHS (sistema de arquivos virtual do Unix). No caso do GNU/Linux, esse mapeamento é configurado através do arquivo /etc/fstab.

Quando o computador é ligado, o GNU/Linux lê esse arquivo e monta os sistemas de arquivos de aconrdo com as definições nele contidas.

cat /etc/mtab # lista tudo o que está montado no momento :D
  • mtab —> mount table (tabela do que está montado)
  • —> cat /proc/cpuinfo —> lá se tiver no flag a opção “lm” é um processador de 64bits.
  • cat /proc/meminfo —> mostra na primeira linha (MemTotal:) quanto vc tem de memória ram.
  • cat /etc/passwd —> lista os usuários que existem no seu computador
  • etc é onde estão as configurações de tudo;
  • mtab —> mount table (tabela do que está montado)

Pacotes

  • Debian: Conceito de instalação por pacotes. A idéia de pacote facilita, pois funciona como um zip.
  • Windows é Big Brother – mesmo depois de desinstalar um programa fica os vestígios de que aquilo existiu um dia na sua máquina;
  • Governo Britânico fez um estudo sobre a vida útil das máquinas com windows e linux – com windws a cada três anos era preciso trocar o parque de máquinas, com o linux este tempo dobra, sendo necessária a troca a cada 6 anos;
  • Árvore de dependências
  • APT – ferramenta de pacotes avançada

Instalar pacote:

apt-get  install nome_do_programa

Remover pacote:

apt-get remove nome_do_programa

Expurgar:

apt-get remove --purge nome_do_programa # tira inclusive as configurações no /etc

Remover um pacote mantendo sua configuração:

apt-get remove pacote .
dpkg  --remove pacote ...

Remover um pacote e toda sua configuração:

apt-get remove --purge pacote ...
dpkg    --purge        pacote ...

Para obter ajuda:

apt-get --help

Atualizar pacotes

apt-get update
apt-get upgrade

Pesquisar um pacote

No exemplo, pesquisando pacotes que têm a palavra ‘geoip’

apt-cache search geoip

Para acessar o manual:

man nome_do_comando

Para acessar a info:

info nome_do_comando

qref.sourceforge.net/Debian/reference/c...
qref.sourceforge.net/Debian/reference/c...

Aptitude

  • C – removido com preservação dos arquivos de configuração
  • P – nunca teve ou foi expurgado
  • I – instalado
  • / – pesquisar

Backports

Backports.

Pontos a serem abordados posteriormente, arremate

  • Falar /mnt, voltar para /opt, /run
  • Tá faltando falar do PATH

FAQ

Tem como transpor um programa que não é do diretório da minha distro que instalei em outra pasta para a pasta /opt?

As sub pastas que estão na pasta /bin são tb linhas de comando como no caso do ls?

Quando coloco ls /dev/disk/by-uuid tb vai aparecer os discos de pendrive e CD?