Создание своей прошивки 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/a
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.or
на репозиторий на своем компьютере: "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-ext
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/feed |
PKG_SOURCE_URL:=http://xmlrpc-c.svn.sou |
PKG_SOURCE_URL:=http://svn.code.sf.net/p/x |
libzstream | ~/openwrt/attitude_adjustment_12.09/buil |
WFLAGS:=-Wall -Werror -pedantic | WFLAGS:=-Wall -Werror |
msmpt | ~/openwrt/attitude_adjustment_12.09/feed |
PKG_SOURCE_URL:=@SF/msmtp | PKG_SOURCE_URL:=http://git.code.sf.net/p/m |
6relayd | ~/openwrt/attitude_adjustment_12.09/pack | PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_URL:=git://github.com/sbyx/6r PKG_SOURCE_PROTO:=gitPKG_SOURCE_VERSION:=2ed520c500b0fbb484cf | PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)- PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_URL:=git://nbd.name/6relayd.gitPKG_SOURCE_PROTO:=git PKG_SOURCE_VERSION:=2ed520c500b0fbb484cf PKG_SOURCE:=$(PKG_NAME).git-$(PKG_SOURCE_VERSION).ta |
gpiotoggling | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=git://github.com/mirko/g PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_PROTO:=git | PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=http://downloads.openwr PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_MD5SUN:=1e4c21189bd88c5e9aaddd2cb792 |
faifa | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=git://github.com/ffainel PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_VERSION:=2842afc90bd9ca08ed2a PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$ | PKG_SOURCE_URL:=http://mirror.opf.slu.c PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$ PKG_MD5SUM:=7060f39c4237abb92cacf6b1155b |
luafilesystem | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=http://github.com/downl | PKG_SOURCE_URL:=http://downloads.openwr |
luasoap | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=https://github.com/down | PKG_SOURCE_URL:=http://cloud.github.com/d |
python-eeml | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/petervi PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_PROTO:=git | PKG_SOURCE_URL:=http://downloads.openwr PKG_SOURCE_VERSION:=$(PKG_REV) PKG_MD5SUM:=e59fd56875194ccb87ec60250454 |
libfreenect | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/OpenKin PKG_SOURCE_PROTO:=git | PKG_SOURCE_URL:=http://downloads.openwr |
icmptx | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_PROTO:=gitPKG_SOURCE_URL:=git://github.com/jakkart | PKG_SOURCE_URL:=http://downloads.openwr PKG_MD5SUM:=73b5bb66e1fcb21dc64b024c2e0d |
libmodbus | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=http://github.com/downl | PKG_SOURCE_URL:=http://downloads.openwr |
libsml | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/dailab/l PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_PROTO:=git | PKG_SOURCE_URL:=http://downloads.openwr PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER |
btpd | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=https://github.com/down | PKG_SOURCE_URL:=http://downloads.openwr |
chaosvpn | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=http://github.com/downl | PKG_SOURCE_URL:=http://downloads.openwr |
wing | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/rriggio/c PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_PROTO:=git | PKG_SOURCE_URL:=http://downloads.openwr PKG_MD5SUM:=7fcf6c94fe0e9e55e768f478038e PKG_SOURCE_VERSION:=$(PKG_REV) |
shell-fm | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_PROTO:=gitPKG_SOURCE_URL:=git://github.com/jkramer/s | PKG_MD5SUM:=9a083e953dcbb474fb1fda032f96 PKG_SOURCE_URL:=http://downloads.openwr |
triggerhappy | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/wertarb PKG_SOURCE_PROTO:=git | PKG_MD5SUM:=e52e7339f9c2101b81f434ba0e77 PKG_SOURCE_URL:=http://downloads.openwr |
wview | ~/openwrt/attitude_adjustment_12.09/feed | PKG_SOURCE_URL:=git://github.com/jgoerze | PKG_SOURCE_URL:=http://downloads.openwrt.org/sources/ PKG_MD5SUM:=150c0fcc0eee6338919135b675c0 |
odhcp6c | ~/openwrt/attitude_adjustment_12.09/pack | PKG_SOURCE_URL:=git://github.com/sbyx/od PKG_SOURCE_PROTO:=git | PKG_SOURCE_URL:=http://220.110.201.21/o PKG_MD5SUM:=12b9611ae180a508077b75ead8aa |
polarssl | ~/openwrt/attitude_adjustment_12.09/pack | PKG_SOURCE_URL:=https://polarssl.org/co | PKG_SOURCE_URL:=http://sources.buildroo |
remotefs remotefs-server | ~/openwrt/attitude_adjustment_12.09/pack | PKG_SOURCE_PROTO:=svnPKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_SUBDIR:=remotefs-$(PKG_VERSIO PKG_SOURCE_URL:=http://remotefs.svn.sou | PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE_SUBDIR:=remotefs-$(PKG_VERSIO PKG_SOURCE_URL:=http://downloads.openwr PKG_MD5SUM:=159730871028cd106e63442975e6 |
umurmur umurmur-polarssl | ~/openwrt/attitude_adjustment_12.09/pack | PKG_VERSION:=0.2.10 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=http://umurmur.googleco PKG_MD5SUM:=4d71a699bddce3df0996b5dd0a27 | PKG_VERSION:=0.2.14PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=http://umurmur.googleco PKG_MD5SUM:=e22121b4b91f4c9de43f858f6def |
l7-protocols-testing | ~/openwrt/attitude_adjustment_12.09/pack | PKG_VERSION:=2009-05-28 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=@SF/l7-filter PKG_MD5SUM:=91be154d12134dcdbc560cc7aa7f | PKG_VERSION:=2009-05-10 PKG_RELEASE:=1 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=@SF/l7-filter PKG_MD5SUM:=bca299f0b41945bbf09713ed117e |
yate php5 | ~/openwrt/attitude_adjustment_12.09/pack | PKG_VERSION:=5.4.5 PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=http://www.php.net/dist PKG_MD5SUM:=ffcc7f4dcf2b79d667fe0c110e6c | PKG_VERSION:=5.4.19 PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t PKG_SOURCE_URL:=http://museum.php.net/p http://downloads.php.net/stas/ PKG_MD5SUM:=f06f99b9872b503758adab5ba7a7 + каталоге "~/openwrt/attitude_adjustment_12.09/pac Index: target-mips_r2_uClibc-0.9.33.2/php-5.4.1 ======================================== --- 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/pack | PKG_SOURCE_URL:=http://theta44.org/soft | PKG_SOURCE_URL:=http://www.wirelessdefe |
pcre libpcrecpp | ~/openwrt/attitude_adjustment_12.09/pack | PKG_FIXUP:=autoreconf | PKG_FIXUP = libtool |
shflags | ~/openwrt/attitude_adjustment_12.09/pack | PKG_VERSION:=2012-06-11 PKG_RELEASE=$(PKG_SOURCE_VERSION) PKG_SOURCE_PROTO:=git PKG_SOURCE_URL:=git://dev.freecwmp.org/s PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_VERSION:=4411ea9115802b86ffee PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$ | 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.googleco PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VER PKG_SOURCE_VERSION:=$(PKG_REV) PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).t |
nprobe | ~/openwrt/attitude_adjustment_12.09/pack | 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/pack | PKG_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/* $(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/* $(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
В которой создал файл 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/pac
Настройки ядра лучше не трогать, ибо они вызывают ошибки компиляции.
После чего запустить директиву make без параметров и уйти на несколько часов (дней) от компьютера.
Прошивка будет в папке ~/openwrt/attitude_adjustment_12.09/bin/a
Для новой компиляции необходимо выполнять команду очистки "make clean".
Если она не помогла, то можно воспользоваться полной очисткой "make dirclean", или удалением всего каталога openwrt "rm -fr /~/openwrt".
Дальше прошивать, как описал в предыдущем посте.
Ложные сведения распространяемые любителями linux о процессе компиляции.1. Сборка в виртуальной машине под windows - это вид извращения, оно занимает очень много времени.В реальности, все наоборот. Если есть желание потрахаться с компьютером устанавливая драйвер для видео, выясняя что значит сообщение: /lib/modules/3.8.0-19-generic/build/incl
Причем 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_with out_sapis.patch b/lang/php5/patches/951-allow_build_with out_sapis.patch
new file mode 100644
index 0000000..14033a4
--- /dev/null
+++ b/lang/php5/patches/951-allow_build_with out_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.
Комментариев нет:
Отправить комментарий