张天昀的个人博客

树莓派搭建局域网时间机器服务器

2020年05月27日

使用Netatalk配置相关服务,非samba协议挂载网络磁盘做法。

所需材料

  • 树莓派一块
  • 移动硬盘一块

安装操作系统

直接从树莓派官网下imager,然后烧到SD卡上就行;或者下好镜像自己烧进去。

重新加载SD卡磁盘,进入/Volumns/boot,做两件事:

在磁盘根目录创建一个叫做ssh的空文件,让系统第一次启动时启用sshd

$ touch ssh

如果没有有线以太网连接的话,可以配置headless的无线连接,将对应内容写入到磁盘根目录的wpa_supplicant.conf

country=CN
ctrl_interface=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="WIFI_SSID"
psk="WIFI_PASS"
key_mgmt=WPA-PSK
scan_ssid=1
}

卸载SD卡磁盘,将SD卡插到树莓派上,通电开机。

连接树莓派进行配置

树莓派启动后会自动通过Avahi广播主机名,根本不需要去查IP地址。

$ ssh pi@raspberrypi.local

用默认用户密码raspberrypi登陆。

登陆后运行raspi-config进行进一步配置。

  • 修改hostname
  • 修改sshd配置
  • 修改用户名和密码
  • 添加弱权限用户

创建HFS+磁盘并挂载

安装依赖:

$ apt install hfsutils hfsprogs

插入磁盘并确定磁盘文件,然后将其格式化:

$ mkfs.hfsplus /dev/sdx

创建挂载点:

$ mkdir /path_to_mountpoint

/etc/fstab中添加表项(磁盘UUID在/dev/disk/by-uuid中可以找到):

UUID=xxxxxxxx /path_to_mountpoint hfsplus force,rw,user,noauto 0 0

挂载磁盘:

$ mount /path_to_mountpoint

安装并配置Netatalk

$ apt install netatalk
  • /etc/nsswitch.conf文件的hosts:一行末尾添加mdns4 mdns
  • 修改/etc/netatalk/afp.conf
    • Global区中可以添加mimic model = TimeCapsule6,106
    • 按照注释自行修改挂载点路径即可
    • 删除time machine = yes一行前的注释
    • 有需要则可以开启普通的文件共享服务

启动相关服务:

$ systemctl start avahi-daemon
$ systemctl start netatalk

配置时间机器

可以到finder去手动连接afp://hostname.local,或者直接打开macOS时间机器偏好设置,在“选择磁盘”中可以找到hostname.local这个磁盘。

选择该磁盘,使用具有对挂载点目录有读写权限的用户登陆,开始时间机器备份。

使用效果

  • 无需每次插入硬盘,进入局域网环境即自动连接到树莓派
  • Wi-Fi环境下备份速度大约为有线连接的1/10,还算能接受

疑难问题

  1. 修改root用户密码使用完后,使用passwd -l root锁定账户。
  2. 每次重启树莓派后需要手动挂载外置硬盘;
  3. 时间机器疑似不支持通过密钥认证身份,必须使用账户密码。

References