Мысли о программировании, жизни и христианстве.

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)».

Поделиться