ログイン/デスクトップ管理者が表示される前のダイアログ/アプリケーション

ログイン/デスクトップ管理者が表示される前のダイアログ/アプリケーション

Ubuntu(またはすべてのLinuxディストリビューション)をプリインストールした後、最初の起動中にいくつかのインストールまたは設定が発生するというメッセージ/警告をユーザーに表示したいと思います。残念ながら、セキュリティ制限のため、x11に関連するものは機能しません(ユーザーにrootを表示できない)。

このため、私はダイアログボックスと自己破壊サービス(今まで見つけた最高の方法)を使用することにしました。

サービスは次のスクリプトを実行しようとします(関連がないため、スリープに置き換えられます)。ダイアログボックスの表示、ドライバのインストール(プロビジョニング中にコンパイルできない)、プリンタの追加などを実行するためにtty2に変更しようとしています。

仮想マシン内で仮想マシンを使用すると正常に動作します。残念ながら、マシンではこれは機能しません。 tty2に変更されますが、ログインマネージャに切り替える前に黒い画面のみが表示されます(この場合はスリープモード中)。

これはBefore-StatementのXDM / SDDMでは機能しますが、GDM3およびでは機能しません。後者と連携する必要があります。

-StatementにBeforeリストされているディスプレイマネージャといくつかのサービスを追加しようとしましたが、display-manager.service成功しませんでした。これは gdm3 バイナリ自体の性質によるものです。

質問:サービスが完了するまでgdm/display-manager.serviceの起動をどのように遅らせることができますか?それとも、スクリプトが完了するまで警告を表示するより良い方法はありますか?

提供する

[Unit]
Description=FirstBoot
Wants=network-online.target
[email protected] plymouth-quit.service network.target network-online.target
Before=gdm3.service
Requires=cups.service

[Service]
Type=oneshot
ExecStart=/bin/bash /home/admin00/firstboot.sh
ExecStop=/bin/systemctl disable firstboot.service
ExecStopPost=/bin/sh -c 'rm /etc/systemd/system/firstboot.service'
StandardInput=tty
TTYPath=/dev/tty2
TTYReset=yes
TTYVHangup=yes

[Install]
WantedBy=multi-user.target

スクリプト

#!/bin/bash
ABSOLUTE_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/$(basename "${BASH_SOURCE[0]}")"

if ! chvt 2 &>/dev/null; then
    break
fi

(
sleep 30s
) | dialog --title "IT Afterconfiguration" --infobox "\n           P L E A S E\n             W A I T\n\n  Your system is being configured" 8 40

dialog --no-cancel --no-ok --pause '   Continuing in ...' 6 27 5 --

rm -rf $ABSOLUTE_PATH

ベストアンサー1

Type=oneshotあなたのサービスでこれを設定および解除することができますRemainAfterExit=yes

Type=oneshot「準備完了」シグナルは、サービスが完了した後にのみ(開始されません)送信され、サービスのステートメントのためにgdm3待機する必要があることを確認してください。 (同様に)後でサービスを実行するように設定するには、-ステートメントがBefore=必要です。RemainAfterExitactivedead

Type=詳しくは - 説明をご覧ください。ここ

注:デフォルトType(設定されていない場合)は、simpleプロセスの開始時に次のプロセス/サービスがリリースされることです。

おすすめ記事