O LSB , POSIX e a Especificação Única do UNIX envolvem significativamente userland . Simplesmente usar um kernel que também é usado como base de um sistema operacional "compatível com o padrão Unix", "principalmente compatível com POSIX" - GNU / Linux - não é suficiente para tornar o Android tão bom assim. Existem, no entanto, alguns elementos * nix-ish, como o shell , que é um shell Korn "amplamente compatível" implementação (em pré-4.0, pode ser o shell ash, que é usado em sistemas GNU / Linux embutidos via busybox) e vários utilitários de linha de comando POSIX-y para acompanhá-lo. Não existe o conjunto completo que a maioria das pessoas reconheceria do mundo "unix-like", no entanto.
is it close enough to be compliant with the Linux Standard Base?
Uma peça central do LSB é a hierarquia do sistema de arquivos, e o Android não usa isso. O LSB realmente adiciona coisas ao POSIX, e como o Android não é quase isso, está ainda mais longe de ser compatível com o LSB. Isso é explicitamente não uma meta para a plataforma, acredito. O kernel do linux era usado para suas próprias propriedades, e não porque pudesse ser usado como o núcleo de um sistema POSIX; foi adotado pelo GNU originalmente por ambas as razões.
Para esclarecer essa distinção em relação a uma especificação orientada a espaço do usuário - como POSIX, Unix ou as extensões LSB - considere algumas das coisas POSIX tem a dizer sobre a biblioteca C nativa. É nesse ponto que nos deparamos com coisas específicas da plataforma, como rede e a maioria das chamadas do sistema, como read()
- read()
não é, na verdade, padrão C. É uma coisa do Unix, historicamente. O POSIX define essas interfaces como , mas elas são implementadas na biblioteca C do userland , então todo o resto usa essa biblioteca como base. A biblioteca C no GNU / Linux é a Biblioteca GNU C, um trabalho completamente separado do kernel. Embora essas duas coisas funcionem juntas como o núcleo do sistema operacional, nenhum dos padrões em discussão aqui diz qualquer coisa sobre como isso deve acontecer, e assim, de fato, eles não dizem nada sobre o que o kernel é ou deve fazer . Eles dizem muitas coisas sobre o que a biblioteca C é e deve fazer, ou seja, se você escreveu uma biblioteca C para trabalhar com um determinado kernel - qualquer kernel , independentemente de forma ou características - e essa biblioteca fornece uma API de usuário que satisfaz a especificação POSIX, você tem um sistema operacional compatível com POSIX.
O LSB tem algumas coisas a dizer sobre o /proc
, que o linux fornece como uma interface do kernel. No entanto, o fato de que isso (por exemplo) é fornecido diretamente pelo kernel não significa que o LSB diz que tem que ser - ele apenas diz que isso deve / poderia estar disponível, e em caso afirmativo, qual é a natureza da informação.