OpenWRT.su

Open.Wireless.Super and LEDE

Маскировка своей сборки OpenWrt под официальный репозитарий

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

При каждой сборке OpenWrt, при минимальном изменении конфиг файлов в итоге меняется уникальный hash-код сборки. Он присваивается как в зависимости пакетов, так и к самому ядру OpenWrt. Например, при установке в самособранной OpenWRT 18.06.1 пакетов из официального репозитария несмотря на то, что версии ядра одинаковые, opkg будет ругаться что не может выполнить зависимости. И --force-depends тут не всегда помогает. Для тех, кто хочет чтобы все проходило гладко - есть один непопулярный способ ниже.

Внимание! Использование данного хака допускается ну прям в случае крайней необходимости! И то, если вы умеете перезаливать прошивку OpenWRT вручную, в случае если ваша собственная сборка встанет криво или не встанет вовсе!

1. Узнаем hash-код ядра из официальной сборки вашей версии OpenWrt

Открываем репозитарий нашей версии OpenWrt и нашей архитектуры. Например https://downloads.openwrt.org/releases/18.06.1/targets/ar71xx/generic/packages/ - это версия OpenWrt 18.06.1 и популярная архитектура ar71xx. Находим пакет kernel_4.9.120-1-adfb989aae12e239d65a2c73ca35b8a3_mips_24kc.ipk. 32 cимвола "adfb989aae12e239d65a2c73ca35b8a3" в его названии это есть md5 hash ядра официальной сборки. У вас соответственно он может быть иной. 

2. Указываем md5 hash сборки принудительно для кросс-компилятора OpenWrt

Открываем папку с исходниками OpenWRT, находим и открываем для редактирования файл openwrt/include/kernel-defaults.mk Находим примерно 102ю строку следующего содержания:

grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | mkhash md5 > $(LINUX_DIR)/.vermagic 

И приводим ее к вижу 

grep '=[ym]' $(LINUX_DIR)/.config.set | LC_ALL=C sort | echo "нашхэшкодтут" > $(LINUX_DIR)/.vermagiс

Далее собираем сборку и пользуемся официальным репозитарием без лишних возмущений. 

Комментарии  

Александр
+1 # Александр 22.12.2018 03:43
Воот, то что нужно, спасибо получилось :P
Ответить | Ответить с цитатой | Цитировать
salexa
+6 # salexa 24.08.2019 15:46
Добавлю, что на уже установленной сборке того же результата можно добиться, заменив хэш метапакета kernel в файле /usr/lib/opkg/status:Цитата:
Package: kernel
Version: 4.9.120-1-adfb989aae12e239d65a2c73ca35b8a3
...
Ответить | Ответить с цитатой | Цитировать
wulf
0 # wulf 18.07.2022 20:22
спасибо, вот это действительно помогло
когда пытаешься поставить пакет с несовместимым тебованием к кернелу через luci - то там показывается не только тот хеш который в системе, но и необходимый. вот его можно скопировать и заменить в файле через тот же vi будь он неладен. а найденный хеш по инструкции сверху оказался неверным.
Ответить | Ответить с цитатой | Цитировать
Константин
0 # Константин 06.07.2022 13:00
Совет как делать не надо.
Ответить | Ответить с цитатой | Цитировать
wulf
0 # wulf 17.07.2022 23:56
ну так а как надо?
советом нормальным помоги, а вот так ерунду сморозить мозгов не много нужно.
Ответить | Ответить с цитатой | Цитировать

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

Если вы хотите получать сообщения c ответами на ваши комментарии - то укажите свой настоящий e-mail. Если же вы тут проездом, чтобы оставить комментарий укажите в поле email no@openwrt.su