User Tools

Site Tools


ru:doc:howto:generic.sysupgrade

Процедура обновления ОС OpenWrt (Luci или sysupgrade)

  • Похожие страницы:
  • F Layoutlash:обеспечивает фон о том, как OpenWrt использует дисковое пространство устройства
  • Forum post Identify packages to be re-installed after system upgrade содержит многообещающий скрипт участников форума mforkel и Rafciq, который автоматизирует переустановку пакетов)

Обновление OpenWrt заменит всю текущую установку OpenWRT с новой версией. Это включает в себя ядро ​​Linux, раздел SquashFS и раздел JFFS2.

Пути общего обновления ниже будет автоматически сохранять большую часть OpenWRT OS конфигурации путем сохранения и последующего восстановления файлов конфигурации в конкретных общих местах ( в том числе / etc / config конфигурации). Это позволит сохранить такие вещи, как настройки OpenWRT сети, настройки Wi-Fi, имя хоста устройства, и так далее.

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

Далее это реальное обновление. Есть два пути общего обновления, чтобы фактически выполнить обновление. Один использует веб - интерфейс LuCI команду «Flash нового образ прошивки» и один использует командную строку sysupgrade команду. Вы можете использовать любой подход.

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

Подготовка к обновлению OpenWrt

Как работает обновление OpenWrt OS

Процедуры обновления Luci и sysupgrade работают путем сохранения указанных конфигурационных файлов,удаления всей файловой системы, установки новой версии OpenWrt и последующего восстановления сохраненных конфигурационных файлов. Это означает,что все части файловой системы, которые не были специально сохранены, будут потеряны.

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

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

Определение пользовательских настроек

Список установленного пользователя пакеты определены в базе данных opkg пакета

Этот сценарий из gsenna членов форума и был первоначально размещен в форуме для обсуждения « по умолчанию пакетов отношения 12.09rc2 1043nd» TP-Link в https://forum.openwrt.org/viewtopic.php?id=43480

  • Создание сценария
vi /tmp/listuserpackages.sh
#!/bin/ash
echo >&2 User-installed packages are the following:
sed -ne '/^Package:[[:blank:]]*/ {
	s///
	h
}
/user installed/ {
	g
	p
}' /usr/lib/opkg/status
  • Запуск сценария
/bin/ash /tmp/listuserpackages.sh
  • Пример вывода:
User-installed packages are the following:
snmpd-static

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

Альтернативный сценарий, который использует AWK вместо SED / Grep и значительно короче (при условии пользователя Valentijn):

  • Создание сценария
vi /tmp/listuserpackages.awk
/^Package:/{PKG= $2}
/^Status: .*user installed/{print PKG}
  • Запуск сценария
awk -f /tmp/listuserpackages.awk /usr/lib/opkg/status

Этот скрипт будет выводить только список пользователей (и по умолчанию) установленные пакеты.

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

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

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

# Эта версия для OpenWrt 14,07 "Barrier Breaker" или раньше
find /overlay/ | sed s:/overlay::g | while read file; do opkg search $file; done | awk '{print $1}' | sort | uniq
 
# Эта команда для OpenWRT 15,05
find /overlay/upper/ | sed s:/overlay/upper::g | while read file; do opkg search $file; done | awk '{print $1}' | sort | uniq

Убедитесь, что нужные файлы конфигурации будут сохранены

LuCI и sysupgradeобновления будут сохранять файлы конфигурации:

  • перечисленные
opkg list-changed-conffiles
  • файлы, перечисленные в текстовых файлах /lib/upgrade/keep.d/(например, /lib/upgrade/keep.d/base-file-essential)
  • файлы, перечисленные в /etc/sysupgrade.conf

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

Метод LuCI

Перейдите система > Резервное копирование/флэш-прошивки > вкладку “Конфигурация”. Это покажет текущее содержимое файла /etc/sysupgrade.conf file и окно редактирования можно использовать для добавления в файл дополнительных строк. После редактирования нажмите кнопку“ Отправить”.

Для того, чтобы просмотреть все конфигурационные файлы, которые будут сохранены на обновление, нажмите «Открыть список …» кнопку.

Метод командной строки

Редактирование /etc/sysupgrade.conf с редактором. Например:

vi /etc/sysupgrade.conf
## This file contains files and directories that should
## be preserved during an upgrade.

# /etc/example.conf
# /etc/openvpn/

## customization: preserve sudo files
/etc/sudoers
/etc/sudoers.d/

Legacy: LuCI flash_keep section of /etc/config/luci

Luci имеет отдельный набор настроек в разделе «Конфигурация экстерн „flash_keep“» в файле /etc/config/luci относящийся к файлам конфигурации, которые должны быть сохранены.

В прошлом по-видимому, этот список был использован Luci (см https://forum.openwrt.org/viewtopic.php?pid=100739#p100739) Однако, по крайней мере из OpenWrt 14.07, процедура обновления LuCI OpenWrt на самом деле вызывает сценарий sysupgrade и поэтому появляется настройки flash_keep в /etc/config/luci теперь игнорируются.

Определение обновления изображения OpenWRT

  • Только “…-sysupgrade.bin” версия OpenWRT загрузки изображения должны быть использованы для обновления OpenWRT. Файл “…-factory.bin” для переключения от поставщика по умолчанию прошивки на OpenWrt и не используется для OpenWrt-к-OpenWrt модернизаций.
  • Найдите правильные “…-sysupgrade.bin” обновить файл для вашего конкретного устройства в зоне загрузки OpenWRT.

OpenWrt on x86

:!: Для систем x86 нет «sysupgrade» изображений, просто убедитесь, что использовать новый образ прошивки имеет ту же семью файловой системы (если текущая прошивка использует SquashFS то новый будет использовать SquashFS, а также и если ток, В новую воли использовать файловую систему доб Обратите внимание, что обновление с ext2 [10.03.1] на ext4 [12,09], похоже, не работает Испытано 10.03.1 SquashFS на 12,09 SquashFS, работая,.. 10.03.1 SquashFS до 12.09 ext4 неуспешно; 10.03.1 ext2 до 12.09 ext4 не удался)

Определение обновления изображения OpenWRT

Для обновления LuCI основе

  • Загрузите нужный файл обновления на компьютер с помощью веб-браузера
  • Перейдите к процедуре обновления Luci, ниже

Для sysupgrade на основе обновления

  • Загрузите нужный файл обновления в локальный / tmp RAM-диск в вашей системе OpenWrt. Каталог “ / tmp ” хранится в оперативной памяти (используя tmpfs),а не в постоянной флэш-памяти.
# Пример загрузки OpenWrt 15.05 образ обновления на TP-LINK TL-WR1043ND версия. 1.x router
cd /tmp
wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/openwrt-15.05-ar71xx-generic-tl-wr1043nd-v1-squashfs-sysupgrade.bin
 
# Проверить целостность файла образа:
wget http://downloads.openwrt.org/chaos_calmer/15.05/ar71xx/generic/md5sums
# Желаемый результат, что загруженный файл прошивки файла в списке "ОК" впоследствии:
md5sum -c md5sums 2> /dev/null | grep OK
  • Перейдите к разделу “Убедитесь, что нужные файлы конфигурации будут сохранены” ниже:

Поиск и устранение неисправностей: /tmp слишком малы, чтобы держать загруженный файл

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

Во-первых использование проверки памяти с free или top или cat /proc/meminfo командами; действовать, если у вас есть столько свободной оперативной памяти, как изображение в размере плюс некоторые дополнительные MiB свободной памяти.

root@openwrt:/$ free total used free shared buffers Mem: 29540 18124 11416 0 1248 -/+ buffers: 16876 12664 Swap: 0 0 0
root@openwrt:/$ df Filesystem 1K-blocks Used Available Use% Mounted on /dev/root 2304 2304 0 100% /rom tmpfs 6696 60 6636 1% /tmp tmpfs 512 0 512 0% /dev /dev/mtdblock3 576 288 288 50% /overlay mini_fo:/overlay 2304 2304 0 100% /

One has actually 752+6636 KiB of free memory available.

  • quickest and safest way to free up, some RAM is to delete the opkg packages file:
rm -r /tmp/opkg-lists/
  • drop caches:
sync && echo 3 > /proc/sys/vm/drop_caches
  • предотвратить загрузку драйверов беспроводной сети при следующей загрузке и перезагрузке:
rm /etc/modules.d/*80211*
rm /etc/modules.d/*ath9k*
rm /etc/modules.d/b43*
reboot

Беспроводные драйверы, обычно занимают некоторое количество оперативной памяти и не требуется (если вы подключены через беспроводную конечно ;-)), поэтому простой способ освободить RAM-это удалить cимлинки в etc/modules.d, поэтому они не загружаются в память при следующей перезагрузке.

Процедура обновления веб-интерфейс LuCI

  • Войдите в веб-интерфейс маршрутизатора Luci (по умолчанию: http://192.168.1.1)
  • Выбрать системы ⇒ резервного копирования / обновить Встроенное по ⇒ конфигурации редактировать “в/etc/sysupgrade.conf” (настройка отношения)
  • Выбрать системы ⇒ система ⇒ файлов редактировать “в/etc/sysupgrade.conf” (Предыдущие версии)
  • Выбор Системы ⇒ Резервного Копирования / Обновить Встроенное По ⇒ Действия (Отношение Регулировки)
  • Выбор системы ⇒ флэш-прошивки (предыдущих версий)
  • Загрузить внешний файл изображения обновления, который вы скачали
  • Luci будет вычислять контрольную сумму MD5 файла, если он правильный, чтобы перейти
  • Подождите, пока маршрутизатор не вернется онлайн
  • После автоматической перезагрузки, система должна придумать те же параметры конфигурации, как и раньше: IP-адрес в одной сети, то же SSH пароль и т.д.
  • Перейдите к «Дополнительным настройкам после обновления OpenWRT» раздел ниже

sysupgrade SSH / Процедура обновления терминала

  • Похожие страницы:

https://wiki.openwrt.org/doc/techref/sysupgrade

  • Используйте следующую команду для обновления:
sysupgrade -v /tmp/filename-of-downloaded-sysupgrade.bin
  • Многословный-вариант должен дать некоторые результаты, аналогичные этим. Список файлов конфигурации, сохраненных будет меняться в зависимости от того, какие пакеты установлены и какие файлы были настроены, чтобы спастись, как указано выше.
Saving config files...
etc/config/dhcp
etc/config/dropbear
etc/config/firewall
etc/config/luci
etc/config/network
etc/config/snmpd
etc/config/system
etc/config/ubootenv
etc/config/ucitrack
etc/config/uhttpd
etc/config/wireless
etc/dropbear/authorized_keys
etc/dropbear/dropbear_dss_host_key
etc/dropbear/dropbear_rsa_host_key
etc/firewall.user
etc/group
etc/hosts
etc/inittab
etc/passwd
etc/profile
etc/rc.local
etc/shadow
etc/shells
etc/sudoers
etc/sudoers.d/custom
etc/sysctl.conf
etc/sysupgrade.conf
killall: watchdog: no process killed
Sending TERM to remaining processes ... ubusd askfirst logd logread netifd odhcpd snmpd uhttpd ntpd dnsmasq
Sending KILL to remaining processes ... askfirst
Switching to ramdisk...
Performing system upgrade...
Unlocking firmware ...

Writing from <stdin> to firmware ...  [w]
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware...TRX header not found
Error fixing up TRX header
Upgrade completed
Rebooting system...

Примечание: «заголовок TRX не найден» и «фиксации ошибок на заголовок TRX» ошибки не проблема, так как на OpenWRT пост разработчик Джоу по адресу: https://dev.openwrt.org/ticket/8623

  • Подождите, пока маршрутизатор не вернется онлайн
  • После автоматической перезагрузки, система должна придумать те же параметры конфигурации, как и раньше: IP-адрес в одной сети, то же SSH пароль etc.
  • Перейдите к «Дополнительным настройкам после обновления OpenWRT» раздел ниже

Устранение неисправностей

  • В случае, если это не так, попробуйте cold reset (= прерывание электрического тока к устройству, подождите пару секунд, а затем подключить его снова).
По неизвестным причинам, холодный сброс часто сообщается необходимо после sysupgrade. Это очень и очень плохо в случае, если вы выполнили это удаленно!

Дополнительная настройка после обновления 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 /etc/config/snmpd /etc/config/snmpd-opkg 
 
# слияние всех необходимых изменений в активной версии файла конфигурации
vi /etc/config/snmpd
# и очистить путем удаления пакета менеджер-версию файла конфигурации
rm /etc/config/snmpd-opkg
 
# Или если новая версия предоставляется сопровождающим пакета следует просто заменить старый конфигурационный файл,то просто поменять его в
mv /etc/config/snmpd-opkg /etc/config/snmpd

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

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

/etc/init.d/snmpd enable
/etc/init.d/snmpd start

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

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

reboot

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

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

mtd

  1. Если sysupgrade не поддерживается для встроенного устройства,вы должны использовать mtd вместо:
    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 up RAM.)

free

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

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

    :

  • На маршрутизаторе выполните:run:
    nc 192.168.1.111 3333 > /tmp/[specified firmware].bin 
  • Порт 3333 адрес 192.168.1.111 IP только примеры. Команда «'pv -b'» является обязательным для отслеживания прогресса, но возможно вы должны установить рv к вашей системе ранее.

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

  sysupgrade:<code>sysupgrade -v /tmp/[specified firmware].bin </code>

ИЛИ

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

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

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

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/[specified firmware].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 
ru/doc/howto/generic.sysupgrade.txt · Last modified: 2018/03/04 12:12 by bobafetthotmail