用板子自建 Time Capsule/NAS

人是很懶的,是愛摸魚的。最近我已經懶到不想拿著行動硬碟到處走了,每天拖一根線,太費事了。

那怎麼辦?正好翻出來閒置的一個開發板,全志 A20,板載 SATA,故打算自建 NAS。順便查了查,有 afp (Apple Filing Protocol) 在 Linux 的開源實現,叫做 netatalk,能夠自建 Time Machine 伺服器,也就是可以自己造一個廉價 Time Capsule 了吧。

Allwinner 的板子。

Allwinner 的板子。

說幹就幹,上網買了塊 WD 的 2TB 紅盤,開始搭。

材料清單:

  • LeMaker Banana Pi Pro
  • WD20EFRX 2TB NAS HDD
  • 某不知品牌 SATA 外接電源,提供 4Pin 供電。(*)
  • SATA線,SATA電源。
  • 一個清醒的大腦。

(*) 其實在 Banana Pro 上是有 SATA 供電輸出的,無奈只有 5V 0.38A 輸出,帶不起這塊需要 5V 0.6A 的硬碟。這個讓我疑惑了很久,最早,開機用串列埠連上板子,看見 u-boot 拋出來一個 SATA AHCI Phy Calibration Failed。不明所以,查了 Google,有人說是核心問題。於是試著換了幾個版本的核心,均無果。後來,拿來電錶一測,嚯,SATA電源輸出0V,才發現供電一直接在了板子的 USB-OTG 上,而不是電源介面。不知道這電路怎麼連的,接在 OTG 口的話,就不會給 SATA 口上電。雖然切換到電源口上 SATA 電源口有了輸出,但功率根本沒法讓硬碟轉起來,於是買了外接 SATA 電源。如果用 SSD,大概不會需要外接電源。(所以說需要一個清醒的大腦啊。)

說到全志,sunxi 的板子都能直接上主線核心,用起來很是愉快。我用了 armbian 提供的 Ubuntu 16.04.1,核心 4.7.3。

接下來的事情沒什麼技術含量了(好像前面也沒有。),接上硬碟,fdiskmkfs,最後mount 上去,開始編譯 afp 相關。在 Ubuntu 源裡也有個 netatalk,但是不是同一個大版本,故無視之。從官方 wiki 看到,想要編譯,需要下列的包:

apt-get install build-essential devscripts debhelper cdbs autotools-dev dh-buildinfo libdb-dev libwrap0-dev libpam0g-dev libcups2-dev libkrb5-dev libltdl3-dev libgcrypt11-dev libcrack2-dev libavahi-client-dev libldap2-dev libacl1-dev libevent-dev d-shlibs dh-systemd

真多。但是官方好像漏了個 libtdb-dev,反正在我編譯的時候提示缺少了 tdb 庫。

找個地方,下載源碼下來:

mkdir netatalk && cd netatalk && curl -L http://downloads.sourceforge.net/project/netatalk/netatalk/3.1.10/netatalk-3.1.10.tar.gz | tar zxvf -

在寫這篇東西的時候,它版本是 3.1.10,之後是怎樣我也不知道,建議去官網看。

./configure \
        --with-init-style=debian-systemd \
        --without-libevent \
        --with-cracklib \
        --enable-krbV-uam \
        --with-pam-confdir=/etc/pam.d \
        --with-dbus-daemon=/usr/bin/dbus-daemon \
        --with-dbus-sysconf-dir=/etc/dbus-1/system.d \
        --with-tracker-pkgconfig-version=1.0

然後就是一段鬼畜的 configure,不管他,直接敲進去回車,完成之後就是 make && sudo make install,沒什麼可說的。

一切完成之後,在 /usr/local/etc/afp.conf 配置 netatalk,

;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings

[Homes]
basedir regex = /home

; [My AFP Volume]
; path = /path/to/volume

[NAT's Time Machine]
path = /mnt/time_machine/nat/
time machine = yes
valid users = nat

我這裡就這麼幾行。和 samba 配置類似,valid users 裡寫的是允許登入的使用者,使用者是本地使用者,也就是 /etc/passwd/etc/shadow 裡的使用者。Homesbasedir 意思就是使用者家目錄的字首,或者說通配。這樣,使用者 nat 登入 afp 之後就會看到:

連接上板子上的 afp 之後。

連接上板子上的 afp 之後。

一個是到 /home/nat,一個是到 /mnt/time_machine/nat/,這時候開啟 Time Machine 設定,應該能看見備份盤了。

Time Machine 的硬碟選擇。

Time Machine 的硬碟選擇。

3 關於 “用板子自建 Time Capsule/NAS” 的評論

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *