O kernel do Linux não se importa muito. O carregador de boot diz ao kernel onde montar um sistema de arquivos raiz - tipicamente uma imagem ramdisk inicial (initrd), mas também pode ser o sistema de arquivos raiz - eo kernel iniciará o processo init a partir de /sbin/init
( /init
em um initramfs), a menos que seja dito o contrário.
Até mesmo o local dos sistemas de arquivos do kernel - /proc
, /sys
, /dev
if udev e assim por diante - é basicamente o espaço do usuário para decidir.
O projeto Base de padrões do Linux padronizou esses recursos em várias distribuições Linux. (Bem, mais ou menos. Ainda há algumas pequenas diferenças, por exemplo, na nomenclatura de dispositivos, e fala-se sobre a mesclagem de /usr/bin
em /bin
e /usr/lib
em /lib
). Uma versão do mesmo foi aceita como um padrão ISO, ISO / IEC 23360. A versão atual do LSB, em outubro de 2016, é LSB 5 .
Os desenvolvedores de kernel do Linux se esforçam muito para manter as coisas compatíveis com versões anteriores na interface do espaço do usuário. É por isso que as informações da versão 2.6 são muito aplicáveis a 4.4. É praticamente somente quando novas instalações e interfaces são introduzidas que novas versões divergem das antigas, e você precisa encontrar a documentação para elas.
Você mencionou que já compilou algumas bibliotecas e aplicativos. Em caso afirmativo, as configurações de tempo de compilação que você usou (verifique configure
settings, --prefix
e assim por diante) e os diretórios dessas bibliotecas e aplicativos procuram seus arquivos de configuração (e fuso horário para a biblioteca C, internacionalização e assim por diante ) determine a estrutura de diretórios que você realmente precisa.
Linux From Scratch! é uma comunidade que desenvolve livros sobre como compilar e construir uma distribuição Linux a partir do zero. Não é exatamente mínimo - você pode omitir certos pacotes em algumas situações, remover outros e assim por diante -, mas tudo é explicado.
Rob Landley é bem conhecido por documentar coisas do kernel Linux. Sua introdução ao initramfs , como usar initramfs , e programação para initramfs , são muito interessantes se você quiser crie um sistema mínimo que seja executado diretamente a partir de um initramfs, como muitos dispositivos incorporados fazem.
Em relação a systemctl
ou systemd em geral, eu indicaria sua página inicial , e te darei boa sorte. Eu mesmo estou procurando maneiras de evitá-lo e usar sistemas init mais robustos, que ainda reconhecem a filosofia Unix do que se aglomerar em uma bagunça monolítica por capricho. (Na minha experiência, os primeiros permanecem funcionais e podem ser mantidos a longo prazo, e os últimos, embora frequentemente amados pelos usuários finais devido às novas características aglomeradas e ao polimento externo, contribuem para sistemas frágeis e quebrados e administradores de sistemas a longo prazo. Sua experiência e opiniões podem variar, estou apenas descrevendo as minhas.)
Quando desenvolvi um pendrive simples para avaliar nós de cluster Linux, eu examinei os sistemas Debian e CentOS mínimos que você pode instalar, para descobrir os detalhes que o OP está pedindo (exceto que eu não estava procurando por um sistema mínimo, mas um pequeno sistema leve que pode executar os mesmos binários que são executados no próprio cluster final, ou seja, incluindo serviços básicos e bibliotecas). Hoje, eu recomendo olhar para Devuan , porque ele suporta vários sistemas init. Experimentar essas em máquinas virtuais deve ser muito informativo.
Pratique regras sobre teoria ou padrões. Não há normas impostas ou quaisquer padrões realmente; mesmo LSB e ISO / IEC 23360 são mais como diretrizes para uma interoperabilidade bem sucedida. A documentação do kernel Linux extraída das fontes do kernel do Linux descreve as expectativas do kernel, mas, como mencionado, há muito, muito poucos, que afetam a árvore do sistema de arquivos. E mesmo esses tendem a ser configuráveis no tempo de inicialização ou em tempo de compilação.