web-dev-qa-db-ja.com

Debian Jessieで自動ログインをどのように設定しますか?

PuTTYコマンドラインからアクセスするDebianJessieを搭載したヘッドレスコンピューター(TS-7680)を持っています。コンピューターにはGUIがなく、コマンドラインからのみアクセスできます。一時的な停電が発生した場合に自動的に再起動する必要があるプログラムとともにフィールドに配置されます。

プログラムを自動的に実行する方法を知っています。しかし、ログインを通過するのに問題があります。コンピュータを起動するたびに、rootログインの入力を求められます。このコンピューターにはパスワードがありません。起動コードの後、次のようになります。

Debian GNU/Linux 8 ts7680 ttyAMA0

ts7680 login:

その時点で、rootと入力して、コマンドプロンプトroot@ts7680:~#にアクセスする必要があります。

誰かが自動ログインする方法を知っていますか?私はずっとググってみましたが、答えが見つかりません。私は試しました この解決策 運がありません。

3
Alexa Kirk

SystemdがttyAMA0をPCのttyS0と同じようにシリアルポートとして扱うと仮定すると、[email protected]で開始されるコマンドを編集する必要があります。

systemctl status serial-getty@ttyAMA0がアクティブかどうかを確認できます。)

基本バージョンは/lib/systemd/system/[email protected]にあり、その中にgettyを開始するコマンドがあります。

ExecStart=-/sbin/agetty --keep-baud 115200,38400,9600 %I $TERM

--autologin rootagettyを開始するためのサービスのオーバーライドファイルを作成します。ディレクトリ/etc/systemd/system/[email protected]を作成し、その中にoverride.confというファイルを作成し、次の内容を含めます。

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin root --keep-baud 115200,38400,9600 %I $TERM

systemctl edit [email protected]はこれを行うのに役立ちます。

agettyに引数として渡される端末タイプは、実際のシリアル端末と一致する必要があることに注意してください。これは、長年にわたってsystemdのさまざまなアプローチの主題でした。 vt102にさまざまにハードワイヤードされており、(間接的に)カーネル/ブートストラップローダーから継承されています。現在のアプローチ(2020年現在)は、決定方法がかなり複雑です。

ただし、 最終的には3つの値linuxvt220、およびカーネル/ブートストラップローダーがLinuxコンソールに対して言うものから を選択するだけです。最初のものは実際の端末には決して適切ではなく、シリアルケーブルを介して端末エミュレータとほぼ一致することすらありません。特に色に関しては、2番目は正しくない可能性があります。 どちらでもないは、正しい端末タイプがPuTTY(またはPuTTY-256color)であるPuTTYに一致します。そして、3番目もおそらくPuTTYではないでしょう。 Linux /dev/consoleをシリアルターミナルとPuTTYにリダイレクトしていない限り、およびはコンソールターミナルタイプでブートローダーを適切に再構成しましたロックステップ。

したがって、最良の結果を得るには、そのオーバーライドファイルにTERM環境変数を設定する必要もあります。

Environment=TERM=PuTTY-256color

次にsystemdをリロードすると、新しい設定が整っていることを確認できます:

# systemctl daemon-reload
# systemctl cat serial-getty\@ttyAMA0 | grep Exec

(最後のExecStart行に新しいコマンドが表示されます。)

キーを押した後でのみ自動ログインする場合は、-pまたは--login-pauseagettyコマンドラインに追加します。


リンクしたページは、仮想コンソールでの自動ログインの構成について説明しています。それらは[email protected]を介して構成され、agettyに使用されるコマンドラインは少し異なります(--keep-baudオプション)。その場合、代わりに/etc/systemd/system/[email protected]/override.confの代わりにtty1を使用します。

Ask Ubuntu に、systemd構成のオーバーライドに関する詳細が記載された回答があります。


Systemdの代わりにsysvinitを使用するシステムでは、/etc/inittabのシリアルポートに対応する行を追加/変更する必要があります。

T0:23:respawn:/sbin/getty -L ttyAMA0 --autologin root 38400 vt100
4
ilkkachu