Делаем Linux сервер на роутере TP-Link MR3020

Опубликовано Сентябрь 20, 2014 в разделе Программирование | Комментарии

Свой Linux сервер я решил делать на базе роутера TP-Link MR3020. Несмотря на свои миниатюрные размеры, он как нельзя кстати подходит для этой роли. Вот основные характеристики роутера TP-Link MR3020:

Процессор Atheros AR7240 частотой 400 МГц
SoC: Atheros AR9330 Rev 1
32 Мб ram
4 Мб флэш-памяти
USB-2.0 Host
Wi-Fi 802.11 b/g/n 150Mbps
Ethernet-порт 100MBit
UART (на плате)
Питание осуществляется через мини-USB (+5В)
Максимальный ток с включенным Wi-Fi 150мА или 100мА без него
Размер печатной платы: 5,7см х 5,7см
Размер роутера: 6,7см х 7.4cm х 2.2cm


Как видно, при своих малых габаритах, роутер имеет довольно приличное железо внутри, снабжен UART интерфейсом, а также поддерживает 3G модемы. Входное напряжение роутера 5V. При этом корректная работа устройства возможна с напряжением выше 2.6V, что позволяет запитать устройство напрямую от Li-Ion батарей (3.7V) без использования 5V внешнего адаптера. И, что на мой взгляд является очень весомым преимуществом перед другими подобными устройствами, так это цена роутера.

Итак для начала перепрошьем роутер. Вместо заводской прошивки мы будем использовать OpenWRT. Для этого скачаем последнюю версию Attitude Adjusment. Перепрошивать роутер мы будем через Веб интерфейс браузера. Подключаем TL-MR3020 к компьютеру RJ-45 патч-кордом и включаем питание роутера. Для данного соединения устанавливаем ip адрес компьютера 192.168.0.2. В адресной строке браузера набираем http://192.168.0.254, в открывшемся окне вводим имя admin и пароль admin. В меню системных настроек роутера выбираем заранее скачанный файл прошивки и жмем обновить. Во время обновления не трогайте роутер и не отключайте его питание. Дождитесь завершения процесса. После обновления роутер автоматически перезагрузится.

Теперь роутер доступен по адресу 192.168.1.1. Подключаемся к нему телнетом, для этой цели удобно использовать Putty. Вводим команду passwd и указываем новый пароль. Сервер готов и теперь можно подключатся по SSH (я пользуюсь WinSCP).

Для того чтобы расширить функционал нашего сервера необходимо увеличить его память. В нашем распоряжении около 300 Кб свободной памяти, что несомненно очень мало, изменим это подключив USB флешку.

Для начала поменяем сетевые настройки сервера. В консоли открываем фаил network текстовым редактором vi (команды редактора VI) и пропишем в нем свои сетевые настройки:

root@OpenWrt:~# vi /etc/config/network
config interface 'loopback'
	option ifname 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config interface 'lan'
        option ifname 'eth0'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.1.99'    # новый IP роутера MR3020
        option netmask '255.255.255.0'  # маска
        option gateway '192.168.1.1'    # шлюз для MR3020
        list dns '192.168.1.1'          # DNS1 сервер (головной роутер)
        list dns '8.8.8.8'              # DNS2 сервер

config interface 'wan'
	option ifname 'eth0.1'
	option proto 'dhcp'
	option gateway '192.168.1.1'
	option netmask '255.255.255.0'
	list dns '192.168.1.1'
	list dns '8.8.8.8'

config interface 'wifi'
	option proto 'static'
	option ipaddr '192.168.2.1'
	option netmask '255.255.255.0'

Здесь подразумевается, что головной роутер имеет адрес: 192.168.1.1 при необходимости смените сетевые адреса на вашу подсеть.

root@OpenWrt:~# reboot

Ждем перезагрузки и проверяем подключение к Интернету:

root@OpenWrt:~#ping craft-tech.ru

Если все пингуется, то добавляем USB поддержку OpenWrt, установив и включив следующие пакеты:

root@OpenWrt:~# opkg update
root@OpenWrt:~# opkg install kmod-usb-uhci
root@OpenWrt:~# insmod uhci
root@OpenWrt:~# opkg install kmod-usb-ohci
root@OpenWrt:~# insmod usb-ohci

Смотрим список установленных пакетов:

root@OpenWrt:~# opkg list-installed

Теперь все готово для подготовки флешки к форматированию. Необходимо перевести флешку в формат EXT4. Вставляем флешку в usb порт роутера, в разделе /dev должны появиться устройства типа /dev/sda1 (или /dev/sda).

Сначала создаем на USB Flash раздел:

root@OpenWrt:~# fdisk /dev/sda1

Выполняем следующие команды:

Command (m for help): m (displays actions)
Command (m for help): p (display partition table)
Command (m for help): d (delete partion - had only 1 on my stick)
Command (m for help): n (new partition)
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-621, default 1): RETURN
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-nnnn, default nnn):
Command (m for help): a (make partition bootable) RETURN
Partition number (1-4): 1 Command (m for help): w (write to disk)

Далее нужно отформатировать флешку в ext4:

root@OpenWrt:~# mkfs.ext4 /dev/sda1

Теперь монтируем в /mnt/usb и скопируем туда все необходимое:

root@OpenWrt:~# mkdir -p /mnt/usb
root@OpenWrt:~# mount -t vfat /dev/sda1 /mnt/usb
root@OpenWrt:~# tar -C /overlay -cvf - . | tar -C /mnt/usb -xvf -

Далее подправим /etc/config/fstab:

root@OpenWrt:~# vi /etc/config/fstab

Правим секцию config 'mount':

config 'mount'
        option target   /overlay
        option device   /dev/sda1
        option fstype   ext4
        option options  rw,sync
        option enabled  1
        option enabled_fsck 0

Сохраняем изменения, перезагружаем роутер и проверяем изменения:

root@OpenWrt:~# df
Filesystem           1K-blocks      Used Available Use% Mounted on
rootfs                 1962212     65100   1798716   3% /
/dev/root                 1536      1536         0 100% /rom
tmpfs                    14600        72     14528   0% /tmp
tmpfs                      512         0       512   0% /dev
/dev/sda1              1962212     65100   1798716   3% /overlay
overlayfs:/overlay     1962212     65100   1798716   3% /

Проверяем, чтобы rootfs имел низкий процент использования - если он все еще на 50% и выше, вполне вероятно, что extroot на /overlay не работает!

Теперь у нас хватает дискового пространства для установки различных программ и прочих экспериментов.


Оставить комментарий: