생성된 하위 폴더(휘발성)를 사용하여 부팅 시 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

이 문제를 해결하는 한 가지 방법은 새로운 시스템 서비스를 생성(또는 기존 서비스를 수정)하여 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명령에 필요한 하위 디렉터리를 생성할 수도 있습니다.

관련 정보