Diferença entre bin, sbin, usr/bin, usr/sbin

Em 30 de novembro de 2010, David Collier escreveu:

Percebi que no busybox os links são divididos nesses quatro diretórios.
Existe alguma regra simples para determinar em qual diretório qual dos links deve estar ...
Por exemplo, kill está em /bin e killall está em /usr/bin... Não vejo nenhuma lógica nessa divisão.

Você provavelmente sabe que Ken Thompson e Dennis Ritchie criaram o Unix no PDP-7 em 1969. Então, por volta de 1971, eles atualizaram para um PDP-11 com um par de discos RK05 (1,5 megabytes cada).

Quando o sistema operacional cresceu e não coube mais no primeiro disco (no qual estava localizado o FS raiz), eles mudaram parte para o segundo, onde estavam os diretórios home (portanto, o ponto de montagem foi chamado / usr - da palavra do utilizador). Eles duplicaram todos os diretórios necessários do SO (/bin, /sbin, /lib, /tmp ...) e colocaram os arquivos em um novo disco, porque o antigo ficou sem espaço. Então eles tinham um terceiro disco, eles o montaram no diretório /home e moveram os diretórios pessoais dos usuários para lá para que o sistema operacional pudesse ocupar todo o espaço restante em dois discos, e estes foram até três megabytes (uau!).

Claro, eles tiveram que fazer uma regra que "quando o sistema operacional inicializar, ele deve ser capaz de montar um segundo disco em /usr, então não coloque programas como mount no segundo disco em /usr ou você terá um problema do ovo e da galinha." É simples assim. E isso foi no Unix V6 35 anos atrás.

A divisão de /bin e /usr/bin (e todos esses diretórios) é um legado desses eventos, um detalhe de implementação dos anos 70 que foi copiado por burocratas por décadas. Eles nunca fizeram a pergunta por queeles apenas fizeram isso. Essa divisão deixou de fazer sentido antes mesmo da criação do Linux, por vários motivos:

  1. Ao inicializar, um initrd ou initramfs é usado, o que resolve problemas como "precisamos deste arquivo antes daquele". Assim, temos ja tem sistema de arquivo temporário que é usado para carregar todo o resto.
  2. As bibliotecas compartilhadas (que foram adicionadas ao Unix pelos caras da Berkley) não permitem que você altere o conteúdo de /lib e /usr/lib independentemente. Essas duas partes devem corresponder ou não funcionarão. Isso não aconteceu em 1974 porque eles tinham alguma independência na época devido à vinculação estática.
  3. Discos rígidos baratos quebraram a barreira de 100 megabytes por volta de 1990 e, na mesma época, o software de redimensionamento de partições apareceu (o partition magic 3.0 foi lançado em 1997).

Claro, como há uma divisão, algumas pessoas criaram regras que a justificam. Por exemplo, a partição raiz é necessária para todos os tipos de recursos gerais do sistema operacional e você precisa colocar seus arquivos locais em / usr. Ou coloque / o que a AT&T distribui, e em /usr o que sua distribuição, IBM AIX, Dec Ultrix ou SGI Irix adicionou, e /usr/local contém arquivos específicos para seu sistema. E então alguém decidiu que /usr/local não era o lugar certo para instalar um novo software, então vamos adicionar /opt! Não ficarei surpreso se /opt/local também aparecer...

É claro que, ao longo de 30 anos, por causa dessa separação, todos os tipos de regras específicas de distribuição surgiram e desapareceram. Por exemplo, "/tmp é limpo na reinicialização, mas /usr/tmp não é." (E no Ubuntu não há /usr/tmp em princípio, e no Gentoo /usr/tmp é um link simbólico para /var/tmp, que agora está sujeito a essa regra e não é limpo na reinicialização. Sim, isso foi tudo antes Acontece também que o FS raiz é somente leitura e você também não precisa escrever nada em /usr, mas precisa escrever em /var. basicamente não pode ser escrito exceto em /etc, que algumas vezes tentou ser movido para /var...)

Burocratas como a Linux Foundation (que engoliu o Free Standards Group durante sua expansão anos atrás) ficam felizes em documentar e complicar essas regras sem nunca tentar descobrir por que elas estavam lá. O que eles não percebem é que Ken e Dennis apenas moveram parte do sistema operacional para seu diretório inicial porque o disco RK05 no PDP-11 era muito pequeno.

Tenho certeza de que o busybox apenas coloca os arquivos da mesma maneira que historicamente. Não há nenhuma razão real para fazê-lo até agora. Pessoalmente, eu apenas faço links de /bin, /sbin e /lib para diretórios semelhantes em /usr. Afinal quem trabalha com software embarcado procura entender e simplificar...

Fonte: habr.com

Adicionar um comentário