रास्पबियन में "कियोस्क" मोड कैसे सेट करें?


10

मैं अपने रास्पबेरी पाई को "कियोस्क" मोड में स्थापित करना चाहता हूं जहां यह एक पूर्ण स्क्रीन एप्लिकेशन में बूट होता है। मैं कमांड लाइन के आसपास अपना रास्ता जानता हूं, लेकिन यह नौसिखिया है जब यह लिनक्स बूट व्यवहार को अनुकूलित करने की बात आती है। मैं एप्लिकेशन का निर्माण कर रहा हूं और रास्पबेरी पाई को सुरक्षित रूप से बंद करने की क्षमता जोड़ने की योजना बना रहा हूं। अपने रास्पबेरी पाई को कॉन्फ़िगर करने के लिए मुझे क्या करने की आवश्यकता है, केवल इस एक एप्लिकेशन को चलाने के लिए?

अपडेट: स्पष्ट होने के लिए, मैं एक वेबपेज नहीं खोलना चाहता । मैं भी ऑपरेटिंग सिस्टम को बदलना नहीं चाहता। मैं सीखना चाहता हूं कि एक्स के बजाय अपना खुद का एप्लिकेशन लॉन्च करने के लिए अपने ऑपरेटिंग सिस्टम (रास्पियन) को कैसे कॉन्फ़िगर किया जाए (हालांकि मेरा एप्लिकेशन पृष्ठभूमि में एक्स रेंडरिंग पर निर्भर हो सकता है)।

जवाबों:


7

मैंने कभी यह कोशिश नहीं की है, लेकिन जब से ऐसा लगता है कि आप अभी भी देख रहे हैं और लगभग एक महीने में जवाब नहीं मिला है, मैं आपको बताऊंगा कि मैं कहां से शुरू करूंगा।

यह कैसे- प्राचीन है, लेकिन सामान्य रूपरेखा ध्वनि लगती है। आपको सब कुछ ठीक वैसा ही करने की जरूरत नहीं है। यह वेब ब्राउज़र को सेंटरपीस के रूप में उपयोग करने पर ध्यान केंद्रित करता है, लेकिन यह ज्यादातर यहाँ अप्रासंगिक है (यानी, आराम करो, यह एक और "वेब-कियोस्क" नहीं है)।

यह संदर्भित करता है /etc/inittab, जो कि अधिकांश लिनक्स डिस्ट्रोस अब उपयोग नहीं करते हैं, लेकिन ऐसा होता है कि डेबियन व्हीज़ी (रास्पियन) करता है। विचार यह है कि आप रनवे 4 को कियोस्क के रूप में उपयोग करने जा रहे हैं और इसे डिफ़ॉल्ट बनाते हैं। आप ऐसा कर सकते हैं या अभी जो भी डिफॉल्ट है (2 या 3, मुझे लगता है) का उपयोग करें। मेरे द्वारा अभी चलाए जा रहे रास्पबियन को मेरे द्वारा संशोधित किया गया है, इसलिए मुझे यकीन नहीं है कि /etc/rc[N].dनिर्देशिकाओं के बीच मूल अंतर क्या थे - जो 7 रनवे के अनुरूप हैं। आप या तो एक का उपयोग करना चाहते हैं जो ग्राफ़िकल लॉगिन शुरू नहीं करता है ( lightdm) या फिर lightdmउस रनवे से हटाने के लिए । आप उस तरह की चीज़ को सही तरीके से कर सकते हैं (देखें man update-rc.d)।

फिर, हाउ -टू के इस हिस्से का अनुसरण करते हुए , आप एक्स और अपने ऐप को बिना लॉगिन के शुरू करने के लिए अपनी खुद की बूट सेवा (उर्फ इनिट) स्क्रिप्ट बनाना चाहते हैं। हालांकि, इसे इस तरह से मत करो; आपको डेबियन के अनुरूप होने की आवश्यकता है, इसलिए देखें /etc/init.d/README। इसके अलावा, आपको किसी विंडो प्रबंधक का उपयोग करने की आवश्यकता नहीं है (हालांकि fvwmअभी भी महान है, विशेष रूप से इस तरह की चीज़ों के लिए मेथिंक करता है, इसलिए इसे ध्यान में रखें यदि आप करते हैं), क्योंकि .xinitrcयह इस तरह है:

#!/bin/sh

myApp

प्लेन X में सिर्फ आपका ऐप चलेगा - जो बहुत सादा है: कोई मेनू नहीं, कोई टाइटलबार नहीं, कोई टूलबार, आदि, या उपयोगकर्ता के लिए दूसरा एप्लिकेशन शुरू करने या शेल प्राप्त करने का तरीका नहीं। यह सिर्फ एक कर्सर प्रदान करता है।

इसके साथ एक समस्या यह है कि यदि आप बूट से सीधे डेस्कटॉप पर जाते हैं, तो यह एक सुपरयूज़र डेस्कटॉप होगा। असल में, X इंस्टेंस में हमेशा 0 का एक यूआईडी होता है, लेकिन एक्सिनिट्स्क से चलने वाले एप्लिकेशन उपयोगकर्ता के रूप में चलते हैं, जिन्होंने X शुरू किया - इस मामले में X को init द्वारा शुरू किया गया था, इसलिए उपयोगकर्ता रूट होगा (हालांकि तकनीकी रूप से रूट लॉग इन नहीं है )। इसलिए उपरोक्त xinitrc के साथ बेहतर होगा:

su -c myApp pi

जो आपके ऐप को pi उपयोगकर्ता के बजाय चलाएगा (जो तकनीकी रूप से भी लॉग इन नहीं है)।

चूंकि तकनीकी रूप से कोई भी व्यक्ति लॉग इन नहीं है, भले ही कियोस्क उपयोगकर्ता एक्स को मारता है (उदाहरण के लिए ctrl-alt-delete) उन्हें बस एक लॉगिन प्रॉम्प्ट पर छोड़ दिया जाएगा। इस तरह से आगे कैसे जाना है कि सर्विस इनिट स्क्रिप्ट एक्स ( नीचे नोट देखें) अग्रभूमि में शुरू होती है ताकि जब यह बाहर निकल जाए, तो सेवा स्क्रिप्ट जारी रहे और चले shutdown -r now

याद रखें कि जिस व्यक्ति के पास (सामान्य) मशीन की भौतिक पहुंच होती है वह हमेशा आपके द्वारा लागू की जाने वाली सुरक्षा को दरकिनार कर सकता है, इसलिए आप जो वास्तव में यहां करने की कोशिश कर रहे हैं वह बहुत आसान नहीं है और बुरा दुर्घटनाओं को रोकने के लिए।

यह भी याद रखें कि चूंकि आपकी बूट सेवा अग्रभूमि में यह कर रही है , इसलिए इसके बाद कोई अन्य सेवाएं नहीं चलेंगी , इसलिए सुनिश्चित करें कि यह पूर्ण सेवा है। बहोत महत्वपूर्ण! आप वास्तव में, /etc/rc.localइसके बजाय उपयोग कर सकते हैं, क्योंकि यह सामान्य रूप से अंतिम होने की गारंटी है;) जो आपको कुछ समय बचाएगा।

ध्यान दें: वास्तव में इस खंड/root/kiosk से यह एक और स्क्रिप्ट में कैसे है । ध्यान दें कि .xinitrcऊपर लाइन (3.4) में दिखाई गई स्क्रिप्ट को संदर्भित करने वाली सिर्फ एक पंक्ति है । सीधे अपने बूट स्क्रिप्ट में इस तरह एक लाइन डाल दिया। आपका (प्रारंभिक) xinitrc, जैसा कि पहले ही वर्णित है, बहुत सरल होगा।


एक वैकल्पिक रहने के लिए init के साथ अग्रसर ...

X आमंत्रण को अग्रभूमि छोड़ने का उद्देश्य सिर्फ init स्क्रिप्ट के निष्पादन को तब तक रोकना है, जब तक X बाहर न निकल जाए, ताकि स्क्रिप्ट में अगली पंक्ति ( shutdown) चलेगी:

startx
shutdown -r now

यहाँ मैंने startxकैसे-कैसे /usr/X11R6/bin/xinit /root/kiosk.xinitrc ....लाइन के बजाय उपयोग किया है । यह उपयोग करेगा $HOME/.xinitrc, और $ HOME होगा /root। बहुत यकीन है कि startx भी एक अवरुद्ध कॉल है, इसलिए जब तक एक्स बाहर shutdownनहीं निकलता, तब तक नहीं चलेगा। यदि इसके बजाय आपने ऐसा किया:

startx &
shutdown -r now

एक्स चलेगा, लेकिन फिर शटडाउन भी चलेगा, तुरंत (स्पष्ट रूप से व्यर्थ)।

अगर आपको शटडाउन आने की परवाह नहीं है तो आपको उस ट्रिक का उपयोग नहीं करना होगा - जैसा कि उल्लेख किया गया है कि उपयोगकर्ता सिर्फ एक लॉगिन प्रॉम्प्ट के साथ समाप्त होगा। लेकिन यह एक उपयोगी विचार लगता है, तब से आप इसे बंद कर सकते हैं ctrl-alt-backspace। एक अन्य विचार, यदि आपका ऐप क्लोजेबल है, तो इनिट startx &स्क्रिप्ट का उपयोग करना होगा , जो इसे बैकग्राउंड करता है और इनइट को सामान्य रूप से जारी रखने की अनुमति देता है (यह ठीक है; एक्स अभी भी चालू रहेगा और डिस्प्ले का नियंत्रण होगा - "बैकग्राउंड्ड" एक है शायद एक उलझन भरा शब्द)। Init स्क्रिप्ट के shutdownबजाय xinitrc में डालें:

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

su -c myApp pi
shutdown -r now

एक ही चाल, अलग जगह। अब जब कोई myAppबंद होगा, तो शटडाउन होगा (लेकिन अगर वे एक्स को मारते हैं, तो यह नहीं होगा)। आप इसे दोनों तरीकों से भी कर सकते हैं, लेकिन मुझे वास्तव में यह एक बेहतर लगता है क्योंकि इसका मतलब है कि आप एक्स से बाहर निकल सकते हैं और एक लॉगिन प्राप्त कर सकते हैं , जो कभी-कभी उपयोगी हो सकता है, और आप सिस्टम को जीयूआई से आसानी से बंद कर सकते हैं।

&भले ही इसके बाद कोई शटडाउन न हो, लेकिन बैकग्राउंड ( ) myApp। प्रबंधक)।

इनिट स्क्रिप्ट और .xinitrcसमान अवधारणाएं हैं। एक द्वारा चलाया जाता है init, जो कि लिनक्स पर प्रक्रिया 1 है (यह कर्नेल द्वारा शुरू की गई एकमात्र प्रक्रिया है)। अन्य एक्स सर्वर द्वारा चलाया जाता है। ध्यान दें कि .xinitrc फाइलें और xinitrc कमांड हैं (वे संबंधित हैं लेकिन समान नहीं हैं)।


यदि रास्पियन उपयोग करता है, /etc/inittabलेकिन अधिकांश अन्य अब नहीं करते हैं, तो वे इसके बजाय क्या उपयोग करते हैं?
एंड्रयू

इसलिए यदि मैं अपने ऐप को अग्रभूमि में चलाने के दौरान ssh एक्सेस की अनुमति देना चाहता हूं, तो मुझे यह सुनिश्चित करने की आवश्यकता है कि मेरी .xinitrcस्क्रिप्ट उसके बाद चलती है, सही?
एंड्रयू

डेबियन एक "sysV" -ish इनिट सिस्टम का उपयोग करता है, और inittabवह सब का हिस्सा है। अधिक आम इनिट डेमन अब हैं systemdऔर upstart
गोल्डीलॉक्स

अग्रभूमि में चल रहे अपने ऐप को WRT करें, यह सिर्फ इसलिए है क्योंकि sysV initअगले स्काइप शुरू होने से पहले वापस लौटने के लिए उन स्कैट्स का इंतजार करता है। तो आम तौर पर एक init स्क्रिप्ट में, यदि आप एक निरंतर सेवा शुरू कर रहे हैं, तो आप पृष्ठभूमि (उर्फ कांटा) के माध्यम से इसे पृष्ठभूमि देते हैं &। फिर स्क्रिप्ट खुद ही बाहर निकल जाती है, लेकिन "पृष्ठभूमि वाली" प्रक्रिया जारी है। "बैकग्राउंडिंग" बस निष्पादन की एक श्रृंखला को संदर्भित करता है, स्क्रीन पर दिखाई देने वाली चीज़ों के बारे में कुछ नहीं - आप अपने एक्स इनवोकेशन को बैकग्राउंड कर सकते हैं ( lightdmबैकग्राउंड होना चाहिए) ... मैं इस बारे में कुछ संपादित करूँगा।
गोल्डीलॉक्स

WRT ssh, sshसेवा (जुड़ा हुआ /etc/rc[N].d) आपके सामने शुरू होनी चाहिए, ताकि कनेक्शन का जवाब देने के लिए ("पृष्ठभूमि में") चल रहा हो। यह अभी भी एक बहु-टास्किंग प्रणाली है;)
गोल्डीलॉक्स

2

इस 'डिजिटल साइनेज' परियोजना को देखें। यह GUI को बूट करता है फिर एक HTML5 संचालित ब्राउज़र खोलता है। मैं अभी तक कोशिश नहीं कर रहा हूँ, लेकिन मैं चाहता हूँ। हो सकता है कि आप फुल स्क्रीन को बूट करने के लिए अपने एप्लिकेशन को ब्राउज़र के बजाय रख सकते हैं।

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


आपके उत्तर के लिए धन्यवाद, लेकिन यह रास्पियन के प्रतिस्थापन की तरह दिखता है जो ब्राउज़र प्रदर्शित करने के लिए कॉन्फ़िगर किया गया है। मैं रास्पियन को कॉन्फ़िगर करने के चरणों को सीखना चाहता हूं कि मुझे कैसा चाहिए।
एंड्रयू

आपके प्रश्न में रास्पियन के बारे में कोई उल्लेख नहीं है। इसे इस्तेमाल करे। pikiosk.tumblr.com/post/38721623944/…
gurcanozturk

0

उल्लेखित रास्पबेरी डिजिटल साइनेज एक ऑपरेटिंग सिस्टम है जो वेब पेज या स्लाइड शो / वीडियो प्लेलिस्ट तक सीमित एक पूर्ण-स्क्रीन दृश्य प्रदर्शित करता है, जो मशीन से बचने के लिए कोई रास्ता नहीं बताता है।

यह वास्तव में एक वेब दृश्य (HTML / HTML5 पृष्ठ प्रदर्शन) और एक मल्टीमीडिया दृश्य (छवि स्लाइड शो और वीडियो प्लेयर) दोनों को प्रदर्शित कर सकता है। वेब दृश्य में तीन अलग-अलग संभव उप-विचार हैं: फ़ायरफ़ॉक्स, क्रोमियम और मिडोरी (ग्नश समर्थन के साथ)।

क्रोम और मिडोरी अनुभव संस्करण 2.0 की विशेषता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.