Entendendo a separação dos diretórios /bin, /sbin, /usr/bin, /usr/sbin

Filesystem Hierarchy Standard
Filesystem Hierarchy Standard

Você sabe como Ken Thompson e Dennis Ritchie criaram o Unix em um PDP-7 em 1969? Bem, por volta de 1971 eles atualizaram para um PDP-11 com um par de hard drives.

Entendendo a separação dos diretórios /bin, /sbin, /usr/bin, /usr/sbin

Quando o seu root filesystem cresceu demais para se adequar em seu disco (meio megabyte), eles deixaram vazar para um disco RK05 que era maior porém mais lento, que é aonde todos os diretórios user e home era abrigados e é o por que o mount foi chamado /usr. Eles replicaram todos os diretórios do sistema operacional sob o segundo disco (/bin, / sbin, /lib, /tmp...) e escreveram arquivos para aqueles novos diretórios porque seus discos originais não tinha espaço suficiente. Quando obtiveram um segundo disco RK05, eles o montaram no /home e realocaram todos os diretórios de usuário para esse terceiro disco então seu sistema operacional poderia consumir todo o espaço nos primeiros dois discos e crescer para todo os três megabytes.

Claro que eles criaram regrar sobre “quando o sistema bootar, ele tem que subir o suficiente para ser capaz de montar o segundo disco em /usr, então não coloquem as coisas como o comando mount em /usr/bin ou teremos um baita problema para colocar o sistema no ar.” O fato é que seu minusculo disco era muito mais rápido do que um RK05 funcionava lá também: Mover arquivos do /bin para o /usr/bin tinha um impacto de desempenho significante nesse particular PDP-11. Bem direto, e também bem específico para o hardware v6 que o Unix foi desenvolvido 40 anos atrás.

 A divisão do /bin vs /usr/bin (e todos os outros) é um artefato disso, um detalhe na implementação de 1970 que foi levada adiante por décadas por burocratas que nunca questionaram por que eles estavam fazendo coisas. Parou de fazer sentido antes que o Linux fosse inventado por múltiplas razões:
  1. O primórdio sistema de colocar o sistema no ar é a provincia do initrd e do initramfs, que lidava com os problemas do “esse arquivo é necessário antes daquele arquivo”. Já temos um sistema temporário que já inicializa o sistema principal.
  2. Bibliotecas compartilhadas (introduzida pelos caras de Berkeley) impedia você de independentemente atualizar as partes do /lib e do /usr/bin. Duas partições tem que combinar ou eles não funcionarão. Esse não era o caso em 1974; de volta eles tinham um certo nível de independência porque tudo era estaticamente lincado.
  3. Discos rígidos de varejo baratos passavam a marca dos 100 megabytes por volta de 1990, e software de redefinição do tamanho das partições  apareceram em algum lugar por volta daquele tempo (partition magic 3.0 embarcou em 1997).
Claro que uma vez que as divisões existiam, algumas pessoas criaram outras regras para justificá-la. Root era para as coisas do sistema operacional que você obtinha a partir do upstream e /usr era para seus arquivos locais. Então "/" era para as coisas que você obtinha a partir da AT&T e "/usr" era para as coisas que sua distro, como IBM AIX ou Dec Ultrix ou SGI Irix, adicionavam a ela, e "/usr/local" era para os seus arquivos de instalações especificas.

Mais tarde, alguém decidiu que o "/usr/local" não era um bom lugar para instalar novos pacotes, então vamos adicionar "/opt"! Ainda estou esperando o "/opt/local" aparecer... Claro, dados 30 anos para solidificar, essa divisão fez algumas regras específicas interessantes de distros surgirem e seguir adiante novamente, tal como “/tmp" fica limpo entre os reboots, mas "/usr/tmp" não. No Ubuntu, "/usr/tmp" não existia,e no Gentoo, "/usr/ tmp" é um link simbólico para o "/var/tmp", na qual agora possui a regra “ não limpo entre reinicializações (not cleared between reboots)”. Sim, tudo isso precedem o tmpfs. Ele tinha a ver com os read-only root file systems. "/usr" sempre vai ser read-only nesse caso, e "/var" é aonde o seu espaço gravável fica.

Além disso, "/" é mais read-only exceto pelos bits do "/etc", que tentaram mover para o "/var", mas o link simbólico do "/etc" para o "/var/etc" aconteceu mais frequentemente do que não. Padrões burocráticos, como a Linux Foundation (que consumiu o Free Standards Group em seu acréscimo de discos em constante crescimento anos atrás), alegremente documenta e adiciona a esse tipo de complexibilidade sem constante tentar entender porque aquilo estava lá em primeiro lugar. “Ken e Dennis vazaram seu OS no equivalente de home porque o disco root no PDP-11 era pequeno demais" vai silvar nas suas cabeças.
Rob Landley é um geek desde a sua infância, um geek Linux desde 1998, e um geek de Linux em embarcados desde 2001 (nota do tradutor: ano que eu conheci o Linux). Reimpresso com permissão do autor original. Primeira aparição em hn.my/bin (busybox.net).

Analista (bilíngue) de sistemas, redator do blog Diolinuxtradutor da distribuição Funtoo e parte da distribuição IPFire, do manual chamado Caixa de Ferramentas do UNIX e do manual Zsh Lovers. Dono dos canais e blogs Toca do Tux e Resenha Nerd:

Compartilhe isso

Leia outros posts

Próximo post
« Próximo post
Post Anterior
Próximo Post »

Compre na imago brinquedos

Compre na imago brinquedos
Utilize o cupom de desconto TOCADOTUX e ecnomize 5% na sua compra