Home

OpenWRT @ D-Link DIR-320

  • 8 Фев, 2010 at 3:41 PM

7 месяцев назад я купил забавную железкуDIR-320, забавную тем, что на ней, как и на каждом первом SOHO-роутере, бегает linux и, более того, под которую несложно состряпать свою прошивку.

Увы, полгода назад ситуация с поддержкой DIR-320 ванильным ядром была довольно грустна: если хотелось сохранить работоспособного wi-fi, то требовалось ставить ядро 2.4, в котором довольно плохо поддерживался USB. Это «довольно плохо» выражалось в том, что в произвольные моменты времени подключенная через USB флэшка или винт «отваливались» и более в систему не возвращались без классического паса руками «выключить и снова включить».

В ядре 2.6 же в драйвере b43 на тот момент не было поддержки LP_PHY для чипа BCM4318, точнее, работа над ним только начиналась и реализация была помечена как BROKEN. Но и в настоящий момент поддержка железа тоже далека от идеала, на странице драйвера b43 отмечено, что режим точки доступа на чипах 4318 не поддерживается из-за больших потерь пакетов при высоких скоростях. Действительно, при попытке завести точку доступа на всех 54 мегабитах 802.11g клиент к точке даже не мог подключиться из-за потерь пакетов, но если ограничить аппетиты 11 мегабитами 802.11b, то связь хоть и достаточно паршиво, но работает — для серфинга хватает.

Другое занятное развлечение — упихать максимально возможный набор утилит в 3.5 мегабайта флэшки. У меня уместились:

  • busybox, включая wget, crond, telnetd, syslogd, dhcp-клиент и dhcp-сервер
  • dropbear — ssh-сервер для управления роутером, т.к. telnet используется только для первоначальной конфигурации
  • madplay и драйвера для usb-звуковухи, которые в сопряжении с wget дают возможность играть разнообразные mp3-потоки, включая Радио «Воруй-Убивай»
  • transmission и web-интерфейс к нему — легковесная качалка/раздавалка торрентов
  • hostapd для работы wi-fi в режиме точки доступа
  • openntpd для поддержания точного времени на маршрутизаторе — наличие точного времени очень полезно при чтении логов
  • unfsd + portmap — NFS-сервер
  • pppd с поддержкой PPPoE
  • nvram + mtd для обновления прошивки без неудобных манипуляций с начальным загрузчиком

Для более плотного утрамбовывания я выкинул httpd из busybox, заменил dnsmasq на связку из udhcpd (для DHCP-сервера) и скриптов для iptables, которые позволяют отдавать статические настройки DNS через DHCP, чем выйграл порядка 80 килобайт. Также я заменил «ядрёный» NFS-сервер на unfs3, тут выйгрыш составил более 200 кб. При сборке transmission я использовал статические версии openssl, curl и libevent, что дало еще порядка полумегабайта места. Конечно, в openwrt включён скрипт mklibs.py, оптимизирующий динамические версии библиотек, удаляя из них не используемый приложениями код, но в случае с transmission он по какой-то причине работал некорректно, приводя к segfault при запуске демона. Судя по информации, полученной скупыми отладочными утилитами, mklibs.py вырезает много лишнего из libnsl.so и librt.so. Статическая линковка же является более отработанной технологией и в случае, если библиотека используется только одним приложением, даёт даже более хорошие результаты чем использование mklibs.py, но, увы, uclibc и libm остаются не оптимизированными. Вероятно, размер прошивки можно уменьшить еще на ≈100 кб., совместив эти два метода.

Конечно, целый набор ложек дёгтя тоже имеет место. Памяти на маршрутизаторе всего 32 мегабайта и одновременный старт NFS-сервера и torrent-клиента приводят к неимоверным тормозам всего кроме самой маршрутизации, доводя LA до ≈5. Поэтому стоит написать какие-то скрипты, переключающие «режимы работы» роутера. Более того, эти скрипты вполне можно запускать с помощью ssh, web-браузера или кнопки на торце роутера. Другой неприятностью является далеко не идеальная работа wi-fi, но для нужд интернет-радио и просмотра фильма с NFS-сервера стабильности хватает. Третья — uClibc не поддерживает fallocate и, соответственно, быстрое выделение нефрагментированного участка диска на разделе с ext4, а eglibc без плясок с бубном не собирается. Других проблем я пока не обнаружил.

Если кому-то интересны мои конфиги — их можно взять по адресу http://darkk.net.ru/home/openwrt

Подумалось мне вчера: а какие риски есть в отключении запроса PIN-кода на SIM-карте. Плюсом обычно называется то, что вор, укравший телефон, будет достаточно глуп, чтоб позвонить с него и «засветить» своё местоположение и контакты, а честный человек, найдя потерянный телефон, сможет позвонить кому-нибудь из знакомых владельца. Для последнего, кстати, зачастую не требуется SIM-карта, т.к. многие телефоны хранят записную книжку во внутренней памяти.

Но есть и как минимум один минус, который может быть достаточно существенным. Не раз уже обсуждались проекты по использованию мобильного телефона в качестве некоторого элемента системы идентификации личности. В таких случаях кража/утеря SIM-карты вполне может привести к краже личности. Кстати, одна из существующих мошеннических схем в рунете напрямую является «кражей личности» — кража ICQ-аккаунта с последующей просьбой «занять webmoney» у доброй половины контактлиста.

Глобальная авторизация по SIM-карте — проект, граничащий с абсурдом, но и сейчас у утери симки есть довольно интересные побочные эффекты. Практически у любого ОпСоСа сегодня есть так называемый интернет-помощник. У меня на столе нашлись SIM-карты МТС и билайна: сайты обоих операторов предлагают возможность сменить пароль для доступа к интернет-помощнику, не зная старого, позвонив по определённому номеру. Помимо возможности отключения/подключения услуг на этих сайтах можно узнать полное имя владельца SIM-карты, а на сайте билайна — и его домашний адрес, что могло бы сильно подставить одного моего знакомого, таскавшего симку в качестве брелока на связке ключей…

Интересно, какая информация утекает в «личных кабинетах» других операторов?…

Tags:

rss-proxy ⇒ ljfeed.py

  • 24 Янв, 2010 at 9:03 PM

Судя по всему, снимать бан с rss-proxy в ближайшее время никто не собирается. Но небольшая шумика произвела и пложительный эффект — один из разработчиков SUP сказал мне примерно следующее: «В мире много несчастий и нестандартных интерфейсов. Один из них — XML-RPC API livejournal.com. Документация устаревшая — но всегда можно погуглить, погуглить и найти код, который и есть лучшая документация».

Так я и поступил, на выходе получил скприт ljfeed.py, который одним запросом выгребает 50 последних записей с френденты и форматирует из них Atom-поток. Скрипт лежит на github, если кто-то хочет превратить его в вебсервис — помните про User-Agent, если кто-то хочет поставить его на свой сервер — помните о политике livejournal относительно ботов.

Полагаю, страждущим может помочь [info]ka_lan, предлагавший помощь в виде некоего сервера. Инициатива, как говорится, наказуема — незнакомых мне желающих к нему и направляю, у меня же на сервере в crontab пока только одна строчка такого вида:

# Every 3 hours
42 */3 * * * $HOME/ljfeed/ljfeed.py --user darkk --pass_md5 1…4 --output $HOME/public_html/….xml

Также, в сообществе [info]changelog появились записи про OAuth — возможно, через некоторое время политика livejournal относительно внешних вебсервисов будет более определённой, а до тех пор тратить больше часа-другого на возню с френдлентой в Google Reader смысла я не вижу.

rss-proxy: каппа (капец?)

  • 10 Янв, 2010 at 4:38 PM

Если кто-то пользуется rss-proxy, но до сих пор не подписался ни на мой twitter, ни на ленту новостей, продублирую очередные известия тут.

копипаста тут )

rss-proxy: новости

  • 25 Окт, 2009 at 10:53 PM

Как я об этом уже написал в twitter и в ленте новостей rss-proxy, LiveJournal.com забанили rss-proxy. Кстати, во второй раз.

Комментариев со стороны livejournal в ответ на мой запрос от 21-го октября пока не поступало.

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

текст запроса )

Synaptics touchpad, xorg-1.5 и hal.

  • 7 Авг, 2009 at 5:18 PM

Поломался у меня недавно Logitech'вский грызун и немедля я обнаружил, что последние обновления мира принесли на плоский диск грабли с работой тачпада — отвалился клик по прикосновению к тачпаду, отвалилась вертикальная и горизонтальная прокрутка. Всё вполне логично, gnome у меня нет, kde тоже отсутствует и поэтому все настройки тачпада остаются по-умолчанию, т.е. унылыми до невозможности.

Read more... )

thumb После того, как я полтора гора работал с одним израильским контрагентом, мой знакомый for the lulz презентовал мне брошюру «в помощь программисту» посвященную вопросам иммиграции и последующего трудоустройства в Израиле.

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

Под катом брошюра и/или 3 Мб трафика. )

Tags:

rss-proxy: 100'000 хитов в сутки

  • 18 Июн, 2009 at 1:51 AM

Google appengine — чудесная штука для бомж-проектов. Например, мой сервис для чтения френдленты в онлайн-агрегаторах без каких-либо проблем обслуживает 100'000 хитов в сутки. Конечно, 99% этих хитов — боты Яндекс.Ленты, Google Reader и других подобных web-приложений, но всё равно цифра сама по себе остаётся забавной. Огорчает лишь тот факт, что rss-proxy уже отъедает 35% от бесплатной квоты в 657'084 запросов к внешним сервисам в день. Рано или поздно придётся что-то с этим делать.

10% HTTP ответов в логе — это «200 Ok», 80% — «304 Not modified», еще 6% — «502 Bad gateway» из-за проблем сети и/или backend'а, таким образом кэшированием неверных паролей и/или удалённых журналов можно выиграть всего около 3% квоты. Не густо. С другой стороны, если верить User-Agent'у бота гуглеридера, то порядка 40% запросов идут к фидам, на которые никто не подписан, то есть User-Agent имеет следующий вид:

Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; feed-id=...),gzip(gfe),gzip(gfe)
В то время как «живой» фид выглядит так:
Feedfetcher-Google; (+http://www.google.com/feedfetcher.html; 1 subscribers; feed-id=...),gzip(gfe),gzip(gfe)
А 40% — это уже стоящая оптимизация.

Знает ли кто, насколько можно полагаться на данную информацию от гуглебота? Увы, дискуссии в посвященной Google Reader группе на эту тему как-то игнорируются представителями Google. Вопроса «почему Feedfetcher проверяет rss-поток, на который никто не подписан?» тоже в FAQ до сих пор нет.

10 суток назад, 22го мая в 17:08:47 пришел последний понг от Acorp W400G, служивсего мне верой и правдой два с половиной года. «Позитроника» в Омске уже успешно загнулась, поэтому заморачиваться с гарантийным ремонтом сей железки я не стал и понёс на вскрытие к Басаеву (хорошее прозвище для радиолюбителя, да?). Вскрытие показало, что железку внутри перекоротило и годится она нынче только на запчасти и/или в качестве декоративного элемента интерьера. Время выбирать новый SOHO-роутер.

Если Gentoo больше не радует и не приносит счастья, при разруливании битых зависимостей в коктейле из x86, ~x86 и ~*, то можно спуститься на уровень ниже и купить роутер с поддержкой DD-WRT, что и было сделано. Выбор пал на вариант D-Link DIR-320. Дешево (1750 р.) и сердито. В комлпекте Wi-Fi, 4+1 Ethernet, 1 порт USB (по слухам даже 2.0) и 32 Мб оперативки.

Залив DD-WRT, я незамедлительно наступил на грабли, которыми чуть не брикнул роутер. Точнее, попытался залить прошивку, которая была на несколько килобайт больше, чем размер внутренней флэшки. Как оказалось, загрузчик прошивка не меняет, и это хорошо. Осталось только поправить работоспособность WPA2, прикрутить к USB что-нибудь помимо принтера... например, USB-колонки и mplayer и получить на выходе замечательный будильник с интернет-радио.

Может быть у кого остались в закладках другие интересные рецепты на базе DD-WRT?

Profile

firefox
[info]darkk
Leonid Evdokimov
Website

Реклама

Syndicate

RSS Atom
Разработано LiveJournal.com
Designed by Tiffany Chow