(2016-09-01)
Raspbian jessie (Debianも同じ) の仮想コンソール agetty (以降、agetty)が、デフォルトでは6個起動する。
ほっといてもそんなにメモリ食うわけでもないみたいだが、減らしたい気分になったのでやってみた。
ネットの海が広すぎて、いまいちよく調べられなかったので、自分で適当にやってみた結果を載せておく(完全無保証)。
jessieなのでsystemctl(systemd)起点に操作することになる。
OSのバージョン等はこれ。
$ uname -a Linux rasp00 4.4.13+ #894 Mon Jun 13 12:43:26 BST 2016 armv6l GNU/Linux
agetty は jessieでは systemd のサービスとして起動している。
サービスの一覧を見てみる。
# systemctl list-units -t service | grep getty 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 serial-getty@ttyAMA0.service loaded active running Serial Getty on ttyAMA0
一行目の getty-static.service は、次の行以降の getty@tty1~6を起動する親分のようだ。
最後の行のserial-gettyはシリアルポート用なので今回は対象外。
常套手段。
# ps -ef | grep agetty root 14030 1 0 15:21 ttyAMA0 00:00:00 /sbin/agetty --keep-baud 115200 38400 9600 ttyAMA0 vt102 root 14031 1 0 15:21 tty3 00:00:00 /sbin/agetty --noclear tty3 linux root 14032 1 0 15:21 tty1 00:00:00 /sbin/agetty --noclear tty1 linux root 14033 1 0 15:21 tty5 00:00:00 /sbin/agetty --noclear tty5 linux root 14035 1 0 15:21 tty4 00:00:00 /sbin/agetty --noclear tty4 linux root 14036 1 0 15:21 tty2 00:00:00 /sbin/agetty --noclear tty2 linux root 14278 1 0 15:56 tty6 00:00:00 /sbin/agetty --noclear tty6 linux root 14313 13906 0 16:00 pts/2 00:00:00 grep agetty
先頭と末尾の行は除外すべし。
該当ttyのサービスを停止、あるいは起動すればOK。
(昔の initd の時と同じで、単に該当プロセスを kill してもだめです)。
一時的に減らす場合。
# systemctl stop getty\@tty6.service
一時的に増やす場合。
# systemctl start getty\@tty6.service
デフォルトではtty1~6の6つが起動しているが、7個目を起動したい、といったこともできる。
# systemctl start getty\@tty7.service
一つ飛ばして、いきなり tty8 とかも起動できたりする。
最大で何個まで起動できるかは・・・知りません。
とりあえず手順。
# cp /lib/systemd/system/getty-static.service /etc/systemd/system/ # vi /etc/systemd/system/getty-static.service (編集・保存・終了) # diff /lib/systemd/system/getty-static.service /etc/systemd/system/getty-static.service 8c8 < ExecStart=/bin/systemctl --no-block start getty@tty2.service getty@tty3.service getty@tty4.service getty@tty5.service getty@tty6.service --- > ExecStart=/bin/systemctl --no-block start getty@tty2.service getty@tty3.service getty@tty4.service
どうやらOS起動時のtty1~6のサービス起動は、上記の定義ファイルでやっているみたいなので、/etc/systemd/system/へコピーしたのち、いらない部分をバッサリ削ってやる、といいみたい。
変更が終わったら、OS再起動して確認してみてちょんまげ。
ちなみに、OS再起動せずに上記を反映させることはできない模様。
諦めて、tty1~6を個別に停止させるしかないようだ。
たとえばこんな具合。
# systemctl stop getty\@tty[56].service
以上であります。