web-dev-qa-db-ja.com

専用の単一アプリケーションLinuxボックス

私はLinuxマシンにデプロイ/インストールされるアプリを設計しています(おそらくArchlinuxですが、どのディストリビューションでもかまいません。実際、可能な限り軽量でDebianファミリー内のものを好みます)。このマシンは、「汎用」または複数のアプリケーションマシンではありません。唯一の目的は、起動時にアプリを実行し、シャットダウン時にアプリを閉じることです。このマシンには他のエンドユーザーアプリはインストールされません。

私は次の方法を探しています:

  • ユーザーがマシンの電源を入れると、通常のUbuntu/OSの起動-> BIOS->スプラッシュ画面->ログインプロセスの代わりに、(システムとアプリの起動中に)私のアプリのスプラッシュ画面が表示されます。その後、私のアプリは独自のルックアンドフィールでロードされます
  • マシンの使用中は、他のアプリ、シェル、またはオペレーティングシステムの他の部分にアクセスできません。彼らがアクセスできるのは私のアプリだけです
  • 実行中、アプリは画面全体を占め、ウィンドウを最小化またはサイズ変更することはできません
  • アプリ(ソフトウェアとして)は、実行中にオフにしたり、強制終了したりすることはできません。ただし、...
  • マシンの電源を切る(物理的に電源を切る)と、アプリが正常にシャットダウンされ、基盤となるOSもシャットダウンされます。

したがって、エンドユーザーはマシンがLinux上で実行されていることを知ることはありません。彼らにとって、アプリはマシン上で「生きている」唯一のものです。

これはhas AndroidはLinuxの単なるラッパーであり、単一のデバイスを実行する他のデバイスが数千アプリとそれ以上のものはありません。

これは、実際のアプリとしてJavaデスクトップアプリケーションを起動するCバイナリである可能性があります。

上記の項目をどのように達成できるかについてのアイデアはありますか?

5
zharvey

このタスクにはArchlinuxを強くお勧めします。デフォルトでごく少数の「エンドユーザー」アプリケーションをインストールすることと、それでも構築できる賢明なシステムを残すこととの間の微妙なバランスをとることができます。

目標を達成するための手順については、Archをインストールした後、起動時に実行するサービスを微調整します(頭から離れて、必要なようです ttysが少ない )。その後、 Xをインストールして構成します (そのリンクには、ログイン時にXを開始するためのリンクもあります。これは必要です)。起動時にスプラッシュ画面が必要な場合は、 Plymouth のように設定する必要があります。そして最後に、systemdは物理的なシャットダウン(たとえば、コンシューマーハードウェアの電源ボタンを1回押す)をかなり優雅に処理する傾向があります。ただし、実行するアプリにシャットダウン機能を追加することを検討する価値があるかもしれません。

きみの $HOME/.xinitrc多くの機能を必要としない場合は、非常に基本的なことかもしれません。例えば。:

exec /path/to/your/program/here
4
HalosGhost