systemdマウント設定ファイルフィールドでwhat=
絶対パス文字列の代わりに変数を使用できますか?
たとえば、
[Unit]
Before=local-fs.target
[Mount]
What=/dev/disk/by-partlabel/${part_variable}
Where=/mnt/optional/config/
カスタムカーネルコマンドラインbootparamを使用し、そのbootparamによって提供されるパーティションをマウントする方法を見つけたいと思います。
答え1
参考までに:
systemdマウント設定ファイルフィールドで
What=
絶対パス文字列の代わりに変数を使用できますか?
はい、可能です。たとえば(テストしたばかりですsystemd v.238
):
mnt-data.mount
コンテンツ:
[Unit]
Description=Mount System Backups Directory
[Mount]
What=${SOMEPATH}
Where=/mnt/data
Type=ext4
Options=defaults
走れば
systemctl set-environment SOMEPATH=/dev/disk/by-label/DATA
それから
systemctl start mnt-date.mount
/dev/disk/by-label/DATA
にインストールされます。/mnt/data
またはenvファイルを介して:
mnt-data.mount
コンテンツ:
[Unit]
Description=Mount System Backups Directory
[Mount]
EnvironmentFile=/path/to/env_file
What=${SOMEPATH}
Where=/mnt/data
Type=ext4
Options=defaults
/path/to/env_file
コンテンツ:
SOMEPATH=/dev/disk/by-uuid/1b5a38ca-9f0d-4f1a-8fc1-7c418e79bf07
役に立たないかもしれません
カスタムカーネルコマンドラインブートパラメータを使用し、そのブートパラメータによって提供されるパーティションをマウントする方法を見つけます。
しかし、それは間違いなく使用することができますWhat=${SOMEVAR}
。
答え2
によると、man systemd.mount
変数置換はサポートされていません。
私は、起動プロセスの初期に実行され、動的に生成されたファイルを作成するsystemdサービスを作成することがまだ可能であると信じています.mount
。
答え3
いいえ。
あなたが説明するのはまさにジェネレータの用途ですman systemd.generators
。を参照してください。比較はman systemd-fstab-generator
インストール単位で生成され、カーネルコマンドラインからも読み取られます/etc/fstab
。つまり、カーネルコマンドラインオプションのみをサポートし、設定ファイルはサポートしていない場合は、そのためのearlystart()サービスユニットを作成してroot=
もよいでしょう。DefaultDependencies=no