Установка и настройка openwrt

Extensibility

While vendor firmware for a router ships with a fixed set of capabilities, OpenWrt provides more than 3000 packages ready to be installed.
Some of the more popular packages allow you to:

  • Utilize native dual-stack connectivity out-of-the-box or provide IPv4/IPv6 transitioning.
  • Block ads on your router so you can enjoy clean uncluttered web experience from any connected device.
  • Reduce latency/lag (bufferbloat) even during heavy traffic with Smart Queue Management

  • Secure access to your home network when away with OpenVPN or WireGuard server.
  • Secure your internet access and prevent your ISP from snooping on your internet activity with OpenVPN or WireGuard client.
  • Prevent your ISP from spoofing and snooping on your DNS requests with .
  • Encrypt your internet connection, bypass regional restrictions, access the dark net and Tor hidden services with Tor client.
  • Force connected devices with hard-coded DNS servers to use your router’s DNS with DNS hijacking.
  • Create a guest WLAN allowing access to internet, but not your local devices.
  • Control access using the time limits and parental controls.
  • Set quota on download volume or bandwidth. Useful for e.g. 3G/4G connection with limited up/download volume.
  • Add a webcam for live surveillance or timelapse video creation of landscapes or 3D printers.
  • Connect to your weather station with pywws or weewx, record weather statistics and make them accessible via a webserver, garnished with a live webcam image.
  • Interact with 1-wire devices (sensors, actors, …).
  • Make your router a central for home automation.
  • Access a wider range of Dynamic DNS (DDNS) providers than vendor firmware via DDNS scripts.

Перезаливка с OpenWrt

Однажды установив и запустив OpenWrt, у вас появится множество удобных инструментов для перезаливки прошивки через интерфейс командной строки командой . Указывайте интересующий вас раздел (пожалуйста, просмотрите или или для обозначений.
И, конечно, самый простой вариант апгреда через Web-интерфейс так же возможен.

Чтобы перезаписать существующую флэш память рядом с разделом, где установлен автозагрузчик, а так же ту часть, которая содержит ART, в случае устройства WR1043ND и схожих с ним можно использовать:

wget http://downloads.openwrt.orgsnapshotstrunkar71xxopenwrt-ar71xx-generic-tl-wr1043nd-v1-squashfs-factory.bin tmpopenwrt-firmware.bin
mtd -r write openwrt-firmware.bin firmware

Вы можете, хотя это не рекомендовано, установить прямой туннель для установки прошивки без копирования ее на временный раздел tmpfs flash-памяти роутера. В таком случае, вот ваши действия:

на обслуживающей машине: включите сервис netcat с прослушиванием на 5050 порту, отправьте прошивку в тот момент, когда будет установлено соединение:

nc -l -p 5050 -q 1 < openwrt-XXXX-XXXX.trx

затем подключитесь по ssh к роутеру и запустите скачивание и установку прошивки с сервера:

nc 192.168.1.6 5050 | mtd -e linux -r write - linux

Последняя описанная процедура не рекомендована, но она может быть использована в случае, если у вас обнаружится дефицит памяти на устройстве.

Проверьте файл прошивки и запустите прошивку

  1. Подключитесь к устройству через кабель Ethernet (используйте только беспроводную связь, если в устройстве нет параметров подключения Ethernet)
  2. Войдите в графический интерфейс веб-администратора LEDE и в меню Система → Резервное копирование/флэш-прошивка перейдите к разделу “Flash new firmware image” section.
  3. Снимите/флажок “Сохранить настройки”! (больше информации о флажке «Keep settings» это редкие случаи использования).
  4. Убедитесь, что файл прошивки LEDE, который вы собираетесь выполнить, соответствует вашей модели маршрутизатора и называется “….sysupgrade.bin”, так как вы обновите существующую систему LEDE/OpenWrt до новой версии прошивки LEDE.
  5. В разделе “Flash new firmware image” нажмите “Выбрать файл” чтобы выбрать файл изображения, затем нажмите “Flash image…”. Это отображает страницу “Flash Firmware — Verify“ page, содержащую контрольную сумму SHA256 файла изображения, только что загруженного на маршрутизатор.
  6. Убедитесь, что контрольная сумма прошивки, отображаемая в веб-графическом интерфейсе, соответствует контрольной сумме SHA256 со страницы, загруженной LEDE. Если он не соответствует, НЕ продолжайте, поскольку он является поврежденным файлом и, скорее всего, будет блокировать ваше устройство. Примечание. Если вы обновляетесь с OpenWRT 15.05, отображается 32 символа — контрольная сумма MD5, а не SHA256. Перед продолжением проверьте эту контрольную сумму MD5 в своей операционной системе.
  7. Если контрольная сумма совпадает, нажмите “Продолжить”. Это запускает “System — Flashing …” вместе с вращающимся колесом и “Ожидание внесения изменений…”
  8. Это может занять несколько минут, в то время как маршрутизатор загружает изображение прошивки и записывает его в свой флеш-диск и наконец, перезагружается.
  9. Установлена ​​новая прошивка. Перейдите к следующему разделу, чтобы проверить результат.

Исправление проблем:

  • если процесс контрольной суммы не удался, НЕ начинайте мигать, так как загрузка может быть повреждена. Коррумпированный файл прошивки может заблокировать ваше устройство! Вместо этого повторите эту процедуру с другой попыткой загрузки из раздела загрузки.
  • если шаг контрольной суммы неоднократно прерывается, вы можете обратиться за «помощью к форуму LEDE» for help. Обязательно укажите точный бренд, модель и версию вашего устройства.

Дополнительная настройка после обновления OpenWRT

Проверка новой версии ОС

* В Luci, перейдите к положению> Обзор, чтобы подтвердить, что вы запускаете новый релиз OpenWRT
* В SSH баннер входа содержит сведения о выпуске

Проверьте наличие обновляемого пакетов

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

Перечислите любые доступные обновляемые пакеты:

opkg update
opkg list-upgradable
  • Обновите все перечисленные пакеты (если они были перечислены) — можно включить несколько пакетов
  • Примечание: на устройстве только с 4МБ NVRAM, эти обновления могут не соответствовать — проверить наличие свободного места на / first with “df -h /” и убедитесь, есть по крайней мере, 600KB или так свободно
  • Примечание: обновления ниже были доступны по состоянию на 12 сентября 2015 года обновления OpenWrt 15.05
opkg upgrade luci-lib-ip luci-theme-bootstrap luci-app-firewall luci-proto-ppp luci-mod-admin-full luci-base luci-proto-ipv6 luci-lib-nixio luci

* Убедитесь,что пакеты больше не могут быть обновлены; команда не должна отображать выходные данные

opkg list-upgradable

Переустановите пакеты, установленные пользователем

После успешного обновления необходимо переустановить все ранее установленные пакеты. Вы составили список этих выше. Файлы конфигурации пакетов должны быть сохранены из-за действий, описанных выше, но не из-за самих пакетов.

Например:

opkg update
opkg install snmpd-static

Настройка установленных пользователем пакетов

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

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

Программа diffutils полезна для этого.

Например:

# Установить Diffutils
opkg install diffutils
 
# Найти все файлы -opkg
find etc -name *-opkg
 
# сравниваем старые настроенный файл /etc/config и/snmpd будет с новый общий файл /etc/config и/snmpd будет-opkg
diff etcconfigsnmpd etcconfigsnmpd-opkg 
 
# слияние всех необходимых изменений в активной версии файла конфигурации
vi etcconfigsnmpd
# и очистить путем удаления пакета менеджер-версию файла конфигурации
rm etcconfigsnmpd-opkg
 
# Или если новая версия предоставляется сопровождающим пакета следует просто заменить старый конфигурационный файл,то просто поменять его в
mv etcconfigsnmpd-opkg etcconfigsnmpd

Включить и запустить установленные пользователем пакеты

* Наконец, вновь установленные пакеты должны быть включены и запущены (если это необходимо; многие делают)

etcinit.dsnmpd enable
etcinit.dsnmpd start

Выполните пробную перезагрузку

Обновление полностью завершено. Хорошая идея сделать тестовую перезагрузку и убедиться, что все ожидаемые функциональные возможности работают, как и раньше.

reboot

Альтернативные процедуры обновления ОС до Luci или sysupgrade

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

mtd

  1. Если sysupgrade не поддерживается для встроенного устройства,вы должны использовать вместо:
    mtd -r write /tmp/openwrt-ar71xx-generic-wzr-hp-ag300h-squashfs-sysupgrade.bin firmware

Netcat

Прямой метод

Netcat можно было бы использовать, если вы не можете свободно достаточно оперативной памяти. См netcat. Netcat должен быть установлен первым.

Этот метод НЕ рекомендуется!
  1. На компьютере Linux запустите:
    nc -q0 192.168.1.1 1234 < openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin
  2. На маршрутизаторе выполните:
    nc -l -p 1234 | mtd write - firmware

Косвенный метод

Этот метод намного безопаснее, если у вас достаточно оперативной памяти.

Этот метод отлично подходит для самостоятельной сборки firmwares.

Вы должны проверить, сколько оперативной памяти у вас есть в настоящее время.(В случае, если у вас нет достаточно осталось, обратитесь бесплатно оперативную память.)

free

Передача файла изображения во временную папку

На вашем GNU/Linux PC запустите run:cat .bin | pv -b | nc -l -p 3333

На маршрутизаторе выполните:run:nc 192.168.1.111 3333 > /tmp/.bin

Порт 3333 адрес 192.168.1.111 IP только примеры. Команда «’pv -b’» является обязательным для отслеживания прогресса, но возможно вы должны установить рv к вашей системе ранее.

Напишите это для вспышки

  sysupgrade:<code>sysupgrade -v /tmp/.bin </code>

ИЛИ

  mtd:<code>mtd -r write /tmp/.bin firmware</code>

Я тестировал под Ubuntu 11.10.

Некоторые полезные ссылки для Netcat

  • http://www.g-loaded.eu/2006/11/06/netcat-a-couple-of-useful-examples/

  • http://www.screenage.de/blog/2007/12/30/using-netcat-and-tar-for-network-file-transfer/

  • https://help.ubuntu.com/community/BackupYourSystem/TAR

  • http://www.aboutdebian.com/tar-backup.htm

scp

Убедитесь, что маршрутизатор имеет достаточно памяти.

root@OpenWrt:/# free

Убедитесь, что вы установили пароль для маршрутизатора (для включения SSH необходимо установить пароль для маршрутизатора). См. First Login для получения более подробной информации.

Скопируйте прошивку на маршрутизаторе

На вашем компьютере Linux запустите:

linux$ scp openwrt-ar71xx-tl-wr1043nd-v1-squashfs-sysupgrade.bin root@192.168.1.1:/tmp

Ввод «да» estabilish подлинность,а затем введите пароль вашего маршрутизатора. Подождите scp команда завершена.Теперь вы можете видеть прошивку в /tmp каталог.

Написать прошивку вашего маршрутизатора

root@OpenWrt:/# sysupgrade -v /tmp/.bin 

Заметка

192.168.1.1 является IP — адрес (можно назвать GateWay) вашего маршрутизатора. Проверка бегом:
run:

linux$ ip r 

или вы можете проверить файл /etc/config/network file, 127.0.0.1 является петлевой IP адрес, другой является IP адрес вашего маршрутизатора.

root@OpenWrt:/# grep ipaddr /etc/config/network 

Installation

1. Install all the needed packages

opkg update
opkg install usb-modeswitch kmod-mii kmod-usb-net kmod-usb-wdm kmod-usb-net-qmi-wwan uqmi

If your have not enough space on your device — think of installing Rootfs on External Storage (extroot)

Another option is Hardware memory upgrade. Refer to your router Forum thread for possibility and instructions.

2. Reboot the router

reboot

3. Check that everything is OK and You got new device:

ls -l /dev/cdc-wdm0

crw-r--r--    1 root     root      180, 176 Oct  1 12:03 /dev/cdc-wdm0

If you have no such device — try to find out what went wrong:

try dmesg to read kernel logs on USB init

dmesg

or look info about USB devices and interfaces present in the system:

cat /sys/kernel/debug/usb/devices

T:  Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#=  3 Spd=480  MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=12d1 ProdID=1506 Rev= 0.00
S:  Manufacturer=Huawei Technologies
S:  Product=HUAWEI Mobile
C:* #Ifs= 3 Cfg#= 1 Atr=c0 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=02 Driver=option
E:  Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=ff(vend.) Sub=01 Prot=09 Driver=qmi_wwan
E:  Ad=82(I) Atr=03(Int.) MxPS=  64 Ivl=2ms
I:* If#= 2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=01 Prot=08 Driver=qmi_wwan
E:  Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E:  Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=4ms

See Troubleshooting Section of this page for more information.

Четыре пути

Существует четыре способа установки OpenWrt на ваше устройство:

1. Из-под оригинальной прошивки

Откройте в вашем браузере Web-интерфейс оригинальной прошивки и установите файл OpenWrt через опцию “Firmware Upgrade”. Готово.
Как правило, нужный файл прошивки OpenWRT содержит в названии подстроку “-factory”, например,

Иногда оригинальная прошивка проверяет, какой файл ей предлагают для “обновления”. В случае, если заводская прошивка решит, что предлагаемый ей файл не является приемлемым, вам не удастся установить OpenWrt одним кликом. Не отчаивайтесь, попробуйте один из оставшихся трех путей.

2. Через автозагрузчик и Ethernet порт

Чтобы провернуть такой вариант, а именно принудительно залить прошивку, можно воспользоваться тем, что большинство автозагрузчиков содержат встроенный функционал для таких целей. Некоторые содержат TFTP-client, другие — TFTP-server, третьи FTP-client, а некоторые даже FTP-server. Вам необходимо выяснить:

IP адрес автозагрузчика (это не обязательно тот же IP адрес, который устройство имеет по умолчанию для доступа через web-интерфейс!);

какие из вышеуказанных протоколов используются;

работает ли автозагрузчик как клиент или как сервер;

какой порт используется для подключения к автозагрузчику по умолчанию (Если не можете ответить на этот вопрос, попробуйте порт по умолчанию);

интерфейс к которому надо подключиться;

возможно, потребуется username и login (для доступа не к web-интерфейсу, а именно к автозагрузчику);

важно также узнать время после включения, в течение которого ваше устройство принимает входящие подключения к автозагрузчику. Это может быть, например, время в 2 секунды, начиная с 3-ой секунды после включения устройства в сеть.. Как только вы получили ответы на все эти вопросы, вы можете продолжать:

Как только вы получили ответы на все эти вопросы, вы можете продолжать:

  1. установите, по необходимости, недостающие программы на ваш PC для доступа к роутеру (так, если автозагрузчик содержит FTP-server, вам нужен FTP-client);
  2. прочитайте инструкции по использованию этих программ! например , , , , , или другую документацию;
  3. задайте статический IP адрес вашему PC внутри той же подсети, в которой находится автозагрузчик вашего роутера;
  4. соедините ваш PC с соответствующим портом;
  5. включите ваш роутер;
  6. установите соединение с роутером именно в тот момент, когда это позволяет сделать автозагрузчик;
  7. следуйте соответствующим процедурам по заливке файла OpenWrt на ваш роутер;
  8. Не изменяйте или переустанавливайте автозагрузчик если это не будет прямо оговорено!

Иногда даже автозагрузчик не позволяет записать файл прошивки на flash память устройства, например, в Inventel DV4210 (AKA Livebox).

Методы установки

  • Установка OpenWrt с помощью TFTP

  • → generic.flashing.ftp

  • → generic.flashing.xmodem

→ port.jtag

Утилита Командной Строки (UCI)

Использование awk и grep для парсинга конфигурационных файлов OpenWrt является избыточным, неумным и неэффективным. Вместо этого используйте утилиту uci для получения того что Вам нужно.

Ниже приведено описание, а также некоторые полезные примеры использования этой мощной утилиты. Запомните, друзья не позволяют друзьям парсить собственные конфигурационные файлы!

Когда есть несколько правил, следующих одно за другим, uci использует для них ссылки похожие на адресацию в массивах.
Если есть 8-мь серверов NTP, uci позволит Вам ссылаться на их секции как timeserver.@timeserver для первого сервера или timeserver.@timeserver для последнего. Вы также можете использовать отрицательные индексы, как например timeserver.@timeserver. ”-1“ означает “последний”, ”-2“ предпоследний, и т.д. Это оказывается очень удобно, когда добавляются новые правила к концу списка. См. пример ниже.

Использование

Usage: uci  <command> 

Commands:
	batch
	export     
	import     
	changes    
	commit     
	add        <config> <section-type>
	add_list   <config>.<section>.<option>=<string>
	show       ]]
	get        <config>.<section>
	set        <config>.<section>=<value>
	delete     <config>]
	rename     <config>.<section>=<name>
	revert     <config>]

Options:
	-c <path>  установка пути поиска конфигурационных файлов (по умолчанию: /etc/config)
	-d <str>   установка разделителя для значений списка в uci show
	-f <file>  использовать для ввода информации содержимое файла <file> вместо стандартного потока stdin
	-m         при импорте, объединение данных в уже существующий пакет
	-n         имя не именованной секции при экспорте (по умолчанию)
	-N         не присваивать имени не именованным секциям
	-p <path>  добавить путь поиска файлов измененной конфигурации
	-P <path>  добавить путь поиска файлов измененной конфигурации и использовать его по умолчанию
	-q         тихий режим (не печатаются сообщения об ошибках)
	-s         строгий режим (останавливаться на ошибках парсинга, используется по умолчанию)
	-S         отключить строгий режим
	-X         не использовать расширенный синтаксис для 'show'
Цель Описание
Сохраняет изменения данного конфигурационного файла, либо, если он не указан, всех конфигурационных файлов в файловую систему. Все команды “uci set”, “uci add”, “uci rename” и “uci delete” сохраняют результаты во временное хранилище и сохраняются сразу скопом во флэш-память с помощью “uci commit”. Это не нужно делать после редактирования конфигурационного файла в текстовом редакторе, но необходимо для скриптов, GUI и других программ работающих непосредственно с UCI файлами.
Запускает многострочный UCI скрипт, который обычно выполнен в форме here-документа).
Экспорт конфигурации в машино-читаемый формат. Используется внутренне для преобразования конфигурационных файлов в shell-скрипты.
Импорт конфигурационных файлов в синтаксисе UCI.
Список зарезервированных (пер. но еще не сохраненных) изменений данного конфигурационного файла или, если файл не указан, всех конфигурационных файлов.
Добавить анонимную секцию типа в данную конфигурацию.
Добавить данную строку в существующий список опций.
Отобразить данную опцию, секцию или конфигурацию в компактном виде.
Получить значение данной опции или тип данной секции.
Установить значение данной опции, или добавить новую секцию с типом равным указанному значению.
Удалить данную секцию или опцию.
Переименовать данную секцию или опцию.
Отменить изменения данной опции, секции или конфигурационного файла.

Нет необходимости рестарта всей системы

После изменения порта, который слушает сервер uhttpd, с 80 на 8080 в файле /etc/config/uhttpd, сохраним изменения. Затем выполним

И затем

Все сделано. Перезагрузка не требуется.

Рассмотрим следующий пример конфигурационного файла:

В соответствующих группах адресация эквивалентна:

Добавление правила межсетевого экрана

Это хороший пример, демонстрирующий добавление правила для перенаправления TCP SSH порта и синтаксис отрицательной адресации (-1), используемый в uci (пер. — в данном случае, используется ссылка на последнее добавленное правило).

Получение IP адреса WAN интерфейса

  • Backfire
    uci -P/var/state get network.wan.ipaddr
  • Trunk (not really uci)
    . /lib/functions/network.sh; network_get_ipaddr ip wan; echo $ip

Установка

Процедура описана для роутера TP-LINK. Он выбран для примера. Работа с другими моделями маршрутизаторов производится аналогичным образом. Для того, чтобы установить OpenWRT, необходимо выполнить следующую последовательность действий:

После этого происходит перепрошивка устройства, появляется возможность настраивать роутер. Теперь доступ к нему осуществляется через web-интерфейс.

Теперь необходимо сделать начальную настройку интернета для OpenWRT. Для этого выполняют такие действия:

Нужен зайти в настройку OpenWRT. Для этого предусмотрен ввод логина и пароля. Однако при первом входе пароль вводить не требуется. В качестве логина вводится «root» (без кавычек).
Чтобы настроить вход, необходимо перейти в соответствующий раздел для установки нового пароля. Его нужно ввести дважды таким образом, чтобы введенные символы в обоих случаях совпадали.
В качестве типа соединения устанавливают «lan».
Затем в разделе для параметров веб-интерфейса устанавливают новый IP-адрес (можно, например, использовать 192.168.99.1) для доступа к OpenWRT. Это поможет в дальнейшем избежать конфликтов в сети с другими роутерами, если они имеются

Это особенно важно в тех случаях, когда настройка производится для большого офиса. Теперь при входе нужно будет использовать новый адрес.

После подтверждения ввода новые параметры вступят в силу. Иногда сразу графический интерфейс недоступен, в таком случае нужно использовать соединение по SSH через терминал. После этого потребуется продолжать настройку через командный интерфейс.

Важно! Если не хватает памяти роутера, имеется возможность ее расширить с помощью USB-флешки

Discovery (How to find out)

cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00020000 00010000 "u-boot"
mtd1: 00140000 00010000 "kernel"
mtd2: 00690000 00010000 "rootfs"
mtd3: 00530000 00010000 "rootfs_data"
mtd4: 00010000 00010000 "art"
mtd5: 007d0000 00010000 "firmware"

The erasesize is the block size of the flash, in this case 64KiB. The size is little or big endian hex value in Bytes. In case of little endian, you switch to hex-mode and enter 02 0000 into the calculator for example and convert to decimal (by switching back to decimal mode again). Then guess how they are nested into each other. Or execute after a fresh boot and look for something like:

Creating 5 MTD partitions on "spi0.0":
0x000000000000-0x000000020000 : "u-boot"
0x000000020000-0x000000160000 : "kernel"
0x000000160000-0x0000007f0000 : "rootfs"
mtd: partition "rootfs" set to be root filesystem
mtd: partition "rootfs_data" created automatically, ofs=2C0000, len=530000
0x0000002c0000-0x0000007f0000 : "rootfs_data"
0x0000007f0000-0x000000800000 : "art"
0x000000020000-0x0000007f0000 : "firmware"

These are the start and end offsets of the partitions as hex values in Bytes. Now you don’t have to guess which is nested in which. E.g. 02 0000 = 131.072 Bytes = 128KiB.

Дополнительные установки

Чтобы было удобно применять настройки русским пользователям OpenWRT, можно произвести локализацию. Нужно выбрать инструмент Software через раздел System и кликнуть на Update lists. В разделе Available Packages необходимо найти пакет с русскоязычной версией, который называется Luci-i18n-russian – его нужно установить. После успешной загрузки пакета перейти в System два раза и во вкладке языка выбрать русский.

Обратите внимание! Случается, такое, что приходится сбрасывать настройки маршрутизатора на OpenWRT путем выполнения командной строки: rm -rf /overlay/*. Данные команды осуществляют форматирование виртуального образа, который представлен в двух частях

Найдите и загрузите прошивку OpenWrt

На странице Таблица оборудования: Загрузка прошивки найдите своё устройство.

Загрузите файл sysupgrade

Обратите внимание, что не все устройства имеют изображение прошивки под названием sysupgrade.bin.. Исправление проблем:

Исправление проблем:

  • Некоторым устройствам не хватает изображения sysupgrade и требуется специальная (и, как правило, более сложная) процедура установки, специфичная для устройства. Этот учебник не будет применяться для таких устройств. Вместо этого следуйте произвольному описанию установки на соответствующей странице устройства в вики OpenWrt.
  • Если вы не найдете свое устройство на страницах “Страницы оборудования или страниц устройств/Techdata”, вы также можете попробовать альтернативные способы поиска изображений прошивки LEDE.

  • Если вы случайно просмотрели общие папки загрузки светодиодов для поиска своего устройства, вы можете увидеть еще несколько файлов для загрузки, соответствующих вашему устройству.

Details

generic

The flash chip can be represented as a large block of continuous space:

start of flash …………….. end of flash

There is no ROM to boot from; at power up the CPU begins executing the code at the very start of the flash. Luckily this isn’t the firmware or we’d be in real danger every time we reflashed. Boot is actually handled by a section of code we tend to refer to as the bootloader (the BIOS of your PC is a bootloader).

Boot Loader Partition Firmware Partition
Atheros U-Boot firmware
Broadcom CFE firmware
Atheros RedBoot firmware

The partition or partitions containing so called Special Configuration Data differ very much from each other. Example: The -partition you will meet in conjunction with Atheros-Wireless and U-Boot, contains only data regarding the wireless driver, while the -partition of broadcom devices is used for much more than only that. There are special utilities to access and modify special configuration partitions. For Broadcom devices this is the utility. To find out what is written in you can run .

Note that clearing these special configuration data partitions like and does not clear much of OpenWrt’s configuration, unlike other router software which keep configuration data solely in e.g. . Instead, as a consequence of using the overlay_fs filesystem configuration with JFFS2 flash partition, the whole file system is writable and allows the flexibility of extending your OpenWrt installation in any way you want. OpenWrt’s main configuration is therefore just kept in the root file system, using UCI configuration files. For convenience, many other packages are made UCI compatible. If you want to reset your complete installation you should use OpenWrt’s built-in functionality such as sysupgrade to restore settings, by clearing the JFFS2 partition. Or, if you cannot boot normally, you can wipe or change the JFFS2 partition using OpenWrt’s failsafe mode (look in your device’s dedicated page for information how to boot into failsafe).

broadcom with CFE

If you dig into the “firmware” section you’ll find a trx. A trx is just an encapsulation, which looks something like this:

trx-header
HDR0 length crc32 flags pointers data

“HDR0” is a magic value to indicate a trx header, rest is 4 byte unsigned values followed by the actual contents. In short, it’s a block of data with a length and a checksum. So, our flash usage actually looks something like this:

CFE trx containing firmware NVRAM

Except that the firmware is generally pretty small and doesn’t use the entire space between CFE and NVRAM:

CFE trx firmware unused NVRAM

(: The <model>.bin files are nothing more than the generic *.trx file with an additional header appended to the start to identify the model. The model information gets verified by the vendor’s upgrade utilities and only the remaining data – the trx – gets written to the flash. When upgrading from within OpenWrt remember to use the *.trx file.)

So what exactly is the firmware?

The boot loader really has no concept of filesystems, it pretty much assumes that the start of the trx data section is executable code. So, at the very start of our firmware is the kernel. But just putting a kernel directly onto flash is quite boring and consumes a lot of space, so we compress the kernel with a heavy compression known as LZMA. Now the start of firmware is code for an LZMA decompress:

lzma decompress lzma compressed kernel

Now, the boot loader boots into an LZMA program which decompresses the kernel into RAM and executes it. It adds one second to the bootup time, but it saves a large chunk of flash space. (And if that wasn’t amusing enough, it turns out the boot loader does know gzip compression, so we gzip compressed the LZMA decompression program)

Immediately following the kernel is the filesystem. We use SquashFS for this because it’s a highly compressed readonly filesystem – remember that altering the contents of the trx in any way would invalidate the crc, so we put our writable data in a JFFS2 partition, which is outside the trx. This means that our firmware looks like this:

trx gzip’d lzma decompress lzma’d kernel (SquashFS filesystem)

And the entire flash usage looks like this —

CFE trx gz’d lzma lzma’d kernel SquashFS JFFS2 filesystem NVRAM

That’s about as tight as we can possibly pack things into flash.

Оцените статью
Рейтинг автора
5
Материал подготовил
Андрей Измаилов
Наш эксперт
Написано статей
116
Добавить комментарий