選択した grub オプションに基づいてさまざまな sysyemd サービスを開始

選択した grub オプションに基づいてさまざまな sysyemd サービスを開始

私は最初にgrubに触れ、systemdサービスを開始するためにgrubブートオプションを作成することが可能かどうかを知りたいです。

たとえば、自分のコンピュータをサーバーとデスクトップの両方として使用したいので、必要に応じて別の起動オプションを選択したとします。サーバーオプションを選択すると、コンピュータがサーバーモードで起動し、デスクトップオプションが選択され始めますminecraftd.servicehttpd.servicegdm.service

そのようなことは可能ですか?

ベストアンサー1

複数のデスクトップ環境がインストールされている場合は、gdmログイン時にセッションのいずれかを選択する方法を既に提供する必要があります。画面の右下にギアアイコンがある場合は、それをクリックして利用可能なセッションタイプメニューを表示します。少なくともUbuntu 22.04ではそうです。

デスクトップシステムは、デフォルトでsystemdターゲットデバイスを使用するように設定されている可能性がありますgraphical.target。 GUIのない​​「サーバーモード」でシステムを起動したい場合は、事前定義されたモードを使用できますmulti-user.target。カスタムモードを設定したい場合は、一意のターゲットユニットを定義し、特定のモードで起動したいサービスに依存できます。

GRUBでは、起動オプションを使用して起動モードを選択できますsystemd.unit=<name>.target

システムの実行中にあるターゲットから別のターゲットに非永続的に変更するには、指定されたターゲットデバイスで説明されているシステム状態に一致するサービスを開始および停止しますsystemctl isolate <name>.targetsystemd

将来の再起動のためにデフォルトの起動モードを永久に設定するには、を使用する必要がありますsystemctl set-default <name>.target

最後に、カーネルで認識されないすべての起動オプションはそのまま/proc/cmdline表示されます。したがって、何らかの理由で上記のオプションが不十分な場合は、カスタム/proc/cmdlineキーワードを見つけて、要件に応じてシステムの状態を変更するスクリプトを作成できます。次に、起動プロセスの適切な段階で実行するようにスクリプトを設定します。

おすすめ記事