生成されたサブフォルダ(揮発性)を使用して起動時にtmpfsフォルダをマウントする

生成されたサブフォルダ(揮発性)を使用して起動時にtmpfsフォルダをマウントする

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

# /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を探索した後、私は驚くべき発見を偶然見つけました。 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

この問題を解決する1つの方法は、新しいシステムサービスを作成(または既存のサービスを変更)してtempfsにこのディレクトリを生成する単位ディレクティブを/var/volatile使用することです。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コマンドに必要なサブディレクトリを作成することもできます。

関連情報