Превращаем 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 и т.д.):

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

И обновите Raspbian:

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

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

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

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

1pi@PiTime:~ $ sudo apt install hfsutils hfsprogs

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

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

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

lsblk

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

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

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

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

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

UUID

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

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

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

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

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

fstab

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

Проверьте:

df

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

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

Установка Netatalk

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

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

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

01pi@PiTime:~ $ netatalk -V
02netatalk 3.1.12 - Netatalk AFP server service controller daemon
03 
04This program is free software; you can redistribute it and/or modify it under
05the terms of the GNU General Public License as published by the Free Software
06Foundation; either version 2 of the License, or (at your option) any later
07version. Please see the file COPYING for further information and details.
08 
09netatalk has been compiled with support for these features:
10 
11      Zeroconf support: Avahi
12     Spotlight support: Yes
13 
14                  afpd: /usr/sbin/afpd
15            cnid_metad: /usr/sbin/cnid_metad
16       tracker manager: /usr/bin/tracker daemon
17           dbus-daemon: /usr/bin/dbus-daemon
18              afp.conf: /etc/netatalk/afp.conf
19     dbus-session.conf: /etc/netatalk/dbus-session.conf
20    netatalk lock file: /var/lock/netatalk

Настройка Netatalk

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

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

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

01pi@PiTime:~ $ cat /etc/nsswitch.conf
02# /etc/nsswitch.conf
03#
04# Example configuration of GNU Name Service Switch functionality.
05# If you have the `glibc-doc-reference' and `info' packages installed, try:
06# `info libc "Name Service Switch"' for information about this file.
07 
08passwd:         files
09group:          files
10shadow:         files
11gshadow:        files
12 
13hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4 mdns
14networks:       files
15 
16protocols:      db files
17services:       db files
18ethers:         db files
19rpc:            db files
20 
21netgroup:       nis

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

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

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

1[Global]
2  mimic model = TimeCapsule6,106
3 
4[Time Machine]
5  path = /media/tm
6  time machine = yes

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

01pi@PiTime:~ $ cat /etc/netatalk/afp.conf
02;
03; Netatalk 3.x configuration file
04;
05 
06[Global]
07; Global server settings
08  mimic model = TimeCapsule6,106
09 
10[Time Machine]
11  path = /media/tm
12  time machine = yes
13 
14; [Homes]
15; basedir regex = /xxxx
16 
17; [My AFP Volume]
18; path = /path/to/volume
19 
20; [My Time Machine Volume]
21; path = /path/to/backup
22; time machine = yes

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

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

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

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

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

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

1@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

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

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

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

Tips and tricks

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

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

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

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

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

1sudo sysctl debug.lowpri_throttle_enabled=0

Заключение

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

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

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

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