背景
由于之前上车了蜗牛星际的矿机,于是便想着使用它给我的黑苹果进行网络文件共享(AFP)同时还能使用Time Machine的时间机器的备份。 虽然黑群晖可以完美实现这一功能 但由于群晖存储硬盘文件系统的设计 使得日后在系统崩溃后无法方便的取出数据。此外我还有usb网络共享的需求(安卓手机通过usb连接蜗牛 给蜗牛提供网络 同时将蜗牛的两个千兆网卡作为lan 给其他设备供网)暂时不清楚使用黑群晖的虚拟机插件运行LEDE的效果。
原本的解决方案是使用PVE虚拟机 同时运行LEDE Openmediavalut或者黑群 但是由于蜗牛的处理器是j1900 不支持vd-t,使得无法直通sata控制器至虚拟机 导致整体传输性能下降。 所以 权衡再三 我决定采用最灵活的linux系统(ubuntu)来实现上述的所有功能。
由于新版的ubuntu系统使用了gnome的桌面环境 使得之前可以直接在网络设置中可开启的 “与其他计算机共享”丧失,所以在此我使用Xubuntu系统。
Netatalk的环境依赖
Netatalk 依赖于Berkely DB数据库 为了让远程磁盘也能使用Spotlight 这一macOS的全局搜索功能。ubuntu软件源中未自带 需要自行编译安装。
libgcrypt 编译需要。
Berkely DB数据库编译安装
在Oracle下载Berkely DB源代码
解压缩文件
进入文件目录
使用默认设置生成Makefile
如果生成Makefile报错,请查看下系统是否有安装编译环境
添加CXX支持,则需要配置后添加参数“–enalbe-cxx” 比如这样
开始编译
安装
Berkely DB的默认安装路径为
安装libgcrypt
在ubuntu下可以直接通过apt安装 sudo apt-get install libgcrypt11-dev
同时附上Centos/Redhat的安装 sudo yum install libgcrypt11-dev
2020 03 31 修订:libgcrypt11-dev在debian10中已移除 安装使用
apt install libgcrypt20-dev
编译安装Netatalk
下载Netatalk源码包 目前最新版本3.1.11
https://sourceforge.net/projects/netatalk/files/netatalk/
编译&安装
tar -xzvf netatalk-3.1.11.tar.gz
cd netatalk-3.1.11
./configure --with-init-style=debian-systemd --with-bdb=/usr/local/BerkeleyDB.18.1
Tip:由于之前安装的 Berkely DB 没有注册到系统 所以在生成编译文件的时候需要指定下 文件位置 –with-bdb=/usr/local/BerkeleyDB.18.1
tar -xzvf netatalk-3.1.11.tar.gz
cd netatalk-3.1.11
./configure --with-init-style=debian-systemd --with-bdb=/usr/local/BerkeleyDB.18.1
Tip:由于之前安装的 Berkely DB 没有注册到系统 所以在生成编译文件的时候需要指定下 文件位置
–with-init-style 针对不同的系统有不同的参数 具体如下
[redhat-sysv|redhat-systemd|suse-sysv|suse-systemd|gentoo-openrc|gentoo-systemd|netbsd|debian-sysv|debian-systemd|solaris|openrc|systemd]
由于我使用的是ubuntu是属于deb系 所以需要加上
更多详细的设置可以在Netatalk的安装目录中通过
开始编译
配置 Netatalk (afp.conf)
sudo nano /usr/local/etc/afp.conf
afp.conf 配置文件内容解析
[Global] mimic model = Xserve #这个是指定让机器在你Mac系统中显示的图标
log level = default:warn
log file = /var/log/afpd.log
hosts allow = 10.0.0.0/24 #允许访问的主机地址,根据需要自行修改
hostname = Pasi #主机名,随你喜欢
[Homes]
basedir regex = /home #用户的Home目录 #由于我安装xubuntu的ssd容量较小 所以实际使用中未开启
[NAS-FILES]
path = /media/文件路径 #数据目录
time machine = yes #TimeMachine 时光机的支持
Netatalk启动&自启
[Global] mimic model = Xserve #这个是指定让机器在你Mac系统中显示的图标
log level = default:warn
log file = /var/log/afpd.log
hosts allow = 10.0.0.0/24 #允许访问的主机地址,根据需要自行修改
hostname = Pasi #主机名,随你喜欢
[Homes]
basedir regex = /home #用户的Home目录 #由于我安装xubuntu的ssd容量较小 所以实际使用中未开启
[NAS-FILES]
path = /media/文件路径 #数据目录
time machine = yes #TimeMachine 时光机的支持
到此Netatalk已可以正常使用 但默认不会自启动。
systemctl start netatalk #启动netatalk
systemctl enable netatalk #开机自启netatalk
根据在编译时使用的
–with-init-style 参数是systemd还是sysv 设置启动&自启的指令略有不同,此处以systemd为列
AFP共享的远程访问
AFP共享不像samba一样 需要手动设置 smbpasswd 才能使用系统内账户+smb密码进行登录。(root默认禁止)
在mac系统上
Tip:本文未配置Avahi 所以afp服务器不能被mac系统自动发现
TimeMachine自动备份
经过测试可以完美使用 且运行良好。