Por que não há READMEs na hierarquia do sistema de arquivos Linux?

8

A hierarquia do sistema de arquivos do Linux ( FHS ) contém muitos diretórios importantes. Por exemplo, eu acabei de descobrir /sys/class/inputenquanto brincava com minhas configurações de teclado PS / 2.

Mas todos esses diretórios importantes estão documentados em outros lugares, portanto man /sys/class/input, não funciona para explicar o que acontece em um determinado momento.

Por que não colocar READMEarquivos na hierarquia para facilitar o aprendizado do que está acontecendo em determinados níveis e brincar com o conteúdo? Seria realmente incrível se os dispositivos pudessem montar seus próprios READMEs.

anatoly techtonik
fonte
2
Talvez porque a maioria das pessoas não queira aprender o que está acontecendo nesses diferentes níveis? Eles só querem que eles trabalhem, para que possam realizar todas as tarefas que precisam / desejam fazer. Alguém teria que escrever todos esses arquivos LEIA-ME e acrescentaria mais inchaço a um sistema de arquivos já sobrecarregado com coisas (como grande parte do / usr / share) que a maioria das pessoas nunca usará.
jamesqf
14
@jamesqf porque a maioria das pessoas não quer aprender o que está acontecendo nesses diferentes níveis? Eles só querem que eles trabalhem, para que possam realizar as tarefas que precisam / desejam fazer. E se minha tarefa estiver relacionada ao sistema de arquivos, como parece o OP? Além disso, você conheceu um usuário Linux? Nós não querem aprender. Este é um argumento terrível.
kaqqao
1
A diferença fundamental entre Linux e Windows / Mac, caso você não tenha notado, é que o Linux sabe que você deixou o útero já sabendo tudo. Portanto, um README seria redundante.
user541686
1
@kaqqao: Bem, eu sou um usuário de Linux, e sou um deles desde que o Linux era. E antes disso, um usuário do Unix, uma vez que rodava no PDP-11 da minha escola. Não me importo particularmente com o funcionamento do sistema de arquivos, apenas (no momento) quero que meu código de tomografia sísmica funcione. Também não me importo com / sys / class / input, desde que meu teclado e trackball funcionem. Para a pequena minoria que está interessado nessas coisas, existe uma ferramenta útil chamado Google, acessível a partir maioria dos navegadores web :-)
jamesqf
2
Está aí man hier.
el.pescado

Respostas:

30

Para usar seu exemplo: /sys/não contém arquivos "reais", mas é totalmente fornecido pelo kernel. Deseja que todos os READMEs se tornem parte do kernel? Você provavelmente não.

A documentação está em /usr/share/doc. Que contém arquivos normais no seu disco rígido. Alguma documentação sobre /syse /procestá na fonte do kernel (ou seja, /usr/src/linux/Documentationse você instalou a fonte do kernel e fez o link simbólico para o kernel atual).

dirkt
fonte
10
sysfs e procfs são sistemas de arquivos totalmente virtuais que não possuem armazenamento de suporte. Tudo lá é sintetizado em tempo real pelo kernel. Se os READMEs não estiverem armazenados na memória, de onde eles viriam?
Jörg W Mittag
13
@ JörgWMittag: Obviamente, o kernel pode sintetizar links simbólicos para /use/share/doc.
MSalters
11
O kernel já é um software grande e complicado, e "facilitar o aprendizado das pessoas" não está entre os principais objetivos de seus desenvolvedores. Não é que difícil de ir para /usr/share/docseu lugar.
Federico Poloni
9
@MSalters: isso significaria que o kernel precisa: a) varrer todo o sistema de arquivos para encontrar esses arquivos e criar links simbólicos para eles; b) precisa ter uma carga de opções de configuração para informar ao kernel onde esses arquivos estão crie links simbólicos para eles ou c) precise prescrever os locais desses arquivos para os mantenedores da distribuição (o que violaria a máxima nº 1 de Linus de que a política pertence ao espaço do usuário, apenas o mecanismo pertence ao kernel). Além disso, como você garante que os arquivos correspondam à versão do kernel atualmente em execução? E quanto às distribuições que têm suas…
Jörg W Mittag
7
@FedericoPoloni: o FHS é obrigatório apenas para distribuições Linux em conformidade com o LSB. A maioria não. Em particular, existem várias distribuições que foram especificamente fundadas para limpar (o que elas percebem) o lixo histórico, que em muitos casos inclui explicitamente a ESF.
Jörg W Mittag
14

Porque o Unix e o Linux têm décadas de tradição em documentar com manpáginas (e, nos sistemas GNU, infoarquivos ...). Veja homem (1) , homem (7) , páginas de homem (7) . BTW, mancomando e páginas são opcionais (e você não os instalará em todos os sistemas Unix).

A hierarquia do sistema de arquivos é descrita em hier (7) .

É definido pelo padrão do sistema de arquivos Hierachy disponível em https://wiki.linuxfoundation.org/lsb/fhs

Vários sistemas de arquivos, principalmente /proc/(veja proc (5) ) e /sys/(veja sysfs (5) ), são sistemas de pseudofile fornecidos pelo código do kernel. Você não quer inchar o kernel com código extra produzindo esses README-s (que é inútil para a grande maioria dos usuários). Até o arquivo de configuração do kernel está disponível apenas como opção, pois /proc/config.gzmuitas vezes é desativado na maioria das configurações do kernel. E muitos sistemas Linux são sistemas embarcados (por exemplo, seu smartphone, seu dispositivo inteligente ou dispositivo de IoT, seu RaspberryPI), onde os recursos são assustadores o suficiente para evitar desperdício.

Notavelmente, /sys/é principalmente útil para administradores de sistemas e desenvolvedores que escrevem utilitários de baixo nível, e ambos devem poder encontrar a documentação adequadamente.

Por que não colocar READMEarquivos na hierarquia para facilitar o aprendizado do que está acontecendo?

Se você realmente deseja tais READMEs, escreva seu próprio módulo carregável do kernel fornecendo-os ou configure alguns unionfs para fornecê-los. Eu não acho que vale a pena o esforço (e uma união /sysprovavelmente desaceleraria todo o sistema).

Lembre-se de que o código do kernel consome RAM (nunca é paginado e fica na memória física , não na memória virtual), mesmo que não seja usado. Portanto, faz sentido evitar inchaço.

Basile Starynkevitch
fonte
Para que eu possa escrever um pacote que documenta todos esses caminhos sem tocar no kernel ou torná-lo inchado?
Anatoly techtonik
1
Você poderia, mas usando um unionfs on /sysiria abrandar o seu sistema. Não acho que valha a pena perder seu tempo dessa maneira. A vida é curta ... E você passará mais tempo fazendo isso do que lendo a documentação
Basile Starynkevitch