FedoraとUbuntuとしましょうか?
…現在、どちらもsystemdオペレーティングシステムです。
systemdオペレーティングシステムで何が起こるか
ネイティブメカニズム
Systemdはさまざまな種類のユニットを採用しています。 .mount
ユニットファイルは、ボリュームをマウントするよう指示します。 .swap
ユニットファイルは、スワップパーティションについてカーネルに通知するよう指示します。(.service
ユニットファイルは、サービスの実行方法を指示します。など)。これらは、ネイティブのsystemdメカニズムです。それらを実行するために、systemd自体は、関連するシステム呼び出しを行う子プロセスから分岐します。
このようなsystemdオペレーティングシステムでsystemctl
(で--all
)コマンドを使用すると、ロードされた.swap
ユニットについて通知されます。例えば:
dev-disk-by \ x2dpartuuid-40549710 \ x2d05.swap loaded active active / dev / disk / by-partuuid / 40549710-05
dev-disk-by \ x2duuid-1bb589e8 \ x2d929f \ x2d4041 \ x2d81f4 \ x2dff2b339b4e2a.swap loaded active active / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
dev-sda5.swapロード済みアクティブアクティブ/ dev / sda5
また、.mount
ユニットについても説明します。
システム管理者は.swap
、xeが、、およびその他のユニットファイルを手動で書き込むことができるよう.service
に.socket
、実際にそのようなユニットファイルを手動で書き込むことができます。systemd自体は、ファイルシステムでユニットファイルを探すだけです。それらはそのネイティブメカニズムです。
systemdを使用して、これらのユニットファイルの内容とファイルシステム内の場所を表示することもできます。
$ systemctl cat dev-disk-by \\ x2duuid-1bb589e8 \\ x2d929f \\ x2d4041 \\ x2d81f4 \\ x2dff2b339b4e2a.swap
#/run/systemd/generator/dev-disk-by\x2duuid-1bb589e8\x2d929f\x2d4041\x2d81f4\x2dff2b339b4e2a.swap
#systemd-fstab-generatorにより自動生成
[単位]
SourcePath = / etc / fstab
Documentation = man:fstab(5)man:systemd-fstab-generator(8)
[スワップ]
What = / dev / disk / by-uuid / 1bb589e8-929f-4041-81f4-ff2b339b4e2a
Options = sw
$
自動生成されたユニットファイル
手書きで書くことができます。 ただし、通常、このようなファイル.mount
および.swap
ユニットファイルは、ジェネレーターと呼ばれるプログラムによって自動的に生成されます。二つのそのような発電機があるsystemd-fstab-generator
とsystemd-gpt-auto-generator
。これらは両方とも、ブートストラッププロセスの初期およびsystemctl daemon-reload
コマンドへの応答で実行され、(上記でわかるように)ユニットファイルのロード全体を、ドキュメント化されていないサブディレクトリに生成し/run/systemd/
ます。systemd自体は、生成されたユニットファイルを使用します。
前者のジェネレーターはを読み取り/etc/fstab
、そのファイル形式に対するいくつかのsystemd拡張機能を認識します。回答のコメントで指摘したように、従来のスワップパーティションのマウントタイプはsw
、他のオペレーティングシステムがこのテーブル内のスワップレコードを認識する方法です。しかし、Linuxソフトウェアは代わりにVFSタイプを認識し、VFSタイプswap
として探すという代替手段を採用しています。 systemd-fstab-generator
ここでも例外ではなく、それが/etc/fstab
ネイティブメカニズムに変換するときに解釈する方法です。
後者のジェネレーターは、EFIシステムパーティションを保持する同じディスクにあるEFIパーティションテーブルを処理し、さまざまな既知のパーティションタイプ GUID を持つEFIパーティションテーブルエントリを探します。これらのGUIDの1つは、Linuxスワップパーティションに割り当てられた従来のGUIDです。そしてsystemd-gpt-auto-generator
、そのGUID(systemd docoで指定された基準を満たす)を持つパーティションを見つけると、そのための.swap
ユニットを作成します。全く/etc/fstab
関与していません。
もちろん、このプロセスには多くの副作用があります。たとえば/etc/fstab
、テーブルへの主キーがないため、レコードには「spec」フィールドと「file」フィールド(つまり「what」と「where」)が重複している場合があります。ただし、ネイティブのsystemdメカニズムでは、「file」(つまり「where」)フィールドは.mount
ユニットの一意のキーであり、ユニット名に埋め込まれています。2つの.mount
ユニットで共有することはできません。以下のため.swap
のユニット「スペック」(すなわち「何を」)フィールドには、ユニットの一意のキーです。2つの.swap
ユニットがそれを共有することはできません。したがって、すべてのレコード/etc/fstab
が必ずしもネイティブメカニズムに変換できるわけではなく、特に、2つの異なる目的で同じマウントポイントをリストしたり、2つの異なる方法で同じスワップパーティションをリストしたりする場合は、機能しません。
同様/etc/fstab
に、ネイティブメカニズムに変換されており、systemdのネイティブメカニズムにはunitsをアクティブにする他の方法があるため、動作はsystemd以外のオペレーティングシステムとは微妙に異なります。.mount
ユニットは、デフォルトでは、説明する自動的によって活性化systemd-udevd
の出現に応答してもブートストラップの後には、ストレージデバイスを搭載しました。または、一部または単位としてリストすることもできます。Wants=
つまりRequires=
、あるときに(再)アクティブ化されます。さえあります。.service
.socket
RequiresMountsFor=
インストーラープログラムとsystemdの方法
従来、オペレーティングシステムのインストーラプログラムと、システムを再構成した後のsystemd管理者は、sw
エントリをに書き込みました/etc/fstab
。そして、それがネイティブ.mount
と.swap
ユニットが最終的に自動生成される方法です。インストール/構成ユーティリティは、システム管理者がユーザーインターフェイスで何らかの選択/etc/fstab
を行い、一致するように書き込むため、スワップファイルが置かれた場所を「認識」します。時々、その選択は、インストールの一部として私にスワップパーティションを作る必要があることです。; ディスク上にすでにあるスワップパーティションを使用するだけの場合もあります。(インストーラーはパーティションの種類も調べます)。
しかし、systemdの人々は、大部分が空の/etc
ツリー、いわゆるステートレスシステムから自動的に構成するオペレーティングシステムという考えを持っています。それが、EFIパーティションテーブルを読み取るジェネレーターのようなメカニズムです。systemdの人々の計画で/etc/fstab
は、永続的な構成データは存在せず、実際には存在しません。/etc
このすべては、ディスク上のパーティションテーブルの内容、すべてのブートストラップ、およびすべてから推測されますsystemctl daemon-reload
。最近では、オペレーティングシステムのインストーラプログラムを宣伝するのではなく、/etc/fstab
。
従来のスキームでは、もちろん、各オペレーティングシステムに独自のプライベートスワップパーティションを持たせ、お互いのスワップパーティションに触れさせないようにすることができます。そして、あなたはスワップパーティションを介してディスクに休止状態を使用して休止状態ながら、(別のオペレーティングシステムへのマルチブートにできるように期待している確かにあればある非常に悪い考えているため、それが原因ファイルシステムの破損、このように非常に簡単ですになります)必要。
systemdスキームでは、オペレーティングシステムがまだsystemdの人々が想定している「ステートレス」ではない場合でも、前述のジェネレーターが実行されます。したがって、必要なパーティションタイプのすべてのスワップパーティション(ESP /ルートディスク上)は、すべてのsystemdオペレーティングシステムで自動的に使用されます。自動的に検出されたすべてのスワップパーティションを共有するため、インストールされたオペレーティングシステムごとに1つのスワップパーティションを作成する必要はありません。
参考文献