Пользователь
0,0
рейтинг
12 февраля 2013 в 16:52

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 на телевизоре.
Александр Фисун @OtherF
карма
14,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама

Самое читаемое

Комментарии (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 умер после этого. Начал щелкать и перестал определяться системой.

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