通过编写一个 Systemd 用户服务 (User Service) 或 系统服务 (System Service) 来实现开机自动挂载。

由于云盘挂载深度依赖网络以及当前登录用户的权限,最稳妥、优雅的做法是配置为 Systemd 用户服务。这样它会自动在网络就绪以及你的用户登录时启动,且挂载的文件夹直接拥有当前用户的读写权限。

以下是完整的配置步骤:

1. 确认系统 fuse 权限(前置准备)

为了让 Rclone 服务在后台运行时允许其他应用访问(避免权限冲突),我们需要先开启系统的 allow_other 选项:

sudo sed -i 's/#user_allow_other/user_allow_other/g' /etc/fuse.conf

2. 创建 Systemd 服务文件

在终端中执行以下命令,直接创建并编辑属于你当前用户的 Systemd 配置文件夹和文件:

mkdir -p ~/.config/systemd/user/
nano ~/.config/systemd/user/rclone-mount.service

将以下配置内容复制并粘贴进去(注意修改两处占位符):

[Unit]
Description=Rclone cmount with io_uring for Omarchy 4.02
Documentation=https://rclone.org
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
# 注意:请将下面的 your-remote-name: 替换为你在 rclone config 中配置的名称
# 注意:请将 /home/你的用户名/OneDrive 替换为你本地真实的空挂载点绝对路径
ExecStart=/usr/bin/rclone cmount your-remote-name: %h/OneDrive \
  --vfs-cache-mode full \
  --vfs-cache-max-age 24h \
  --vfs-cache-max-size 50G \
  --fuse-flag io_uring=on \
  --fuse-flag max_read=131072 \
  --allow-other \
  --log-file=%h/.config/rclone/rclone-mount.log \
  --log-level=INFO

# 确保在重启或服务停止时干净地卸载,防止目录死锁
ExecStop=/usr/bin/fusermount3 -u %h/OneDrive
Restart=on-failure
RestartSec=10s

[Install]
WantedBy=default.target

💡 代码中的 %h 是 Systemd 的原生变量,会自动替换为你的家目录(如 /home/yancheng)。

保存并退出(在 nano 中按 Ctrl+O 确认,再按 Ctrl+X 退出)。

3. 创建本地挂载目录

确保你在配置文件中填写的本地挂载点(例如家目录下的 OneDrive 文件夹)是真实存在的:

mkdir -p ~/OneDrive

4. 激活并启动服务

由于这是用户级服务,在运行管理命令时千万不要加 sudo,而是使用 --user 参数:

# 重新加载 Systemd 配置
systemctl --user daemon-reload

# 启用开机自启
systemctl --user enable rclone-mount.service

# 立即启动服务
systemctl --user start rclone-mount.service

5. 验证运行状态与 io_uring 日志

你可以通过以下命令检查服务是否完美跑起来了:

systemctl --user status rclone-mount.service

如果看到绿色的 active (running),说明挂载成功。你也可以直接打开 ~/OneDrive 目录,此时它已经是完全按需同步的云盘状态了。


为了确保万无一失,我们可以核对一下配置细节:

  • 你的 rclone 远程配置名称(remote name)叫什么?(例如 onedrive、google-drive 等)
  • 你的本地挂载路径希望放在哪里?(例如默认的 ~/OneDrive,还是其他专门的盘符?)