文章目录
  1. 背景
  2. Netatalk的环境依赖
  3. Berkely DB数据库编译安装
  4. 安装libgcrypt
  5. 编译安装Netatalk
  6. 编译&安装
  7. 配置 Netatalk (afp.conf)
  8. afp.conf 配置文件内容解析
  9. Netatalk启动&自启
  10. AFP共享的远程访问
  11. TimeMachine自动备份

背景

由于之前上车了蜗牛星际的矿机,于是便想着使用它给我的黑苹果进行网络文件共享(AFP)同时还能使用Time Machine的时间机器的备份。 虽然黑群晖可以完美实现这一功能 但由于群晖存储硬盘文件系统的设计 使得日后在系统崩溃后无法方便的取出数据。此外我还有usb网络共享的需求(安卓手机通过usb连接蜗牛 给蜗牛提供网络 同时将蜗牛的两个千兆网卡作为lan 给其他设备供网)暂时不清楚使用黑群晖的虚拟机插件运行LEDE的效果。

原本的解决方案是使用PVE虚拟机 同时运行LEDE Openmediavalut或者黑群 但是由于蜗牛的处理器是j1900 不支持vd-t,使得无法直通sata控制器至虚拟机 导致整体传输性能下降。 所以 权衡再三 我决定采用最灵活的linux系统(ubuntu)来实现上述的所有功能。

由于新版的ubuntu系统使用了gnome的桌面环境 使得之前可以直接在网络设置中可开启的 “与其他计算机共享”丧失,所以在此我使用Xubuntu系统。

Xubuntu 系统自带的网络共享功能

Netatalk的环境依赖

Netatalk 依赖于Berkely DB数据库 为了让远程磁盘也能使用Spotlight 这一macOS的全局搜索功能。ubuntu软件源中未自带 需要自行编译安装。

libgcrypt 编译需要。

Berkely DB数据库编译安装

在Oracle下载Berkely DB源代码
解压缩文件 tar -xvf db-18.*
进入文件目录 cd build_unix
使用默认设置生成Makefile ../dist/configure
如果生成Makefile报错,请查看下系统是否有安装编译环境 sudo apt install build-essential
添加CXX支持,则需要配置后添加参数“–enalbe-cxx” 比如这样 ../dist/configure –enable-cxx (本操作不需要)
开始编译 make
安装 sudo make install
Berkely DB的默认安装路径为 /usr/local/BerkeleyDB.18.1

安装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


–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系 所以需要加上 –with-init-style=debian-systemd
更多详细的设置可以在Netatalk的安装目录中通过 ./configure -h 查看到更详细的配置

开始编译 make 安装 sudo make install

配置 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启动&自启

到此Netatalk已可以正常使用 但默认不会自启动。

systemctl start netatalk #启动netatalk
systemctl enable netatalk #开机自启netatalk

根据在编译时使用的–with-init-style 参数是systemd还是sysv 设置启动&自启的指令略有不同,此处以systemd为列

AFP共享的远程访问

AFP共享不像samba一样 需要手动设置 smbpasswd 才能使用系统内账户+smb密码进行登录。(root默认禁止)
在mac系统上 commed+k 打开连接窗口 输入afp服务器的ip地址即可

Tip:本文未配置Avahi 所以afp服务器不能被mac系统自动发现

TimeMachine自动备份

经过测试可以完美使用 且运行良好。