시스템 시작 시 일종의 "CLI 키오스크 모드"를 만드는 방법은 무엇입니까?

시스템 시작 시 일종의 "CLI 키오스크 모드"를 만드는 방법은 무엇입니까?

실행 시 사용자에게 빈 화면이 표시되고 타자기처럼 입력만 할 수 있는 스크립트를 만들었습니다. 이것은 결국 순수 Bash로 포팅할 계획인 Python 스크립트입니다.

이제 부팅 시 실행되는 LiveUSB를 생성하고 싶습니다. 부팅 시 할 수 있는 유일한 작업은 텍스트를 입력하는 것뿐입니다(물론 어떻게든 시스템을 종료할 수 있어야 합니다). 심지어 GUI나 사용자가 이 "홈 화면"을 우회할 수 있는 방법도 필요하지 않습니다. 저는 단일 목적의 "키오스크 모드" CLI 환경을 원합니다. 이는 다음과 유사합니다.파이룸, 운영 체제 수준에서만 가능하며 GUI는 없습니다.

따라서 질문은 (저는 실행 구성에 대한 경험이 많지 않습니다)입니다. 이를 달성하기 위한 일반적인 단계는 무엇입니까? 스크립트를 어디에 넣어야 하며, 부팅 시 즉시 스크립트를 실행하도록 부팅 시스템에 지시하려면 어떻게 해야 합니까?

답변1

getty사용하는 경우 agetty프로그램 의 옵션을 수정하여 터미널에 자동 로그인을 설정할 수 있습니다.--autologin <username>여기.

그런 다음 해당 사용자의 로그인 셸을 원하는 대로 설정할 수 있습니다. /etc/shells사용자가 변경할 수 없도록 목록에 표시되어서는 안 됩니다 chsh. 사용자가 일반 셸에 들어가는 것을 방지하고(따라서 임의의 작업을 수행할 수 있게 하려는 경우) 사용자가 프로그램 내에서 해당 셸에 접근할 수 없도록 해야 합니다. 프로그램이 로그인 셸인 경우 종료하면 세션이 종료되고 반환됩니다 getty(그러면 자동으로 동일한 프로그램에 다시 로그인될 수 있습니다).

답변2

당신은 교체할 수 있습니다init스크립트를 실행하는 간단한 프로그램을 사용하십시오. Ubuntu 15.04 VM을 설정하고 이 간단한 프로그램을 작성하여 다음 이름으로 저장합니다 init.c.

int main() {
  system("/bin/bash -c /init.sh");
  return 0;
}

그리고 간단한 스크립트:

#!/bin/bash
echo Start:
while read line; do
  echo -n "Upside down: "
  echo $line | tr '[unbqdphymwaefjg]' '[nuqbpdyhwmeajf6]'
done
init 0

루트로 컴파일하고 설치합니다(이미 스냅샷을 생성했거나 시스템 복구 방법을 알고 있는 가상 머신에서 이 작업을 수행해야 합니다.):

gcc init.c -o init
sudo cp init /init
sudo ln -sf /init /sbin/init
sudo cp init.sh /init.sh

그런 다음 재부팅하면 프롬프트가 표시되지만 쉽게 돌파할 수 있는 방법이 없습니다.

여기에 이미지 설명을 입력하세요.

이것을 결합할 수 있어야 합니다.OEM 설치 프로그램불필요한 것들을 제거하고 작은 ISO를 만드십시오.

관련 정보