Міжнародна конференція розробників
і користувачів вільного програмного забезпечення

Использование операционной системы Linux в активных сетевых устройствах SOHO сегмента

Сергей Довнар – Team Leader группы Messaging solutions, СП ООО “МЦС”, Минск, Беларусь – sergey.dovnar@gmail.com

LVEE 2007

введение

В последнее время широкое распространение получили активные сетевые устройства, совмещающие в себе сразу несколько функций. Как пример, можно привести маршрутизатор Linksys WAG200G. В этом устройстве совмещены ADSL модем, Wi-Fi точка доступа и коммутатор на четыре порта 10/100 Mbit. В качестве операционной системы используется Linux с ядром ветки 2.4 и проприетарными драйверами для Wi-Fi и ADSL частей.

Возникает резонный вопрос: возможно ли использование Linux и в других подобных устройствах, несмотря на то, что производитель такую возможность не предусмотрел?

аппаратная часть

Для того, чтобы выяснить, можно ли запустить ядро Linux на устройстве, необходимо детально изучить объект, над которым будут проводиться эксперименты. В моём случае таким объектом оказалась Wi-Fi точка доступа D-Link DWL-2100AP. Во время обновления прошивки пропало питание, и устройство перестало выполнять свои функции. Доступ к консоли у устройства не предусмотрен, а сетевое соединение установить было невозможно.

В первую очередь была снята крышка и изучена находившаяся внутри корпуса плата. Недолгий поиск в Интернет позволил обнаружить несколько форумов, содержащих полезную информацию, в результате изучения которых были установлены следующие технические характеристики устройства:
- Платформа: ar531x (Atheros)
- RAM: 16 Mb
- Flash ROM: 4 Mb
- Тип процессора: MIPS.

На странице проекта OpenWRT была найдена информация по портам RS-232 и JTAG, распайка под которые есть на плате устройства. RS232 используется как системная консоль, JTAG – это технологический разъём, используемый для перепрошивки памяти устройства.

Единственный способ подключиться к устройству для дальнейших экспериментов – использование RS-232 порта. Однако производитель не пожелал предоставить кому-то возможность такого доступа к устройству, и порт оказался не разведён до конца. Доработка свелась к подключению схемы преобразователя на микросхеме MAX232 для получения полнофункционального RS-232. Для этой цели можно использовать схему из технического описания микросхемы.

Далее был запущен minicom и настроены следующие параметры обмена: 9600 8N1. Затем были соединены кабелем порты устройства и компьютера и подключено питание к точке доступа. При правильном выполнении описанных выше процедур на экране должны появиться строчки, выдаваемые загрузчиком.
В случае описываемого устройства текст был следующим:

ar531x rev 0×00005850 firmware startup…
SDRAM TESTPASSED
WAP-G02A Boot Procedure V1.0
-———————————————————————————
Start ..Boot.B12..
Atheros AR5001AP default version 3.0.0.43A
0
auto-booting… Attaching to TFFS… done.

Процесс загрузки прерывается нажатием Esc, после чего можно изучить возможности, которые предоставляет загрузчик. Вот какие параметры установлены в системе по-умолчанию: <code>

[Boot]: p
boot device : tffs:
unit number : 0
processor number : 0
file name : /fl/APIMG1
inet on ethernet (e) : 192.168.1.50:0xffffff00
flags (f) : 0×0
other (o) : ae

Итак, теперь известно, где лежит образ, который содержит ПО, необходимое для работы точки. Внимательное прочтение помощи по командам загрузчика показало, что он умеет загружаться по сети, используя TFTP.

После подготовки TFTP-сервера и выкладывания на него ядра, взятого на OpenWRT, параметры загрузки необходимо изменить так, чтобы устройство начало загружаться по сети. В рассматриваемом случае изменения имели следующий вид:

$ae(1,0)tftpserver:vmlinux h=172.16.255.1 e=172.16.255.253:0xffffff00 f=0×80

Попытки устройства загрузиться по сети выглядят следующим образом: <code>

Attached TCP/IP interface to ae1.
Attaching network interface lo0… done.
Loading…

Далее идёт стандартный вывод загружающегося ядра Linux, в конце которого оно впадает в панику, не найдя корневую файловую систему. Это совершенно естественно, поскольку на TFTP находится только ядро и образа файловой системы там нет. Данный этап имеет своей целью выяснить возможность ядра без проблем загрузиться на предложенном ему оборудовании.

Проделанные с устройством эксперименты продемонстрировали, что:
- с устройством можно взаимодействовать посредством интерфейса RS-232;
- устройство может загружаться «извне» – по сети;
- платформа устройства позволяет использовать Linux после некоторых доработок.

программная часть

Можно выделить четыре части ПО, которые необходимы для работы устройства:
- загрузчик;
- ядро операционной системы;
- драйвера аппаратной части устройства;
- системное ПО.

На начальном этапе был использован загрузчик VxWorks, встроенный в систему. Для остальных частей возможна загрузка по сети. Необходимо создать образ RAM-диска, на котором будет расположено системное ПО. Сделать это можно, скачав исходный код следующим образом:

1. Создать в домашнем каталоге подкаталог (например – dwl-2100ap) и перейти в него.

2. Ввести команды:

svn co https://svn.openwrt.org/openwrt/trunk/
svn co https:// svn.openwrt.org/openwrt/packages ./trunk/feeds/packages/
cd ./trunk/
make package/symlinks
make menuconfig

По окончании конфигурирования будущей системы (при этом необходимо не забыть «встроить» образ файловой системы в ядро) выполняется команда make world. Полученный образ выкладывается на TFTP-сервер, после чего загружается в устройство по сети. Если все приведенные операции выполнены правильно, результатом оказывается работающее устройство, обладающее гораздо большим, по сравнению с первоначальным, функционалом.

заключение

Приведенные инструкции следует рассматривать не как прямое руководство к действию, а только как указание направления, в котором можно двигаться. Автор не несёт ответственности за возможные повреждения устройств, над которыми будут проводиться эксперименты.

Описанная схема исследования работает для всех устройств, но поддержка конкретной модели проектом OpenWRT – вопрос личной удачи экспериментатора.
В затронутой теме существует огромное поле для экспериментов. Получив знания об аппаратной части любого устройства и проявив творческий подход, всегда можно добиться того, что не захотел или поленился сделать его производитель.