Debian の起動時に、会話呼び出しを含む Bash スクリプトを起動する必要があります。これが私ができることです:
- デフォルトのルートパスワードの設定を解除
- 置く- 自動ログインtty1のオプション初期化プログラム(1:2345:respawn:/sbin/getty --root 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の専門家ではなく、上記の方法を試していません。