起動時に作成されたサブフォルダを含むtmpfsフォルダ(揮発性)をマウントする

起動時に作成されたサブフォルダを含むtmpfsフォルダ(揮発性)をマウントする

fstab現在、このファイルを使用して Debian 9.5 を使用しています:

# /etc/fstab: static file system information.
#
/dev/mmcblk1p1  /              ext4   noatime,errors=remount-ro  0  1    
tmpfs           /var/volatile  tmpfs  defaults,x-mount.mkdir     0  0

ここで、フォルダーが/var/volatile存在しない場合は作成されます ( )。マウント手順が成功した後に作成されたx-mount.mkdirサブフォルダー (例) を作成する正しい方法は何でしょうか?/var/volatile/subfolder

systemd が起動を完了するまでタスクを続行する前に、このサブフォルダーを作成する必要があります。

答え1

systemd を調べた後、偶然、greet の発見に遭遇しました。systemd がすでにこの目的のためのソリューションを提供しているため、これに対処するためにカスタム サービスを作成する必要はないことがわかりました。systemd-tmpfilesこれは、一時ディレクトリとファイルを管理するための構造化された構成可能な方法です。

https://www.freedesktop.org/software/systemd/man/systemd-tmpfiles.html https://www.freedesktop.org/software/systemd/man/tmpfiles.d.html

/etc/tmpfiles.d/volatile-subfolder.conf次の内容のファイルを作成するだけです:

d       /var/volatile/subfolder 0755 root root - -

そしてリロードします。

答え2

/var/volatileこれに対処する 1 つの方法は、unit ディレクティブを使用して tempfsにこのディレクトリを作成するように新しい systemd サービスを作成する (または既存のサービスを変更する) ことですAfter=local-fs.target

[Unit]
Description=Tempfs initialize
After=local-fs.target

[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=mkdir -p /var/volatile/subfolder


[Install]
WantedBy=multiuser.target

これを に追加し/etc/systemd/system/tmpfsinit、通常の を実行しますsystemctl daemon-reload && systemctl enable tempfsinit

あるいは、カスタム systemd サービスが既にある場合は、Afterユニット ディレクティブと、必要なサブディレクトリを作成するコマンドをExecStartPreコマンドに追加することもできます。

関連情報