create branch for barrier breaker (from trunk r41863)
git-svn-id: svn://svn.openwrt.org/openwrt/branches/barrier_breaker@41864 3c298f89-4303-0410-b956-a3cf2f4a3e73test-seperate-ports
commit
e345c9a277
|
@ -0,0 +1 @@
|
|||
* -text
|
|
@ -0,0 +1,25 @@
|
|||
*.o
|
||||
.DS_Store
|
||||
.*.swp
|
||||
/env
|
||||
/dl
|
||||
/.config
|
||||
/.config.old
|
||||
/bin
|
||||
/build_dir
|
||||
/staging_dir
|
||||
/tmp
|
||||
/logs
|
||||
/feeds
|
||||
/feeds.conf
|
||||
/files
|
||||
/package/feeds
|
||||
/package/openwrt-packages
|
||||
*.orig
|
||||
*.rej
|
||||
*~
|
||||
.#*
|
||||
*#
|
||||
.emacs.desktop*
|
||||
TAGS*~
|
||||
git-src
|
|
@ -0,0 +1,7 @@
|
|||
# Copyright (C) 2006 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
world ${.TARGETS}:
|
||||
@gmake $@
|
|
@ -0,0 +1,33 @@
|
|||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
mainmenu "OpenWrt Configuration"
|
||||
|
||||
config MODULES
|
||||
bool
|
||||
default y
|
||||
|
||||
config HAVE_DOT_CONFIG
|
||||
bool
|
||||
default y
|
||||
|
||||
source "target/Config.in"
|
||||
|
||||
source "config/Config-images.in"
|
||||
|
||||
source "config/Config-build.in"
|
||||
|
||||
source "config/Config-devel.in"
|
||||
|
||||
source "toolchain/Config.in"
|
||||
|
||||
source "target/imagebuilder/Config.in"
|
||||
|
||||
source "target/sdk/Config.in"
|
||||
|
||||
source "target/toolchain/Config.in"
|
||||
|
||||
source "tmp/.config-package.in"
|
|
@ -0,0 +1,340 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
|
||||
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Library General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Library General
|
||||
Public License instead of this License.
|
|
@ -0,0 +1,105 @@
|
|||
# Makefile for OpenWrt
|
||||
#
|
||||
# Copyright (C) 2007 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
TOPDIR:=${CURDIR}
|
||||
LC_ALL:=C
|
||||
LANG:=C
|
||||
export TOPDIR LC_ALL LANG
|
||||
|
||||
empty:=
|
||||
space:= $(empty) $(empty)
|
||||
$(if $(findstring $(space),$(TOPDIR)),$(error ERROR: The path to the OpenWrt directory must not include any spaces))
|
||||
|
||||
world:
|
||||
|
||||
include $(TOPDIR)/include/host.mk
|
||||
|
||||
ifneq ($(OPENWRT_BUILD),1)
|
||||
_SINGLE=export MAKEFLAGS=$(space);
|
||||
|
||||
override OPENWRT_BUILD=1
|
||||
export OPENWRT_BUILD
|
||||
GREP_OPTIONS=
|
||||
export GREP_OPTIONS
|
||||
include $(TOPDIR)/include/debug.mk
|
||||
include $(TOPDIR)/include/depends.mk
|
||||
include $(TOPDIR)/include/toplevel.mk
|
||||
else
|
||||
include rules.mk
|
||||
include $(INCLUDE_DIR)/depends.mk
|
||||
include $(INCLUDE_DIR)/subdir.mk
|
||||
include target/Makefile
|
||||
include package/Makefile
|
||||
include tools/Makefile
|
||||
include toolchain/Makefile
|
||||
|
||||
$(toolchain/stamp-install): $(tools/stamp-install)
|
||||
$(target/stamp-compile): $(toolchain/stamp-install) $(tools/stamp-install) $(BUILD_DIR)/.prepared
|
||||
$(package/stamp-compile): $(target/stamp-compile) $(package/stamp-cleanup)
|
||||
$(package/stamp-install): $(package/stamp-compile)
|
||||
$(target/stamp-install): $(package/stamp-compile) $(package/stamp-install)
|
||||
|
||||
printdb:
|
||||
@true
|
||||
|
||||
prepare: $(target/stamp-compile)
|
||||
|
||||
clean: FORCE
|
||||
rm -rf $(BUILD_DIR) $(BIN_DIR) $(BUILD_LOG_DIR)
|
||||
|
||||
dirclean: clean
|
||||
rm -rf $(STAGING_DIR) $(STAGING_DIR_HOST) $(STAGING_DIR_TOOLCHAIN) $(TOOLCHAIN_DIR) $(BUILD_DIR_HOST) $(BUILD_DIR_TOOLCHAIN)
|
||||
rm -rf $(TMP_DIR)
|
||||
|
||||
ifndef DUMP_TARGET_DB
|
||||
$(BUILD_DIR)/.prepared: Makefile
|
||||
@mkdir -p $$(dirname $@)
|
||||
@touch $@
|
||||
|
||||
tmp/.prereq_packages: .config
|
||||
unset ERROR; \
|
||||
for package in $(sort $(prereq-y) $(prereq-m)); do \
|
||||
$(_SINGLE)$(NO_TRACE_MAKE) -s -r -C package/$$package prereq || ERROR=1; \
|
||||
done; \
|
||||
if [ -n "$$ERROR" ]; then \
|
||||
echo "Package prerequisite check failed."; \
|
||||
false; \
|
||||
fi
|
||||
touch $@
|
||||
endif
|
||||
|
||||
# check prerequisites before starting to build
|
||||
prereq: $(target/stamp-prereq) tmp/.prereq_packages
|
||||
@if [ ! -f "$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)" ]; then \
|
||||
echo 'ERROR: Missing site config for target "$(REAL_GNU_TARGET_NAME)" !'; \
|
||||
echo ' The missing file will cause configure scripts to fail during compilation.'; \
|
||||
echo ' Please provide a "$(INCLUDE_DIR)/site/$(REAL_GNU_TARGET_NAME)" file and restart the build.'; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
prepare: .config $(tools/stamp-install) $(toolchain/stamp-install)
|
||||
world: prepare $(target/stamp-compile) $(package/stamp-compile) $(package/stamp-install) $(target/stamp-install) FORCE
|
||||
$(_SINGLE)$(SUBMAKE) -r package/index
|
||||
|
||||
# update all feeds, re-create index files, install symlinks
|
||||
package/symlinks:
|
||||
$(SCRIPT_DIR)/feeds update -a
|
||||
$(SCRIPT_DIR)/feeds install -a
|
||||
|
||||
# re-create index files, install symlinks
|
||||
package/symlinks-install:
|
||||
$(SCRIPT_DIR)/feeds update -i
|
||||
$(SCRIPT_DIR)/feeds install -a
|
||||
|
||||
# remove all symlinks, don't touch ./feeds
|
||||
package/symlinks-clean:
|
||||
$(SCRIPT_DIR)/feeds uninstall -a
|
||||
|
||||
.PHONY: clean dirclean prereq prepare world package/symlinks package/symlinks-install package/symlinks-clean
|
||||
|
||||
endif
|
|
@ -0,0 +1,35 @@
|
|||
This is the buildsystem for the OpenWrt Linux distribution.
|
||||
|
||||
Please use "make menuconfig" to configure your appreciated
|
||||
configuration for the toolchain and firmware.
|
||||
|
||||
You need to have installed gcc, binutils, bzip2, flex, python, perl
|
||||
make, find, grep, diff, unzip, gawk, getopt, libz-dev and libc headers.
|
||||
|
||||
Run "./scripts/feeds update -a" to get all the latest package definitions
|
||||
defined in feeds.conf / feeds.conf.default respectively
|
||||
and "./scripts/feeds install -a" to install symlinks of all of them into
|
||||
package/feeds/.
|
||||
|
||||
Use "make menuconfig" to configure your image.
|
||||
|
||||
Simply running "make" will build your firmware.
|
||||
It will download all sources, build the cross-compile toolchain,
|
||||
the kernel and all choosen applications.
|
||||
|
||||
You can use "scripts/flashing/flash.sh" for remotely updating your embedded
|
||||
system via tftp.
|
||||
|
||||
The OpenWrt system is documented in docs/. You will need a LaTeX distribution
|
||||
and the tex4ht package to build the documentation. Type "make -C docs/" to build it.
|
||||
|
||||
To build your own firmware you need to have access to a Linux, BSD or MacOSX system
|
||||
(case-sensitive filesystem required). Cygwin will not be supported because of
|
||||
the lack of case sensitiveness in the file system.
|
||||
|
||||
|
||||
Sunshine!
|
||||
Your OpenWrt Project
|
||||
http://openwrt.org
|
||||
|
||||
|
|
@ -0,0 +1,206 @@
|
|||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
menu "Global build settings"
|
||||
|
||||
config ALL
|
||||
bool "Select all packages by default"
|
||||
default n
|
||||
|
||||
comment "General build options"
|
||||
|
||||
config DISPLAY_SUPPORT
|
||||
bool "Show packages that require graphics support (local or remote)"
|
||||
default n
|
||||
|
||||
config BUILD_PATENTED
|
||||
default y
|
||||
bool "Compile with support for patented functionality"
|
||||
help
|
||||
When this option is disabled, software which provides patented functionality will not be built.
|
||||
In case software provides optional support for patented functionality,
|
||||
this optional support will get disabled for this package.
|
||||
|
||||
config BUILD_NLS
|
||||
default n
|
||||
bool "Compile with full language support"
|
||||
help
|
||||
When this option is enabled, packages are built with the full versions of iconv and GNU gettext
|
||||
instead of the default OpenWrt stubs. If uClibc is used, it is also built with locale support.
|
||||
|
||||
config BUILD_STATIC_TOOLS
|
||||
default n
|
||||
bool "Attempt to link host utilities statically"
|
||||
help
|
||||
Linking host utilities like sed or firmware-utils statically increases the portability of the
|
||||
generated ImageBuilder and SDK tarballs, however it may fail on some Linux distributions.
|
||||
|
||||
config SHADOW_PASSWORDS
|
||||
bool
|
||||
prompt "Enable shadow password support"
|
||||
default y
|
||||
help
|
||||
Enable shadow password support.
|
||||
|
||||
config CLEAN_IPKG
|
||||
bool
|
||||
prompt "Remove ipkg/opkg status data files in final images"
|
||||
default n
|
||||
help
|
||||
This removes all ipkg/opkg status data files from the target directory before building the root fs
|
||||
|
||||
config COLLECT_KERNEL_DEBUG
|
||||
bool
|
||||
prompt "Collect kernel debug information"
|
||||
select KERNEL_DEBUG_INFO
|
||||
default n
|
||||
help
|
||||
This collects debugging symbols from the kernel and all compiled modules.
|
||||
Useful for release builds, so that kernel issues can be debugged offline later.
|
||||
|
||||
comment "Kernel build options"
|
||||
|
||||
source "config/Config-kernel.in"
|
||||
|
||||
comment "Package build options"
|
||||
|
||||
config DEBUG
|
||||
bool
|
||||
prompt "Compile packages with debugging info"
|
||||
default n
|
||||
help
|
||||
Adds -g3 to the CFLAGS
|
||||
|
||||
config IPV6
|
||||
bool
|
||||
prompt "Enable IPv6 support in packages"
|
||||
default y
|
||||
help
|
||||
Enable IPV6 support in packages (passes --enable-ipv6 to configure scripts).
|
||||
|
||||
config PKG_BUILD_PARALLEL
|
||||
bool
|
||||
prompt "Compile certain packages parallelized"
|
||||
default y
|
||||
help
|
||||
This adds a -jX option to certain packages that are known to
|
||||
behave well for parallel build. By default the package make processes
|
||||
use the main jobserver, in which case this option only takes effect
|
||||
when you add -jX to the make command.
|
||||
|
||||
If you are unsure, select N.
|
||||
|
||||
config PKG_BUILD_USE_JOBSERVER
|
||||
bool
|
||||
prompt "Use top-level make jobserver for packages"
|
||||
depends on PKG_BUILD_PARALLEL
|
||||
default y
|
||||
help
|
||||
This passes the main make process jobserver fds to package builds,
|
||||
enabling full parallelization across different packages
|
||||
|
||||
Note that disabling this may overcommit CPU resources depending on the
|
||||
-j level of the main make process, the number of package
|
||||
submake jobs selected below and the number of actual CPUs present.
|
||||
Example: If the main make is passed a -j4 and the submake -j
|
||||
is also set to 4, we may end up with 16 parallel make processes
|
||||
in the worst case.
|
||||
|
||||
|
||||
config PKG_BUILD_JOBS
|
||||
int
|
||||
prompt "Number of package submake jobs (2-512)"
|
||||
range 2 512
|
||||
default 2
|
||||
depends on PKG_BUILD_PARALLEL && !PKG_BUILD_USE_JOBSERVER
|
||||
help
|
||||
The number of jobs (-jX) to pass to packages submake.
|
||||
|
||||
config PKG_DEFAULT_PARALLEL
|
||||
bool
|
||||
prompt "Parallelize the default package build rule (May break build)"
|
||||
depends on PKG_BUILD_PARALLEL
|
||||
depends on BROKEN
|
||||
default n
|
||||
help
|
||||
Always set the default package build rules to parallel build.
|
||||
|
||||
WARNING: This may break build or kill your cat, as it builds
|
||||
packages with multiple jobs that are probably not tested in
|
||||
a parallel build environment.
|
||||
|
||||
Only say Y, if you don't mind fixing broken packages.
|
||||
Before reporting build bugs, set this to N and re-run the build.
|
||||
|
||||
comment "Stripping options"
|
||||
|
||||
choice
|
||||
prompt "Binary stripping method"
|
||||
default USE_STRIP if EXTERNAL_TOOLCHAIN
|
||||
default USE_STRIP if USE_GLIBC || USE_EGLIBC || USE_MUSL
|
||||
default USE_SSTRIP
|
||||
help
|
||||
Select the binary stripping method you wish to use.
|
||||
|
||||
config NO_STRIP
|
||||
bool "none"
|
||||
help
|
||||
This will install unstripped binaries (useful for native compiling/debugging)
|
||||
|
||||
config USE_STRIP
|
||||
bool "strip"
|
||||
help
|
||||
This will install binaries stripped using strip from binutils
|
||||
|
||||
|
||||
config USE_SSTRIP
|
||||
bool "sstrip"
|
||||
depends on !DEBUG
|
||||
depends on !USE_GLIBC
|
||||
depends on !USE_EGLIBC
|
||||
help
|
||||
This will install binaries stripped using sstrip
|
||||
endchoice
|
||||
|
||||
config STRIP_ARGS
|
||||
string
|
||||
prompt "Strip arguments"
|
||||
depends on USE_STRIP
|
||||
default "--strip-unneeded --remove-section=.comment --remove-section=.note" if DEBUG
|
||||
default "--strip-all"
|
||||
help
|
||||
Specifies arguments passed to the strip command when stripping binaries
|
||||
|
||||
config STRIP_KERNEL_EXPORTS
|
||||
bool "Strip unnecessary exports from the kernel image"
|
||||
help
|
||||
Reduces kernel size by stripping unused kernel exports from the kernel image
|
||||
Note that this might make the kernel incompatible with any kernel modules that
|
||||
were not selected at the time the kernel image was created
|
||||
|
||||
config USE_MKLIBS
|
||||
bool "Strip unnecessary functions from libraries"
|
||||
help
|
||||
Reduces libraries to only those functions that are necessary for using all
|
||||
selected packages (including those selected as <M>)
|
||||
Note that this will make the system libraries incompatible with most of the packages
|
||||
that are not selected during the build process
|
||||
|
||||
choice
|
||||
prompt "Preferred standard C++ library"
|
||||
default USE_LIBSTDCXX if USE_EGLIBC
|
||||
default USE_UCLIBCXX
|
||||
help
|
||||
Select the preferred standard C++ library for all packages that support this.
|
||||
|
||||
config USE_UCLIBCXX
|
||||
bool "uClibc++"
|
||||
|
||||
config USE_LIBSTDCXX
|
||||
bool "libstdc++"
|
||||
endchoice
|
||||
|
||||
endmenu
|
|
@ -0,0 +1,100 @@
|
|||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
menuconfig DEVEL
|
||||
bool "Advanced configuration options (for developers)"
|
||||
default n
|
||||
|
||||
config BROKEN
|
||||
bool "Show broken platforms / packages" if DEVEL
|
||||
default n
|
||||
|
||||
config BINARY_FOLDER
|
||||
string "Binary folder" if DEVEL
|
||||
default ""
|
||||
|
||||
config DOWNLOAD_FOLDER
|
||||
string "Download folder" if DEVEL
|
||||
default ""
|
||||
|
||||
config LOCALMIRROR
|
||||
string "Local mirror for source packages" if DEVEL
|
||||
default ""
|
||||
|
||||
config AUTOREBUILD
|
||||
bool "Automatic rebuild of packages" if DEVEL
|
||||
default y
|
||||
help
|
||||
Automatically rebuild packages when their files change
|
||||
|
||||
config BUILD_SUFFIX
|
||||
string "Build suffix to append to the BUILD_DIR variable" if DEVEL
|
||||
default ""
|
||||
help
|
||||
Build suffix to append to the BUILD_DIR variable, i.e: build_dir_suffix
|
||||
|
||||
config TARGET_ROOTFS_DIR
|
||||
string "Override the default TARGET_ROOTFS_DIR variable" if DEVEL
|
||||
default ""
|
||||
help
|
||||
Override the default TARGET_ROOTFS_DIR variable content $(BUILD_DIR) with custom path.
|
||||
Use this option to re-define the location of the target root file system directory.
|
||||
|
||||
config CCACHE
|
||||
bool "Use ccache" if DEVEL
|
||||
default n
|
||||
help
|
||||
Compiler cache; see http://ccache.samba.org/
|
||||
|
||||
config EXTERNAL_KERNEL_TREE
|
||||
string "Use external kernel tree" if DEVEL
|
||||
default ""
|
||||
|
||||
config KERNEL_GIT_CLONE_URI
|
||||
string "Enter git repository to clone" if DEVEL
|
||||
default ""
|
||||
help
|
||||
Enter the full git repository path i.e.:
|
||||
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
|
||||
This will create a git clone of the kernel in your build
|
||||
directory.
|
||||
|
||||
config KERNEL_GIT_LOCAL_REPOSITORY
|
||||
string "Enter path to local reference repository" if DEVEL
|
||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
||||
default ""
|
||||
help
|
||||
Enter a full pathname to a local reference git repository.
|
||||
In this instance, the --refererence option of git clone will
|
||||
be used thus creating a quick local clone of your repo.
|
||||
|
||||
config KERNEL_GIT_BRANCH
|
||||
string "Enter git branch to clone" if DEVEL
|
||||
depends on (KERNEL_GIT_CLONE_URI != "")
|
||||
default ""
|
||||
help
|
||||
Enter the branch name to checkout after cloning the git repository.
|
||||
In this instance, the --branch option of git clone will be used.
|
||||
If unused, the clone's repository HEAD will be checked-out.
|
||||
|
||||
config BUILD_LOG
|
||||
bool "Enable log files during build process" if DEVEL
|
||||
help
|
||||
If enabled log files will be written to the ./log directory
|
||||
|
||||
config SRC_TREE_OVERRIDE
|
||||
bool "Enable package source tree override" if DEVEL
|
||||
help
|
||||
If enabled, you can force a package to use a git tree as source
|
||||
code instead of the normal tarball. Create a symlink 'git-src'
|
||||
in the package directory, pointing to the .git tree that you want
|
||||
to pull the source code from
|
||||
|
||||
config EXTRA_OPTIMIZATION
|
||||
string "Additional compiler options" if DEVEL
|
||||
default "-fno-caller-saves"
|
||||
help
|
||||
Extra Target-independent optimizations to use when building for the target.
|
|
@ -0,0 +1,317 @@
|
|||
# Copyright (C) 2006-2013 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
menu "Target Images"
|
||||
|
||||
menuconfig TARGET_ROOTFS_INITRAMFS
|
||||
bool "ramdisk"
|
||||
default y if USES_INITRAMFS
|
||||
help
|
||||
Embed the rootfs into the kernel (initramfs)
|
||||
|
||||
choice
|
||||
prompt "Compression"
|
||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ar71xx
|
||||
default TARGET_INITRAMFS_COMPRESSION_LZMA if TARGET_ramips
|
||||
default TARGET_INITRAMFS_COMPRESSION_NONE
|
||||
depends on TARGET_ROOTFS_INITRAMFS
|
||||
help
|
||||
Select ramdisk compression.
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_NONE
|
||||
bool "none"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_GZIP
|
||||
bool "gzip"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_BZIP2
|
||||
bool "bzip2"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_LZMA
|
||||
bool "lzma"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_LZO
|
||||
bool "lzo"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_LZ4
|
||||
bool "lz4"
|
||||
|
||||
config TARGET_INITRAMFS_COMPRESSION_XZ
|
||||
bool "xz"
|
||||
endchoice
|
||||
|
||||
config EXTERNAL_CPIO
|
||||
string
|
||||
prompt "Use external cpio" if TARGET_ROOTFS_INITRAMFS
|
||||
default ""
|
||||
help
|
||||
Kernel uses specified external cpio as INITRAMFS_SOURCE
|
||||
|
||||
comment "Root filesystem archives"
|
||||
|
||||
config TARGET_ROOTFS_CPIOGZ
|
||||
bool "cpio.gz"
|
||||
default y if USES_CPIOGZ
|
||||
help
|
||||
Build a compressed cpio archive of the the root filesystem
|
||||
|
||||
config TARGET_ROOTFS_TARGZ
|
||||
bool "tar.gz"
|
||||
default y if USES_TARGZ
|
||||
help
|
||||
Build a compressed tar archive of the the root filesystem
|
||||
|
||||
comment "Root filesystem images"
|
||||
|
||||
menuconfig TARGET_ROOTFS_EXT4FS
|
||||
bool "ext4"
|
||||
default y if USES_EXT4
|
||||
help
|
||||
Build a ext4 root filesystem
|
||||
|
||||
config TARGET_EXT4_MAXINODE
|
||||
int "Maximum number of inodes in root filesystem"
|
||||
depends on TARGET_ROOTFS_EXT4FS
|
||||
default 6000
|
||||
help
|
||||
Allows you to change the maximum number of inodes in the root filesystem
|
||||
|
||||
config TARGET_EXT4_RESERVED_PCT
|
||||
int "Percentage of reserved blocks in root filesystem"
|
||||
depends on TARGET_ROOTFS_EXT4FS
|
||||
default 0
|
||||
help
|
||||
Allows you to change the percentage of reserved blocks in the root filesystem
|
||||
|
||||
choice
|
||||
prompt "Root filesystem block size"
|
||||
default TARGET_EXT4_BLOCKSIZE_4K
|
||||
depends on TARGET_ROOTFS_EXT4FS
|
||||
help
|
||||
Allows you to change the block size of the root filesystem
|
||||
|
||||
config TARGET_EXT4_BLOCKSIZE_4K
|
||||
bool "4k"
|
||||
|
||||
config TARGET_EXT4_BLOCKSIZE_2K
|
||||
bool "2k"
|
||||
|
||||
config TARGET_EXT4_BLOCKSIZE_1K
|
||||
bool "1k"
|
||||
endchoice
|
||||
|
||||
config TARGET_EXT4_BLOCKSIZE
|
||||
int
|
||||
default 4096 if TARGET_EXT4_BLOCKSIZE_4K
|
||||
default 2048 if TARGET_EXT4_BLOCKSIZE_2K
|
||||
default 1024 if TARGET_EXT4_BLOCKSIZE_1K
|
||||
depends on TARGET_ROOTFS_EXT4FS
|
||||
|
||||
config TARGET_EXT4_JOURNAL
|
||||
bool "Create a journaling filesystem"
|
||||
depends on TARGET_ROOTFS_EXT4FS
|
||||
default n
|
||||
help
|
||||
Create an ext4 filesystem with a journal
|
||||
|
||||
config TARGET_ROOTFS_ISO
|
||||
bool "iso"
|
||||
default n
|
||||
depends on TARGET_x86_generic
|
||||
help
|
||||
Create some bootable ISO image
|
||||
|
||||
config TARGET_ROOTFS_JFFS2
|
||||
bool "jffs2"
|
||||
default y if USES_JFFS2
|
||||
help
|
||||
Build a jffs2 root filesystem
|
||||
|
||||
config TARGET_ROOTFS_JFFS2_NAND
|
||||
bool "jffs2 for NAND"
|
||||
default y if USES_JFFS2_NAND
|
||||
depends on USES_JFFS2_NAND
|
||||
help
|
||||
Build a jffs2 root filesystem for NAND flash
|
||||
|
||||
menuconfig TARGET_ROOTFS_SQUASHFS
|
||||
bool "squashfs"
|
||||
default y if USES_SQUASHFS
|
||||
help
|
||||
Build a squashfs-lzma root filesystem
|
||||
|
||||
config TARGET_SQUASHFS_BLOCK_SIZE
|
||||
int "Block size (in KiB)"
|
||||
depends on TARGET_ROOTFS_SQUASHFS
|
||||
default 64 if LOW_MEMORY_FOOTPRINT
|
||||
default 256
|
||||
|
||||
menuconfig TARGET_ROOTFS_UBIFS
|
||||
bool "ubifs"
|
||||
default y if USES_UBIFS
|
||||
depends on USES_UBIFS
|
||||
help
|
||||
Build a ubifs root filesystem
|
||||
|
||||
choice
|
||||
prompt "compression"
|
||||
default TARGET_UBIFS_COMPRESSION_ZLIB
|
||||
depends on TARGET_ROOTFS_UBIFS
|
||||
help
|
||||
Select compression type
|
||||
|
||||
config TARGET_UBIFS_COMPRESSION_NONE
|
||||
bool "none"
|
||||
|
||||
config TARGET_UBIFS_COMPRESSION_LZO
|
||||
bool "lzo"
|
||||
|
||||
config TARGET_UBIFS_COMPRESSION_ZLIB
|
||||
bool "zlib"
|
||||
endchoice
|
||||
|
||||
config TARGET_UBIFS_FREE_SPACE_FIXUP
|
||||
bool "free space fixup" if TARGET_ROOTFS_UBIFS
|
||||
default y
|
||||
help
|
||||
The file-system free space has to be fixed up on first mount
|
||||
|
||||
config TARGET_UBIFS_JOURNAL_SIZE
|
||||
string
|
||||
prompt "journal size" if TARGET_ROOTFS_UBIFS
|
||||
default ""
|
||||
|
||||
config GRUB_IMAGES
|
||||
bool "Build GRUB images (Linux x86 or x86_64 host only)"
|
||||
depends on TARGET_x86_64 || (TARGET_x86 && !(TARGET_x86_olpc || TARGET_x86_rdc))
|
||||
depends on TARGET_ROOTFS_EXT4FS || TARGET_ROOTFS_ISO || TARGET_ROOTFS_JFFS2 || TARGET_ROOTFS_SQUASHFS
|
||||
select PACKAGE_grub2
|
||||
default y
|
||||
|
||||
config GRUB_CONSOLE
|
||||
bool "Use Console Terminal (in addition to Serial)"
|
||||
depends on GRUB_IMAGES
|
||||
default n if (TARGET_x86_generic_Soekris45xx || TARGET_x86_generic_Soekris48xx || TARGET_x86_net5501 || TARGET_x86_geos || TARGET_x86_alix2)
|
||||
default y
|
||||
|
||||
config GRUB_SERIAL
|
||||
string "Serial port device"
|
||||
depends on GRUB_IMAGES
|
||||
default "hvc0" if TARGET_x86_xen_domu
|
||||
default "ttyS0" if ! TARGET_x86_xen_domu
|
||||
|
||||
config GRUB_BAUDRATE
|
||||
int "Serial port baud rate"
|
||||
depends on GRUB_IMAGES
|
||||
default 19200 if TARGET_x86_generic_Soekris45xx || TARGET_x86_generic_Soekris48xx || TARGET_x86_net5501
|
||||
default 38400 if TARGET_x86_alix2
|
||||
default 115200 if TARGET_x86_geos || TARGET_x86_kvm_guest
|
||||
default 38400
|
||||
|
||||
config GRUB_BOOTOPTS
|
||||
string "Extra kernel boot options"
|
||||
depends on GRUB_IMAGES
|
||||
default "xencons=hvc" if TARGET_x86_xen_domu
|
||||
help
|
||||
If you don't know, just leave it blank.
|
||||
|
||||
config GRUB_TIMEOUT
|
||||
string "Seconds to wait before booting the default entry"
|
||||
depends on GRUB_IMAGES
|
||||
default "5"
|
||||
help
|
||||
If you don't know, 5 seconds is a reasonable default.
|
||||
|
||||
config VDI_IMAGES
|
||||
bool "Build VirtualBox image files (VDI)"
|
||||
depends on TARGET_x86 || TARGET_x86_64
|
||||
select GRUB_IMAGES
|
||||
select TARGET_IMAGES_PAD
|
||||
select PACKAGE_kmod-e1000
|
||||
|
||||
config VMDK_IMAGES
|
||||
bool "Build VMware image files (VMDK)"
|
||||
depends on TARGET_x86 || TARGET_x86_64
|
||||
select GRUB_IMAGES
|
||||
select TARGET_IMAGES_PAD
|
||||
select PACKAGE_kmod-e1000
|
||||
|
||||
config TARGET_IMAGES_PAD
|
||||
bool "Pad images to filesystem size (for JFFS2)"
|
||||
depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
|
||||
|
||||
config TARGET_IMAGES_GZIP
|
||||
bool "GZip images"
|
||||
depends on TARGET_IMAGES_PAD || TARGET_ROOTFS_EXT4FS
|
||||
default y
|
||||
|
||||
comment "Image Options"
|
||||
|
||||
source "target/linux/*/image/Config.in"
|
||||
|
||||
config TARGET_KERNEL_PARTSIZE
|
||||
int "Kernel partition size (in MB)"
|
||||
depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
|
||||
default 4
|
||||
|
||||
config TARGET_ROOTFS_PARTSIZE
|
||||
int "Root filesystem partition size (in MB)"
|
||||
depends on GRUB_IMAGES || TARGET_ROOTFS_EXT4FS || TARGET_rb532
|
||||
default 48
|
||||
help
|
||||
Allows you to change the root filesystem partition size
|
||||
|
||||
config TARGET_ROOTFS_PARTNAME
|
||||
string "Root partition on target device"
|
||||
depends on OLPC_BOOTSCRIPT_IMAGES || GRUB_IMAGES
|
||||
default "/dev/xvda2" if TARGET_x86_xen_domu
|
||||
default "/dev/sda2" if ! TARGET_x86_xen_domu
|
||||
help
|
||||
The root partition on the final device. If you don't know,
|
||||
you probably want the default (/dev/sda2).
|
||||
|
||||
|
||||
menuconfig TARGET_ROOTFS_INCLUDE_KERNEL
|
||||
bool "Include kernel in root filesystem"
|
||||
depends on TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS
|
||||
default n
|
||||
help
|
||||
Include the kernel image in the rootfs. Typically the image is placed
|
||||
below /boot.
|
||||
|
||||
config TARGET_ROOTFS_INCLUDE_UIMAGE
|
||||
bool "include uImage" if TARGET_ROOTFS_INCLUDE_KERNEL
|
||||
default y
|
||||
help
|
||||
This option might not apply to all targets. Make sure
|
||||
to check target/linux/<your_target>/image/Makefile to
|
||||
see if this option will have any effect.
|
||||
|
||||
config TARGET_ROOTFS_INCLUDE_ZIMAGE
|
||||
bool "include zImage" if TARGET_ROOTFS_INCLUDE_KERNEL
|
||||
default y
|
||||
help
|
||||
This option might not apply to all targets. Make sure
|
||||
to check target/linux/<your_target>/image/Makefile to
|
||||
see if this option will have any effect.
|
||||
|
||||
config TARGET_ROOTFS_INCLUDE_FIT
|
||||
bool "include FIT" if TARGET_ROOTFS_INCLUDE_KERNEL
|
||||
default y
|
||||
help
|
||||
This option might not apply to all targets. Make sure
|
||||
to check target/linux/<your_target>/image/Makefile to
|
||||
see if this option will have any effect.
|
||||
|
||||
config TARGET_ROOTFS_INCLUDE_DTB
|
||||
bool "Include DTB in root filesystem"
|
||||
depends on USES_DEVICETREE && (TARGET_ROOTFS_UBIFS || TARGET_ROOTFS_EXT4FS)
|
||||
default n
|
||||
help
|
||||
Include the device tree blob file(s) in the rootfs. Typically the DTBs
|
||||
are placed below /boot.
|
||||
|
||||
endmenu
|
|
@ -0,0 +1,466 @@
|
|||
# Copyright (C) 2006-2014 OpenWrt.org
|
||||
#
|
||||
# This is free software, licensed under the GNU General Public License v2.
|
||||
# See /LICENSE for more information.
|
||||
#
|
||||
|
||||
config KERNEL_PRINTK
|
||||
bool "Enable support for printk"
|
||||
default y
|
||||
|
||||
config KERNEL_CRASHLOG
|
||||
bool "Crash logging"
|
||||
depends on !(arm || powerpc || sparc || TARGET_uml)
|
||||
default y
|
||||
|
||||
config KERNEL_SWAP
|
||||
bool "Support for paging of anonymous memory (swap)"
|
||||
default y
|
||||
|
||||
config KERNEL_DEBUG_FS
|
||||
bool "Compile the kernel with Debug FileSystem enabled"
|
||||
default y
|
||||
help
|
||||
debugfs is a virtual file system that kernel developers use to put
|
||||
debugging files into. Enable this option to be able to read and
|
||||
write to these files.
|
||||
|
||||
config KERNEL_PERF_EVENTS
|
||||
bool
|
||||
default n
|
||||
|
||||
config KERNEL_PROFILING
|
||||
bool "Compile the kernel with profiling enabled"
|
||||
default n
|
||||
select KERNEL_PERF_EVENTS
|
||||
help
|
||||
Enable the extended profiling support mechanisms used by profilers such
|
||||
as OProfile.
|
||||
|
||||
config KERNEL_KALLSYMS
|
||||
bool "Compile the kernel with symbol table information"
|
||||
default y
|
||||
help
|
||||
This will give you more information in stack traces from kernel oopses
|
||||
|
||||
config KERNEL_FTRACE
|
||||
bool "Compile the kernel with tracing support"
|
||||
default n
|
||||
|
||||
config KERNEL_FTRACE_SYSCALLS
|
||||
bool "Trace system calls"
|
||||
depends on KERNEL_FTRACE
|
||||
default n
|
||||
|
||||
config KERNEL_ENABLE_DEFAULT_TRACERS
|
||||
bool "Trace process context switches and events"
|
||||
depends on KERNEL_FTRACE
|
||||
default n
|
||||
|
||||
config KERNEL_DEBUG_KERNEL
|
||||
bool
|
||||
default n
|
||||
|
||||
config KERNEL_DEBUG_INFO
|
||||
bool "Compile the kernel with debug information"
|
||||
default y
|
||||
select KERNEL_DEBUG_KERNEL
|
||||
help
|
||||
This will compile your kernel and modules with debug information.
|
||||
|
||||
config KERNEL_DEBUG_LL_UART_NONE
|
||||
bool
|
||||
default n
|
||||
depends on arm
|
||||
|
||||
config KERNEL_DEBUG_LL
|
||||
bool
|
||||
default n
|
||||
depends on arm
|
||||
select KERNEL_DEBUG_LL_UART_NONE
|
||||
help
|
||||
ARM low level debugging
|
||||
|
||||
config KERNEL_DYNAMIC_DEBUG
|
||||
bool "Compile the kernel with dynamic printk"
|
||||
select KERNEL_DEBUG_FS
|
||||
default n
|
||||
help
|
||||
Compiles debug level messages into the kernel, which would not
|
||||
otherwise be available at runtime. These messages can then be
|
||||
enabled/disabled based on various levels of scope - per source file,
|
||||
function, module, format string, and line number. This mechanism
|
||||
implicitly compiles in all pr_debug() and dev_dbg() calls, which
|
||||
enlarges the kernel text size by about 2%.
|
||||
|
||||
config KERNEL_EARLY_PRINTK
|
||||
bool "Compile the kernel with early printk"
|
||||
default n
|
||||
depends on arm
|
||||
select KERNEL_DEBUG_KERNEL
|
||||
select KERNEL_DEBUG_LL if arm
|
||||
help
|
||||
Compile the kernel with early printk support.
|
||||
This is only useful for debugging purposes to send messages
|
||||
over the serial console in early boot.
|
||||
Enable this to debug early boot problems.
|
||||
|
||||
config KERNEL_AIO
|
||||
bool "Compile the kernel with asynchronous IO support"
|
||||
default n
|
||||
|
||||
config KERNEL_DIRECT_IO
|
||||
bool "Compile the kernel with direct IO support"
|
||||
default n
|
||||
|
||||
config KERNEL_MAGIC_SYSRQ
|
||||
bool "Compile the kernel with SysRq support"
|
||||
default y
|
||||
|
||||
config KERNEL_COREDUMP
|
||||
bool
|
||||
|
||||
config KERNEL_ELF_CORE
|
||||
bool "Enable process core dump support"
|
||||
select KERNEL_COREDUMP
|
||||
default y
|
||||
|
||||
config KERNEL_PROVE_LOCKING
|
||||
bool "Enable kernel lock checking"
|
||||
select KERNEL_DEBUG_KERNEL
|
||||
default n
|
||||
|
||||
config KERNEL_PRINTK_TIME
|
||||
bool "Enable printk timestamps"
|
||||
default y
|
||||
|
||||
config KERNEL_SLUB_DEBUG
|
||||
bool
|
||||
|
||||
config KERNEL_SLUB_DEBUG_ON
|
||||
bool
|
||||
|
||||
config KERNEL_SLABINFO
|
||||
select KERNEL_SLUB_DEBUG
|
||||
select KERNEL_SLUB_DEBUG_ON
|
||||
bool "Enable /proc slab debug info"
|
||||
|
||||
config KERNEL_PROC_PAGE_MONITOR
|
||||
bool "Enable /proc page monitoring"
|
||||
|
||||
config KERNEL_RELAY
|
||||
bool
|
||||
|
||||
config KERNEL_KEXEC
|
||||
bool "Enable kexec support"
|
||||
|
||||
config USE_RFKILL
|
||||
bool "Enable rfkill support"
|
||||
default RFKILL_SUPPORT
|
||||
|
||||
config USE_SPARSE
|
||||
bool "Enable sparse check during kernel build"
|
||||
default n
|
||||
|
||||
#
|
||||
# CGROUP support symbols
|
||||
#
|
||||
|
||||
config KERNEL_CGROUPS
|
||||
bool "Enable kernel cgroups"
|
||||
default n
|
||||
|
||||
if KERNEL_CGROUPS
|
||||
|
||||
config KERNEL_CGROUP_DEBUG
|
||||
bool "Example debug cgroup subsystem"
|
||||
default n
|
||||
help
|
||||
This option enables a simple cgroup subsystem that
|
||||
exports useful debugging information about the cgroups
|
||||
framework.
|
||||
|
||||
config KERNEL_FREEZER
|
||||
bool
|
||||
default y if KERNEL_CGROUP_FREEZER
|
||||
|
||||
config KERNEL_CGROUP_FREEZER
|
||||
bool "Freezer cgroup subsystem"
|
||||
default n
|
||||
help
|
||||
Provides a way to freeze and unfreeze all tasks in a
|
||||
cgroup.
|
||||
|
||||
config KERNEL_CGROUP_DEVICE
|
||||
bool "Device controller for cgroups"
|
||||
default y
|
||||
help
|
||||
Provides a cgroup implementing whitelists for devices which
|
||||
a process in the cgroup can mknod or open.
|
||||
|
||||
config KERNEL_CPUSETS
|
||||
bool "Cpuset support"
|
||||
default n
|
||||
help
|
||||
This option will let you create and manage CPUSETs which
|
||||
allow dynamically partitioning a system into sets of CPUs and
|
||||
Memory Nodes and assigning tasks to run only within those sets.
|
||||
This is primarily useful on large SMP or NUMA systems.
|
||||
|
||||
config KERNEL_PROC_PID_CPUSET
|
||||
bool "Include legacy /proc/<pid>/cpuset file"
|
||||
default n
|
||||
depends on KERNEL_CPUSETS
|
||||
|
||||
config KERNEL_CGROUP_CPUACCT
|
||||
bool "Simple CPU accounting cgroup subsystem"
|
||||
default n
|
||||
help
|
||||
Provides a simple Resource Controller for monitoring the
|
||||
total CPU consumed by the tasks in a cgroup.
|
||||
|
||||
config KERNEL_RESOURCE_COUNTERS
|
||||
bool "Resource counters"
|
||||
default n
|
||||
help
|
||||
This option enables controller independent resource accounting
|
||||
infrastructure that works with cgroups.
|
||||
|
||||
config KERNEL_MM_OWNER
|
||||
bool
|
||||
default y if KERNEL_MEMCG
|
||||
|
||||
config KERNEL_MEMCG
|
||||
bool "Memory Resource Controller for Control Groups"
|
||||
default n
|
||||
depends on KERNEL_RESOURCE_COUNTERS
|
||||
help
|
||||
Provides a memory resource controller that manages both anonymous
|
||||
memory and page cache. (See Documentation/cgroups/memory.txt)
|
||||
|
||||
Note that setting this option increases fixed memory overhead
|
||||
associated with each page of memory in the system. By this,
|
||||
20(40)bytes/PAGE_SIZE on 32(64)bit system will be occupied by memory
|
||||
usage tracking struct at boot. Total amount of this is printed out
|
||||
at boot.
|
||||
|
||||
Only enable when you're ok with these trade offs and really
|
||||
sure you need the memory resource controller. Even when you enable
|
||||
this, you can set "cgroup_disable=memory" at your boot option to
|
||||
disable memory resource controller and you can avoid overheads.
|
||||
(and lose benefits of memory resource controller)
|
||||
|
||||
This config option also selects MM_OWNER config option, which
|
||||
could in turn add some fork/exit overhead.
|
||||
|
||||
config KERNEL_MEMCG_SWAP
|
||||
bool "Memory Resource Controller Swap Extension"
|
||||
default n
|
||||
depends on KERNEL_MEMCG
|
||||
help
|
||||
Add swap management feature to memory resource controller. When you
|
||||
enable this, you can limit mem+swap usage per cgroup. In other words,
|
||||
when you disable this, memory resource controller has no cares to
|
||||
usage of swap...a process can exhaust all of the swap. This extension
|
||||
is useful when you want to avoid exhaustion swap but this itself
|
||||
adds more overheads and consumes memory for remembering information.
|
||||
Especially if you use 32bit system or small memory system, please
|
||||
be careful about enabling this. When memory resource controller
|
||||
is disabled by boot option, this will be automatically disabled and
|
||||
there will be no overhead from this. Even when you set this config=y,
|
||||
if boot option "swapaccount=0" is set, swap will not be accounted.
|
||||
Now, memory usage of swap_cgroup is 2 bytes per entry. If swap page
|
||||
size is 4096bytes, 512k per 1Gbytes of swap.
|
||||
|
||||
config KERNEL_MEMCG_SWAP_ENABLED
|
||||
bool "Memory Resource Controller Swap Extension enabled by default"
|
||||
default n
|
||||
depends on KERNEL_MEMCG_SWAP
|
||||
help
|
||||
Memory Resource Controller Swap Extension comes with its price in
|
||||
a bigger memory consumption. General purpose distribution kernels
|
||||
which want to enable the feature but keep it disabled by default
|
||||
and let the user enable it by swapaccount boot command line
|
||||
parameter should have this option unselected.
|
||||
For those who want to have the feature enabled by default should
|
||||
select this option (if, for some reason, they need to disable it
|
||||
then swapaccount=0 does the trick).
|
||||
|
||||
|
||||
config KERNEL_MEMCG_KMEM
|
||||
bool "Memory Resource Controller Kernel Memory accounting (EXPERIMENTAL)"
|
||||
default n
|
||||
depends on KERNEL_MEMCG
|
||||
help
|
||||
The Kernel Memory extension for Memory Resource Controller can limit
|
||||
the amount of memory used by kernel objects in the system. Those are
|
||||
fundamentally different from the entities handled by the standard
|
||||
Memory Controller, which are page-based, and can be swapped. Users of
|
||||
the kmem extension can use it to guarantee that no group of processes
|
||||
will ever exhaust kernel resources alone.
|
||||
|
||||
config KERNEL_CGROUP_PERF
|
||||
bool "Enable perf_event per-cpu per-container group (cgroup) monitoring"
|
||||
select KERNEL_PERF_EVENTS
|
||||
default n
|
||||
help
|
||||
This option extends the per-cpu mode to restrict monitoring to
|
||||
threads which belong to the cgroup specified and run on the
|
||||
designated cpu.
|
||||
|
||||
menuconfig KERNEL_CGROUP_SCHED
|
||||
bool "Group CPU scheduler"
|
||||
default n
|
||||
help
|
||||
This feature lets CPU scheduler recognize task groups and control CPU
|
||||
bandwidth allocation to such task groups. It uses cgroups to group
|
||||
tasks.
|
||||
|
||||
if KERNEL_CGROUP_SCHED
|
||||
|
||||
config KERNEL_FAIR_GROUP_SCHED
|
||||
bool "Group scheduling for SCHED_OTHER"
|
||||
default n
|
||||
|
||||
config KERNEL_CFS_BANDWIDTH
|
||||
bool "CPU bandwidth provisioning for FAIR_GROUP_SCHED"
|
||||
default n
|
||||
depends on KERNEL_FAIR_GROUP_SCHED
|
||||
help
|
||||
This option allows users to define CPU bandwidth rates (limits) for
|
||||
tasks running within the fair group scheduler. Groups with no limit
|
||||
set are considered to be unconstrained and will run with no
|
||||
restriction.
|
||||
See tip/Documentation/scheduler/sched-bwc.txt for more information.
|
||||
|
||||
config KERNEL_RT_GROUP_SCHED
|
||||
bool "Group scheduling for SCHED_RR/FIFO"
|
||||
default n
|
||||
help
|
||||
This feature lets you explicitly allocate real CPU bandwidth
|
||||
to task groups. If enabled, it will also make it impossible to
|
||||
schedule realtime tasks for non-root users until you allocate
|
||||
realtime bandwidth for them.
|
||||
|
||||
endif
|
||||
|
||||
config KERNEL_BLK_CGROUP
|
||||
bool "Block IO controller"
|
||||
default y
|
||||
help
|
||||
Generic block IO controller cgroup interface. This is the common
|
||||
cgroup interface which should be used by various IO controlling
|
||||
policies.
|
||||
|
||||
Currently, CFQ IO scheduler uses it to recognize task groups and
|
||||
control disk bandwidth allocation (proportional time slice allocation)
|
||||
to such task groups. It is also used by bio throttling logic in
|
||||
block layer to implement upper limit in IO rates on a device.
|
||||
|
||||
This option only enables generic Block IO controller infrastructure.
|
||||
One needs to also enable actual IO controlling logic/policy. For
|
||||
enabling proportional weight division of disk bandwidth in CFQ, set
|
||||
CONFIG_CFQ_GROUP_IOSCHED=y; for enabling throttling policy, set
|
||||
CONFIG_BLK_DEV_THROTTLING=y.
|
||||
|
||||
config KERNEL_DEBUG_BLK_CGROUP
|
||||
bool "Enable Block IO controller debugging"
|
||||
default n
|
||||
depends on KERNEL_BLK_CGROUP
|
||||
help
|
||||
Enable some debugging help. Currently it exports additional stat
|
||||
files in a cgroup which can be useful for debugging.
|
||||
|
||||
config KERNEL_NET_CLS_CGROUP
|
||||
bool "Control Group Classifier"
|
||||
default y
|
||||
|
||||
config KERNEL_NETPRIO_CGROUP
|
||||
bool "Network priority cgroup"
|
||||
default y
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# Namespace support symbols
|
||||
#
|
||||
|
||||
config KERNEL_NAMESPACES
|
||||
bool "Enable kernel namespaces"
|
||||
default n
|
||||
|
||||
if KERNEL_NAMESPACES
|
||||
|
||||
config KERNEL_UTS_NS
|
||||
bool "UTS namespace"
|
||||
default y
|
||||
help
|
||||
In this namespace tasks see different info provided
|
||||
with the uname() system call
|
||||
|
||||
config KERNEL_IPC_NS
|
||||
bool "IPC namespace"
|
||||
default y
|
||||
help
|
||||
In this namespace tasks work with IPC ids which correspond to
|
||||
different IPC objects in different namespaces.
|
||||
|
||||
config KERNEL_USER_NS
|
||||
bool "User namespace (EXPERIMENTAL)"
|
||||
default y
|
||||
help
|
||||
This allows containers, i.e. vservers, to use user namespaces
|
||||
to provide different user info for different servers.
|
||||
|
||||
config KERNEL_PID_NS
|
||||
bool "PID Namespaces"
|
||||
default y
|
||||
help
|
||||
Support process id namespaces. This allows having multiple
|
||||
processes with the same pid as long as they are in different
|
||||
pid namespaces. This is a building block of containers.
|
||||
|
||||
config KERNEL_NET_NS
|
||||
bool "Network namespace"
|
||||
default y
|
||||
help
|
||||
Allow user space to create what appear to be multiple instances
|
||||
of the network stack.
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# LXC related symbols
|
||||
#
|
||||
|
||||
config KERNEL_LXC_MISC
|
||||
bool "Enable miscellaneous LXC related options"
|
||||
default n
|
||||
|
||||
if KERNEL_LXC_MISC
|
||||
|
||||
config KERNEL_DEVPTS_MULTIPLE_INSTANCES
|
||||
bool "Support multiple instances of devpts"
|
||||
default y
|
||||
help
|
||||
Enable support for multiple instances of devpts filesystem.
|
||||
If you want to have isolated PTY namespaces (eg: in containers),
|
||||
say Y here. Otherwise, say N. If enabled, each mount of devpts
|
||||
filesystem with the '-o newinstance' option will create an
|
||||
independent PTY namespace.
|
||||
|
||||
config KERNEL_POSIX_MQUEUE
|
||||
bool "POSIX Message Queues"
|
||||
default y
|
||||
help
|
||||
POSIX variant of message queues is a part of IPC. In POSIX message
|
||||
queues every message has a priority which decides about succession
|
||||
of receiving it by a process. If you want to compile and run
|
||||
programs written e.g. for Solaris with use of its POSIX message
|
||||
queues (functions mq_*) say Y here.
|
||||
|
||||
POSIX message queues are visible as a filesystem called 'mqueue'
|
||||
and can be mounted somewhere if you want to do filesystem
|
||||
operations on message queues.
|
||||
|
||||
endif
|
|
@ -0,0 +1,15 @@
|
|||
*.log
|
||||
*.aux
|
||||
*.toc
|
||||
*.out
|
||||
*.lg
|
||||
*.dvi
|
||||
*.idv
|
||||
*.4ct
|
||||
*.4tc
|
||||
*.xref
|
||||
*.tmp
|
||||
*.dvi
|
||||
*.html
|
||||
*.css
|
||||
*.pdf
|
|
@ -0,0 +1,48 @@
|
|||
ifeq ($(TOPDIR),)
|
||||
TOPDIR:=${CURDIR}/..
|
||||
endif
|
||||
PKG_NAME=docs
|
||||
|
||||
all: compile
|
||||
|
||||
include $(TOPDIR)/rules.mk
|
||||
include $(INCLUDE_DIR)/prereq.mk
|
||||
|
||||
MAIN = openwrt.tex
|
||||
DEPS = $(MAIN) Makefile config.tex network.tex network-scripts.tex network-scripts.tex wireless.tex build.tex adding.tex bugs.tex debugging.tex $(TMP_DIR)/.prereq-docs
|
||||
|
||||
compile: $(TMP_DIR)/.prereq-docs
|
||||
$(NO_TRACE_MAKE) cleanup
|
||||
latex $(MAIN)
|
||||
$(NO_TRACE_MAKE) openwrt.pdf openwrt.html
|
||||
$(NO_TRACE_MAKE) cleanup
|
||||
|
||||
$(TMP_DIR)/.prereq-docs:
|
||||
mkdir -p $(TMP_DIR)
|
||||
$(NO_TRACE_MAKE) prereq
|
||||
touch $@
|
||||
|
||||
openwrt.html: $(DEPS)
|
||||
htlatex $(MAIN)
|
||||
|
||||
openwrt.pdf: $(DEPS)
|
||||
pdflatex $(MAIN)
|
||||
|
||||
clean: cleanup
|
||||
rm -f openwrt.pdf openwrt.html openwrt.css
|
||||
|
||||
cleanup: FORCE
|
||||
rm -f *.log *.aux *.toc *.out *.lg *.dvi *.idv *.4ct *.4tc *.xref *.tmp *.dvi
|
||||
|
||||
$(eval $(call RequireCommand,latex, \
|
||||
You need to install LaTeX to build the OpenWrt documentation \
|
||||
))
|
||||
$(eval $(call RequireCommand,pdflatex, \
|
||||
You need to install PDFLaTeX to build the OpenWrt documentation \
|
||||
))
|
||||
$(eval $(call RequireCommand,htlatex, \
|
||||
You need to install tex4ht to build the OpenWrt documentation \
|
||||
))
|
||||
|
||||
FORCE:
|
||||
.PHONY: FORCE
|
|
@ -0,0 +1,590 @@
|
|||
Linux is now one of the most widespread operating system for embedded devices due
|
||||
to its openess as well as the wide variety of platforms it can run on. Many
|
||||
manufacturer actually use it in firmware you can find on many devices: DVB-T
|
||||
decoders, routers, print servers, DVD players ... Most of the time the stock
|
||||
firmware is not really open to the consumer, even if it uses open source software.
|
||||
|
||||
You might be interested in running a Linux based firmware for your router for
|
||||
various reasons: extending the use of a network protocol (such as IPv6), having
|
||||
new features, new piece of software inside, or for security reasons. A fully
|
||||
open-source firmware is de-facto needed for such applications, since you want to
|
||||
be free to use this or that version of a particular reason, be able to correct a
|
||||
particular bug. Few manufacturers do ship their routers with a Sample Development Kit,
|
||||
that would allow you to create your own and custom firmware and most of the time,
|
||||
when they do, you will most likely not be able to complete the firmware creation process.
|
||||
|
||||
This is one of the reasons why OpenWrt and other firmware exists: providing a
|
||||
version independent, and tools independent firmware, that can be run on various
|
||||
platforms, known to be running Linux originally.
|
||||
|
||||
\subsection{Which Operating System does this device run?}
|
||||
|
||||
There is a lot of methods to ensure your device is running Linux. Some of them do
|
||||
need your router to be unscrewed and open, some can be done by probing the device
|
||||
using its external network interfaces.
|
||||
|
||||
\subsubsection{Operating System fingerprinting and port scanning}
|
||||
|
||||
A large bunch of tools over the Internet exists in order to let you do OS
|
||||
fingerprinting, we will show here an example using \textbf{nmap}:
|
||||
|
||||
\begin{Verbatim}
|
||||
nmap -P0 -O <IP address>
|
||||
Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:05 CET
|
||||
Interesting ports on 192.168.2.1:
|
||||
Not shown: 1693 closed ports
|
||||
PORT STATE SERVICE
|
||||
22/tcp open ssh
|
||||
23/tcp open telnet
|
||||
53/tcp open domain
|
||||
80/tcp open http
|
||||
MAC Address: 00:13:xx:xx:xx:xx (Cisco-Linksys)
|
||||
Device type: broadband router
|
||||
Running: Linksys embedded
|
||||
OS details: Linksys WRT54GS v4 running OpenWrt w/Linux kernel 2.4.30
|
||||
Network Distance: 1 hop
|
||||
\end{Verbatim}
|
||||
|
||||
nmap is able to report whether your device uses a Linux TCP/IP stack, and if so,
|
||||
will show you which Linux kernel version is probably runs. This report is quite
|
||||
reliable and it can make the distinction between BSD and Linux TCP/IP stacks and others.
|
||||
|
||||
Using the same tool, you can also do port scanning and service version discovery.
|
||||
For instance, the following command will report which IP-based services are running
|
||||
on the device, and which version of the service is being used:
|
||||
|
||||
\begin{verbatim}
|
||||
nmap -P0 -sV <IP address>
|
||||
Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:06 CET
|
||||
Interesting ports on 192.168.2.1:
|
||||
Not shown: 1693 closed ports
|
||||
PORT STATE SERVICE VERSION
|
||||
22/tcp open ssh Dropbear sshd 0.48 (protocol 2.0)
|
||||
23/tcp open telnet Busybox telnetd
|
||||
53/tcp open domain ISC Bind dnsmasq-2.35
|
||||
80/tcp open http OpenWrt BusyBox httpd
|
||||
MAC Address: 00:13:xx:xx:xx:xx (Cisco-Linksys)
|
||||
Service Info: Device: WAP
|
||||
\end{verbatim}
|
||||
|
||||