Свой первый роутер DIR-320 rev.A1 я купил еще в 2008г. По сей день он служит мне верой и правдой. Покупал его с целью получать интернет по wifi, т.е. он использовался в качестве клиента. Поскольку в стандартной прошивке данной возможности не было (о чем я заранее прочитал на форумах), то в первый же день я прошил его прошивкой от олега. В принципе все меня устраивало и особенно радовало наличия скрипта для чайников, который позволял в несколько кликов поставить на флешку (винт) кучу разных программ. Но с появлением в моем доме нетбука, мне понадобился wifi для него, дабы валятся на диване вместе с ним). А мой DIR-320 работает-то в качестве клиента wifi и на прошивке олега раздавать его не умел, поэтому я перешел на прошивку dd-wrt. Она позволяет создавать виртуальный интерфейс wifi и раздавать на нем интернет. Но хотелка не стоит на месте и начитавшись статей о прикручивании к роутеру видеокамеры, usb-звука, arduin-ы и т.д. я пришел к тому, что надо прошивать openwrt, о чем я ниже и постараюсь изложить.
Сборка прошивки
Нам понадобится любая операционная система на основе Linux. Я использовал UBUNTU 12.04 LTS.
Убеждаемся, что у нас есть на диске минимум 4Гига свободного места (я сам прозрел), а лучше наверно 5ГБайта. После сборки наша папка с файлами будет весить в районе 3,8ГБайта.
Для получения исходников, нужно установить subversion:
Скачиваем Buildroot OpenWrt. Можно собрать прошивку с версией ядра 2.6 или 3.3.8.
Ядро 2.6 Backfire 10.03:
svn co svn://svn.openwrt.org/openwrt/branches/backfire
Ядро 3.3.8, кодовое название прошивки Attitude Adjustment 12.09:
svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment
Ядро 3.10
svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker
Есть еще ветка для разработчиков (Development branch). В ней проводят разработку openwrt с новыми linux-ядрами и прочими улучшениями. в последствии эту ветку выделяю в стабильную, как в свое время стали Backfire, а теперь Attitude Adjustment. Исходниками для разработчиков стоит пользоваться если вы ярый фанат, если в ней есть поддержка функции, которых нет в стабильных ветках, либо если ваше устройство настолько новое, что на него нет стабильных прошивок. Данную ветку берем по адресу:
svn co svn://svn.openwrt.org/openwrt/trunk/
В итоге выбираем необходимый нам репозиторий и подставляем в следующую строку. Я подставил прошивку Attitude Adjustment 12.09, поскольку она новее (на момент написания статьи). Сейчас уже появилась новая стабильная ветка на ядре 3.10 Barrier Breaker. В ней появилась поддержка новых роутеров.
svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment dir-320v1
dir-320v1-это название каталога куда будет закачиваться Buildroot OpenWrt.
В дальнейшем при сборке других прошивок удобнее меняем на dir-320v2, dir-320v3 и т.д. Но учитывая размер папок после сборки, может проще и удалить и сделать все заново.
Скачиваем и устанавливаем дополнительные пакеты и патчи:
./scripts/feeds update -a && ./scripts/feeds install -a
Проверяем наличие всех нужных для сборки пакетов и инициализируем конфигурацию прошивки:
Если каких-то пакетов не хватает, то напротив них будет стоять failed.
Доставляем их командой sudo apt-get install название пакета. Мне нужно было доставить
Конфигурируем прошивку:
Появляется основное меню конфигурации прошивки, где мы и будем производить изменения.
Выбираем систему:
TargetSystem-> BCM947xx/953xx - выбираем этот вариант для DIR-320 ver.A1
Дальше выбираем необходимые нам пакеты. Пакеты помеченные <*> будут включены в прошивку и следовательно запишутся в флешь память, которая составляет 4Мбайта, а в действительности реальный размер прошивки не должен превышать 3,6Мбайта, больше просто не прошьется. Но для openwrt размер прошивки не должен превышать 3,4Мбайта, поскольку должно остаться немного памяти для хранения конфигурационных файлов системы.
Пакеты помеченные <M> будут скомпилированы отдельными файлами с расширением ipk, которые в последствии можно будет доставить на внешний диск (usb или HDD)
KernelModules -> USB Support -> <*> kmod-usb-core - Модуль USB поддержкиcore
KernelModules -> USB Support -> <*> kmod-usb-ohci - Модуль поддержки контроллеров USB 2.0,
т.к. я планирую использовать USB-хаб. Без этого модуля хаб не подхватится системой.
KernelModules -> USB Support -> <*> kmod-usb2 - Модуль USB 2.0
KernelModules -> USB Support -> <*> kmod-usb-storage - Модуль поддержки USB накопителей
KernelModules -> Filesystems -> <*> kmod-fs-ext4 - выбираем нужные файловые системы
BaseSystem -> <*> block-mount - для монтирования через fstab
BaseSystem -> <*> block-extroot - для монтирования поверх файловой системы. В версии ядра 3.3.8 этого пункта уже нет.
Utilities -> Filesystem -> <*> e2fsprogs - утилиты для работы с жеским диском (проверка диска, форматирование, разбивка и т.д.)
Utilities->Editors-> nano -удобный текстовый редактор для конфигурирования системы
Также, добавляем веб-админку. Если влазит, то почему бы не добавить. Желающие поэкспериментировать могут ее установить уже на usb-флешке. Так же может статься что итоговый размер собранной прошивки будет превышать размер памяти, тогда прейдется жертвовать какими-то пакетами. Лучше не доставить веб-интерфейс, он нормально живет и на флешке.
Изначально я установил админку webif
Administration-> webif -> <*> webif-applications - веб-админка
Но в результате трехмесячного тестирования понял, что проект x-wrt, который разработал webif, не особо активно поддерживается. По ходу тестирования подправил пару глюков, путем закачивания обновленых скриптов с ихнего сайта, но в принципе довольно таки работоспособна. Перешел на веб-админку Luci, так как в ней есть поддержка multi-wan и мне захотелось поэксперементировать с этой фичей. Иначе сидел бы до сих пор на webif .
Итак выбираем
LuCI-> Collections-> <*> luci
LuCI-> Translations-> <*> luci-i18n-russian
На последних версиях ядра LuCI уже не влезет с e2fsprogs в 4Мбайиа прошивки, поэтому если вы дальше планируете переносить загрузку openwrt на флешку стоит оставить e2fsprogs, а LuCI установить уже на флешку.
LuCI-> Collections-> <M> luci
LuCI-> Translations-> <M> luci-i18n-russian
Затем, выбираем пакеты которые не включаются в прошивку, но их можно будет доставить потом отдельно. Выбираем только необходимые пакеты, что бы не увеличивать время сборки. Для выбора пакет без установки, нужно нажать M. Обязательными для сборки являются так называемые модули ядра, их название начинается на kmod-. Из основного репозитория их доставить не получится, т.к. они привязываются к версии сборки (номер svn). Остальные пакеты без приставки kmod можно спокойно ставить из репозитория.
Я выбрал модули ядра, необходимые для подключения UVC-камеры и USB-звуковой карты
Kernel modules-> Video Support-> <M> kmod-video-core
Kernel modules-> Video Support-> <M> kmod-video-uvc
Kernel modules-> Sound Support-> <M> kmod-sound-core
Kernel modules-> USB Support-> <M> kmod-usb-audio - это для версии ядра 2.6, а для ядра 3.3.8 этот модуль перенессли в
Kernel modules-> Sound Support -> <M> kmod-usb-audio
Также, если вы собирает прошивку для устройств на чипе atheros, например для роутера wr703n, я бы рекомендовал разблокировать 12,13 и 14 канал wifi, как описано в моей статье. Этого не нужно делать для DIR-320, т.к. он сделан на чипе brodcom.
Все сделанные изменения в menuconfig сохраняются в файле ~/openwrt/dir-320v1/.config
Этот файл скрытый. Если вы запланировали создать экспериментальную прошивку, то удобно перед этим забекапить ваш рабочий и настроенный файл .config, что бы потом не делать все настройки заново.
Собираем прошивку:
j 3 - ускаряет сборку, т.к. задает количество потоков для сборки. Негласное правило - количество ядер вашего процессора + 1. У меня два ядра.
V=99 - задает максимальную детализацию процесса компиляции, удобно для отлова ошибок. В дальнейшем можно убрать.
В процессе сборки прошивки нужен доступ к интеренту, т.к. будут докачиватся необходимые для сборки, которая займёт от 30 минут до нескольких часов, в зависимости от производительности сети и компьютера. После завершения сборки, в папке bin будут находиться созданные образы прошивки в различном формате и собранные пакеты. Нам понадобится образ прошивки в формате squashfs — openwrt-brcm47xx-squashfs.trx (для DIR-320 A)
Если по какой либо причине процесс сборки оборвется, то перед новым запуском make запустите команду make clean
Повторная сборка прошивки
Если через время вы захотите собрать более свежую прошивку или пакеты, то заходим в нашу рабочую папку (если вы ее не удалили иначе все с начала), обновляем пакеты (feeds), очищаем старую сборку и компилируем:
make clean
svn update
./scripts/feeds update -a
make -j 3
При этом процесс сборки проходит гораздо быстрее, на моем core2duo 2.8Ггц это примерно 10-15минут.
Заливка прошивки
Все тонкости прошивки DIR-320 можно прочитать на сайте dd-wrt по ссылке
В кратце по пунктам для windows
- Устанавливаем на нашем компьютере с windows ip 192.168.0.2
- Подключаем сетевым кабелем к компьютеру наш DIR-320. Кабель подключаем не в WAN-порт,а в 1-й.
- Создаем на диске c: папку bin
- Копируем туда нашу прошивку openwrt-brcm47xx-squashfs.trx
- Переименовывем ее в firmware.bin
- Скачиваем по ссылке в папку c:\bin пакетный файл для прошивки
- Отключаем DIR-320 от питания
- Запускаем пакетный файл flashing.cmd
- Скрипт попросит нажать любую клавишу. Нажимаем пробел или ENTER
- Включаем питание роутера
Должен начаться процес прошивки и в итоге мы должны получить сообщение
*** Start Flashing ****
Успешная передача: 3092480 байт за 11 сs, 281134 байт/с
После того, как загорится индикатор статуса (~2-3 мин.), можно подключаться к маршрутизатору по адресу 192.168.1.1.
Все теперь у нас есть роутер с прошивкой openwrt Backfire 10.03. Для того что бы насладится всеми прелестями этой прошивки нам надо перенести ее загрузку на внешний накопитель. Как это сделать читаем в моей последующей статье
Установка OpenWrt на внешний носитель на роутере wr703n (или DIR-320A)
P.S.
Все вышеописанное вы делаете на свой страх и риск. По своему опыту скажу, что убить DIR-320 ver.A практически не реально (!!! не путать с DIR-320 NRU !!!). Загрузчик зашит в энергонезависимую память микроконтроллера,так что в любой момент можно сделать откат на оригинальную прошивку, а дальше опять эксперементировать с новыми прошивками. Как откатится на оригинальную прошивку в случае неудачной прошивки читаем здесь
В случае неудачной прошивки wr703n прийдется покупать UART-USB переходник, подпаивать его к роутеру и покурить мануалы.
Ссылки:
Буду благодарен, если поделитесь этой статьей в социальных сетях: