Entendendo a divisã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.

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 home dos usuários eram abrigados (que 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 seu disco original 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 e então seu sistema operacional poderia consumir todo o espaço em ambos os discos e crescer para todo os três megabytes (ooooh!).


Claro que eles criaram regras sobre “quando o sistema bootar primeiro, 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.” Bem específico para v6 unix de 35 anos atras.

 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 é responsabilidade do initrd e do initramfs que lidam com os problemas do “esse arquivo é necessário antes daquele arquivo”. Já temos um sistema temporário que inicializa o sistema principal.
  2. Bibliotecas compartilhadas (introduzida pelos caras de Berkeley) evitam que você independentemente atualize as partes do /lib e do /usr/bin. Duas partições tem que combinar ou elas não funcionarão. Esse não era o caso em 1974; eles tinham um certo nível de independência porque tudo era estaticamente ligado.
  3. Discos rígidos de varejo baratos passavam a marca dos 100 megabytes por volta de 1990, e software de redefinição de 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. A partição Root era para as coisas do sistema operacional que você obtinha a partir do upstream e a partição /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 que adicionavam a ela, e "/usr/local" era para os seus arquivos de instalações especificas.

 Depois 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 que algumas regras específicas interessantes de distros surgirssem e seguir adiante novamente, tal como “/tmp" fica limpo entre os reboots, mas "/usr/tmp" não. (Claro, no Ubuntu "/usr/tmp" não existe 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, "/" é a maioria do tempo read-only exceto para os bits de "/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....)

Mudança na arvore de diretórios do Fedora 33

 Burocracias de padrões como o da 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 complexabilidade sem 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).

Comente com o Facebook:

Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.

Marcadores

A pior história sobre Linux que já ouvi (5) A.I (2) ambiente gráfico (19) AMD (14) analise (10) Andriod (16) android (7) Apple (1) arm (5) artigo (5) aws (1) bc (23) benchmark (6) BetrFS (1) blackhat (1) BSDs (30) btrfs (32) bugs (2) Caixa de Ferramentas do UNIX (19) canto do Diego Lins (2) certificações Linux (7) Código Fonte (54) comandos (31) comp (1) compressores (5) container (7) CPU (19) cracker (1) criptografia (5) crowdfunding (9) cursos (24) daemons (13) Debian (31) desempenho (1) desenvolvimento (90) desktop (19) DevOps (3) DevSecOps (4) dic (1) Dica de leitura (90) dica DLins (2) dicas do Flávio (27) Dicas TechWarn (1) diet libc (3) diocast (1) dioliunx (3) distribuições Linux (14) Docker (12) DragonflyBSD (22) driver (1) ead Diolinux (2) edição de vídeo (5) embarcados (1) EMMI Linux (4) emuladores (9) endless (5) English interview (3) Enless OS (2) entrevista (17) espaço aberto (82) evento (6) facebook (1) Fedora (10) filesystem (82) financiamento coletivo (2) fork (4) fox n forests (4) FreeBSD (20) Funtoo Linux (13) games (93) gerenciadores de pacotes (4) glaucus (3) GOG (3) google (9) gpu (3) hacker (2) hardware (104) hash (1) helenos (3) I.A (1) init system (11) Intel (15) inteligencia artificial (2) IoT (1) ispconfig (1) jogos (37) kde (1) kernel (138) lançamento (64) leis (1) LFCS (1) libs (2) licenças (8) Linus (16) linus torvalds (2) Linux (194) linux foundation (3) linux para leigos (1) live (5) LPI (8) LTS (1) Mac (1) machine learning (1) matemática (9) mesa redonda (27) microcontroladores (1) microsoft (6) microst (1) muito além do GNU (165) musl (3) não viva de boatos (9) navegadores (5) NetBSD (7) newlib (1) nim (1) nintendo (1) novatec (17) novidades (1) nuvem (1) o meu ambiente de trabalho (3) off-topic (12) open source (84) OpenBSD (7) OpenShift (1) oracle (1) os vários sabores de Linux (43) padrim (2) palestras e eventos (5) partições (6) pentest (8) performance (1) pipewire (1) plan9 (1) playstation (1) processadores (30) professor Augusto Manzano (11) Programação (64) promoção (1) propagandas com Linux (8) ps4 (1) real-time. (1) Red Hat (23) redes (4) resenha nerd (4) Resumo da Semana do Dlins (2) resumo do Tux (19) retrospectiva Linux (1) risc-V (14) RISCV (13) rtos (1) runlevel (2) rust (12) segurança digital (24) servidor web (2) servidores (2) shell (9) shell script (8) sistema operacional (25) skarnet (1) smartphones (3) Software livre e de código aberto (151) sorteio (3) Steam (10) Steam no Linux (8) supercomputadores (4) suse (6) systemd (7) terminal (89) terminal de comandos (18) toca do tux (1) toybox (27) tutorial (6) Tux (3) unboxing (7) UNIX (17) UNIX Toolbox (14) vartroy (1) vga (1) virtualização (2) vulnerabilidade (6) wayland (5) web (1) whatsapp (1) whitehat (1) Windows Subsystem for Linux (2) wine (14) WoT (1) yash (1) ZFS (15) zsh (3)