Маскировка своей сборки OpenWrt под официальный репозитарий
- Подробности
- Категория: Сборка
- Опубликовано: 01 октября 2018
- Просмотров: 6483
Очень часто пользователи 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с
Далее собираем сборку и пользуемся официальным репозитарием без лишних возмущений.
Комментарии
когда пытаешься поставить пакет с несовместимым тебованием к кернелу через luci - то там показывается не только тот хеш который в системе, но и необходимый. вот его можно скопировать и заменить в файле через тот же vi будь он неладен. а найденный хеш по инструкции сверху оказался неверным.
советом нормальным помоги, а вот так ерунду сморозить мозгов не много нужно.