Caixas de linux de aplicação única e finalidade específica [duplicado]

4

Estou projetando um aplicativo que será implantado / instalado em uma máquina linux (talvez Archlinux, mas poderia ser qualquer distro e, na verdade, eu realmente preferiria algo leve e dentro da família Debian, se possível). Esta máquina não será uma máquina de "uso geral" ou de múltiplas aplicações: seu único objetivo é executar meu aplicativo na inicialização e fechar meu aplicativo no desligamento. Nenhum outro aplicativo de usuário final seria instalado nesta máquina.

Estou procurando uma maneira de:

  • Quando o usuário liga a máquina, em vez da inicialização normal do Ubuntu / OS - > BIOS - > tela inicial - > processo de login, eles apenas veem uma tela inicial para meu aplicativo (enquanto o sistema e o aplicativo são inicializados) e, em seguida, meu aplicativo é carregado com sua própria aparência
  • Ao usar a máquina, eles não podem acessar nenhum outro aplicativo, conchas ou outra parte do sistema operacional; tudo o que eles têm acesso é meu aplicativo
  • Ao executar, o aplicativo ocupa a tela inteira e sua janela não pode ser minimizada ou redimensionada
  • O aplicativo (como software) não pode ser desativado ou morto durante a execução, exceto ...
  • Desligar a máquina (desligando-a fisicamente) desliga o aplicativo com elegância e desliga o SO subjacente

Assim, o usuário final nunca sabe que a máquina está rodando em cima do linux; para eles, o aplicativo é a única coisa "viva" na máquina.

Isso tem para ser possível, já que o Android é apenas um invólucro do Linux, e há milhares de outros dispositivos que executam apenas um aplicativo e nada mais.

Isso provavelmente será um binário C que lança um aplicativo de área de trabalho Java como o aplicativo real.

Alguma idéia de como eu posso realizar os itens mencionados acima?

    
por zharvey 14.05.2014 / 16:40

1 resposta

4

Eu recomendaria strongmente o Archlinux para essa tarefa. Ele consegue atingir o delicado equilíbrio entre a instalação de muito poucos aplicativos de "usuário final" por padrão e ainda deixar um sistema sensato sobre o qual você pode construir.

Quanto às etapas a serem seguidas para realizar sua meta, depois de ter o Arch instalado, ajuste os serviços que deseja executar na inicialização (parece que você pode querer menos ttys ). Depois disso, instalar e configurar o X (esse link também tem um link para iniciar o X no login, o que você desejará ). Se você quiser uma tela inicial na inicialização, precisará configurar algo como Plymouth . E, finalmente, o systemd tende a lidar com desligamentos físicos (pressionando um botão liga / desliga no hardware do consumidor uma única vez, por exemplo) de forma bastante elegante. No entanto, pode valer a pena considerar adicionar uma função de desligamento ao aplicativo que você estará executando.

Seu $HOME/.xinitrc pode ser muito básico se você não precisar de muita funcionalidade. Por exemplo:

exec /path/to/your/program/here
    
por 14.05.2014 / 18:21