OSBoy notes.

Записки обо всём...

Установка OpenWrt на виртуальную машину

Настало время опробовать свежий релиз OpenWRT 15.05 Chaos Calmer. А заодно я решил затестить, каково это - OpenWRT на x86 архитектуре, т.к. Линукс под рукой время от времени бывает нужен - для всяких экспериментов, ну или, хотя бы, флешку отформатировать для роутера... :) Раньше я для этого использовал ноут с ArchLinux-ом. Но ноут у меня накрылся, да и Arch я разлюбил, после того как он на systemd перешёл... как то лень его фактически с нуля по новой осваивать! Зато для этих целей прекрасно подойдёт виртуалка с уже полюбившимся мне OpenWRT!

Подготовка ПО
Качаем последнюю стабильную версию VirtualBox (на момент написания статьи - 5.0.6) и соответствующую версию Extension Pack для него. Устанавливаем VirtualBox и Extension Pack. В моём случае - на компьютере установлена Windows 7 64bit - она и будет использоваться как Хост-ОС.
Качаем образ OpenWRT. Тут выбираем нужный релиз, затем архитектуру x86 (либо x86/64, как я, собственно, и сделал в данном случае) и, наконец, нужный образ (в данном случае - openwrt-15.05-x86-64-combined-ext4.img.gz). Если есть готовый образ для VirtualBox (.vdi) - скачиваем его. Если же доступен только raw образ (.img.gz), то его потребуется переконвертировать в совместимый с VirtualBox формат. Для этого воспользуемся встроенным в VirtualBox конвертором. В папке с установленной VirtualBox создаём текстовый файл с расширением .bat или .cmd следующего содержания: "%~dp0VBoxManage.exe" convertfromraw --format VDI %1 "%~dpn1.vdi"
pause
Затем распаковываем образ из скачанного архива и перетаскиваем его на созданный ранее скрипт. Полученный .vdi образ можно подключать к Виртуальной машине.

Создание виртуальной машины (ВМ)
Запускаем VirtualBox и жмём "Создать". Задаём имя, тип и версию гостевой системы:

изображение 1
изображение 1

На этапе подключения жёсткого диска выбираем "Использовать существующий виртуальный жёсткий диск" и подключаем наш .vdi образ с OpenWRT:

изображение 2
изображение 2

Затем Выбираем созданную ВМ и жмём "Настроить". На вкладке "Сеть" настраиваем сетевой интерфейс для связи ВМ с внешним миром. Мой хост-компьютер подключен к домашней сети и интернет через роутер. Поэтому удобнее всего для ВМ будет использовать тип подключения "Сетевой мост". Таким образом ВМ будет выглядеть в сети как отдельное устройство: будет иметь возможность общаться с другими устройствами в домашней сети (включая хост-компьютер), выходить в интернет, получать от роутера IP адрес по DHCP и т.д.

изображение 3
изображение 3

Здесь "Realtek PCIe GBE Family Controller" - это физический интерфейс хост-машины, подключенный к роутеру, через который будет организован "сетевой мост".

На вкладке "COM-порты" нужно обязательно поставить галочку "Включить последовательный порт", иначе OpenWRT не сможет запуститься.

изображение 4
изображение 4

Запуск ВМ и настройка сети
Запускаем созданную виртуальную машину. После окончания процесса загрузки нажимаем Enter - станет доступна консоль OpenWRT.

изображение 5
изображение 5

Создаём пароль для root: passwd По умолчанию OpenWRT использует на lan интерфейсе статический адрес 192.168.1.1 . Чтобы настроить ВМ для работы в нашей домашней сети, редактируем конфиг: vi /etc/config/network Так как в моей домашней сети устройства получают адреса от роутера по DHCP, приводим конфиг примерно к такому виду: 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
Применяем настройки сети: /etc/init.d/network reloadЧтобы ВМ получала от роутера фиксированный IP адрес, добавляем MAC-адрес виртуального адаптера в список постоянных аренд в настройках DHCP сервера на роутере и присваиваем ему нужный IP.

Также отмечу, что я в настройках ВМ включил два сетевых интерфейса: один - для связи с домашней сетью и интернетом, второй - для других целей. Оба - в режиме сетевого моста. OpenWRT по умолчанию определила первый интерфейс (eth0) как lan со статическим адресом 192.168.1.1, второй (eth1) - как wan с получением адреса по DHCP. Таким образом доступ из виртуалки в домашнюю сеть и интернет получился сразу "из коробки". Однако по умолчанию фаервол OpenWRT запрещает подключение к ней по SSH и к вэб-интерфейсу по http "извне" - то есть через wan интерфейс. Но так как виртуалка будет находиться в моей домашней сети, я просто переназначил интерфейсы lan и wan для удобства работы: config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'option netmask '255.0.0.0'

config interface 'wan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.1.10'
option netmask '255.255.255.0'
option ip6assign '60'

config interface 'lan'
option ifname 'eth1'
option proto 'dhcp'

В VirtualBox версии 5.0.4 у меня наблюдался такой баг: виртуальные (гостевые) машины видели по сети роутер, друг друга, выходили в интернет, НО не видели хост-машину, так же как и хост-машина не видела гостевые! Баг вылечился обновлением VirtualBox до версии 5.0.6.

Расширение дискового пространства
Ну и теперь, когда у нашей ВМ есть выход в интернет, можно устанавливать все необходимые пакеты, например: opkg update
opkg install nano mc
В скачанном образе OpenWRT корневой раздел размером около 48мБ. Этого вполне достаточно для установки пакетов первой необходимости и выполнения многих задач. Однако, если нам этого недостаточно, то увеличим виртуальный жёсткий диск. В VirtualBox вроде бы для этого есть специальный инструмент и можно в принципе воспользоваться им. Но я сделал иначе.
В настройках виртуальной машины подключим ещё один виртуальный жёсткий диск. Выбираем "Создать новый диск", затем задаём его название, выбираем нужный размер и формат хранения:

изображение 6
изображение 6

Загружаем нашу виртуалку и проверяем, что система увидела второй диск: ls -la /dev | grep sd
brw-r--r-- 1 root root 8, 0 Oct 8 20:22 sda
brw-r--r-- 1 root root 8, 1 Oct 8 20:22 sda1
brw-r--r-- 1 root root 8, 2 Oct 8 20:22 sda2
brw-r--r-- 1 root root 8, 1 Oct 8 20:22 sdb
Видим, что второй диск определился как /dev/sdb. Теперь просто копируем первый диск на него утилитой dd: dd if=/dev/sda of=/dev/sdb Останавливаем ВМ, удаляем из неё первый диск и грузимся со второго, оставшегося (теперь он уже станет /dev/sda). Можем убедиться, что диск у нас теперь стал действительно такого размера, какой мы задали, например утилитой cfdisk: cfdisk /dev/sda Однако видим, что наш корневой раздел sda2 так и остался размером 48мБ, а остальное место на диске осталось неразмеченным. Поэтому качаем LiveCD с утилитой GParted, подключаем его к виртуальному CD-приводу нашей машины, и загружаем с него виртуалку. Ну а дальше - дело техники: запускаем GParted, выбираем раздел /dev/sda2 и растягиваем его на всё неразмеченное пространство диска. В конце жмём "применить" ("Apply"), и выключаем машину. Вот и всё, теперь можно извлечь образ из виртуального CD-привода и снова загрузить виртуалку с жесткого диска. Проверяем результат: df -h
Filesystem Size Used Available Use% Mounted on
rootfs 7.9G 13.7M 7.9G 0% /
/dev/root 7.9G 13.7M 7.9G 0% /
tmpfs 122.6M 52.0K 122.6M 0% /tmp
tmpfs 512.0K 0 512.0K 0% /dev

Полезные ссылки:
OpenWrt Wiki - OpenWrt in VirtualBox
Team Helps - Установка и настройка OpenWRT x86 в VirtualBox

Теги : openwrt, x86, virtualbox

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

Добавить комментарий

Отменить