別々のシステム構成ファイル - つまり、カーネルパラメーターに基づくさまざまなブート/初期化構成

別々のシステム構成ファイル - つまり、カーネルパラメーターに基づくさまざまなブート/初期化構成

起動時間パラメータ(および/または実行中のカーネルの種類)に基づいて特定のカーネルモジュール、マウントポイント、および起動時間サービス(SystemdまたはOpenRC)を有効または無効にする方法はありますか?

さらに一歩進んで、初期化システムを同じように置き換えることができますか? (カーネルパラメータについて知っていますが、init=...(例えば)systemdとOpenRCは同じインストールに共存し、起動時に勝手に交換できますか?

背景知識について(誰かがこれを覚えているほど年をとった場合)、私の考えは起動時にメニューから選択できるconfig.sys / autoexec.batに複数のシステム構成ファイルを持つDOS技術から来ました。

したがって、(純粋な例)GRUBに3つのメニュー項目が必要な場合は、次のようになります。

  • 「ゲーム」:カスタムカーネルをロードし、独自のnvidiaドライバをロードし、optimus(またはvfioパススルー)を有効にしてX11から起動します。

  • 「ワーク」:別のカーネルをロードし、Intelビデオドライバをロードし、暗号化されたワークパーティションをマウントしてからWaylandから起動します。

  • 「サーバー」:3番目(待ち時間が長い)カーネルをロードし、特定の追加のバックグラウンドサービス(Webサーバー、SSHホスト、VMホストなど)を起動し、テキストコンソールから起動します。

上記は単なる例ですが、要点をご理解ください。

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

答え1

確かに。ディストリビューションによっては簡単でも難しいかもしれませんが、そうです。

モジュールの場合、このU&L投稿modules_loadモジュールをロードするためのカーネルパラメータも言及されています。この他の記事モジュールをブロックするためのパラメータがあります。 Arch Linuxではmkinitcpio異なる構成で複数のカーネルイメージを作成するのは簡単です(少なくともプリロードされたモジュールなどの場合はありますが、ビルド構成ではありません)。

サービスのロード、ボリュームのマウントなどの場合、systemdは2つのユニットを依存関係チェーンの一部にし、操作を簡単にします。これによりgaming.target、X11を起動するサービスである「ターゲット」を作成したり、インストール単位と作業パーティションを暗号化するデバイス単位、Waylandを起動する単位などで構成される「ターゲット」を作成したりできます。開始しようとしているターゲットは、以下を使用してカーネルコマンドラインの一部になります。WantsRequiresWantedByRequiredBywork.targetWantsRequiresWantedByRequiredBysystemd.unitパラメーター(例えば、systemd.unit=gaming.targetまたはsystemd.unit=work.target)。

ターゲットはカーネルコマンドラインで設定し、モジュールもロードする必要があるため、ブートローダ設定を更新して、そのカーネルイメージとコマンドラインを使用して各ターゲットの別々のエントリを作成する必要があります。

Init システムの交換可能 - Ubuntu で systemd が初めて導入されたときに、Upstart と systemd の間の交換が可能でした。私はGentooがまだそれをサポートしていると思います。他のディストリビューションでは、誰かがデフォルトではなく初期化システムのサービス構成などを設定する必要があります(その人はおそらくあなたの可能性が高く、多くの作業が必要です)。

関連情報