суббота, 21 марта 2015 г.

Создание своей прошивки Linux для tl-mr3020



Создание своей прошивки Linux для tl-mr3020


Готовая стабильная прошивка openwrt для tl-mr3020 на сайте openwrt содержит web интерфейс luci, который съедает всю память, поэтому не позволяющая подключить внешние накопители для расширения возможностей.
Можно воспользоваться прошивкой от http://cyber-place.ru предлагает "самую правильную прошивку", но она тоже с ограничениями: репозиторий без поддержки звука.
Поэтому лучшее решение - это создать свою прошивку.
Я это делал при помощи debian установленной в виртуальную машину. Решение медленное, но приводящее к гарантированному результату.


Для начала установил приложения необходимые для кросс-компиляции.
Для этого отредактировал источники пакетов для установки: добавил строку "deb http://ftp.de.debian.org/debian wheezy main" в файл "/etc/apt/sources.list".

Потом в терминале выполнил команды
apt-get update
apt-get install subversion
apt-get install build-essential
apt-get install git-core
apt-get install libncurses5-dev
apt-get install zlib1g-dev
apt-get install gawk
apt-get install xsltproc
apt-get install gettext
apt-get install libssl-dev
apt-get install openjdk-6-jdk
apt-get install zip
apt-get install libedit-dev
apt-get install flex
apt-get install autoconf
apt-get install quilt
apt-get install mercurial
apt-get install bzr
apt-get install cvs
apt-get install sdcc


Потом скачал последнюю версию исходников прошивки openwrt.
mkdir ~/openwrt
cd ~/openwrt
svn co svn://svn.openwrt.org/openwrt/branches/attitude_adjustment attitude_adjustment_12.09
cd attitude_adjustment_12.09
./scripts/feeds update -a
./scripts/feeds install -a

Проверил наличие всего необходимого
make prereq
make defconfig

После этого надо выполнить две команды для настройки прошивки в псевдографическом меню.
make kernel_menuconfig - настройка ядра.
make menuconfig - настройка приложений.

В make menuconfig изменить следующие настройки.
Target System (Atheros AR7xxx/AR9xxx) ---> Atheros AR7xxx/AR9xxx [x]
Target Profile (Default Profile (All Drivers)) --->TP-LINK TL-MR3020 [x]


Изменил значение опции
[*]Image Configuration--->[*]Version configuration options--->(http://downloads.openwrt.org/attitude_adjustment/12.09.1/%S/packages)
на репозиторий на своем компьютере: "ftp://192.168.0.200/packages".

Изменил значение опции
[*]Image Configuration--->[*]Preinit configuration options (NEW)--->(192.168.1.1) IP address for preinit network messages на 192.168.0.254, как у заводской прошивки tp-link tl-mr3020.
Изменил значение опции
[*]Image Configuration--->[*]Preinit configuration options (NEW)--->(192.168.1.255) Broadcast address for preinit network messages на 192.168.0.255

Отметил следующие опции для возможности монтирования дополнительного usb накопителя
Base system---><*>Block mount
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]fdisk
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]write support
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]mkfs_ext2
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]mkswap
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]mount
Base system---><*>Busybox--->Lunix Sysem Utilites--->[*]swaponoff
Kernel Modules--->USB support---><*>kmod-usb-storage-extras
Kernel Modules--->USB support---><*>kmod-usb2
Kernel Modules--->Filesystems---><*>kmod-fs-ext4
Utilities---><*>Usbutils
Utilities---><*>Usbreset
Utilities--->Disk---><*>lsblk

Global build settings---> [ ] Enable process code dump support

Убрал демоны логирования загрузки
Base system--->Busybox--->System Logging Utilities--->[ ]syslogd
Base system--->Busybox--->System Logging Utilities--->[ ]klogd
Base system--->Busybox--->System Logging Utilities--->[ ]logger

добавил поддержку определения залогиневшегося пользователя в busybox, необходимо для работы утилиты screen
Base system--->Busybox--->Busybox Settings--->General Configuration---> [*]Support utmp file
Base system--->Busybox--->Busybox Settings--->General Configuration---> [*]Support wtmp file

Поддержка русского языка
Base system---><*>Busybox--->Busybox Settings ---> Editor--->[*]Allow vi to display 8-bit chars (otherwise shows dots)

манипуляции м раскладкой клавиатуры
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]dumpkmap
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]kbd_mode
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]loadkmap
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]setkeycodes
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]showkey

определение размера экрана
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]resize
Base system--->Busybox--->Busybox Settings--->Console Utilities--->[*]Print enveroment variable
Base system--->Busybox--->Busybox Settings--->Busybox library Tuning--->[*]Use termios to manipulate the screen
Base system--->Busybox--->Busybox Settings--->Busybox library Tuning--->[*]Query cursor position from terminal

удобства настройки
Base system--->Busybox--->Busybox Settings--->Coreutils--->[*]catv
Base system--->Busybox--->Busybox Settings--->Coreutils--->[*]expand
Base system--->Busybox--->Busybox Settings--->Coreutils--->[*]stat
Base system--->Busybox--->Busybox Settings--->Coreutils--->[*]nohup
Base system--->Busybox--->Busybox Settings--->Miscellaneous Utilities--->[*]timeout

wireless
Base system--->Busybox--->Busybox Settings--->Miscellaneous Utilities--->[*]rfkill

настройка com порта
Base system--->Busybox--->Busybox Settings--->Coreutils--->[*]stty

Убрал опции создающие ненужные варианты прошивки: все кроме squashfs
Target images--->[ ]tar.gz
Target images--->[ ]jffs2

Все остальные опции поставил в M, кроме следующих вызывающих ошибки.
Network--->VPN--->< >openvpn-devel-polarssl
Network--->Telephony--->< >libopenzap
Network--->< >snmpd-static
Utilities--->< >logtrigger
Kernel modules---> Cryptographic API modules--->[ ]kmod-cripto-ocf-hifn7751

Найденные мной способы устранения ошибок при сборке пакетов.
пакет путь к файлу исходные строки на что менять
xmlrpc-c ~/openwrt/attitude_adjustment_12.09/feeds/packages/libs/xmlrpc-c/Makefile PKG_SOURCE_URL:=http://xmlrpc-c.svn.sourceforge.net/svnroot/xmlrpc-c/advanced PKG_SOURCE_URL:=http://svn.code.sf.net/p/xmlrpc-c/code/advanced
libzstream ~/openwrt/attitude_adjustment_12.09/build_dir/target-mips_r2_uClibc-0.9.33.2/libzstream-2012-06-11/Makefile WFLAGS:=-Wall -Werror -pedantic WFLAGS:=-Wall -Werror
msmpt ~/openwrt/attitude_adjustment_12.09/feeds/packages/mail/msmtp/Makefile PKG_SOURCE_URL:=@SF/msmtp PKG_SOURCE_URL:=http://git.code.sf.net/p/msmtp/code
6relayd~/openwrt/attitude_adjustment_12.09/package/6relayd/MakefilePKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://github.com/sbyx/6relayd.git
PKG_SOURCE_PROTO:=gitPKG_SOURCE_VERSION:=2ed520c500b0fbb484cfad5687eb39a0da43dcf7
PKG_RELEASE=$(PKG_SOURCE_VERSION)

PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_URL:=git://nbd.name/6relayd.gitPKG_SOURCE_PROTO:=git
PKG_SOURCE_VERSION:=2ed520c500b0fbb484cfad5687eb39a0da43dcf7
PKG_SOURCE:=$(PKG_NAME).git-$(PKG_SOURCE_VERSION).tar.gz
gpiotoggling~/openwrt/attitude_adjustment_12.09/feeds/packages/utils/gpiotoggling/MakefilePKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=git://github.com/mirko/gpio-toggling---linux-kernel-module.git
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://downloads.openwrt.org.cn/sources/PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_MD5SUN:=1e4c21189bd88c5e9aaddd2cb7922d4e
faifa~/openwrt/attitude_adjustment_12.09/feeds/packages/net/faifa/MakefilePKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://github.com/ffainelli/faifa.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=2842afc90bd9ca08ed2a6c83c04f4015982e6007
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_SOURCE_URL:=http://mirror.opf.slu.cz/openwrt/sources/PKG_SOURCE_VERSION:=2842afc90bd9ca08ed2a6c83c04f4015982e6007
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_MD5SUM:=7060f39c4237abb92cacf6b1155be8a3
luafilesystem~/openwrt/attitude_adjustment_12.09/feeds/lang/luafilesystem/MakefilePKG_SOURCE_URL:=http://github.com/downloads/keplerproject/luafilesystem/PKG_SOURCE_URL:=http://downloads.openwrt.org.cn/sources/
luasoap~/openwrt/attitude_adjustment_12.09/feeds/lang/luasoap/MakefilePKG_SOURCE_URL:=https://github.com/downloads/tomasguisasola/luasoap/PKG_SOURCE_URL:=http://cloud.github.com/downloads/tomasguisasola/luasoap/
python-eeml~/openwrt/attitude_adjustment_12.09/feeds/lang/python-eeml/MakefilePKG_SOURCE_URL:=git://github.com/petervizi/python-eeml.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_MD5SUM:=e59fd56875194ccb87ec60250454e96d
libfreenect~/openwrt/attitude_adjustment_12.09/feeds/packages/libs/libfreenect/MakefilePKG_SOURCE_URL:=git://github.com/OpenKinect/libfreenect.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
icmptx~/openwrt/attitude_adjustment_12.09/feeds/packages/net/icmptx/MakefilePKG_SOURCE_PROTO:=gitPKG_SOURCE_URL:=git://github.com/jakkarth/icmptx.gitPKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
PKG_MD5SUM:=73b5bb66e1fcb21dc64b024c2e0dec21
libmodbus~/openwrt/attitude_adjustment_12.09/feeds/packages/libs/libmodbus/MakefilePKG_SOURCE_URL:=http://github.com/downloads/stephane/libmodbus/PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
libsml~/openwrt/attitude_adjustment_12.09/feeds/packages/libs/libsml/MakefilePKG_SOURCE_URL:=git://github.com/dailab/libsml.git
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
btpd~/openwrt/attitude_adjustment_12.09/feeds/packages/net/btpd/MakefilePKG_SOURCE_URL:=https://github.com/downloads/btpd/btpdPKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
chaosvpn~/openwrt/attitude_adjustment_12.09/feeds/packages/net/chaosvpn/MakefilePKG_SOURCE_URL:=http://github.com/downloads/ryd/chaosvpn/PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
wing~/openwrt/attitude_adjustment_12.09/feeds/packages/net/wing/MakefilePKG_SOURCE_URL:=git://github.com/rriggio/click.git
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
PKG_MD5SUM:=7fcf6c94fe0e9e55e768f478038e9cb9
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
shell-fm~/openwrt/attitude_adjustment_12.09/feeds/packages/net/shell-fm/MakefilePKG_SOURCE_PROTO:=gitPKG_SOURCE_URL:=git://github.com/jkramer/shell-fm.gitPKG_MD5SUM:=9a083e953dcbb474fb1fda032f96aa00
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
triggerhappy~/openwrt/attitude_adjustment_12.09/feeds/packages/utils/triggerhappy/MakefilePKG_SOURCE_URL:=git://github.com/wertarbyte/triggerhappy
PKG_SOURCE_PROTO:=git
PKG_MD5SUM:=e52e7339f9c2101b81f434ba0e7752e3
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
wview~/openwrt/attitude_adjustment_12.09/feeds/packages/utils/wview/MakefilePKG_SOURCE_URL:=git://github.com/jgoerzen/wview.gitPKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
PKG_MD5SUM:=150c0fcc0eee6338919135b675c0037d
odhcp6c~/openwrt/attitude_adjustment_12.09/packages/odhcp6c/MakefilePKG_SOURCE_URL:=git://github.com/sbyx/odhcp6c.git
PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=http://220.110.201.21/openwrt/nightly/sources/
PKG_MD5SUM:=12b9611ae180a508077b75ead8aaf934
polarssl~/openwrt/attitude_adjustment_12.09/packages/polarssl/MakefilePKG_SOURCE_URL:=https://polarssl.org/code/releasesPKG_SOURCE_URL:=http://sources.buildroot.net/
remotefs
remotefs-server
~/openwrt/attitude_adjustment_12.09/packages/net/remotefs/MakefilePKG_SOURCE_PROTO:=svnPKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=remotefs-$(PKG_VERSION)
PKG_SOURCE_URL:=http://remotefs.svn.sourceforge.net/svnroot/remotefs/trunk
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE_SUBDIR:=remotefs-$(PKG_VERSION)
PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/
PKG_MD5SUM:=159730871028cd106e63442975e60588
umurmur
umurmur-polarssl
~/openwrt/attitude_adjustment_12.09/packages/net/umurmur/MakefilePKG_VERSION:=0.2.10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://umurmur.googlecode.com/files
PKG_MD5SUM:=4d71a699bddce3df0996b5dd0a279b47
PKG_VERSION:=0.2.14PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://umurmur.googlecode.com/files
PKG_MD5SUM:=e22121b4b91f4c9de43f858f6defa0b0
l7-protocols-testing~/openwrt/attitude_adjustment_12.09/packages/net/l7-protocols/MakefilePKG_VERSION:=2009-05-28
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/l7-filter
PKG_MD5SUM:=91be154d12134dcdbc560cc7aa7fe4ce
PKG_VERSION:=2009-05-10
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=@SF/l7-filter
PKG_MD5SUM:=bca299f0b41945bbf09713ed117e5d77
yate
php5
~/openwrt/attitude_adjustment_12.09/packages/lang/php5/MakefilePKG_VERSION:=5.4.5
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.php.net/distributions/
PKG_MD5SUM:=ffcc7f4dcf2b79d667fe0c110e6cb724
PKG_VERSION:=5.4.19
PKG_RELEASE:=3
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://museum.php.net/php5/php-5.4.19.tar.bz2\
    http://downloads.php.net/stas/
PKG_MD5SUM:=f06f99b9872b503758adab5ba7a7e755

+ каталоге "~/openwrt/attitude_adjustment_12.09/packages/lang/php5/" создать файл с любым именем и содержащем следующий текст

Index: target-mips_r2_uClibc-0.9.33.2/php-5.4.19/configure.in
===================================================================
--- a/configure.in
+++ b/configure.in
@@ -401,10 +401,7 @@
   AC_MSG_RESULT([none])
 fi

-dnl Exit early
-if test -z "$PHP_INSTALLED_SAPIS"; then
-  AC_MSG_ERROR([Nothing to build.])
-fi
+

 dnl force ZTS
 if test "$enable_maintainer_zts" = "yes"; then
karma~/openwrt/attitude_adjustment_12.09/packages/net/karma/MakefilePKG_SOURCE_URL:=http://theta44.org/software/PKG_SOURCE_URL:=http://www.wirelessdefence.org/Contents/Files/karma-20060124.tar.gz
pcre
libpcrecpp
~/openwrt/attitude_adjustment_12.09/packages/libs/pcre/MakefilePKG_FIXUP:=autoreconfPKG_FIXUP = libtool
shflags~/openwrt/attitude_adjustment_12.09/packages/libs/shflags/MakefilePKG_VERSION:=2012-06-11
PKG_RELEASE=$(PKG_SOURCE_VERSION)

PKG_SOURCE_PROTO:=git
PKG_SOURCE_URL:=git://dev.freecwmp.org/shflags-clone/
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=4411ea9115802b86ffee68a2cbbbbf143dfeebbd
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
PKG_RELEASE=$(PKG_SOURCE_VERSION)
PKG_REV:=133
PKG_VERSION:=2012-06-11_r$(PKG_REV)
PKG_RELEASE=1.0.x
PKG_SOURCE_PROTO:=svn
PKG_SOURCE_URL:=http://shflags.googlecode.com/svn/trunk
PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
PKG_SOURCE_VERSION:=$(PKG_REV)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
nprobe~/openwrt/attitude_adjustment_12.09/packages/net/nprobe/Makefile  DEPENDS:=libpcap +libpcre +libpthread +NPROBE_MYSQL_SUPPORT:libmysqlclient +zlib  DEPENDS:=+libwrap +libpcap +libpcre +libpthread +NPROBE_MYSQL_SUPPORT:libmysqlclient +zlib
pulseaudio~/openwrt/attitude_adjustment_12.09/packages/sound/pulseaudioPKG_VERSION:=2.1
<...>
  DEPENDS:=+libspeexdsp +libsndfile +libltdl +libpthread \
 +librt +alsa-lib +libopenssl +udev $(ICONV_DEPENDS) $(INTL_DEPENDS)
<...>
define Build/InstallDev
 $(INSTALL_DIR) \
  $(1)/usr/lib/pkgconfig \
  $(1)/usr/include/pulse \
  $(1)/usr/lib\
   $(1)/usr/lib/pulseaudio
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/include/pulse/* \
  $(1)/usr/include/pulse
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
  $(1)/usr/lib/pkgconfig
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/*.so* \
  $(1)/usr/lib/

 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/pulseaudio/* \
  $(1)/usr/lib/pulseaudio/
endef
PKG_VERSION:=4.0<...>
  DEPENDS:=+libjson-c +libspeexdsp +libsndfile +libltdl +libpthread \
 +librt +alsa-lib +libjson +libopenssl +udev $(ICONV_DEPENDS) $(INTL_DEPENDS)
<...>
define Build/InstallDev
 $(INSTALL_DIR) \
  $(1)/usr/lib/pkgconfig \
  $(1)/usr/include/pulse \
  $(1)/usr/lib\
   $(1)/usr/lib/pulseaudio
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/include/pulse/* \
  $(1)/usr/include/pulse
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/*.pc \
  $(1)/usr/lib/pkgconfig
 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/*.so* \
  $(1)/usr/lib/

 $(CP) \
  $(PKG_INSTALL_DIR)/usr/lib/pulseaudio/* \
  $(1)/usr/lib/pulseaudio/
endef

Для предотвращения конфликта ip адреса tp-mr3020 с маршрутизатором подключенным к интернету, я создал папку "~/openwrt/attitude_adjustment_12.09/tar
get/linux/ar71xx/base-files/etc/defconfig/tl-mr3020.
В которой создал файл network с текстом.


config interface 'loopback'
option ifname 'lo'
option proto 'static'
option ipaddr '127.0.0.1'
option netmask '255.0.0.0'

config interface 'lan'
option ifname 'eth0'
option type 'bridge'
option proto 'static'
option ipaddr '192.168.0.254'
option netmask '255.255.255.0'


Вместо этого можно отредактировать файл "~/openwrt/attitude_adjustment_12.09/package/base-files/files/etc/config/network.

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

После чего запустить директиву make без параметров и уйти на несколько часов (дней) от компьютера.
Прошивка будет в папке ~/openwrt/attitude_adjustment_12.09/bin/ar71xx, а пакеты в папке ~/openwrt/attitude_adjustment_12.09/bin/ar71xx$/packages.

Для новой компиляции необходимо выполнять команду очистки "make clean".
Если она не помогла, то можно воспользоваться полной очисткой "make dirclean", или удалением всего каталога openwrt "rm -fr /~/openwrt".

Дальше прошивать, как описал в предыдущем посте.

Ложные сведения распространяемые любителями linux о процессе компиляции.1. Сборка в виртуальной машине под windows - это вид извращения, оно занимает очень много времени.В реальности, все наоборот. Если есть желание потрахаться с компьютером устанавливая драйвер для видео, выясняя что значит сообщение: /lib/modules/3.8.0-19-generic/build/include/linux/version.h cannot be found on this system" или пытаться найти нужный драйвер для wifi свистка без интернета, ибо интернет не подключен по причине отсутствия еще wifi, а потом пытаться подключиться к точке доступа wifi через редактирование конфигурационных файлов, ибо все gui утилиты не видят драйвер этого свистка, то вперед.
Причем linux процесс сборки не ускорит - проверил на практике.
2. Для ускорения надо "строить" на нескольких ядрах процессора используя опцию -j.С этой опцией процесс сборки никогда не завершиться, обязательно будут ошибки.
3. Наибольшее время занимает сборка toolchain.Toolchain собирается быстрее, чем пакеты, ибо пакетов больше 2000 и каждый требует загрузки с разных мест исходных кодов. Причем сервера откуда качаются исходные коды могут отвалиться в самый неподходящий момент и придется искать зеркала.
4. Можно собрать за выходные.Это сделать невозможно, ибо больше суток будет занимать только компиляция пакетов, которых около 2600 штук.


Полезные советы.1. Сменить хозяина файлов в папке dl на root, что бы команда make clean не стирала там содержимое.
2. Для выяснения причины ошибки  компиляции, использовать команду make package/feeds/packages/<имя пакета>/compile V=s или если она не поможет, то make package/<имя пакета>/compile V=s
3. Если в интернете нашли тест, который называют патчем, способным решить ваши проблемы с компиляцией,вида.
diff --git a/lang/php5/patches/951-allow_build_without_sapis.patch b/lang/php5/patches/951-allow_build_without_sapis.patch
new file mode 100644
index 0000000..14033a4
--- /dev/null
+++ b/lang/php5/patches/951-allow_build_without_sapis.patch
@@ -0,0 +1,16 @@
+Index: php-5.4.19/configure.in
+===================================================================
+--- php-5.4.19.orig/configure.in 2013-11-16 18:48:58.806909648 +0100
++++ php-5.4.19/configure.in 2013-11-16 18:49:50.614145909 +0100
+@@ -401,11 +401,6 @@
+   AC_MSG_RESULT([none])
+ fi
+
+-dnl Exit early
+-if test -z "$PHP_INSTALLED_SAPIS"; then
+-  AC_MSG_ERROR([Nothing to build.])
+-fi
+-
+ dnl force ZTS
+ if test "$enable_maintainer_zts" = "yes"; then
+   PTHREADS_ASSIGN_VARS

Это текст файла для утилиты quilt, которая вызывается после распаковки исходных кодов, но перед компиляцией исходного кода, для исправления исходного кода на основе этих файлов. Этот текст надо поместить в отдельный файл в подкаталоге patch, каталога проблемного пакета. Имя может быть любым, но желательно совпадающим с текстом из первой строки после слова "patch". Если при применении этого патча возникнут ошибки, то значит надо убрать из каждой строки начальный "+", разобраться с пробелами и табами и исправить путь к исходному файлу. Например, патч из примера без коррекции работать не будет: в нем лишние "+", неправильное колличество пробелов в 20 строке и путь к исходному файлу не "a" и "b", а "php-5.4.19".
Формат файла из примера.
"+--- php-5.4.19.orig/configure.in 2013-11-16 18:48:58.806909648 +0100" - путь к исходному файлу, может быть /dev/null для создания своего файла в каталоге с исходным кодом. Вместо "php-5.4.19.orig/" надо ставить "a/".
"++++ php-5.4.19/configure.in 2013-11-16 18:49:50.614145909 +0100" - путь к исправленному файлу. Вместо"php-5.4.19/" надо ставить "b/".
В строке "@@ -401,11 +401,6@@" 401 означает начальную строку изменяемого фрагмента; 11 число строк в исходном коде; а число 6 означает число оставшихся строк после применения патча. Строки без "+/-" остаются на месте, с плюсом прибавляются, а с минусом вычитаются. Если в строке стит два знака, то значит первый знак не учитывается.
Создать патч можно самому. Для этого надо выполнить последовательность команд.
1. quilt new <имя патча>; quilt add <имя изменяемого файла>
2. Редактирование этого файла
3. quilt refresh.
После чего появится каталог patch в каталоге из которого был запущен quilt с патчем и дополнительными служебными файлами для quilt.
4. Если возникнет ошибка bash: abc: command not found, то значит нет пакета abc, которой устанавливается последовательностью команд su--->apt-get install <имя пакета содержащего команду abc>--->exit. Какой пакет надо установить искать через интернет, обычно имена пакетов не совпадают с именами недастоющей команды, хотч попробовать можно.
5. Если при компиляции возникнет ошибка "downloading", то значит в файле Makefile надо изменить значение переменных PKG_SOURCE_PROTO, PKG_SOURCE_URL, PKG_SOURCE и PKG_MD5SUM.
Если PKG_SOURCE_URL начинается на "http://", а не на "git://", то значит надо удалить строку PKG_SOURCE_PROTO и добавить или изменить строку с контрольной суммой MD5 (PKG_MD5SUM). Которую можно вычислить при помощи программы WinMD5free. URL скачиваемого файла получается путем складывания переменных PKG_SOURCE_URL и PKG_SOURCE. Для поиска других мест с этим файлом, надо попробовать поискать в интернете файл с именем из PKG_SOURCE, которое чаще всего состоит из названия пакета и значения переменной PKG_VERSION разделенных "-" и оканчивающимся расширением ".tar.bz2" или ".tar.gz". Причем если с исходным расширением найти  не удается, то стоит попробовать поискать с другим расширением.
6. При ошибке "Package XXX is missing dependencies", просто добавь пропущенное "dependencies" в переменную DEPENDS файла Makefile.
7. Если предыдущие рецепты не помогут, то значит надо попробовать поискать новую версию пакета на dev.openwrt.org или исходных кодов его по ссылке указанной в переменной URL или SOURCE_URL.

Комментариев нет:

Отправить комментарий