# 无中生有的需求
- 其实我并不怎么看电影。
- ……好吧,我承认,偶尔想看……又或许只是喜欢拥有的感觉罢了。
欲望,总是在无边无际地扩张。“不得已”买了Raspberry Pi,向辣爸讨了块3TB机械,也算入了NAS的门。
过去用着Manjaro+Windows,可以直接在Gnome Nautilus中挂载树莓派的SFTP服务器,双击视频就可以通过Celluloid播放。然而这在macOS上似乎没有完美的解决方案,试用了Cyberduck、Tansmit、Electerm,却发现统统不能做到Manjaro上那样丝滑的体验。最好的方案也只能用FileZilla右键获取sftp://
地址后粘贴到VLC播放。
于是,目光转向歪门邪道——尝试挂载服务器到Finder。
# 百无一用的折腾
SSHFS似乎是我能找到的唯一挂载方案。
# 安装macFUSE
从官网下载macFUSE 4.0.5,直接打开.dmg
文件安装。安装完成后不出意外需要重启macOS。
# 安装编译依赖
老规矩,用homebrew
安装依赖最为简便快捷。
# Install Apple Development Tools
xcode-select --install
# Install Homebrew
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
然后安装必须的依赖,包括python与glib。
brew install python@3.9
brew install glib
# 下载并修改SSHFS源码
由于最新版的SSHFS 3.7.1并不支持macOS,因此需要从GitHub
的Repo下载2.10版本的源码。
解压后,根据Pull Request #58的提示,找到#1724
行,修改sshfs.sync_read
为0。
// Force async even if kernel claims its doing async.
// MacOS, see https://github.com/osxfuse/sshfs/issues/57
sshfs.sync_read = 0;
然后,修改#18
行的# include <fuse_darwin.h>
为#include <fuse.h>
。
# 编译
参照SSHFS编译指南进行编译。首先cd
进入解压得到的sshfs-2.10
文件夹,然后依次运行如下指令进行编译。
./configure
make
sudo make install
# 运行
sshfs [user@]host:[dir] mountpoint [options]
# sshfs [用户名@]服务器地址:[服务器路径] 本地挂载路径 [选项]
初次挂载不成功,因为macFUSE需要向系统添加内核插件。macFUSE提示,要进入系统设置->安全与隐私
(System Preferences -> Security and Privicy
)关闭系统安全机制,才能够正确加载挂载所需的内核插件。
依照Apple官方指南进入恢复模式进行修改。
在搭载 Apple 芯片的 Mac 上,选取苹果
菜单->关机
。按住电源按钮直至看到
正在载入启动选项
。点按
选项
,然后点按继续
。如有要求,请输入管理员帐户的密码。
Mac 将以恢复模式(Recovery Mode)打开。
在
macOS 恢复
中,选取实用工具->启动安全性实用工具
(Startup Security Utilities)。选择要用于设定安全策略的启动磁盘。
如果磁盘已使用文件保险箱加密,请点按
解锁
,输入密码,然后点按解锁
。点按
安全策略
(Security Policy)。检查以下安全性选项:
- 完整安全性:确保只有当前的操作系统或者当前 Apple 信任的签名操作系统软件才能运行。此模式要求在安装软件时接入网络。
- 降低安全性:允许运行 Apple 信任过的任何版本的签名操作系统软件。
我们需要选择
降低安全性
来启用macFUSE,输入管理员用户名和密码:- 选择“允许用户管理来自被认可开发者的内核扩展”复选框以允许使用旧版内核扩展的软件进行安装。
点按
好
,重新启动 Mac 以使更改生效。
此时再进入系统设置->安全与隐私
,发现下方已经多出了一个选项,选择后,可以运行任何来源的系统软件。再次运行sshfs
命令,已经可以挂载。
# 乏善可陈的疗效
然而,在我花了几个小时安装、挂载成功之后,竟觉食之无味,弃之可惜。
使用FileZilla可以达到30MB/s内网的传输速度,而挂载的SSHFS文件系统仅仅能达到数十KB/s,完全无法流畅串流视频。
不总是止步,不总是成功;不总是成功,不总是止步。