Raspbian'da “kiosk” modu nasıl ayarlanır?


10

Raspberry Pi'mi tek bir tam ekran uygulamasında önyüklenen bir tür "kiosk" modunda kurmak istiyorum. Komut satırı çevresinde yolumu biliyorum, ancak linux önyükleme davranışını özelleştirme konusunda acemi biriyim. Uygulamayı oluşturuyorum ve Raspberry Pi'yi güvenli bir şekilde kapatma yeteneğini eklemeyi planlıyorum. Raspberry Pi'mi sadece bu uygulamayı çalıştıracak şekilde yapılandırmak için ne yapmam gerekir?

Güncelleme: Açık olmak gerekirse, bir web sayfası açmak istemiyorum . Ayrıca işletim sistemlerini değiştirmek istemiyorum. İşletim sistemimi (Raspbian) X yerine kendi uygulamamı başlatacak şekilde yapılandırmayı öğrenmek istiyorum (uygulamam arka planda X oluşturmaya bağlı olabilir).

Yanıtlar:


7

Bunu hiç denemedim, ama hala bir aydır aradığınız ve cevap alamadığınız için size nereden başlayacağımı söyleyeceğim.

Bu nasıl yapılır eski, ama genel taslak sağlam görünüyor. Her şeyi tamamen aynı şekilde yapmak zorunda değilsiniz. Bir web tarayıcısını merkez olarak kullanmaya odaklanır, ancak burada çoğunlukla önemsizdir (yani, rahatlayın, başka bir "web-kiosk" değildir).

/etc/inittabÇoğu linux dağıtımının artık kullanmadığı anlamına gelir , ancak debian wheezy (raspbian) bunu yapar. Fikir, çalışma seviyesi 4'ü kiosk olarak kullanacağınız ve varsayılan yapacağınızdır. Bunu yapabilir veya şu anda varsayılan olanı kullanabilirsiniz (2 veya 3, sanırım). Şu anda koştuğum raspbian benim tarafımdan değiştirildi, bu yüzden /etc/rc[N].ddizinler arasındaki orijinal farklılıkların ne olduğundan emin değilim - 7 çalışma seviyesine karşılık geliyor. Grafik oturum açma işlemini başlatmayacak bir tane kullanmak istiyorsunuz ( lightdm) ya da lightdmo çalışma seviyesinden kaldırmak için. Bu tür şeyleri doğru şekilde de yapabilirsiniz (bkz. man update-rc.d).

Ardından, nasıl yapılır bölümünün ardından, X'i ve uygulamanızı giriş yapmadan başlatmak için kendi önyükleme hizmeti (aka. İnit) komut dosyanızı oluşturmak istersiniz. Ancak bunu bu şekilde yapma; debian'a uymanız gerekiyor, bu yüzden bakın /etc/init.d/README. Ayrıca, bir pencere yöneticisi kullanmak zorunda değilsiniz ( fvwmyine de harika olsa da, özellikle bu tür şeyler için methinks, bu yüzden bunu aklınızda bulundurun), çünkü .xinitrcböyle bir şey:

#!/bin/sh

myApp

Çok basit olan sadece uygulamanızı düz X'de çalıştıracaktır: menü yok, başlık çubuğu yok, araç çubuğu yok, vb. Veya kullanıcının başka bir uygulamayı başlatması veya kabuk alması için bir yol. Sadece bir imleç sağlar.

Bununla ilgili bir sorun, doğrudan önyüklemeden bir masaüstüne giderseniz, bu süper kullanıcılı bir masaüstü olacaktır. Aslında, X örnekleri her zaman 0 değerine sahiptir, ancak uygulamalar xinitrc'den X'i başlatan kullanıcı olarak çalışır - bu durumda X init tarafından başlatılır, bu nedenle kullanıcı root olur (teknik olarak kök oturum açmamış olmasına rağmen) ). Bu nedenle yukarıdaki xinitrc aşağıdakilerle daha iyi olurdu:

su -c myApp pi

Bu da uygulamanızı pi kullanıcısı olarak çalıştıracaktır (teknik olarak oturum açmamış olanlar da).

Teknik olarak hiç kimse giriş yapmadığından, kiosk kullanıcısı X'i öldürse bile (örn. Yoluyla ctrl-alt-delete) bir giriş isteminde bırakılacaktır. "Nasıl yapılır" ifadesi, hizmet başlatma komut dosyasının ön planda X (aşağıdaki NOT'a bakın) başlayacağı şekilde öteye gider , böylece çıkıldığında hizmet komut dosyası devam eder ve çalışır shutdown -r now.

(Normal) bir makineye fiziksel erişimi olan bir kişinin uyguladığınız güvenliği her zaman atlatabileceğini unutmayın, bu yüzden burada yapmaya çalıştığınız tek şey onu çok kolay hale getirmek ve kötü kazaları önlemek değildir.

Ayrıca, önyükleme hizmetiniz bunu ön planda yapacağından , bundan sonra başka hiçbir hizmetin çalışmayacağını unutmayın , bu yüzden mutlak sonuncusu olduğundan emin olun. Çok önemli! Aslında, /etc/rc.localbunun yerine kullanabilirsiniz , çünkü normalde son olacağı garanti edilir;) Bu size biraz zaman kazandıracaktır.

NOT: Başka bir senaryo Aslında içinde how-to, /root/kioskgelen bu bölümde . .xinitrcYukarıdaki bölümde gösterilen komut dosyasına başvuran tek satır olduğuna dikkat edin (3.4). Doğrudan önyükleme komut dosyanıza böyle bir satır koyun. Daha önce açıklandığı gibi (ön) xinitrc'niz çok daha basit olacaktır.


İnit ile Ön Planda Kalmaya Bir Alternatif ...

X çağrısını ön planda bırakmanın amacı, X çıkana kadar init komut dosyasının yürütülmesini engellemektir, böylece script ( shutdown) içindeki bir sonraki satır çalışacaktır:

startx
shutdown -r now

Burada startxnasıl yapılır /usr/X11R6/bin/xinit /root/kiosk.xinitrc ....satırı yerine kullandım . Bu kullanır $HOME/.xinitrcve $ HOME olur /root. Startx'in de engelleme çağrısı olduğundan emin olun, bu nedenle X çıkana kadar shutdownçalışmaz. Bunun yerine bunu yaptıysanız:

startx &
shutdown -r now

X koşar, ama sonra kapanma da hemen başlar (açıkçası anlamsız).

Kapanma gelmesini umursamıyorsanız bu hileyi kullanmak zorunda değilsiniz - belirtildiği gibi kullanıcı sadece bir giriş istemi ile sonuçlanacaktır. Ama yararlı bir fikir gibi görünüyor, çünkü o zaman bunu sadece kapatabilirsiniz ctrl-alt-backspace. Uygulamanız kapatılabilirse başka bir fikir, startx &arka plana sahip olan ve init'in normal şekilde devam etmesine izin veren init komut dosyasında kullanmak olacaktır (bu iyi; X hala çalışacak ve ekranın kontrolüne sahip olacak - "arka plan" belki kafa karıştırıcı bir terim). İnit betiği shutdownyerine xinitrc yazın:

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

su -c myApp pi
shutdown -r now

Aynı hile, farklı bir yer. Şimdi birisi kapandığında myAppkapatma gerçekleşecek (ama X'i öldürürlerse olmayacak). Ayrıca her ikisine de, ama aslında bunun gibi daha iyi sen demek çünkü verebilir edebilir X çıkmak ve faydalı bazen olabilecek bir giriş, almak ve aynı zamanda kolayca GUI off sisteminin açabilirsiniz.

&.Xinitrc olsa bile benim app .xinitrc içinde arkaplan etmeyin , çünkü .xinitrc tamamlandığında X çıkar;) Orada son çağrı ön planda kalmalıdır (normalde, bir DE veya pencere yönetici).

Komut dosyalarını başlatın ve .xinitrcbenzer kavramlardır. Birincisi, initlinux üzerindeki süreç 1 olan (çekirdek tarafından başlatılan tek işlem) tarafından yönetilir . Diğeri X sunucusu tarafından çalıştırılır. .Xinitrc dosyaları ve bir xinitrc komutu olduğunu unutmayın (bunlar birbiriyle ilişkilidir ancak aynı değildir).


Raspbian kullanıyor, /etc/inittabancak diğerlerinin çoğu artık kullanmıyorsa, ne kullanıyorlar?
Andrew

Uygulamam ön planda çalışırken ssh erişimine izin vermek istiyorsam, .xinitrckomut dosyamın bundan sonra çalıştığından emin olmalıyım , doğru mu?
Andrew

Debian bir "sysV" -ish init sistemi kullanır ve bunların inittabbir parçasıdır. Şimdi daha yaygın init daemons systemdve upstart.
goldilocks

Uygulamanızı ön planda çalışan WRT, bunun nedeni (sysV) initkomut dosyasının bir sonrakine başlamadan önce geri dönmesini beklemesidir. Normalde bir init betiğinde, kalıcı bir hizmete başlıyorsanız, bunu arka planla (aka. Fork) kullanırsınız &. Sonra komut dosyasının kendisi çıkar, ancak "arka plan" işlemi devam eder. "Arka plan" sadece bir yürütme zincirini ifade eder, ekranda görünenlerle ilgili bir şey değil - X çağrınızın arka planını yapabilirsiniz (arka plan lightdmolmalıdır) ... Bu konuda bir şeyler düzenleyeceğim.
goldilocks

WRT ssh, sshhizmet (bağlantılı /etc/rc[N].d) sizden önce başlamalı, böylece bağlantıları cevaplamak için çalışıyor ("arka planda") çalışacaktır. Hala çok görevli bir sistem;)
goldilocks

2

Bu 'Digital Signage' projesine bakın. GUI'ye önyükleme yapar, ardından HTML5 destekli bir tarayıcı açar. Henüz denemedim ama istiyorum. Belki uygulamanızı tam ekran önyükleme yapmak için tarayıcı yerine koyabilirsiniz.

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


Cevabınız için teşekkürler, ancak bu bir tarayıcı görüntülemek üzere yapılandırılmış Raspbian'ın yerine geçiyor gibi görünüyor. Raspbian'ı nasıl istediğimi yapılandıracak adımları öğrenmek istiyorum.
Andrew

Sorunuzda Raspbian'dan bahsedilmiyor. Bunu dene. pikiosk.tumblr.com/post/38721623944/...
gurcanozturk

0

Bahsedilen Raspberry Digital Signage, web sayfası veya slayt gösterisi / video oynatma listesi ile sınırlı tam ekran görünümü görüntüleyen, makineden kaçmak için değil, makineyi yeniden başlatan bir işletim sistemidir.

Aslında hem bir web görünümünü (HTML / HTML5 sayfaları ekranı) hem de bir multimedya görünümünü (görüntü slayt gösterisi ve video oynatıcı) görüntüleyebilir. Web görünümünde üç farklı alt görünüm vardır: Firefox, Chromium ve Midori (Gnash desteğiyle).

Chrome ve Midori deneyimleri sürüm 2.0'ın özelliğidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.