Пользователь
0,0
рейтинг
28 сентября 2013 в 13:20

Администрирование → Запуск и использование OpenWrt в VirtualBox из песочницы tutorial

Скриншот списка виртуальных машинВ этой статье я расскажу о том, как запустить OpenWrt в эмуляторе и настроить его для работы в сети, а так же коснусь использования vi, клиентов ssh и scp. Главной причиной для всего этого действия я считаю возможность потрогать прошивку руками не боясь остаться без интернета, в случае возникновения проблем с роутером. Данная статья рассчитана на мало знакомых с Linux людей.
Википедия подсказывает, что OpenWrt — основанная на Linux прошивка для домашних маршрутизаторов (роутеров). На деле, это целое семейство прошивок. OpenWrt наряду с DD-Wrt и Gargoyle доступны для огромного количества роутеров на разных аппаратных платформах. Доступен репозиторий по адресу downloads.openwrt.org. Помимо основной ветки (имеющей несколько реализаций в пределах платформы), названной attitude_adjustment распространены версии backfire и kamikaze.

Установка программ


В первую очередь, установите эмулятор VirtualBox, если его у вас нет. Чтобы иметь возможность выполнять команды вне консоли окна эмулятора, понадобится SSH клиент. Например, Putty. При этом вам станет доступен буфер обмена домашней системы. Для удобного доступа к файловой системе «роутера» нужен графический SCP клиент. Например, WinSCP для Windows. Для Linux будет достаточно встроенного файлового менеджера. Например, Krusader, Dolphin, Nautilus.

Выбор прошивки


Для эмуляции нужна прошивка для платформы x86, желательно с файловой системой Ext2 или Ext4.
Хотя официальная вики советует ставить версию attitude_adjustment, с ней у меня возникли проблемы: она отказалась запускаться, сообщая о kernel panic. Так что проще остановиться на одной из двух оставшихся. Выбрав прошивку, посмотрите в вариантах для загрузки готовый .vdi файл.
.vdi образ прошивки
Ссылка для версии backfire 10.03.1: http://downloads.openwrt.org/backfire/10.03.1/x86_generic/openwrt-x86-generic-combined-ext2.vdi.

Если интересующая вас прошивка доступна только как raw образ (img.gz, image.gz, bin) будет необходимо воспользоваться входящим в комплект VirtualBox конвертером. Под Windows для этого сохраните в папке VirtualBox (могут понадобиться права администратора) следующий текстовой файл и задайте ему расширение .bat или .cmd:
"%~dp0VBoxManage.exe" convertfromraw --format VDI %1 "%~dpn1.vdi"
pause

После чего распакуйте скачанный образ прошивки и перетащите его на данный скрипт. Полученный .vdi образ можно подключать к виртуальной машине.

Настройка VirtualBox


Создайте новую виртуальную машину. Тип – Linux, версия – Linux 2.6. Откажитесь на данном этапе от подключения диска — это будет сделано позже.
Откройте свойства новой виртуальной машины (кнопка «Настроить») и перейдите в раздел Сеть. Вместо режима NAT выберите Сетевой мост (Bridged) – это позволит получить доступ к виртуальной машине с других устройств в сети. Если же у вас нет домашней сети (хотя бы роутера) оставьте NAT и добавьте второй адаптер «Виртуальный адаптер хоста».
Затем в разделе COM-порты обязательно поставьте галочку, чтобы активировать эмуляцию порта. В противном случае OpenWrt не сможет загрузиться.
Наконец, в разделе Носители добавьте к контролёру IDE образ прошивки OpenWrt, как жёсткий диск. Если к контроллёру SATA подключены устройства – удалите их.
Нажмите OK, сохранив настройки.
При затруднении, посмотрите скриншоты
Выбор ОС
Носители
Настройки сети
COM-порт


Настройка сети


Запустите виртуальную машину. По окончании загрузки нажмите Enter. Станет доступна консоль.
Скриншот по окончинии загрузки
Первый запуск

В первую очередь задайте пароль администратора, введя passwd и новый пароль в ответ на приглашение.
По умолчанию OpenWrt создаёт собственную подсеть, игнорируя существующие и получает в ней адрес 192.168.1.1. Вы можете попробовать подключиться к виртульной машине по этому адресу, задав своему компьютеру (сетевой карте либо виртуальному адаптеру хоста, в зависимости от сделанных настроек VirtualBox) статичный адрес в подсети 192.168.1.*. Но удобнее вариант, при котором эмулируемый «роутер» соединяется с существующей сетью, получая доступ в интернет и к устройствам в вашей сети. При помощи встроенного текстового редактора vi можно редактировать конфигурационные файлы. Наберите vi /etc/config/network для изменения настроек сети. Управление курсором в vi осуществляется стрелками, для удаления строки можно нажать dd, переход в режим редактирования происходит нажатием кнопки i, возврат в режим команд по Esc. Приведите данный файл к следующему виду (поменять option proto со static на dhcp):
    # Copyright (C) 2006 OpenWrt.org

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 proto    dhcp

После чего перейдя по Esc в коммандный режим наберите :wq и Enter для сохранения и выхода из редактора. Чтобы выйти без сохранения, наберите команду :q!. Эти настройки означают, что эмулируемый «роутер» попробует получить доступный ip адрес. Если у вас нет настоящего роутера и возможности получить более одного адреса — выберите в настройках сети VirtualBox режим «Виртуальный адаптер хоста».

Для применения новых настроек перезагрузите виртуальную машину или введите /etc/init.d/network restart.

После загрузки посмотрите адрес виртуальной машины, набрав ifconfig, в поле inet addr у eth0:
root@OpenWrt:~# ifconfig
eth0      Link encap:Ethernet  HWaddr 08:00:27:13:00:42
          inet addr:192.168.1.23  Bcast:192.168.1.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:91 errors:0 dropped:0 overruns:0 frame:0
          TX packets:65 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:10016 (9.7 KiB)  TX bytes:7749 (7.5 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:48 errors:0 dropped:0 overruns:0 frame:0
          TX packets:48 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:3888 (3.7 KiB)  TX bytes:3888 (3.7 KiB)

root@OpenWrt:~#


Поздравляю, OpenWrt запущена и доступна по сети. Имейте ввиду: данный адрес (192.168.1.23 в моём случае) — временный и может меняться после перезапуска эмулятора или спустя какое-то время (несколько часов). Запустите Putty и попробуйте подключиться к виртуальной машине по данному адресу. Логин для подключения – root, пароль вы задали при первой загрузке.

Доступ к файловой системе


Запустите WinSCP (или аналог) и подключитесь к виртуальной машине.
Скриншот окна подключения
Вы увидите стандартный двухпанельный файловый менеджер. Теперь вы можете редактировать конфигурационные файлы в удобном графическом режиме. Так же возможно копировать файлы в «роутер» и обратно. Попробуйте перейти в правой части в корень (/), а затем в /etc/config/ и запустить network.
Редактирование конфигов
При желании внесите изменения и сохраните результат.

Установка пакетов


Для начала обновите список доступных в репозитории компонентов, введя opkg update, после чего попробуйте поставить, к примеру, openvpn, введя opkg install openvpn. Проверить наличие компонента и уточнить его название можно командой opkg list ЧастьНазвания. Так же можно устанавливат пакеты без доступа в интернет. Используя WinSCP перепишите пакеты в доступный для записи каталог, вроде /tmp/ либо на USB флешку, если она доступна и введите команду opkg install путь_к_пакету. Можно использовать кнопку Tab, чтобы не набирать название полностью. Например, скачайте русский языковой пакет для LuCI по адресу http://downloads.openwrt.org/backfire/10.03.1/x86_generic/packages/luci-i18n-russian_0.10.0-1_x86.ipk, перепишите его при помощи WinSCP в /tmp/ и в консоли эмулятора, терминале или Putty (смотрите кнопки панели инструментов WinSCP после Synchronize) введите opkg install /tmp/luci-i18n-russian_0.10.0-1_x86.ipk
root@OpenWrt:~# opkg install /tmp/luci-i18n-russian_0.10.0-1_x86.ipk
Installing luci-i18n-russian (0.10.0-1) to root...
Configuring luci-i18n-russian.
root@OpenWrt:~#

Имейте ввиду, архитектура вашей прошивки и устанавливаемого пакета должна совпадать.

Веб-интерфейс


В большинство версий OpenWrt изначально входит веб оболочка LuCI. LuCI расшифровывается как Lua Configuration Interface. Перейдите в браузере по сетевому адресу вашего «роутера», ведите заданный вначале пароль и сможете поэксперементировать с LuCI.
Окно авторизации LuCI
Доступен русский перевод. Для установки перейдите раздел System — Software, введите в поле Filter слово «russian» и на вкладке Available packages (russian) установите пакет luci-i18n-russian. Либо установите его при помощи opkg, как описано выше, а затем выберите язык в разделе System — System — Language and Style — Language.

Ссылки


Репозиторий OpenWrt
Вики проекта OpenWRT
Википедия про OpenWrt
Настройка сети в OpenWRT
OpenWRT, или Что еще можно сделать со своим роутером
Владислав Кузьмин @Sabin
карма
9,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Администрирование

Комментарии (18)

  • +2
    Спасибо! Поможет в разработке под OpenWRT — придётся проверять одну программку, не уверен, что будет удобно это делать на реальном железе.
    Эх, понять бы ещё, как её правильно компилировать под MR3020…
    • 0
      Пожалуйста! Допишу в статью, как ставить свои пакеты не из репозитория. Думаю, тоже пригодится
      • 0
        Кстати, у меня есть проблема. Есть пакет lirc, в который раньше были включены драйверы для ядра OpenWRT. Сейчас драйверы из поставки пакета выпилили, а в оригинальном образе их нет. Что можно сделать, кроме сборки ядра с уже включённым пакетом lirc? И будут ли включены драйвера, нужные пакету, при компиляции из исходников??
        • 0
          К сожалению, не знаю. Скорее нет, чем да, смотрите конфигурационный файл перед сборкой.
          • 0
            Понятно, спасибо!
  • 0
    Все время хочу прошить свой старый Dir-320, тот на который еще и прошивку Asus можно залить. Даже купил и поставил на замену новый Dir-320NRU, который поддерживает 150 мегабит, но уже к сожалению имеет другое железо, которое альтернативные прошивки не поддерживают. Да так и лежит старый Dir-320 уже полгода. Была мысль организовать трансляцию с веб-камеры. Кстати OpenWrt поддерживает более 1 камеры?
    • 0
      Я ещё не пробовал что-нибудь нестандартное подключать к роутеру, так что на подобные вопросы ответить не могу. Гугл показывает эту статью: members.home.nl/pragtich/blog/2013/01/Mjpg-streamer-multiple.html
      Так же на хабре есть две статьи про веб-камеры:
      habrahabr.ru/post/153017/
      habrahabr.ru/post/135790/
      • 0
        Ну, статьи я тоже читал — мне было интересно мнение живого человека лично пощупавшего эту тему. :-)
    • –1
      Линуксу без разницы, одна у вас веб-камера или 9000. Одинаково хорошо будут работать, лишь бы вычислительных мощностей хватало.
      • +1
        Вот в том то и дело, как поведет себя роутер с двумя-тремя камерами. Если хорошо, то можно организовать достаточно дешевую систему наблюдения.
        • 0
          Т.е вы хотите подключить HDD и 2-3 камеры? Не взлетит, тормозит безбожно… Причин выяснять не стал, но фпс на уровне еденицы(
          • 0
            Нет, HDD подключать не собирался. Запись видео это отдельный вопрос и решать его должен независимый системный блок. Вопрос в том чтобы организовать просмотр, через потоковое вещание например или покадровый вывод, пусть даже с очень низким фпс.
            • 0
              Это не пробовал, но должно получиться, фпс правда такой же низкий получится.
            • 0
              Я бы сказал так: захват и обработку потокового видео должен производить отдельный блок. Это весьма ресурсоемкая операция и возлагать ее на маршрутизатор не стоит — у них с вычислительными ресурсами как правило проблемы.

              Если не жалко денег, то можно приобрести специализированную железку. К примеру www.enciris.com/lt101usb.php
              • 0
                Понимаете тут такое дело… в приобретении специализированных железок нет «Just for fun». :-)
  • 0
    а под vmware сервером пойдет?
    • 0
      Должно нормально заработать, не вижу препятствий. Убедитесь, что подключили образ как IDE диск, включили эмуляцию COM порта и если возникнут проблемы с сетью — попробуйте другой вариант эмулируемой сетевой карты, вроде PCnet-FAST III. Вот, к примеру, видео по запуску DD-Wrt в vSphere
  • +2
    Конечно, оно может кому-то будет полезно, но обычно проблемы вылезают про кросс-компиляции каких-то программ под процессор роутера (кто компилировал rtorrent c xml-rpc знает). И было бы круто запустить именно эмуляцию проца роутера. А так ну заупстили вы довольно специфичный Linux дистрибутив, что в этом удивительного, не особо понятно. Конечно, для людей незнакомых с Linux вообще может оказаться и полезно.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.