суббота, 27 февраля 2010 г.

Neo Freerunner : Домашний сервер на телефоне

После очередного прерванного разговора из-за перезагрузки аппарата стало как-то грустно и решил что нужно что-то с ним делать. Почему-то первое, что пришло в голову - давно хотел организовать себе домашний маленький серверок. Ну а чем Neo хуже ПК или ноутбука? Debian я на него уже ставил...

Так и порешил, что ничем. Для начала нам нужно поставить саму debian. Т.к. готовые бинарники уже давно не в моде - единственная найденная мною ссылка была битая, а сохраненный с давних времен архив не содержал в себе ядро, то решил что нужно ставить по уму.

Первая проблема, с которой столкнулся - не проходил пинг с Neo в интернет. В данном руководстве все хорошо описано, как и что нужно настроить. Однако в моем случае проблема заключалась в том, что компьютер, к которому подключался Neo, был соединен с внешним миром по кабелю, и мой арч терял эту связь. Я предполагаю, что он начинал слать пакеты на новый интерфейс, но с сетью я пока не так хорошо знаком, поэтому решил воспользоваться компьютером с wifi интернетом, что помогло.
Также, если у вас домашняя сеть находится в том же сетевом диапазоне, что и Neo, то я категорически советую поменять ip у Neo. В вики конечно описано, что в таком случае нужно сделать(где какие маски использовать), но у меня все заработало только после смены ip.

Теперь что касаемо установки debian. На моем SHR почему-то скрипт установки не воспринимал переменные окружения, поэтому мне пришлось поправить скрипт в ручную (конечно не с телефона, а по ssh через usb кабель).
О том, какие пакеты нужны, я думаю решите сами. Единственное что посоветую, это выбрать зеркало поближе к себе. Установка с самого близкого зеркала на канале в 60 Кбайт заняла почти 2 часа, но проходила в полностью автономном режиме.

После установки всех необходимых пакетов нужно решить, как этот сервер будет общаться с внешним миром. В моем случае встал вопрос о подключении его к роутеру. Варианта было 2: Через Usb-ethernet адаптер или по wifi. Для начала я решил остановиться на wifi, т.к. был не уверен в работоспособности usb-разветвлителя (Y-cable, о котором позже) и самого адаптера под linux. О настройке wifi можно почитать здесь, однако там говорится, что нужно применить патч. Т.к. пересобирать ничего не хотелось, то решил поискать еще и нашел страничку одного пользователя neo, где он говорит, что использовал ядро от andy на debian. Поставив это ядро, wifi заработал. При этом с первого раза взял WPA2 (ипользовал wicd).

Теперь можно подумать о том, куда наш сервер будет все сохранять. Т.к. usb-выход у телефона только один, а работать он будет круглые сутки, то нужно было придумать, как по одному кабелю его научить питаться и работать с диском. Здесь можно найти несколько решений этой проблемы. Я воспользовался так называемым Y-cable:


В инструкции сказано, что центральный разъем кабеля нужно подключить к питающему usb-порту, а второй - к устройству. Однако в моем случае все в точности наоборот.
Также нам понадобятся еще 2 переходника: мама-usb - мама-usb (для подключения диска) и мама-usb - мама-miniUsb (для подключения стандартного блока питания к телефону):


Также я предполагаю, что таким способом нельзя подключить флешки и другие девайсы, которым необходимо питаение. Поэтому я воспользовался usb-контейнером для sata-дисков с внешним питанием.
Для возможности одновременной зарядки и общения с внешним диском, нужно перевести usb-порт в режим хоста и снять с него питание:
echo host > /sys/devices/platform/s3c2410-ohci/usb_mode
echo 0 > /sys/devices/platform/neo1973-pm-host.0/hostmode
Однако если у вас тоже ядро от andy, то последний файл находится в другом месте. У меня он был тут:
/sys/devices/platform/s3c2440-i2c/i2c-adapter/i2c-0/0-0073/neo1973-pm-host.0/hostmode
Точнее можно почитать здесь.

Все, сервер готов! Что с ним делать - решать вам. Огромный размер debian репозитория поможет вам развернуться. Вот, например, работающий LinuxDC++:


Сам LinuxDC++ съедает не более 15% CPU и памяти, однако это gtk'ый вариант. Можно покопаться и найти вариант без гуи(правда все найденные мной пакеты либо отсутствовали в репозитории для arm'ов либо по каким-то причинам не работали) или попробовать организовать веб-интерфейс (если использовать его и для торентов с еще чем-нибудь, то думаю будет оправдано). Если же использовать гуи, то думаю стоит запустить VNC сервер. На стороне Neo, он запускается без ошибок, однако присоединиться к нему пока не получилось. Думаю тут просто нужно посмотреть, что там творится в iptables.

"Серверу" требуется 2 свободных гнезда в ближайшей розетке. Если же воспользоваться usb-ethernet адаптером, то и 1 сетевой кабель. Получившийся сервер чуть-чуть больше моего роутера, так что не думаю, что возникнут проблемы с его размещением. А о его энергопотреблении и шуме думаю можно и не говорить :)

Комментариев нет: