ssh ログオン時の問題
「RaspberryPi OS Lite を CUI でインストールしてヘッドレスでログイン」
https://qiita.com/nanbuwks/items/263e21451d230deeb62c
の設定をした後に、ssh でログオンした状態で
$ sudo raspi-config
としようとしても、
1 System Options Configure system settings
あたりをしようとしたら、
There was an error running option L1 Locale
というエラーが出てうまく行かない。
$ sudo dpkg-reconfigure locales
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
リアルコンソールで走っている初期設定プログラム
調べてみると、キーボード設定がリアルコンソールで走っている。
$ ps -auxww | grep config
root 1055 3.1 3.3 21388 14640 tty8 S+ 07:15 0:09 /usr/bin/perl -w /usr/sbin/dpkg-reconfigure -p critical keyboard-configuration
これは /usr/lib/userconf-pi/userconf-service が動作しているため。
systemctl を見てみると、
userconfig.service (略) loaded activating start start User configuration dialog
となっていて、
/lib/systemd/system/userconfig.service
の中身が以下のようになっている。
[Unit]
Description=User configuration dialog
After=systemd-user-sessions.service
Before=lightdm.service
[Service]
Type=oneshot
ExecStart=/usr/lib/userconf-pi/userconf-service
StandardInput=tty
Restart=on-failure
TTYPath=/dev/tty8
TTYReset=yes
TTYVHangup=yes
TTYVTDisallocate=yes
[Install]
WantedBy=multi-user.target
なので、 userconf-service や dpkg-reconfigure を kill しても復活してしまう。
初期設定プログラムを ssh 上で行う
この問題に対処するためには、以下のようにする。
一旦サービスを停止。
$ sudo systemctl stop userconfig.service
そのうえで、/usr/lib/userconf-pi/userconf-service
を適当にコピーして、以下の箇所をコメントアウト。
if [ -t 0 ]; then
chvt "$VT"
fi
この下にも、chvt を行っているところがあるのでそこもコメントアウト。
書き換えたスクリプトを実行し、終わらせます。
再起動すれば、初期設定プログラムが再度走ることがなくなります。