GrabDuck

Сборка прошивки из исходников - Black Swift

:


В случае, если вы хотите получить прошивку с определённым набором пакетов (включая пакеты, созданные вами), её можно собрать из исходников OpenWRT. Для этого потребуется компьютер с ОС Linux или подготовленный нами образ виртуальной машины Linux для VirtualBox с уже установленным OpenWRT Buildroot.

Определение текущей версии прошивки

Посмотрите вывод в консоль на последовательном порту в первые несколько секунд работы платы. Версия U-boot указана в строке «U-Boot for Black Swift board (AR9331) r1.02»

Текущая версия — r1.02.

При входе в консоль OpenWRT номер релиза указан в приветствии:

 -----------------------------------------------------                          
 BARRIER BREAKER (Barrier Breaker, r45620)                                      
 -----------------------------------------------------

Текущая прошивка - r46287

Получение исходных кодов OpenWrt

На данный момент для Black Swift официально поддерживается версия OpenWRT Barrier Breaker 14.07. Приводимые ниже патчи проверены и работают на релизе r46287.

Загрузка исходников OpenWRT:

svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker openwrt

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

svn co -r 46287 svn://svn.openwrt.org/openwrt/branches/barrier_breaker openwrt

В папке пользователя будет создан каталог openwrt, где и будет в дальнейшем проходить вся работа:

cd openwrt

Настройка прошивки для BSB

Установите стандартные пакеты OpenWRT:

./scripts/feeds update -a && ./scripts/feeds install -a

Загрузите все файлы *.patch из нашего репозитария и скопируйте их в папку ~/openwrt:

git clone https://github.com/blackswift/openwrt.git bsb-patches

Добавьте плату Black Swift в список поддерживаемых устройств:

patch -p0 < bsb-patches/bsb.patch

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

touch target/linux/*/Makefile

Если вы хотите использовать прерывания GPIO, то устанавливаем следующий патч:

patch -p0 < bsb-patches/gpio-irq-728.patch

Если вы хотите добавить разработанные нами модули ядра:

patch -p0 < bsb-patches/new_modules.patch

Файлы конфигурации для avahi и uboot-envtools:

patch -p0 < bsb-patches/new_files.patch

Обновление версий нескеольких пакетов, без которого они не соберутся (в официальном репозитарии OpenWRT эти пакеты на данный момент считаются никем не поддерживаемыми):

patch -p0 < bsb-patches/compile-fixes.patch

Если вы хотите, чтобы сервис mjpg-streamer был включен по умолчанию (т.е. чтобы USB web-камера заработала сразу), то можно использовать этот патч:

patch -p0 < bsb-patches/mjpg-enable.patch

Если вы хотите, чтобы mjpg-streamer был включён по умолчанию, но при подключении USB-камеры автоматически не запускался, надо добавить следующий патч:

patch -p0 < bsb-patches/mjpg-nohotplug.patch

Если вы хотите добавить наш репозитарий в список репозитариев OpenWRT, чтобы автоматически устанавливать модули ядра и пакеты нашей сборки:

patch -p0 < bsb-patches/opkg.patch

Если вы хотите использовать аппаратный UART для своих целей, т.е. получить возможность отключать консоль (придется повторять после каждого make clean):

make kernel_menuconfig
patch -p0 < bsb-patches/console.patch

Если вы хотите применить нашу конфигурацию прошивки — скопируйте в папку openwrt файл .config:

cp bsb-patches/.config ./

Запустите

make menuconfig

Убедитесь, что в списке устройств выбрано «Smart Electronics Black Swift board» (если вы копировали .config, то это устройство уже выбрано). При необходимости добавьте или удалите пакеты по своему вкусу.

Внимание! Каждая сборка ядра OpenWRT получает индивидуальный номер, так называемый vermagic, представляющий собой хэш файла конфигурации ядра. Если vermagic для ядра и пакета kmod-* не совпадает, пакет не будет установлен. Чтобы собрать прошивку или отдельные пакеты kmod-* с vermagic нашей официальной прошивки, примените патч:

patch -p0 < bsb-patches/vermagic.patch

После этого запустите make menuconfig и в пункте Global Build Settings > Specify vermagic for the build укажите значение «9e41cf26ff31ce72658968ab63e490d1». Выйдите из menuconfig, сохранив новый файл конфигурации.

Внимание! При изменении некоторых параметров сборки ядра пакеты kmod-* могут оказаться несовместимы с прошивкой даже при одинаковом vermagic. При подозрении, что модуль ядра устанавливается, но не работает, после его запуска проверяйте вывод команды dmesg.

Сборка прошивки

Прошивка и сопутствующие пакеты собираются командой

make V=99

NB: не рекомендуется использовать многопоточную компиляцию (make -jN), так как она может приводить к ошибкам.

Иногда в процессе построения прошивки может появиться сообщение об ошибке:

MD5 sum of the downloaded file does not match (file: 35c45188aa9635aef2b745c35c311396, requested: c9b0da91f8e6e72efccd307e04e2b75b) - deleting download.

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

В таком случае подробный вывод может выглядеть так:

make[3]: Entering directory `/home/bsb/openwrt/feeds/packages/multimedia/mjpg-streamer'
mkdir -p /home/bsb/openwrt/dl
/home/bsb/openwrt/scripts/download.pl "/home/bsb/openwrt/dl" "cambozola-latest.tar.gz" "c9b0da91f8e6e72efccd307e04e2b75b" "http://www.andywilcock.com/code/cambozola"
--2015-06-02 12:00:34--  http://www.andywilcock.com/code/cambozola/cambozola-latest.tar.gz
Resolving www.andywilcock.com (www.andywilcock.com)... 50.53.126.251
Connecting to www.andywilcock.com (www.andywilcock.com)|50.53.126.251|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 237106 (232K) [application/x-gzip]
Saving to: 'STDOUT'

100%[=============================================================================================================>] 237,106      159KB/s   in 1.5s   

2015-06-02 12:00:36 (159 KB/s) - written to stdout [237106/237106]

MD5 sum of the downloaded file does not match (file: 35c45188aa9635aef2b745c35c311396, requested: c9b0da91f8e6e72efccd307e04e2b75b) - deleting download.

Для исправления ошибки в данном случае необходимо зайти в папку /home/bsb/openwrt/feeds/packages/multimedia/mjpg-streamer, открыть файл Makefile для редактирования и найти в нём секцию

define Download/cambozola
  URL:=http://www.andywilcock.com/code/cambozola
  FILE:=$(CAMBOZOLA)
  MD5SUM:=c9b0da91f8e6e72efccd307e04e2b75b
endef

После чего поменять строку «MD5SUM:=c9b0da91f8e6e72efccd307e04e2b75b» на «MD5SUM:=35c45188aa9635aef2b745c35c311396», сохранить файл и запустить сборку заново командой make V=99.

NB: ошибки этого типа, обнаруженные на момент выпуска последней версии официальной прошивки, исправляются патчем compile-fixes.patch.

Собранные пакеты и прошивка будут расположены в подкаталоге bin/ar71xx/.