綾小路龍之介の素人思考

[getty] 仮想コンソールの数を減らす

1個あたり8KBytesとか食うらしいよ、仮想コンソールって。X環境が起動しない場合のVine Linux 4.1やDebian etchでは、デフォルトで6つの仮想コンソール(tty1--tty6)がキーボードからのログインのために待機している。それぞれの仮想コンソールはAlt+F1からAlt+F6で切り替えることが出来る。

SystemV init

$ ps wax | grep mingtty
$ w

例えば、Vine Linux 4.1の場合、psコマンドで6つの/sbin/mingttyが出てくる。Debian echの場合は/sbin/gettyだ。wコマンドではログイン中のユーザが使っている端末のコンソール番号(tty1等)とユーザが確認できる。とにかく仮想コンソールの数を減らそう。

# vi /etc/inittab
# /sbin/init q
# ps wax | grep mingtty

これで再起動なしに仮想コンソールの数を減らすことができた。/etc/inittabの編集作業のあとに再起動してもよい。ssh接続して全ての仕事を行うのなら6つの仮想コンソールは1つも使わないので全て無駄だが、トラブル発生の際にキーボードでログインする必要も出てくるだろう。そのため、1つ以上の仮想コンソールは残しておくべきだと思う。/etc/inittabの編集では、/sbin/mingttyの含まれる行(6行)の内の下から5行をコメントアウトする。全てコメントアウト(仮想コンソールの数を0にする)すると、マシンにつながっているキーボードからログインできなくなる。マシンに直接つながっているキーボードとディスプレイを使ってログインしたい場合は仮想コンソールの数を1つ以上残しておく必要がある。ssh接続した場合は仮想コンソールは使えないのでAlt+F2としても仮想コンソールのように切り替えることは出来ない。いつもは仮想コンソール要らないけど、たまにキーボードとディスプレイを使ってログインしたい場合は、必要なときだけシングルユーザモードで起動して、/etc/inittabを書き換えればよい。仕事が終わったら仮想コンソールの数を元に戻しておくことをお忘れなく。漢な人は、仮想コンソールの数を0にして使ってください。僕はssh接続メインのマシンは1個で、キーボードログインメインのマシンでは2個に設定することが多いです。

systemd init

デフォルトだと 6 つの tty が立ち上がるので、この数を1つにする。

設定変更前の状態確認。

$ ps -f -C agetty
UID        PID  PPID  C STIME TTY          TIME CMD
root       414     1  0 14:49 tty6     00:00:00 /sbin/agetty --noclear tty6 linux
root       415     1  0 14:49 tty5     00:00:00 /sbin/agetty --noclear tty5 linux
root       416     1  0 14:49 tty4     00:00:00 /sbin/agetty --noclear tty4 linux
root       417     1  0 14:49 tty3     00:00:00 /sbin/agetty --noclear tty3 linux
root       418     1  0 14:49 tty2     00:00:00 /sbin/agetty --noclear tty2 linux
root      1379     1  0 14:51 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
# systemctl list-units '*getty*'
UNIT                 LOAD   ACTIVE SUB     DESCRIPTION
getty-static.service loaded active exited  getty on tty2-tty6 if dbus and logind are not available
getty@tty1.service   loaded active running Getty on tty1
getty@tty2.service   loaded active running Getty on tty2
getty@tty3.service   loaded active running Getty on tty3
getty@tty4.service   loaded active running Getty on tty4
getty@tty5.service   loaded active running Getty on tty5
getty@tty6.service   loaded active running Getty on tty6
system-getty.slice   loaded active active  system-getty.slice
getty.target         loaded active active  Login Prompts

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

9 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

設定を変更して永続化。設定の永続化を確認するために再起動。

# systemctl disable getty-static.service
# systemctl mask getty-static.service
Created symlink from /etc/systemd/system/getty-static.service to /dev/null.
# systemctl list-unit-files '*getty*'
UNIT FILE                STATE
console-getty.service    disabled
container-getty@.service static
getty-static.service     masked
getty@.service           enabled
serial-getty@.service    disabled
getty.target             static

6 unit files listed.
# systemctl reboot

再起動後の状態確認。OK。

# ps -f -C agetty
UID        PID  PPID  C STIME TTY          TIME CMD
root       399     1  0 15:13 tty1     00:00:00 /sbin/agetty --noclear tty1 linux
# systemctl list-units '*getty*'
  UNIT                 LOAD   ACTIVE   SUB     DESCRIPTION
● getty-static.service masked inactive dead    getty-static.service
  getty@tty1.service   loaded active   running Getty on tty1
  system-getty.slice   loaded active   active  system-getty.slice
  getty.target         loaded active   active  Login Prompts

LOAD   = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB    = The low-level unit activation state, values depend on unit type.

4 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.

リファレンス

  1. 仮想コンソールとは何ですか? どうやったら使えますか?
  2. @IT:仮想コンソールの数を減らすには
  3. 仮想コンソール (virtual console) かそうコンソールとは: - IT用語辞典バイナリ
  4. ITmedia エンタープライズ : Linux Tips「仮想コンソールを使おう」
  5. 仮想コンソール

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2008-09-18T00:37:53+09:00
  2. Modified: 2008-09-18T07:04:41+09:00
  3. Generated: 2017-04-27T23:09:18+09:00