Time Machine на Tomato by Shibby для Asus RT-AC68U
Озадачился вот своим роутером. Надоела нестабильность стоковой прошивки и решил попробовать что-то новое. Решил поставить Tomato by Shibby. Про установку из под Windows достаточно подробно написано в публикации «ASUS RT-AC68U — How to flash TomatoUSB for RT-AC68U». Но у меня уже стояла прошивка от Merlin с открытым Telnet, поэтому все ограничилось подключением к роутеру и командами nvram erase, затем nvram commit, выбором файла с последней (131) прошивкой на её сайте и установкой.
В отличии от стоковой, у этой прошивки нет встроенной поддержки Time Machine, поэтому её пришлось добавить. Операция проходила в два этапа.
Этап первый: Установка репозитория Entware
Раньше нужно было сделать много манипуляций, но сейчас репозитории для моего роутера устанавливается достаточно просто. Проверьте доступ по SSH в роутере Administration → Admin Access и в путь.
Для флешки отформатированной в ext2/ext3 с меткой ENTWARE делаем следующие настройки роутера в USB and NAS → USB Support:
В поле Run after mounting вносим:
#!/bin/sh
/opt/etc/init.d/rc.unslung start
и в поле Run before unmounting следующее:
#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 15
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
mount -o remount,ro $i
done
Не забываем сохранить изменения. Переходим в Administration → Scripts → Init page, вводим
echo "LABEL=ENTWARE /opt ext3 defaults 1 1" >> /etc/fstab
и вновь сохраняем. Перегружаем роутер и устанавливаем Entware. В текущей прошивке он устанавливается простой командой через Telnet.
entware-install.sh
Дополнительно об установке можно почитать в статье «Устанавливаем Entware.arm на маршрутизатор с прошивкой tomato от Shibby»
Этап второй: Настройка Time Machine
Приступим к настройке Time Machine и начнём с установки нужных пакетов. Может они не все нужны, поэтому комментарии экспертов приветствуются!
Устанавливаем netatalk для реализации протокола AppleTalk нужного для Time Machine и avahi-daemon с утилитами, для имитации сервиса Bonjour. Bonjour нужен для наглядного представления Time Machine в Mac OS. Слухи ходят, что netatalk сам это умеет и он не нужен
Пакет busybox даст нам возможность использовать некоторые недоступные Unix команды. Например, добавлять пользователей.
opkg install netatalk avahi-daemon avahi-utils busybox
Создаём файл S00setup с первой строкой #!/bin/sh для загрузки настроек нужных для Time Machine при перезагрузке роутера и кладём его в /opt/etc/init.d/S00setup
Теперь сделайте его исполняемым
chmod +x /opt/etc/init.d/S00setup
Настраиваем avahi
Настройку avahi начинаем с создания файла afpd.service со следующем содержанием
<?xml version="1.0" standalone='no'?><!--*-nxml-*-->
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">%h</name>
<service>
<type>_afpovertcp._tcp</type>
<port>548</port>
</service>
<service>
<type>_device-info._tcp</type>
<port>0</port>
<txt-record>model=TimeCapsule6</txt-record>
</service>
</service-group>
который кладём по следующему пути /opt/etc/avahi/services/afpd.service
Редактируем /opt/etc/avahi/avahi-daemon.conf, раскомментировав линию host-name и дав имя:
host-name=TimeCapsule
Чтобы TimeCapsule показывалась в Finder всем, нужно добавить группу nogroup для всех пользователей.
addgroup nogroup
Делаем автосоздание группы при перезапуске пользователя.
echo "addgroup nogroup" >> /opt/etc/init.d/S00setup
Запускаем avahi
/opt/etc/init.d/S42avahi-daemon start
и в боковой панели Finder должена появиться TimeCapsule.
Настраиваем netatalk
Приступаем к самому важному. Настраиваем netatalk начиная с редактирования файла /opt/etc/netatalk/AppleVolumes.default. Добавляем в конце следующую строку:
/mnt/LABELDISK/TimeMachine "TimeMachine" volsizelimit:300000
veto:"/lost+found/Network Trash Folder/Temporary Items/" cnidscheme:dbd options:usedots,upriv,tm allow:USER
, где /mnt/LABELDISK/TimeMachine — путь к папке, где будут хранится бекапы;
«TimeMachine» — имя расшаренного ресурса, которое появится в настройках Time Machine в Mac OS;
volsizelimit:300000 — максимальный размер бекапов (~314GB);
veto:«/lost+found/Network Trash Folder/Temporary Items/» — прячем не нужные папки;
cnidscheme:dbd — уменьшаем количество ошибок (может влиять на скорость создания бекапа);
options:usedots,upriv,tm — показываем что можно использовать для создания Time Machine и кто может это делать;
allow:USER — пользователь имеющий доступ к папке для бекапов, которого мы сейчас создадим.
Поменяем конфигурацию netatalk по следующему пути /opt/etc/netatalk/afpd.conf удалив или закомментировав старую и вставив новую
- -tcp -noddp -uamlist -uams_dhx.so,uams_dhx2_passwd.so -nosavepassword
Эта конфигурация отключает гостевой доступ, возможность сохранить пароли локально и настраивает работу с паролями.
Создаём пользователя USER с паролем PASS (это пример, пароль какой вы хотите) и даём ему права на папку для бекапов.
adduser USER
chown -R USER /mnt/LABELDISK/TimeMachine/
Настраиваем автосоздание этого пользователя при перезагрузке роутера.
echo 'adduser USER' >> /opt/etc/init.d/S00setup
echo 'echo -e "PASS\PASS" | passwd USER' >> /opt/etc/init.d/S00setup
Вот тут загвоздка! Пользователь создаётся, но пароль ему не присваивается. Может кто подскажет?
В результате у нас получается следующее содержимое файла /opt/etc/init.d/S00setup
#!/bin/sh
addgroup nogroup
adduser USER
echo -e "PASS\PASS" | passwd USER
Перезапускаем netatalk
/opt/etc/init.d/S27afpd restart
Или просто перезагрузите роутер целиком. Теперь вы должны подключиться к TimeCapsule как созданный выше пользователь и настроить Time Machine на Mac OS.
P.S. Я ещё не достаточно долго тестировал работу Time Machine на Tomato by Shibby и мог что-то забыть, поэтому возможны неточности.
P.S.S. Дополнительно можно почитать «Using an ASUS router as a Time Capsule», «Concisest guide to setting up Time Machine server on Ubuntu Server 12.04, 14.04 & Debian» и «Time Capsule on OpenWRT (Apple File Protocol Server with Time Machine Support)».