데비안이 시작될 때 대화 호출을 포함하는 Bash 스크립트를 시작해야 합니다. 이것이 내가 할 수 있었던 일입니다:
- 기본 루트 비밀번호 설정 해제
- 놓다- 자동 로그인tty1의 옵션초기화 프로그램(1:2345:respawn:/sbin/getty --루트 tty1에 자동으로 로그인)
- 내 스크립트의 전체 경로를 작성하세요./etc/rc.local
그러나 대화 상자에는 비정상적인 동작이 있습니다. 상자가 나타나지만 표준 입력이 표준 출력을 오버플로하는 것 같습니다. 화살표 키를 누르면 버튼이 선택되지 않지만 기본 선택 위치부터 시작하여 해당 ASCII 문자가 대화 상자 상단에 표시됩니다.
그런 다음 Enter 키를 누르면 키 입력이 대화 상자로 전송되고 예상대로 적절한 옵션이 선택됩니다. 스크립트가 정상적으로 실행될 때 작동하는지 확인하기 위해 테스트되었습니다.
쉘 초기화에 뭔가 빠진 것이 있는 것 같습니다. 를 입력하면 /bin/bash
메시지 가 rc.local
표시되고 no job control in this shell
프로세스에 신호를 보낼 수 없으며 pid도 얻을 수 없습니다(pid 대신 물음표가 나타납니다 top
).
왜 이런 문제가 발생합니까? 어떻게 극복하나요?
답변1
rc.local에서 실행되는 모든 대화형 스크립트에는 stdin과 비슷한 문제가 있는 것 같습니다. 해결책을 찾았습니다슈퍼유저:
다음으로 스크립트를 시작하세요.
openvt -s -w /path/to/script.sh
(설명은 원본 포스팅 참조)
답변2
콘솔이 stdin
프로세스 에 연결되어 있지 않습니다 whiptail
.
에서 본 것과 동일한 문제인 것 같습니다.rc.local 읽기가 키 입력을 에코하지 않습니다..
plymouth quit
제안된 대답은 콘솔 입력을 시도하기 전에 추가하는 것입니다.
또는 Plymouth가 다음과 같이 경고를 표시하도록 설정할 수도 있습니다.
plymouth pause-progress
plymouth message --text="Your system will be hosed. Is that what you want? What you really, really want? [yn]"
plymouth watch-keystroke --keys="YyNn " --command="tee /tmp/key_pressed"
case $(cat /tmp/key_pressed) in
[nN])
poweroff; # abort!
;;
esac
plymouth message --text="Okay, you asked for this"
plymouth unpause-progress
경고: 저는 Plymouth 전문가가 아니며 위의 방법을 시도하지 않았습니다.