Raspberry Pi в качестве Time Capsule для Mac OS



Об одноплатном компьютере Raspberry Pi узнал чуть больше полугода назад и сразу появилось желание использовать его в качестве домашнего медиасервера. Но ожидание своего заказа в течении 4 месяцев и блуждание по Интернету навели на мысль использовать Raspberry Pi в качестве хранения резервных копий MacBook Pro, т.е., настроить RPi (Raspberry Pi) таким образом, чтобы система Mac OS X по локальной Wi-Fi сети создавала свои резервные копии автоматически.

Данная статья является попыткой создать пошаговую инструкцию по настройке RPi для использования в качестве Time Capsule.

В процессе настройки необходимо будет пройти следующие шаги:
  • подключение и настройка внешних USB дисков
  • установка поддержки файловой системы HFS+
  • настройка автоматического монтирования жестких дисков при включении/перезагрузке RPi
  • установка и настройка Avahi и Netatalk демонов
  • настройка Mac OS X


Подключение и настройка внешних USB дисков


Диск, отформатированный под файловую систему HFS+, необходимо подключить к внешнему питанию (или через активный USB хаб), затем подсоединить к RaspberryPi. Я использовал подключение через активный USB-хаб, так как при подключении портативного диска WD My Passport 1TB без дополнительного питания, RPi перезагружался и неправильно монтировал диск.

Предварительно установив операционную систему на RPi и настроив локальную сеть, подключаемся через SSH и определяем наш диск с помощью команды sudo blkid:
pi@raspbmc:~$ sudo blkid
/dev/zram0: UUID="5d50a251-be5b-45be-af7a-51e1ef903041" TYPE="ext2" 
/dev/mmcblk0p1: UUID="FC65-D8D3" TYPE="vfat" 
/dev/mmcblk0p2: UUID="05ccd8fa-099d-4d6e-9ea3-dc8f77dd0127" TYPE="ext4" 
/dev/sda1: LABEL="EFI" UUID="70D6-1701" TYPE="vfat" 
/dev/sda2: UUID="43c5813f-7bce-374e-b111-b1b7e74464c7" LABEL="timeR" TYPE="hfsplus"

В моем случае, timeR с файловой системой hfsplus называется sda2. Уникальный идентификатор UUID можно запомнить, в дальнейшем пригодится.

Устанавливаем поддержку файловой системы HFS+:
pi@raspbmc:~$ sudo apt-get install hfsplus hfsutils hfsprogs

Создаем точку (папку) монтирования диска:
pi@raspbmc:~$ sudo mkdir /media/timemachine

и монтируем наш диск sda2 в режиме чтения/записи:
pi@raspbmc:~$ sudo mount -o force /dev/sda2 /media/timemachine

Проверяем:
pi@raspbmc:~$ mount
/dev/mmcblk0p2 on / type ext4 (rw,noatime)
proc on /proc type proc (rw)
devpts on /dev/pts type devpts (rw,noexec,nosuid,relatime,gid=5,mode=620)
/dev/mmcblk0p1 on /boot type vfat (rw,noatime)
/dev/sda1 on /media/EFI type vfat (rw,nosuid,nodev,sync,noatime,uid=0,gid=0,shortname=mixed,dmask=0077,utf8=1,showexec,uhelper=udisks)
/dev/sda2 on /media/timemachine type hfsplus (rw,force)

отлично, sda2 подмонтировалось в режиме rw — чтения/записи.

Для автоматического монтирования диска, необходимо внести изменения в файл /etc/fstab:
pi@raspbmc:~$ sudo nano /etc/fstab

В самый конец добавляем:
UUID="43c5813f-7bce-374e-b111-b1b7e74464c7"  /media/timemachine hfsplus rw,force,exec,auto,users 0 0

Указываю идентификатор UUID, чтобы можно было подключить диск к любому порту USB RPi.

Чтобы удостовериться в правильности монтирования, перезагружаю RPi:
pi@raspbmc:~$ sudo reboot

С помощью команды, проверяю, чтобы жесткий диск подключился в режиме rw.:
pi@raspbmc:~$ mount

Если, по какой-либо причине, диск не подключается в режиме чтения/записи (rw), то необходимо произвести проверку диска:
pi@raspbmc:~$ sudo fsck.hfsplus -f /dev/sda2


Установка и настройка Avahi и Netatalk демонов


Устанавливаем дополнительные пакеты, необходимые для работы Avahi и Netatalk:
pi@raspbmc:~$ sudo apt-get install avahi-daemon libavahi-client-dev libdb5.3-dev db-util db5.3-util libgcrypt11 libgcrypt11-dev

Закачиваем последнюю версию Netatalk на RPi любым удобным для Вас способом с сайта netatalk.sourceforge.net:
Я скачивал с сайта на MacBook, распаковывал архив и папку копировал на RPi:
MacBook-Pro:~ other$ scp -r /Users/other/Downloads/netatalk-3.0.2 pi@192.168.1.99:~/

Для сборки Netatalk необходимо установить дополнительные, связные пакеты, без которых компиляция может завершиться с ошибкой:
pi@raspbmc:~$ sudo apt-get install make gcc binutils

Заходим в папку на RPi с исходниками Netatalk и выполняем следующие команды:
pi@raspbmc:~/netatalk-3.0.2 ./configure --with-init-style=debian --with-zeroconf
pi@raspbmc:~/netatalk-3.0.2 make
pi@raspbmc:~/netatalk-3.0.2 sudo make install

Настраиваем Netatalk, редактируя файл /usr/local/etc/afp.conf:
pi@raspbmc ~ $ sudo nano /usr/local/etc/afp.conf

Можно заменить содержимое afp.conf указанной ниже настройкой:
;
; Netatalk 3.x configuration file
;

[Global]
; Global server settings
uam list = uams_guest.so, uams_dhx.so, uams_dhx2.so

;[Homes]
basedir regex = /home

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

[Time Machine Raspberry]
path = /media/timemachine
time machine = yes

После редактирования перезагружаем демоны:
pi@raspbmc ~ $ sudo /etc/init.d/netatalk start
pi@raspbmc ~ $ sudo /etc/init.d/avahi-daemon start

И добавляем их в автозагрузку:
pi@raspbmc ~ $ cd /etc/init.d/
pi@raspbmc ~ $ sudo update-rc.d netatalk defaults

На этом работа с Raspberry Pi закончена.

Настройка Mac OS X


Теперь необходимо немного настроить Вашу операционную систему Mac OS X, для этого в Терминале вводим команду:
MacBook-Pro:~ other$ Defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1 

Вот и все! В боковой панели Finder должно появится новое устройство, у меня оно называется raspbmc:


Заходим в системные настройки Mac OS X, и подключаем диск для резервного копирования. Дополнительно, необходимо будет ввести имя пользователя и пароль RPi. Через некоторое время Mac OS X начинает создавать резервную копию:


После создания резервной копии, была проверена работоспособность запуском программы Time Machine:


Пятидневный период работы Time Capsule из RPi показал себя с хорошей стороны. Mac автоматически находит диск для резервного копирования и работает с ним.

За все время была обнаружена одна проблема, когда в квартире отключали электроэнергию. После включения, диск к RPi монтировался в режиме read-only, в результате чего TimeMachine отказывалась сохранять бекапы.
Проблема решилось ручной проверкой диска с помощью команды:
pi@raspbmc:~$ sudo fsck.hfsplus -f /dev/sda2

где /dev/sda2 — диск для резервных копий.

Вся система в сборе выглядит следующим образом:


Один диск используется для бекапов Time Machine, второй — для хранения видео и музыки, которую воспроизводит RPi на телевизоре.
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 69
  • +3
    Представляю что будет если мак решит забэкапиться когда Вы что-нибудь смотрите на ТВ ;)
    • +2
      Уже тестировал подобное: RPi воспроизводил фильм .mkv, 1080p, 20Гб и одновременно делался бекап Time Machine.
      Фильм притормаживал через каждые 5 секунд.
      Проблема решилась закрытием крышки ноутбука :)
      • +1
        mkv, 1080p, 20Гб — а чем вы его смотрите? Попробовал raspbmc — на таких файлах картинка залипает на доли секунды каждые секунд 5.
        • 0
          На Raspberry Pi установлена ОС Raspbmc без дополнительных видео модов.
          Тормоза и залипания только при одновременном резервном копировании на RPi, в остальных случаях все работает стабильно.
          • 0
            У меня тоже самое… и тянет далеко не все. 720p без проблем, 1080p c флешки с залипаниями, если битрейт высокий. А уж как оно тормозит, пока доберешься до нужного файла…
            • 0
              Может проблема с скорости работы флешки?
              Попробуйте на внешнем ЖД, только обязательно диск должен быть с внешним питанием, иначе питания RPi не хватит.
              • 0
                Пробовал — с ним тоже самое. Компьютер с него играет без проблем.
                • 0
                  Я тут подумал, у меня редакция RPi с 512 МБ на борту.
                  Может в этом все дело?!
                  • 0
                    Очень может быть. У меня самая первая… там вроде 256 МБ
                    • 0
                      Если у вас raspbmc, то советую зайти в пункт «программы», там есть програмка для настройки распберри, можно очень легко разогнать ее. Не помню как точно называется пункт настройки, но там все делается выставлением режима работы, что-то типа «normal», «fast» и «super».

                      Железка становится заметно шустрее.
      • 0
        все будет в порядке
        • +5
          Нет, не будет.
          • 0
            Точно. Я специально брал N16 (на тот момент очень приличный роутер) вместо dir 320, т.к. даже на нем скорости неудовлетворительные. Что уж говорить, про пирог. Но инициатива отличная. У меня капсула на freebsd сервере, подключенном к роутеру.
      • 0
        У меня все это на Убунте крутится, но я поглядываю на этот компьютер, потому как хочу снизить энергопотребление.

        Вы не замеряли польза от такого поступка будет значительная?
        • +1
          в плане энергопотребления? да ну бросьте. Значительным этот поступок будет только для ярых активистов партии «зеленых»
          • 0
            У меня просто этот сервак дома крутится круглосуточно с винтами, эйпл ТВ, аймак и аквариум и все это накручивает какие то жуткие киловатты. Тут как бы поневоле хочется от чего то избавиться в пользу экономии.
            • +2
              Отключи холодильник, электроплиту, микроволновку…
              • 0
                Ха, жаль, что Ubuntu не умеет понижать влажность в квартире… Этой мой самый энергоёмкий девайс.
        • +1
          Тайм капсула, все-таки, это еще мощный двухдиапазонный WiFi роутер. Не пробовали наращивать систему беспроводным адаптером?
          • 0
            Фиговый из капсулы роутер, igmp не знает (iptv не посмотреть), скорости средние.
            • 0
              все это только ради iptv? тестил как-то airport extreme, на 5ггц более чем нормальная скорость, а какие у вас альтернативы?
              • 0
                Альтернативы в качестве роутера? Валом. Я бы взял linksys ea4500 или те, что недавно анонсировали с 802.11ас. Альтернатив где в одной коробочке роутер+2тб+time machine за 9к я не знаю. Но если скорость меня окончательно перестанет устраивать, то я просто куплю отдельный роутер, а капсула будет только хранилищем.
                • 0
                  почему именно ea4500?
                  • 0
                    мощный, красивый, внутренние антенны, линксис
              • 0
                Не соглашусь. Скорость работы с техникой Apple и мощность передатчика сравнительно высоки. Для роутера без внешней антенны пробивать 4 ж/б перекрытия в n стандарте и давать возможность смотреть 720p видео — это просто сказка.
                А наличие/отсутствие какого-либо протокола, извиняюсь, на качество роутера не очень влияет. Большая часть роутеров без DD-WRT/OpenWRT/etc. тоже его не держат, да и в основном не юзабельны. Тут же стабильная netbsd-образная система, работающая годами без перезапусков и проблем, пока не вздуются кондеры на блоке питания :) Конечно, кастомизировать в ней нельзя ровным счетом ничего, но это можно пережить.
                • +2
                  см. мой камент выше
                  Дешевые и ужасные роутеры типа dlink dir 300 или медленный zyxel p330 вполне справлялись с iptv моего домашнего провайдера. А коробочка за 300 баксов — чего-то нет.
                  • +3
                    говорят, в багажник Тесла не влазит мешок картошки… и 220 км/ч он не едет. гавно, одним словом!
                    • 0
                      ну, просто Вам не подходят роутеры без поддержки iptv. Кому-то оно нафиг не нужно.
                • 0
                  наверно правильнее было бы просто подключить RPi к wifi-роутеру.
                  • +1
                    так уже не аккуратно выходит все вместе: Pi + роутер + винт + хаб… вот если бы 1.8-2.5" винт встроить в корпус, а wi-fi сделать мини-заглушкой + добавить питание без хаба…
                    • 0
                      Согласен, сейчас у меня не аккуратный вариант.
                      • 0
                        у вас он еще и к компьютеру и монитору подключен, потому это нормально — такой себе испытательный полигон :)
                        • 0
                          С компьютером связь исключительно беспроводная.
                  • 0
                    К сожалению, не пробовал.
                    У меня RPi подключен к роутеру Ethernet кабелем.
                    Понятно, что полного сходства с Time Capsule. Я же хотел добиться резервного копирования по Wi-Fi, так как подключать постоянно внешний диск к ноутбуку неудобно.
                  • 0
                    Интересно, получится ли накатить такой бэкап на чистую систему?
                    • 0
                      А в чем его отличие от бекапа на Time Capsule?
                      Запуск приложения Time Machine показал его полную работоспособность.
                      • 0
                        Не так выразился, имел ввиду при установке системы. Но в общем никто не мешает сначала поставить систему, а потом уже восстанавливаться после необходимых манипуляций.
                        • 0
                          Ну так при установке же предлагает восстановиться из TimeMachine, не важно какой.
                    • +1
                      А зачем тут RPi по идее подойдет любой отформатированный в HFS+ сетевой NAS или я путаю?
                      • 0
                        Что бы на телевизоре фильмы смотреть.
                      • 0
                        У меня сейчас HP Microserver работает как NAS / TimeCapsule (lxc контейнеры), все упирает в сетевую плату, около 100 мбит и процессор под 70%.
                        • +2
                          1. Вот статья — подробнее чем ваша, отлично адаптируется под Pi
                          2. Диск не обязательно должен быть в HFS+
                          3. Если настроить afpd.service, не нужно будет мучить мак — Pi будет видеться в сети как родная капсула
                          • 0
                            У меня уже адаптированный под RPi вариант.
                            Кроме того, в статье присутствует файл AppleVolumes.default, который версии netatalk 3.* не используется.

                            Мак не мучается, там лишь включается поддержка TMShowUnsupportedNetworkVolumes.
                            • 0
                              Но ведь куда приятнее, когда мак видит вашу систему как родную капсулу.
                          • 0
                            Не понял зачем учить линух на Пи hfs`у, netatalk`у глубоко пофигу на фс. А вообще статей по настройке netatalk`а навалом, эта лишь показывает что можно по Пи его поднять без тормозов? :)
                            • 0
                              Дело в том, что при использовании Time Capsule, компьютер создает растущий образ диска, поэтому и используется HFS+ фс.
                              Для работы с NTFS RPi ведь тоже нужно было бы обучать.
                              • 0
                                Так а почему HFS+? Почему это нельзя на других FS?
                                • 0
                                  Но почему не взять то любую другую, родную для линуха фс?
                                  • 0
                                    Хотя бы для того, чтобы можно восстановится с жесткого без использования RPi.
                                    • –1
                                      Зачем тогда тут вообще Пи? :)))
                              • +1
                                TMShowUnsupportedNetworkVolumes 1 -слетит после апдейта системы.
                                Малинка — это прикольно. Сам заглядываюсь на нее, но пока моргаю лампочками на ардуине (купил исключительно в целях образования/обучения детей! В пятом класе — уже основы С дома по внекласному чтению проходим ).
                                Я подобные вещи (тайм капсула) делал с dlink dns 320-м — единственный минус — медлено. очень медленно работает. У капсулы — родной протокол appletalk, хоть и поверх tcp/ip.
                                (offtopic on) Есть, кто в Киеве наигрался малинкой? Приму в дар по сходной цене :) (offtotic off)
                                • +1
                                  TMShowUnsupportedNetworkVolumes 1 -слетит после апдейта системы.


                                  Не слетит, так как команда Defaults влияет на пользователя, а не на системные файлы.
                                  • 0
                                    Усыновите меня!
                                  • +1
                                    а вы пробовали восстанавливаться?
                                    я имею в виду установку системы из ТМ на голый жесткий диск.
                                    то есть в установщике я смогу вписать «Defaults write com.apple.systempreferences TMShowUnsupportedNetworkVolumes 1 »?
                                    • +1
                                      Отличный вопрос, браво!!!
                                      • 0
                                        Что мешает подключить винт кабелем к компьютеру и восстановить систему?
                                        • +1
                                          Проверил на собственной шкуре ноутбуке.
                                          Загрузился в режим восстановления (cmd+R после перезагурзки) и выбрал «Восстановить из резервной копии Time Machine».
                                          Система запросила пароль от Raspberry Pi и удачно к ней подключилась:
                                          Смотреть скриншот

                                        • 0
                                          У меня есть винчестер с 1.5 летней историей бекапов Time Machine, который я подключаю кабелем к ноутбуку.
                                          Можно ли продолжить историю бекапов если подключить его к RPI или придется начинать все с чистого листа?
                                          • 0
                                            В принципе такое возможно, но с дополнительными манипуляциями. Нужно пробовать.

                                            Проблема в том, что при подключенном диске к Mac OS, резервная копия сохраняется в папке Backups.backupdb в корне диска.
                                            А вот на Time Capsule создается растущий образ диска с именем MacBook Pro.sparsebundle, где вместо MacBook Pro будет имя Вашего Мака. И когда Вы откроете этот образ в своем Маке, тогда там уже будет папка Backups.backupdb.

                                            Теоретически, можно создать подобный растущий образ диска с помощью Дисковой утилиты и скопировать туда папку Backups.backupdb с изменением прав доступа ко всем вложенным файлам.
                                            После этого Time Machine может подхватить историю бекапов и продолжить с ними работу.
                                            Нужно пробовать.
                                            • 0
                                              Понятно, похоже придется оставить все как есть — у меня бекапов уже больше 1Тб, покупать еще один винт на 1-2Тб я пока не планирую.
                                          • 0
                                            А если, допустим, в в фотошопе открыть файл на диске вашей чудо-машины и попробовать его пару раз сохранить внося изменения, система повиснет так же намертво, как на родной Тайм капсуле или нет?
                                            Я собственно, вот почему интересуюсь: forums.adobe.com/message/4831660
                                            • 0
                                              Я не использую диск на RPi в качестве внешнего хранилища ибо долго открывать и сохранять туда файлы.
                                              Только Time Machine сохраняет туда резервный копии и все.
                                              К тому же, нет возможности тестить, так как с фотошопом не работаю.
                                            • +2
                                              Почему автор не указал, что при такой команде

                                              pi@raspbmc:~$ sudo mount -o force /dev/sda2 /media/timemachine
                                              

                                              диск монтируется в режиме чтения-записи, но журналу на это диске будет плохо, и поэтому ему приходится запускать проверку диска после отключения питания. Если это диск для бекапа, то потеря данных на нем как раз важна.
                                              В комментариях уже советовали использовать родную для линукса файловую систему, а не городить огород из полуподдерживаемой HFS+.
                                              • 0
                                                Вопрос такой, может кто-то пробовал что то подобное провернуть с помощью Android устройства с диском по OTG
                                                • 0
                                                  Есть возможность также подключить 2 диска в Raid1?
                                                  • 0
                                                    Думаю, такое вполне возможно. Не пробовал.
                                                    • 0
                                                      Софтовый рейд, думаю, скушает последние вычеслительные ресурсы малины, еще и через USB. Очень плохая затея.
                                                  • НЛО прилетело и опубликовало эту надпись здесь
                                                    • 0
                                                      так как при подключении портативного диска WD My Passport 1TB без дополнительного питания, RPi перезагружался и неправильно монтировал диск.


                                                      А у меня мой WD 1TB умер после этого. Начал щелкать и перестал определяться системой.

                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.