Quando o kernel do Linux é iniciado, ele executa o programa /sbin/init
. (Isso é depois do initrd ou initramfs ) se houver, e o local pode ser configurado com o init
parameter . O programa init tem um papel especial: ele continua funcionando para sempre (há uma regra especial que impede que ele seja morto mesmo com o SIGKILL ), adota processos órfãos , e é claro que deve iniciar (e monitorar) outros programas.
Você pode especificar seu próprio programa como init. Então, depende inteiramente de você o que você administra.
No entanto, você perderá muito se fizer isso. Por exemplo, você não poderá reconfigurar seu dispositivo de qualquer maneira (por exemplo, alterar a configuração da rede ou modificar as configurações do gerenciador de inicialização) sem acesso físico, a menos que você forneça um programa para isso. Eu recomendo que você execute pelo menos um conjunto mínimo de ferramentas:
-
BusyBox , que é um conjunto de ferramentas de sistema, incluindo uma implementação de init, um shell e outras ferramentas de linha de comando. Você provavelmente vai querer pelo menos algumas das ferramentas BusyBox para configurar a rede no momento da inicialização de qualquer maneira (
ifconfig
,route
,…). - IPtables , a ferramenta básica de configuração do firewall, que não está incluída no BusyBox.
- Dropbear , um servidor SSH, que permite que você faça login no seu dispositivo remotamente.
- Possivelmente outras pequenas ferramentas , em particular, um NTP cliente (para acertar o relógio) e dnsmasq , um DNS cache.
Todas essas ferramentas têm uma pequena pegada - elas cabem confortavelmente em cerca de 10 MB de RAM e 3 MB de armazenamento compactado, o que é insignificante para um Raspberry Pi. Não há nada a ganhar em um RPi de reduzir o sistema abaixo de um Linux embarcado normal. Usar um kernel Linux apenas para inicializar um programa pode ser útil para dispositivos muito limitados, mas um RPi tem pelo menos duas ordens de magnitude acima disso.
A maneira mais fácil para você é usar uma das muitas distribuições Linux incorporadas . Alternativamente, você pode usar uma ferramenta como Buildroot para construir um sistema personalizado - isso é útil para sistemas pequenos, mas um pouco exagerado para um RPi.