Eu estava passando por um tutorial sobre como configurar um initramfs personalizado, onde afirma:
A única coisa que está faltando é / init, o executável na raiz do initramfs que é executado pelo kernel após o carregamento. Como o sys-apps / busybox inclui um shell totalmente funcional, isso significa que você pode escrever seu binário / init como um simples script de shell (em vez de torná-lo um aplicativo complicado escrito em Assembler ou C que você precisa compilar).
e fornece um exemplo de init como um script de shell que começa com #!/bin/busybox sh
Até o momento, tive a impressão de que o init é o processo principal iniciado e que todos os outros processos de espaço do usuário são eventualmente filhos do init. No entanto, no exemplo dado, o primeiro processo é realmente bin/busybox/ sh
do qual o init mais tarde é gerado.
Essa é uma interpretação correta? Se eu tivesse, por exemplo, um intérprete disponível naquele momento, eu poderia escrever init como um script Python, etc.?
/
não desaparece no ar - é montado (embora geralmente seu conteúdo seja excluído antes de economizar memória) . Ainda está lá .switch_root
faz o syscallswitchroot
- que é o que os desenvolvedores do kernel forneceram quando mudaram o processo de inicialização no kernel 2.6. algo para exigir o initramfs. É o núcleo que faz a mágica.