Превращаем Raspberry Pi в Time Machine для OS X

Автор: | 25 января 2020

Raspberry Pi X820 V3.0 SSD HDD SATA

На фото – металлический корпус для использования Raspberry Pi 3 с платой X820 V3.0. Плата позволяет подключать к Малинке 2.5” жесткий диск или SSD в разъем SATA. Я давно уже собрал Малинку в таком корпусе и решил использовать как Машину Времени для OS X.

Железо для Time Machine

  • Raspberry Pi 3 B+ (можно и 2 B, если у вас такая завалялась)
  • Micro SD карточка (рекомендую 16Гб, но можно и меньше)
  • Micro SD Reader (для записи образа ОС для Raspberry Pi)
  • металлический корпус(опционально, красиво ведь)*
  • 2.5” SSD (можно и жесткий диск, я использовал SSD на 1Тб)*
  • X820 V3.0*
  • Ethernet-кабель **

* Можно использовать USB-диск вместо этих пунктов.
** Я не рекомендую WiFi, но можно и через него. Если у вас металлический корпус, то нужно использовать внешний свисток.

Установка и настройка Raspbian

ЗапишитеRaspbian Buster Liteна SD-карточку. Инструкции по записи образа есть на сайте Raspberry Pi. На Маке я также использую balenaEtcher, удобно записывать образы и не нужно предварительно их распаковывать. Далее нужно активировать SSH, в данном случае, достаточно создать пустой файл ssh и закинуть в корень на SD-карточку. Вставьте SD-карточку в Raspberry Pi, подключите Ethernet-кабель, кабель питания и включите Raspberry Pi.

Далее нужно настроить статический адрес, пропишите вручную на Raspberry Pi(если ваш маршрутизатор это поддерживает) или укажите в настройках на самом маршрутизаторе. Например, в MikroTik это делается путем выбора “Make Static”:

static IP-address

Залогиньтесь на Raspberry Pi по SSH (или используйте клавиатуру и монитор), смените пароль для пользователя pi (по умолчанию, логин pi, пароль raspberry), запустите raspi-config (настройте часовой пояс, hostname и т.д.):

pi@raspberrypi ~ $ passwd
pi@raspberrypi ~ $ sudo raspi-config

И обновите Raspbian:

pi@raspberrypi ~ $ sudo apt update && sudo apt upgrade -y && sudo apt dist-upgrade –y && sudo apt autoremove -y

После обновления желательно перезагрузиться:

pi@raspberrypi ~ $ sudo reboot

Настройка диска для Time Machine

Установите hfsutils и hfsprogs:

pi@PiTime:~ $ sudo apt install hfsutils hfsprogs

Отформатируйте диск в файловую систему hfsplus. Эта операция удалит все данные с диска!

pi@PiTime:~ $ sudo mkfs.hfsplus /dev/sda2 -v TimeMachine

Note: здесь предполагается, что ваш диск sda2, если к Raspberry не подключены другие диски, то так и будет. Если что, проверить можно командой lsblk:

lsblk

Note: на скриншоте раздел уже примонтирован, у вас его еще не будет.

Создайте точку монтирования:

pi@PiTime:~ $ sudo mkdir /media/tm && sudo chmod -R 777 /media/tm && sudo chown pi:pi /media/tm

Определите UUID вашего диска (sda2):

pi@PiTime:~ $ ls -lha /dev/disk/by-uuid | grep sda2

UUID

В моем случае это cf85c068-aabc-399a-8f7c-993fa788e8de

Отредактируйте fstab, чтобы иметь возможность монтировать диск:

pi@PiTime:~ $ sudo nano /etc/fstab

Добавьте следующую строку (заменив на тот UUID, который вы определили у себя)

UUID=cf85c068-aabc-399a-8f7c-993fa788e8de /media/tm hfsplus force,rw,user,noauto 0 0

Должно получиться вот так:

fstab

Попробуйте примонтировать отформатированный раздел:

pi@PiTime:~ $ sudo mount /media/tm

Проверьте:

df

Note: у меня диск уже частично заполнен, у вас в столбце Use% будет 0%.

Note: диск не монтируется автоматически, т.к. автоматическое монтирование может быть не надежно. Монтирование будет настроено далее.

Установка Netatalk

Установите пакет:

pi@PiTime:~ $ sudo apt install netatalk -y

Проверьте, что он установился и все работает:

pi@PiTime:~ $ netatalk -V
netatalk 3.1.12 - Netatalk AFP server service controller daemon

This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.

netatalk has been compiled with support for these features:

      Zeroconf support: Avahi
     Spotlight support: Yes

                  afpd: /usr/sbin/afpd
            cnid_metad: /usr/sbin/cnid_metad
       tracker manager: /usr/bin/tracker daemon
           dbus-daemon: /usr/bin/dbus-daemon
              afp.conf: /etc/netatalk/afp.conf
     dbus-session.conf: /etc/netatalk/dbus-session.conf
    netatalk lock file: /var/lock/netatalk

Настройка Netatalk

Отредактируйте nsswitch.conf:

pi@PiTime:~ $ sudo nano /etc/nsswitch.conf

Добавьте mdns4 и mdns в строку, которая начинается с hosts, должно получиться как-то так:

pi@PiTime:~ $ cat /etc/nsswitch.conf
# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         files
group:          files
shadow:         files
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

И отредактируйте afp.conf:

pi@PiTime:~ $ sudo nano /etc/netatalk/afp.conf

Добавьте следующее:

[Global]
  mimic model = TimeCapsule6,106

[Time Machine]
  path = /media/tm
  time machine = yes

Должно получиться как-то так:

pi@PiTime:~ $ cat /etc/netatalk/afp.conf
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
  mimic model = TimeCapsule6,106

[Time Machine]
  path = /media/tm
  time machine = yes

; [Homes]
; basedir regex = /xxxx

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

; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes

Note: все, что начинается с точки с запятой, – это комментарии, их можно даже удалить.

Запустите оба сервиса:

pi@PiTime:~ $ sudo service avahi-daemon start
pi@PiTime:~ $ sudo service netatalk start

Монтирование диска и запуск сервисов во время загрузки

Отредактируйте crontab:

pi@PiTime:~ $ sudo crontab -e

И добавьте строку:

@reboot sleep 30 && mount /media/tm && sleep 10 && chown pi:pi /media/tm && service avahi-daemon start && service netatalk start

Note: монтирование произойдет после 30-секундной паузы, это даст возможность жесткому диску запуститься, в случае с SSD sleep 30 можно убрать. && разделяют команды и предназначены для того, чтобы каждая следующая команда запускалась только после успешного выполнения предыдущей. Т.о. сервисы будут запущены только после успешного монтирования раздела.

Подключитесь к Time Machine

В Finder нажмите Command + K и в появившемся окне введите IP-адрес Raspberry Pi:

afp

В качестве логина используйте pi и пароль, который ранее установили.

В системных параметрах откройте настройки Time Machine, вы дожны там увидеть новый сервер Time Machine:

Backup Disks

Note: диск может отображаться как по IP-адресу, так и по hostname.local (c hostname, который вы указали для Raspberry в настройках).

Troubleshooting

Если OS X показывает ошибку, что раздел read only, проверьте, есть ли права на каталог у пользователя pi:

owner

Если нет, смените владельца, запустите команду:

pi@PiTime:~ $ sudo chown pi:pi /media/tm

Или запустите проверку файловой системы HFS+ (если в выводе dmesg есть ошибки ФС):

pi@PiTime:~ $ sudo umount /dev/sda2
pi@PiTime:~ $ sudo fsck.hfsplus -f /dev/sda2
pi@PiTime:~ $ sudo mount /dev/sda2
pi@PiTime:~ $ sudo reboot

Tips and tricks

Если вы используете Ethernet, то можете отключить WiFi добавив в файл /boot/config.txt следующую строку:

dtoverlay=disable-wifi

Если вы не используете протокол IPv6 (а в большинстве случаев это так), то отключите его добавлением в файл /etc/sysctl.conf следующих строк:

# to disable IPv6 on all interfaces system wide
net.ipv6.conf.all.disable_ipv6 = 1

После всех настроек Raspberry нужно перезагрузить.

При первом бекапе можно снять ограничение скорости следующей командой (запускается на OS X):

sudo sysctl debug.lowpri_throttle_enabled=0

Заключение

Рецепт в целом годный и рабочий. Скорость бекапа проверял и по WiFi и по Ethernet. WiFi, конечно, сильно проигрывает. MBP закачивал первый бекап часов 10-12 (свыше 200Гб, шифрование бекапа Time Machine было включено). Возможно ускорить процесс можно используя подобный гигабитный Ethernet-адаптер, не пробовал (не хватило портов в маршрутизаторе). Адаптер очень классный, быстро определяется и гигабит выдает без проблем, рекомендую.

Отдельное спасибо автору этой заметки.

Превращаем Raspberry Pi в Time Machine для OS X: 1 комментарий

Добавить комментарий