Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Linux для начинающих

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2012, 19:39   #1
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1602
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию Кросс компиляция прошивки OpenWRT и пакетов на Ubuntu

Устанавливаем пакеты, которые понадобятся при кросс компиляции
Код:
sudo apt-get update
sudo apt-get install subversion build-essential libncurses5-dev libssl-dev xsltproc zlib1g-dev gawk gcc-multilib flex git-core gettext quilt mkisofs
Создаем папку openwrt и переходим в нее
Код:
mkdir ~/openwrt
cd ~/openwrt
Получаем исходники для нашей версии OpenWrt (33482)
Код:
svn co svn://svn.openwrt.org/openwrt/trunk/@33482
svn update
переходим в каталог trunk
Код:
cd trunk
И выполняем
Код:
./scripts/feeds update -a
./scripts/feeds install -a
Конфигурирование сборки, включая проверку зависимостей и условий для окружения сборки
Код:
make defconfig
Потом проверим установленные компоненты:
Код:
make prereq
И мы узнаем каких пакетов не хватает у нас в операционной системе

Запускаем приложение для конфигурации
и выбираем цель - наш роутер mr3020
Код:
make menuconfig
Название: menuconfig.png
Просмотров: 19078

Размер: 4.3 Кб
остальные настройки пока не трогаем выходим и сохраняем настройки
компилируем прошивку:
Код:
make
или с более подробным выводом
make V=s
если Вы уже прокомпилировали хотя бы один раз и внесли изменения, 
то что бы избежать полного компилирования с нуля используйте 
make V=99
Процесс компиляции идет достаточно долго около 1 часа. В процессе компиляции будет компилироваться не только прошивка, но и инструменты для кросс компиляции. Поэтому этот процесс нужно пройти хотя бы раз.
Если у Вас процессор двухядерный, то можно ускорить компиляцию добавив параметр -J 3
Код:
make -j 3 V=s
Компиляция своих приложений
Для создания своих пакетиков *.ipk переходим в папку package
Код:
cd ~/openwrt/trunk/package
и создаем папку под наш проект (у меня он называется mr), а в нем еще одну папку src
Код:
mkdir -p mr/src
Создаем в папке ~openwrt/trunk/package/mr файл Makefile
Содержимое Makefile
Код:
#=====================================
# OpenWrt Makefile
#=====================================

include $(TOPDIR)/rules.mk

PKG_NAME:=mr
PKG_VERSION:=1
PKG_RELEASE:=1

PKG_BUILD_DIR:= $(BUILD_DIR)/$(PKG_NAME)

include $(INCLUDE_DIR)/package.mk


define Package/mr
    SECTION:=utils
    CATEGORY:=Utilities
    TITLE:=mr - Mouse Remote test utility
endef

define Package/mr/description
    mr - Mouse Remote test utility
endef

define Build/Prepare
    mkdir -p $(PKG_BUILD_DIR)
    $(CP) ./src/* $(PKG_BUILD_DIR)/
endef


define Build/Compile
    $(TARGET_CC) $(TARGET_CFLAGS) -c -o $(PKG_BUILD_DIR)/mr.o $(PKG_BUILD_DIR)/mr.c
    $(TARGET_CC) $(TARGET_LDFLAGS) -o $(PKG_BUILD_DIR)/mr $(PKG_BUILD_DIR)/mr.o
endef

define Package/mr/install
    $(INSTALL_DIR) $(1)/bin
    $(INSTALL_BIN) $(PKG_BUILD_DIR)/mr $(1)/bin/
endef

$(eval $(call BuildPackage,mr))
Файлы для компиляции на Си кладем в созданную нами папку src
Код:
 ~/openwrt/trunk/package/mr/src/mr.c
более наглядно это выглядит так
Нажмите на изображение для увеличения
Название: path1.png
Просмотров: 1107
Размер:	14.8 Кб
ID:	727
переходим в каталог trunk и запускаем конфиг компиляции
Код:
cd ~/openwrt/trunk/
make menuconfig
выбираем Utilities
Название: menuconfig_util.png
Просмотров: 18983

Размер: 2.1 Кб
В этом разделе находим наш проект mr и выбираем режим, собирать отдельным пакетом(выделяем его символом M)
Нажмите на изображение для увеличения
Название: menuconfig_util_mr.png
Просмотров: 805
Размер:	5.1 Кб
ID:	730
Выходим из приложения с сохранением настроек

Перед каждым следующим компилированием нужно выполнить команду
Код:
make clean
Команда удаляет содержимое каталогов bin и build_dir.
Или еще можно использовать команду
Код:
make dirclean
Производится полная очистка

теперь собираем отдельно наш пакетик:
Код:
make package/mr/compile V=s
готовый пакетик ищем в папке:
~/openwrt/trunk/bin/ar71xx/packages
Нажмите на изображение для увеличения
Название: ipk.png
Просмотров: 879
Размер:	9.0 Кб
ID:	726
Компиляция отдельного пакета происходит достаточно быстро, несколько секунд.
Если при компиляции у Вас выскочит ошибка: *** missing separator. Stop.
Это означает что в файле Makefile, перед командами внутри define, нужно заменить пробелы на TAB

Вот еще статьи на русском по сборке прошивки и пакетов под роутер:

Компиляция/портирование своей программы под OpenWRT

Краткая инструкция по сборке OpenWRT
Сборка собственных приложений (пакетов) для OpenWrt
Допиливание MR3020...
OpenWrt Buildroot – Использование
Wiki openwrt

Код:
Barrier Breaker                

Barrier Breaker 14.07:
sudo svn co svn://svn.openwrt.org/openwrt/branches/barrier_breaker barrier_breaker_14.07

Attitude Adjustment

Attitude Adjustment laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment attitude_adjustment

Attitude Adjustment v12.09:
sudo svn co -r 36088 svn://svn.openwrt.org/openwrt/branches/attitude_adjustment attitude_adjustment_12.09

Attitude Adjustment v12.09 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/attitude_adjustment_12.09 attitude_adjustment_12.09

Backfire

Backfire laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/backfire backfire

Backfire v10.03.1:
sudo svn co -r 29594 svn://svn.openwrt.org/openwrt/branches/backfire backfire_10.03.1

Backfire v10.03.1 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03.1 backfire_10.03.1

Backfire v10.03:
sudo svn co -r 20742 svn://svn.openwrt.org/openwrt/branches/backfire backfire_10.03

Backfire v10.03 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/backfire_10.03 backfire_10.03

Kamikaze

Kamikaze laatste versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze

Kamikaze v8.09.2:
sudo svn co -r18961 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09.2

Kamikaze v8.09.2 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09.2 kamikaze_8.09.2

Kamikaze v8.09.1:
sudo svn co -r16279 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09.1

Kamikaze v8.09.1 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09.1 kamikaze_8.09.1

Kamikaze v8.09:
sudo svn co -r14547 svn://svn.openwrt.org/openwrt/branches/8.09 kamikaze_8.09

Kamikaze v8.09 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/8.09 kamikaze_8.09

Kamikaze v7.06:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.06 kamikaze_7.06

Kamikaze v7.07:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.07 kamikaze_7.07

Kamikaze v7.09:
sudo svn co svn://svn.openwrt.org/openwrt/tags/kamikaze_7.09 kamikaze_7.09

White Russian

White Russian laatse versie:
sudo svn co svn://svn.openwrt.org/openwrt/branches/whiterussian white_russian

White Russian 0.9:
sudo svn co -r6268 svn://svn.openwrt.org/openwrt/branches/whiterussian white_russian_0.9

White Russian 0.9 met alle fixes en toevoegingen tot nu toe (TAG):
sudo svn co svn://svn.openwrt.org/openwrt/tags/whiterussian_0.9 white_russian_0.9
Код:
trunk 
git clone git://git.openwrt.org/openwrt.git

14.07 branch (Barrier Breaker)
git clone git://git.openwrt.org/14.07/openwrt.git

12.09 branch (Attitude Adjustment)
git clone git://git.openwrt.org/12.09/openwrt.git

Packages feed: ​ChangeLog
git clone git://git.openwrt.org/12.09/packages.git

Последний раз редактировалось andr128; 31.10.2013 в 23:17.
andr128 вне форума   Ответить с цитированием
Старый 03.02.2013, 23:26   #2
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

Здравствуйте andr128!
Спасибо Вам за то что помогаете мне со сборкой прошивки для TL-MR3040.
Мне даже немного не удобно, что Вы тратите на меня столько своего времени.
Я бы мог попробовать пособирать сборки самостоятельно, если бы этот Ваш гайд начался с описания подготовки инструмента.
У меня машина с window 7. Как водрузить на неё и какую виртуальную машину мне самому понять сложно. И что делать до того момента как удастся написать
Цитата:
sudo apt-get update
sudo apt-get install subversion build-essential libncurses5-dev zlib1g-dev gawk flex quilt git-core mkisofs
? Но если Вы дадите направление, то я всё это освою.
Константин вне форума   Ответить с цитированием
Старый 04.02.2013, 11:35   #3
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1602
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Я никогда ни ставил виртуальную машину на windows (не хочу, не люблю, и прочее..)
по этому вопросу ищите инфу сами (vmware, virtual pc).

Для сборки прошивки очень легко поставить например Ubuntu. Нужно выделить свободный раздел на HDD. W7 не пострадает. Появится доп. меню загрузки. При этом вы "пощупаете" настоящий линукс.

Последний раз редактировалось andr128; 04.02.2013 в 11:49.
andr128 вне форума   Ответить с цитированием
Старый 05.02.2013, 07:17   #4
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1602
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Пример компиляции через vmware
andr128 вне форума   Ответить с цитированием
Старый 05.02.2013, 13:30   #5
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

Установил Ubuntu 12.10 на отдельный раздел.
Собрал прошивку для TL-MR3020, проверил на роутерте - всё запустилось.
Следующий шаг - сборка для TL-MR3040.
Почему-то файловые менеджеры типа crusader и filezilla не хотят соединятся с роутером, хотя из под windows 7 winscp соединяется нормально.Неудобно постоянно перегружаться на винду для заливки файлов на роутер.
Putty коннектиться из под ubuntu нормально.
Посоветуйте в чём может быть прична?
Константин вне форума   Ответить с цитированием
Старый 05.02.2013, 13:31   #6
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

И ещё вопрос - есть ли виртуальная машина, эмулирующая роутер, чтобы на ней обкатывать прошивки?
Константин вне форума   Ответить с цитированием
Старый 05.02.2013, 22:05   #7
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1602
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Цитата:
Сообщение от Константин Посмотреть сообщение
Почему-то файловые менеджеры типа crusader и filezilla не хотят соединятся с роутером.....
Посоветуйте в чём может быть прична?
Потому что они работают по протоколу sftp, а роутер работает по ssh (scp) по умолчанию порт 22 (это сервер dropbear)
winscp использует код putty т.е. это как бы надстройка вернее GUI.

по ssh в терминале ubuntu вы можете спокойно заходить на роутер.

набрав:
Код:
sudo ssh root@192.168.x.x
А если хотите через файловые менеджеры то, ставьте на роутер sftp сервер

Цитата:
И ещё вопрос - есть ли виртуальная машина, эмулирующая роутер, чтобы на ней обкатывать прошивки?
Где-то встречал, но сильно не интересовался, поэтому подсказать точно не смогу. Поищите сами на ОpenWrt.

Мое мнение. Реальное железо есть реальное и лучше испытывать на нем.
andr128 вне форума   Ответить с цитированием
Старый 05.02.2013, 22:21   #8
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

Никак не удаётся собрать прошивку для MR3040 так как это делается для MR3020. Проблемы начинаются уже при вводе команды make preq
Цитата:
Сообщение об ошибке:
make[1] preq
make -r preq MAKE_JOBSERVER=: build failed. Please re-run make with V=s to see what's going on
make: *** [preq] Ошибка 1
Константин вне форума   Ответить с цитированием
Старый 05.02.2013, 22:24   #9
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1602
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

дык дай ему команду
make V=s
и посмотри где спотыкается
andr128 вне форума   Ответить с цитированием
Старый 05.02.2013, 22:51   #10
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

После ввода make V=s лог бежит 1,5 часа. Как найти в таком количестве информации сообщения об ошибках или не соответствиях версия? тупо пролистыванием?
Константин вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 20:30. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2022, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика