背景:在我的系统上,/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)mounted(“文件系统繁忙”)。这会产生问题。
部分修复:我通过注释掉上面给出的文件中的最后 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
根本不会更新,这当然不是一个选项。
答案1
我认为这systemctl mask tmp.mount
应该对你有用:这将禁用该单元,将其符号链接到/dev/null
in /etc
,这将阻止其在升级时重新启用。它还可以防止手动启动设备:
# systemctl mask tmp.mount
Created symlink /etc/systemd/system/tmp.mount → /dev/null.