Executa apenas o kernel do Linux e os programas do usuário

6

é possível executar apenas um kernel Linux em um sistema que carregará meus programas em vez de um sistema operacional?

Eu quero trabalhar com um Raspberry Pi com um kernel Linux. Eu estou tentando criar um servidor e programas cliente no Raspberry Pi e para isso eu preciso apenas de um kernel que funcionará em drivers de rede.

Eu quero que o raspberry pi execute apenas meus programas quando eu o ativar. Eu não quero o resto do sistema operacional.

    
por Gilles 20.12.2014 / 17:32

1 resposta

2

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.

    
por 22.12.2014 / 14:24