Systemd
如何通過 systemd 禁用/覆蓋 tmpfs 到 /tmp 的自動掛載?
**背景:**在我的系統
/tmp
上是/
分區的正常部分,我將它用於系統的一些重要功能。**目前
systemd
方法:**在新系統systemd
上已經開始接管安裝,特別是tmpfs
在/tmp
啟動時甚至在更新期間安裝。這在/usr/lib/systemd/system/tmp.mount
:/usr/lib/systemd/system/tmp.mount # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. # # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or # (at your option) any later version. [Unit] Description=Temporary Directory (/tmp) Documentation=https://systemd.io/TEMPORARY_DIRECTORIES Documentation=man:file-hierarchy(7) Documentation=https://www.freedesktop.org/wiki/Software/systemd/APIFileSystems ConditionPathIsSymbolicLink=!/tmp DefaultDependencies=no Conflicts=umount.target Before=local-fs.target umount.target After=swap.target [Mount] What=tmpfs Where=/tmp Type=tmpfs Options=mode=1777,strictatime,nosuid,nodev,size=50%,nr_inodes=400k
**問題:**幾個月前,在更新期間,一些正在執行的程序開始寫入錯誤消息,因為重要文件
/tmp
消失了 -systemd
即使在正在執行的系統中更新時,也會tmpfs
強制安裝在現有的/tmp
. 它也不能被 u(n) 掛載(“文件系統忙”)。這會產生問題。**部分修復:**我通過註釋掉上面給出的文件中的最後 5 行來修復它。另外,我刪除了
/usr/lib/systemd/system/local-fs.target.wants/tmp.mount
. 但是,每次systemd
更新我的自定義都會失去 - 這兩個文件都不是配置文件(儘管該wanted
文件應該是一個標誌)。它們將在沒有警告的情況下被替換。問題: 如何永久禁用臨時(或任何)文件系統的掛載
/tmp
?也許systemd
我缺少一個選項?我正在尋找systemd
升級後的解決方案。我確實查看了手冊和連結文件,但沒有任何效果。我也試過
chattr +i /usr/lib/systemd/system/tmp.mount
在我調整後的文件上,但
systemd
根本不會更新,這當然不是一個選項。
我認為這
systemctl mask tmp.mount
應該為您解決問題:這將禁用該單元,將其符號連結到/dev/null
in/etc
,這將阻止其在升級時重新啟用。它還將防止手動啟動設備:# systemctl mask tmp.mount Created symlink /etc/systemd/system/tmp.mount → /dev/null.