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].d
dizinler 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 lightdm
o ç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 ( fvwm
yine de harika olsa da, özellikle bu tür şeyler için methinks, bu yüzden bunu aklınızda bulundurun), çünkü .xinitrc
bö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.local
bunun 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/kiosk
gelen bu bölümde . .xinitrc
Yukarı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 startx
nasıl yapılır /usr/X11R6/bin/xinit /root/kiosk.xinitrc ....
satırı yerine kullandım . Bu kullanır $HOME/.xinitrc
ve $ 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 shutdown
yerine xinitrc yazın:
#!/bin/sh
#/root/.xinitrc
su -c myApp pi
shutdown -r now
Aynı hile, farklı bir yer. Şimdi birisi kapandığında myApp
kapatma 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 .xinitrc
benzer kavramlardır. Birincisi, init
linux ü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).
/etc/inittab
ancak diğerlerinin çoğu artık kullanmıyorsa, ne kullanıyorlar?