web-dev-qa-db-ja.com

起動時にttyにログインする方法

Linuxの起動時に特別なtty(tty2など)でコマンドを実行するため、システムがリブートするたびにこのttyでコマンドが実行されます。 this リンクを使用しました。

正常に動作しますが、問題は、起動時に目的のttyにログインしてからコマンドを実行する必要があることです。最初に何らかのコマンドでttyにログインする方法はありますか?ありがとう

1
Hamed

プログラムを実行するためのより簡単なソリューション、IMHOはgetty--autologinフラグと.bashrcから目的のコマンドを実行する関数を組み合わせることです。

パート1:gettyへの自動ログイン

ご存じかもしれませんが、TTYは/etc/init/ディレクトリのスタートアップサービスとして gettyプログラム で開かれます。 Ubuntuの場合、デフォルトのプログラムはagettyで、--autologinフラグがあります。したがって、次のことができます。

ターミナルでSudo nano /etc/init/tty1.confを実行してTTY1のinitファイルを開きます(TTY1は単なる例であり、どちらを選択してもかまいません)。行を変更

exec /sbin/getty -8 38400 tty1

exec /sbin/getty --autologin userName    -8 38400 tty1

userNameを実際のユーザー名に置き換えます。

パート2:シェルログインでの関数の実行

Linux/Unixシステムには、ttyと呼ばれるこの素敵なプログラムがあり、現在使用している端末の種類を報告します。たとえば、gnome-terminalでは次のようなものを報告します

$ tty
/dev/pts/27

ただし、TTY1では報告されます

$ tty
/dev/tty1

$HOME/.bashrcファイルの先頭に関数を作成できることを知っている

function testTTY
{
  isTTY=$(tty | awk '{if ($0~/\/dev\/tty.*/) {print "true"}else{print "false"}}')

  if [ $isTTY == "true" ]; then
    printf "You are in virtual console\n"
    printf "current disk usage is"
    df
  fi
}

次に、.bashrcの下部で、単にtestTTYとして関数を呼び出します。したがって、最初に関数を定義し、後で呼び出します。

サイドノート:

  • if [];then ...fiの間にカスタムコマンドを配置します
  • 特定のTTYが必要な場合は、isTTYコードをisTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')に変更します
3

以下の手順に従ってください。

最初のmingettyのインストール:$ Sudo apt-get install mingetty

5.2)/etc/init/tty1.confを編集します

/ *ルートをデフォルトのログインとして作成する場合* /

変更:exec/sbin/getty -8 38400 tty1

To:exec/sbin/mingetty --autologin root --noclear tty1

/ *デフォルトのログインとして通常のユーザーを作成する場合* /

exec/bin/login -f abcuser </ dev/tty1>/dev/tty1 2>&1

2
Hariharan Gopal