Raspbianで「kiosk」モードを設定するには?


10

Raspberry Piを一種の「キオスク」モードでセットアップして、単一の全画面アプリケーションで起動したい。コマンドラインの使い方は知っていますが、Linuxブート動作のカスタマイズに関しては初心者です。私はアプリケーションを構築しており、Raspberry Piを安全にシャットダウンする機能を追加する予定です。この1つのアプリケーションのみを実行するようにRaspberry Piを構成するには、何をする必要がありますか?

更新:明確にするために、ウェブページを開きたくありません。また、オペレーティングシステムを変更したくありません。Xではなく自分のアプリケーションを起動するようにオペレーティングシステム(Raspbian)を構成する方法を学びたいです(私のアプリケーションはバックグラウンドでのXレンダリングに依存している可能性があります)。

回答:


7

私はこれを試したことはありませんが、あなたがまだ探しているようで、ほぼ1か月たっても答えが得られないようです。

このハウツーは古くからありますが、全体的な概要はしっかりしているようです。まったく同じことをすべて行う必要はありません。Webブラウザーを中心に使用することに焦点を当てていますが、ここではほとんど関係ありません(つまり、リラックスしてください。これは別の「web-kiosk」ではありません)。

これは/etc/inittab、ほとんどのLinuxディストリビューションで使用されなくなったを参照していますが、debian wheezy(raspbian)が使用しているようです。アイデアは、ランレベル4をキオスクとして使用し、それをデフォルトにすることです。それを行うか、現在のデフォルト(2または3だと思います)をそのまま使用できます。私が現在実行しているラズビアンは私によって変更されているので/etc/rc[N].d、7つのランレベルに対応するディレクトリ間の元の違いが何であったかはわかりません。グラフィカルログイン(lightdm)を開始しないものを使用するかlightdm、そのランレベルから削除します。そのようなことを正しく行うこともできます(を参照man update-rc.d)。

次に、ハウツーのこの部分に従って、ログインなしでXとアプリを起動するための独自のブートサービス(別名init)スクリプトを作成します。ただし、そのようにしないでください。debianに準拠する必要があるため、を参照してください/etc/init.d/README。また、ウィンドウマネージャーを使用する必要はまったくありません(ただし、これfvwmは素晴らしいことですが、特にこの種のことを考えているので、使用する場合は覚えておいてください).xinitrc

#!/bin/sh

myApp

単純なXでアプリのみを実行します-これは非常に単純です:メニュー、タイトルバー、ツールバーなどがないか、ユーザーが別のアプリケーションを起動したりシェルを取得したりする方法です。カーソルを提供するだけです。

これに関する問題は、ブートからデスクトップに直接移動すると、それがスーパーユーザーデスクトップになることです。実際、Xインスタンスのuidは常に0ですが、アプリケーションはxinitrcから実行され、Xを開始したユーザーとして実行されます。この場合、Xはinitによって開始されたため、ユーザーはrootになります(技術的にはrootはログインしていません)。したがって、上記のxinitrcは次の場合に適しています。

su -c myApp pi

代わりに、piユーザー(技術的にはログインしていないユーザー)としてアプリを実行します。

技術的には誰もログインしていないため、キオスクユーザーがXを(例:を介してctrl-alt-delete)終了しても、ログインプロンプトが表示されたままになります。ハウツーはそれを超えて、サービスinitスクリプトがフォアグラウンドでX(下記の注を参照)を開始し、終了するとサービススクリプトが続行して実行されるようにしshutdown -r nowます。

(通常の)マシンに物理的にアクセスできる人は、実装するセキュリティを常に回避できるため、ここで実際に実行しようとしていることは、あまりにも簡単で、厄介な事故を防ぐことではありません。

また、ブートサービスはこれをフォアグラウンドで実行するためその後に他のサービスが実行されないことを忘れないでください。絶対に最後のサービスであることを確認してください。とても重要です!実際には、/etc/rc.local代わりに使用することもできます。通常、これが最後であることが保証されているためです。

注:実際には、ハウツーで/root/kioskは、このセクションの別のスクリプトです。.xinitrc上記のセクション(3.4)で示したスクリプトを参照するのは1行だけであることに注意してください。そのような行をブートスクリプトに直接挿入するだけです。すでに説明したように、(予備の)xinitrcははるかに単純になります。


initでフォアグラウンドを維持するための代替...

X呼び出しをフォアグラウンドにしておく目的は、Xが終了するまでinitスクリプトの実行をブロックするだけであり、スクリプトの次の行(shutdown)が実行されます。

startx
shutdown -r now

ここでstartxは、ハウツーの/usr/X11R6/bin/xinit /root/kiosk.xinitrc ....行の代わりに使用しています。これはを使用し$HOME/.xinitrc、$ HOMEはになります/root。startxもブロッキング呼び出しであるため、Xが終了するまでshutdown実行されません。代わりにこれを行った場合:

startx &
shutdown -r now

Xは実行されますが、シャットダウンもすぐに実行されます(明らかに無意味です)。

シャットダウンが発生することを気にしない場合は、このトリックを使用する必要はありません。前述のように、ユーザーはログインプロンプトを表示するだけです。しかし、それはで無効にできるので、便利なアイデアのようですctrl-alt-backspace。アプリがクローズ可能である場合のもう1つのアイデアstartx &は、initスクリプトで使用することです。これにより、アプリがバックグラウンドになり、initが通常どおり続行されます(これで問題ありません。Xは引き続き実行され、ディスプレイを制御できます。 "backgrounded"はおそらく混乱する用語です)。initスクリプトの代わりに、代わりに shutdownxinitrcを配置します。

#!/bin/sh
#/root/.xinitrc

su -c myApp pi
shutdown -r now

同じトリック、別の場所。誰かがを閉じるとmyApp、シャットダウンが発生します(ただし、Xを強制終了しても、シャットダウンされません)。両方の方法で実行することもできますが、Xを終了してログインできるため、GUIから簡単にシステムの電源を切ることができるので、私は実際にこれをより気に入っています。

&.xinitrcが完了するとXが終了するため、その後にシャットダウンがない場合でも、.xinitrcのmyAppをバックグラウンド()にしないでください。マネージャー)。

Initスクリプトと.xinitrc同様の概念です。1つはによって実行されますinit。これはLinuxのプロセス1です(これはカーネルによって開始される唯一のプロセスです)。もう1つはXサーバーによって実行されます。.xinitrcファイルとxinitrcコマンドがあることに注意してください(これらは関連していますが、同じではありません)。


Raspbianが使用している/etc/inittabが他のほとんどが使用していない場合、代わりに何を使用しますか?
Andrew

したがって、アプリがフォアグラウンドで実行されている間にsshアクセスを許可したい場合、.xinitrcスクリプトがその後実行されることを確認する必要がありますよね?
Andrew

Debianは「sysV」のような初期化システムを使用しており、inittabそのすべての一部です。現在、より一般的なinitデーモンはsystemdand upstartです。
ゴルディロックス

フォアグラウンドで実行されているアプリをWRTします。これは、(sysV)initがそれらのスクリプトが戻るのを待ってから次のスクリプトを開始するためです。したがって、通常はinitスクリプトで、永続的なサービスを開始している場合は、を介してバックグラウンド(別名fork)でサービスを提供します&。その後、スクリプト自体は終了しますが、「バックグラウンド」プロセスは続行されます。「バックグラウンド化」とは、画面に表示されるものではなく、実行のチェーンを指します。X呼び出しをバックグラウンド化できます(バックグラウンド化するlightdm必要があります)...このことについて何か編集します。
ゴルディロックス

WRT ssh、sshサービス(にリンクされている/etc/rc[N].d)はあなたのサービスの前に開始する必要があるため、接続に応答するために(「バックグラウンドで」)実行されます。それはまだマルチタスクシステムです;)
goldilocks

2

この「デジタルサイネージ」プロジェクトをご覧ください。GUIで起動し、HTML5ベースのブラウザを開きます。まだ試していませんがやりたいです。たぶん、ブラウザの代わりにアプリケーションを配置して全画面で起動できます。

http://www.binaryemotions.com/raspberry-digital-signage/


回答ありがとうございます。これは、ブラウザを表示するように構成されているRaspbianの代替品のようです。Raspbianを設定する手順を希望どおりに学びたいのですが。
Andrew

質問にはRaspbianについての言及はありません。これを試して。pikiosk.tumblr.com/post/38721623944/...
gurcanozturk

0

言及されたRaspberry Digital Signageは、マシンを再起動せずに回避する方法なしで指定されたWebページまたはスライドショー/ビデオプレイリストに制限されたフルスクリーンビューを表示するオペレーティングシステムです。

実際には、Webビュー(HTML / HTML5ページの表示)とマルチメディアビュー(画像のスライドショーとビデオプレーヤー)の両方を表示できます。Webビューには、Firefox、Chromium、Midori(Gnashサポート付き)の3つの異なるサブビューがあります。

ChromeとMidoriのエクスペリエンスはバージョン2.0の機能です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.