我创建了一个安装座,mnt-stoneshare.mount
放置在/etc/systemd/system
:
[Unit]
Description=StoneOS Storage Mount
[Mount]
What=/dev/disk/by-uuid/62721034-29ee-4894-a19e-905bcbb20c7c
Where=/mnt/stoneshare
[Install]
WantedBy=local-fs.target
该文件是由我正在开发的软件的安装程序自动生成的。
显然,在生成后(系统正在运行),如果我尝试通过systemctl start /mnt/stoneshare
或等效方式启动安装systemctl start mnt-stoneshare.mount
,该单元不会失败,但安装不会发生。查了一下journalctl
,有一些奇怪的地方:
Nov 22 20:28:12 stone-development-arch systemd[367]: Unmounted /mnt/stoneshare.
Nov 22 20:28:12 stone-development-arch systemd[367]: Unmounting /mnt/stoneshare...
Nov 22 20:28:12 stone-development-arch systemd[367]: Unit mnt-stoneshare.mount is bound to inactive service. Stopping, too.
Nov 22 20:28:12 stone-development-arch kernel: EXT4-fs (md127): mounted filesystem with ordered data mode. Opts: (null)
首先,它说它已安装(因此,我假设退出代码为 0 on mount
),但紧接着,它就被卸载了。
并检查systemctl status /mnt/stoneshare
,也没有错误:
[root@stone-development-arch StoneOS.RaidProcess]# systemctl status /mnt/stoneshare/
● mnt-stoneshare.mount - StoneOS Storage Mount
Loaded: loaded (/etc/systemd/system/mnt-stoneshare.mount; enabled)
Active: inactive (dead) since Sat 2014-11-22 20:28:12 EET; 4min 11s ago
Where: /mnt/stoneshare
What: /dev/disk/by-uuid/62721034-29ee-4894-a19e-905bcbb20c7c
Process: 855 ExecMount=/bin/mount -n /dev/disk/by-uuid/62721034-29ee-4894-a19e-905bcbb20c7c /mnt/stoneshare -t auto (code=exited, status=0/SUCCESS)
systemctl enable /mnt/stoneshare
我的安装程序还在尝试启动设备后启用 ( )。如果我重新启动系统,设备就会正确安装。如果我要卸载(通过停止设备)并尝试重新安装(通过启动设备),我会得到相同的错误。
我认为问题在于我的设备的配置,但是,作为systemd
新手,我似乎找不到解决方案。
我已读完问题在这里,但似乎并非如此。
另外,我还走过RedHat 上的这个错误但 UUID 和其他所有内容都是正确的,此外,如果在启动时执行安装,则会发生安装。已经经历过其他 帖子也无济于事。
如果手动执行挂载,是什么导致挂载立即被卸载?
答案1
哦,天哪,真是失败了,我在之前的测试中留下了/etc/systemd/user
冲突的结果。
显然,当从登录的用户上下文中运行 systemd 单元时,它将偏向于/etc/systemd/user
目录 - 这就是为什么它在手动挂载时失败,但在启动时有效。
从用户命名空间中删除该单元,也解决了手动安装的问题。