Ubuntu 20.04 の標準のディスプレイマネージャーは gdm3 です。これを lightdm に変えたインストールイメージの作り方を解説します。 前回の、 Ubuntu 20.04 をオフラインでセットアップできるイメージからの続きです。

通常 lightdm をインストールすると、ユーザ向けのダイアログが開いてディスプレイマネージャを選択することになります。ユーザの操作なしに lightdm を選択するには少し工夫が必要でした。

Twitterスレ の清書になります。

背景

ICPC アジア予選横浜大会で選手が使うコンピュータには Ubuntu がインストールされていて、ディスプレイマネージャは lightdm を使っています。 これには理由があり、今のところ gdm3 に移行できません。

一番良さそうな解法

これが最も簡単でした。

  • gdm3 をアンインストール, lightdm をインストールし、必要に応じて dpkg-reconfigure lightdm を実行する。

Step1. gdm3 をアンインストールする。 ubuntu-desktop は消しても良い

ubuntu-desktop や ubuntu-desktop-minimal をインストールすると gdm3 がインストールされるため、大体の環境で gdm3 がインストールされていると思います。 ここから gdm3 を % apt-get uninstall すると、ubuntu-desktop も道連れでアンインストールされます。実態のないメタパッケージなので、消しても問題はありません。

Step2: lightdm を正しく設定する

gdm3 をアンインストールしたのち lightdm をインストールすれば、起動時に lightdm が動くよう設定されます。 あるいは lightdm をインストールしたのち gdm3 をアンインストールした場合、その後に % dpkg-reconfigure lightdm で lightdm を設定し直せば大丈夫です。

ハズレ解法

以下、罠にかかった順番に解説します

ハズレ1 lightdm をそのままインストールする。

単純に lightdm をインストールした場合、上に書いた通りユーザ向けの設定ダイアログが開いてディスプレイマネージャを選択することになります。 ユーザの操作ができない autoinstall の最中、gdm3 がインストールされた環境上に lightdm インストールした場合、そのまま gdm3 が選ばれることになります。

ハズレ2 lightdm をインストールしたのち、 gdm3 をアンインストールする

% apt-get install lightdm したのち % apt-get remove gdm3 すると、ディスプレイマネージャが選択されていない状態になり、テキストログイン環境になります。

うえの正解の通り % dpkg-reconfigure lightdm を叩けば大丈夫です。 この作業をしていたときはそれに気づかず、テキストログイン環境になったのは ubuntu-desktop が削除されたためではないかと考えたため、正解にすぐたどり着けませんでした。

ハズレ3 lightdm をインストールしたのち、 dpkg-reconfigure lightdm を行う

ちょっと調べたところ、Lubuntu 20.10 の安定のため「lightdm」と「xfce4-screensaver」に入替え〈H105〉 - Linux あれこれ に、 dpkg-reconfigure の話が載っていました。実際、% dpkg-reconfigure lightdm を叩くと設定ダイアログが開き、ディスプレイマネージャが選択できます。 しかしユーザ操作ができない環境中では gdm3 がそのまま選ばれます。

「dpkg-reconfigure auto answer」 とかで頑張って検索して Feeding input values to dpkg-reconfigure in a non-interactive way が出てきたものの、以下の方法ではうまくいきませんでした。

DEBCONF_DB_OVERRIDE を利用した方法

$ cat /path/to/config.dat
Name: shared/default-x-display-manager
Template: shared/default-x-display-manager
Value: lightdm
Owners: gdm3, lightdm
Flags: seen
Variables:
 choices = gdm3, lightdm

% DEBCONF_DB_OVERRIDE='File {/path/to/config.dat}' dpkg-reconfigure -fnoninteractive lightdm 

debconf-set-selections を利用した方法もだめでした。

% echo 'lightdm shared/default-x-display-manager select lightdm' | debconf-set-selections -v 

後から考えると、これは例の firebird ではうまくいくかもしれないですが lightdm ではうまく行かなそうです。

あたり1 lightdm をインストールしたのち、/etc/X11/default-display-manager を書き換えてから dpkg-reconfigure lightdm をする

Reconfigure the display-manager non-interactively にあることをやったら通りました。

関連コードはここのようです。 https://github.com/canonical/lightdm/blob/170df31f7d9c00b049bdd158682472df915adeae/debian/lightdm.postinst#L15

しばらくこの方法を採用していたのですが、後に gdm3 を消して良いことがわかったので、正解の方法に変えました。

次回予告

lightdm を設定すると、ユーザの初回ログイン時に警告が出てきます

次回はこの警告の抑止方法をまとめました