Raspbian에서“키오스크”모드를 설정하는 방법은 무엇입니까?


10

하나의 전체 화면 응용 프로그램으로 부팅되는 일종의 "키오스크"모드로 라즈베리 파이를 설정하고 싶습니다. 나는 커맨드 라인을 둘러싼 길을 알고 있지만 리눅스 부팅 동작을 커스터마이징 할 때 초보자입니다. 응용 프로그램을 구축 중이며 Raspberry Pi를 안전하게 종료하는 기능을 추가 할 계획입니다. 이 하나의 응용 프로그램 만 실행하도록 Raspberry Pi를 구성하려면 어떻게해야합니까?

업데이트 : 분명히 하기 위해 웹 페이지를 열고 싶지 않습니다 . 또한 운영 체제를 변경하고 싶지 않습니다. X 대신 내 응용 프로그램을 시작하도록 내 운영 체제 (Raspbian)를 구성하는 방법을 배우고 싶습니다 (응용 프로그램은 백그라운드에서 X 렌더링에 의존 할 수 있음).

답변:


7

나는 이것을 시도한 적이 없지만, 당신이 여전히 찾고 있고 거의 한 달 안에 대답을 얻지 못한 것 같아서, 내가 어디에서 시작할 것인지 말할 것입니다.

방법 은 고대이지만 일반적인 개요는 건전 해 보입니다. 모든 것을 똑같이 할 필요는 없습니다. 웹 브라우저를 중심으로 사용하는 데 중점을 두지 만 여기서는 대부분 관련이 없습니다 (즉, 다른 "웹 키오스크"가 아닙니다).

그것은 /etc/inittab대부분의 리눅스 배포판이 더 이상 사용하지 않는을 참조하지만 데비안 wheezy (raspbian)가 그렇게합니다. 아이디어는 런레벨 4를 키오스크로 사용하고 기본값으로 설정한다는 것입니다. 그렇게하거나 현재 기본값 (2 또는 3, 생각합니다)을 사용하십시오. 내가 지금 실행하고있는 라즈 비안은 나에 의해 수정되었으므로 /etc/rc[N].d디렉토리 사이의 원래 차이점이 무엇인지 확실하지 않습니다 . 그래픽 로그인을 시작하지 않는 것을 사용 lightdm하거나 ( ) lightdm해당 런레벨에서 제거하려고합니다 . 그런 종류의 일을 바르게 할 수도 있습니다 (참조 man update-rc.d).

그런 다음 사용법 의이 부분 에 따라 로그인없이 X 및 앱을 시작하기위한 고유 한 부트 서비스 (일명 init) 스크립트를 작성하려고합니다. 그러나 그렇게하지 마십시오. 데비안을 따라야합니다 /etc/init.d/README. 또한 다음 과 같은 fvwm이유로 창 관리자를 전혀 사용할 필요가 없습니다 ( 아직 훌륭 하지만 여전히 이런 종류의 일을하기 때문에 염두에 두십시오) .xinitrc.

#!/bin/sh

myApp

메뉴, 제목 표시 줄, 도구 모음 없음 등 사용자가 다른 응용 프로그램을 시작하거나 셸을 얻는 방법 등 매우 평범한 응용 프로그램을 일반 X로 실행합니다. 커서 만 제공합니다.

이 문제는 부팅에서 데스크탑으로 바로 이동하면 수퍼 유저 데스크탑이됩니다. 실제로 X 인스턴스는 항상 0의 uid를 갖지만 xinitrc에서 실행되는 응용 프로그램은 X를 시작한 사용자로 실행됩니다.이 경우 X는 init에 의해 시작되었으므로 사용자는 root가됩니다 (기술적으로 root는 로그인하지 않았 음) ). 따라서 위의 xinitrc가 다음과 같이 더 좋습니다.

su -c myApp pi

대신 기술적으로 로그인하지 않은 pi 사용자로 앱을 실행합니다.

기술적으로 아무도 로그인하지 않았기 때문에 키오스크 사용자가 X를 죽이더라도 (예 :을 통해 ctrl-alt-delete) 로그인 프롬프트가 표시됩니다. 이 방법은 서비스 초기화 스크립트가 포 그라운드에서 X (아래 참고 참조)를 시작 하여 종료 될 때 서비스 스크립트가 계속 실행되도록하는 방법을 넘어서고 shutdown -r now있습니다.

(일반) 컴퓨터에 물리적으로 접근 할 수있는 사람은 항상 구현 한 보안을 우회 할 수 있으므로 여기서 실제로 시도하려는 모든 것은 너무 쉽게 만들지 않고 심한 사고를 방지하는 것입니다.

또한 부트 서비스가 포 그라운드에서이 작업을 수행하므로 다른 서비스는 그 이후에 실행되지 않으므로 절대 마지막 서비스 인지 확인하십시오. 매우 중요! 실제로 /etc/rc.local는 마지막으로 보장되기 때문에 대신 대신 사용할 수 있습니다.) 시간을 절약 할 수 있습니다.

참고 : 실제로 방법 /root/kiosk이 섹션 의 다른 스크립트 입니다. .xinitrc위의 섹션 (3.4)에 표시된 스크립트 를 참조하는 한 줄입니다 . 부팅 스크립트에 이와 같은 줄을 직접 넣으십시오. 이미 설명한 바와 같이 (예비) xinitrc가 훨씬 간단합니다.


초기화로 포지셔닝 된 대안 ...

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. 또 다른 아이디어는 앱이 접근 가능하다면 startx &init 스크립트에서 백그라운드를 사용하고 init가 정상적으로 계속되도록 허용하는 것입니다. 혼란스러운 용어). init 스크립트 shutdown대신 xinitrc를 넣으십시오 .

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

su -c myApp pi
shutdown -r now

같은 속임수, 다른 장소. 이제 누군가가 닫으면 myApp종료가 발생하지만 X를 죽이면 종료되지 않습니다. 두 가지 방법 모두 사용할 수 있지만 실제로 X 종료하고 로그인을 얻을 있다는 의미이기 때문에이 방법이 더 좋습니다. 때로는 유용 할 수 있으며 GUI에서 시스템을 쉽게 끌 수도 있습니다.

&.xinitrc가 완료되면 X가 종료되기 때문에 셧다운이없는 경우에도 .xinitrc에 myApp를 백그라운드로 보내지 마십시오 ( ). 매니저).

초기화 스크립트 .xinitrc는 비슷한 개념입니다. 하나는 init리눅스에서 프로세스 1 인에 의해 실행됩니다 (커널이 시작한 유일한 프로세스입니다). 다른 하나는 X 서버에 의해 실행됩니다. .xinitrc 파일과 xinitrc 명령이 있습니다 (관련되어 있지만 동일하지는 않음).


Raspbian을 사용 /etc/inittab하지만 다른 대부분은 더 이상 사용 하지 않으면 대신 무엇을 사용합니까?
앤드류

따라서 앱이 포 그라운드에서 실행되는 동안 ssh 액세스를 허용하려면 .xinitrc그 후에 스크립트가 실행 되는지 확인해야 합니다. 맞습니까?
앤드류

데비안은 "sysV"-ish init 시스템 inittab을 사용하며 그 일부입니다. 보다 일반적인 init 데몬은 현재 systemdupstart입니다.
goldilocks

앱이 포 그라운드에서 실행되는 WRT는 (sysV) init가 다음 스쿼트가 시작되기 전에 해당 스쿼트가 돌아 오기를 기다리는 것입니다. 따라서 일반적으로 init 스크립트에서 영구 서비스를 시작하는 경우을 통해 백그라운드 서비스 (일명 포크)를 사용 &합니다. 그런 다음 스크립트 자체는 종료되지만 "백그라운드"프로세스는 계속됩니다. "Backgrounding"은 화면에 나타나는 것이 아니라 일련의 실행 체인을 나타냅니다. X 호출의 배경을 지정할 수 lightdm있습니다 (배경을 지정해야 함) ... 이것에 대해 무언가를 편집하겠습니다.
goldilocks

WRT ssh ssh(에서 링크 된 서비스 /etc/rc[N].d)가 사용자보다 먼저 시작되므로 연결에 응답하기 위해 ( "백그라운드에서") 실행됩니다. 그것은 여전히 ​​멀티 태스킹 시스템이다;)
goldilocks

2

이 '디지털 사이 니지'프로젝트를보십시오. GUI로 부팅 한 다음 HTML5 기반 브라우저를 엽니 다. 아직 시도하지 않았지만하고 싶습니다. 브라우저 대신 응용 프로그램을 전체 화면으로 부팅 할 수 있습니다.

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


귀하의 답변에 감사하지만 브라우저를 표시하도록 구성된 Raspbian의 대체품으로 보입니다. Raspbian을 원하는 방식으로 구성하는 단계를 배우고 싶습니다.
앤드류

귀하의 질문에 Raspbian에 대한 언급이 없습니다. 이 시도. pikiosk.tumblr.com/post/38721623944/…
gurcanozturk

0

언급 된 Raspberry Digital Signage는 웹 페이지 또는 슬라이드 쇼 / 비디오 재생 목록으로 제한되는 전체 화면보기를 표시하고 컴퓨터를 재부팅하지 않고 재부팅 할 수있는 운영 체제입니다.

실제로 웹보기 (HTML / HTML5 페이지 표시)와 멀티미디어보기 (이미지 슬라이드 쇼 및 비디오 플레이어)를 모두 표시 할 수 있습니다. 웹보기에는 Firefox, Chromium 및 Midori (Gnash 지원)의 세 가지 하위보기가 있습니다.

Chrome 및 Midori 환경은 버전 2.0의 기능입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.