@@ -780,96 +780,101 @@ Linux. A decade later, this situation remains largely unresolved.
\item {\bf FSF enforcement often avoids redundant enforcement cases from
many parties.} Most Free Software systems have hundreds of copyright
holders. Some have thousands. FSF is in a unique position as one of
the largest single copyright holders on GPL'd software and as a
respected umpire in the community, neutrally enforcing the rules of the
GPL road. FSF works hard in the community to convince copyright
holders that consolidating GPL claims through FSF is better for them,
and more likely to yield positive compliance results.
A few copyright holders engage in the ``proprietary relicensing''
business, so they use GPL enforcement as a sales channel for that
business. FSF, as a community-oriented, not-for-profit organization,
seeks only to preserve the freedom of Free Software in its enforcement
efforts. As it turns out, most of the community of copyright holders
of Free Software want the same thing. Share and share alike is a
simple rule to follow, and following that rule to FSF's satisfaction
usually means you are following it to the satisfaction of the entire
Free Software community.
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% FIXME: expand title, etc.
\chapter{ThinkPengiun Wireless Router: A study in Excellent CCS}
% FIXME
This case study does a step-by-step build and installation analysis of one
of the best Complete, Corresponding Source (CCS) releases we've seen. The
CSS release studied here was provided for the binary distribution of a
physical product by ThinkPengiun. The product is the model
``TPE-NWIFIROUTER'', a wireless router.
The method of
distribution (complete source accompanying the product) and the way the source
was laid out provide very good examples of how to make things easier for both
the distributor and the purchaser of the hardware containing GPLed components.
\section{Root Filesystem and Kernel Compilation}
* We found a CD included in the box that the ThinkPenguin TPE-NWIFIROUTER
shipped in, labelled "libreCMC v1.2.1 source code". On the CD, there was a
README file at the top level, which mentioned that to build the software, one
needed a GNU/Linux system as well as a list of approximately 10 packages.
These sorts of plain text instructions are helpful because we know what kind
of system we are expected to use, and what commands we should run on it. Such
instructions are not strictly required, as an obviously-named shell script may
suffice, but they are helpful in clarifying any ambiguities that may arise.
% FIXME: Spend some time here (admittedly a digression: maybe refer to
% another section later?) about how it's ok to specify a specific build
% environment.
* Since the instructions didn't mention a specific distro to use, we ran the
build on an amd64 Debian 6 machine we had, after confirming the packages were
installed. In particular, we ran "make", as described in the instructions in
the README. The instructions said that "make menuconfig" could be used to
adjust the settings, but it appeared this step was optional ("Please note that
the default configuration is what was used to build the firmware image for
your router. It is advised that you use this configuration.") so we chose to
skip straight to the "make" step instead. This was done after extracting the
librecmc-v1.2.1.tar.bz2 tarball, which was not explicitly spelled out (this
should ideally be added to the README), but was implied by the
"u-boot_reflash" file (in the same directory as the README), which explicitly
used the other tarball. The build took about 40 minutes to run on our system.
* It was helpful to know that we could use "make menuconfig" for configuration
changes, as being able to modify the source is an important part of the GPL's
requirements. Adding instructions like these shows that the distributor is
aware of and interested in promoting the spirit of the GPL, by making it
easier to modify the source than may be strictly required by the GPL's text.
* The "make" step completed successfully on our system and resulted in several
files being generated in the bin/ar71xx directory, namely firmware images.
There appeared to be several filesystem and kernel images, for different
hardware versions. It was unclear which one to install on the particular
device we received or how to install it, both of which should have been
mentioned in the README.
* The above installation issue is mitigated by the availability of a web UI in
the product that performs firmware image installation. It would be best if
instructions like those at http://librecmc.org/librecmc/wiki?name=Tp+MR3020
were included in the README, as the user cannot be expected to infer that or
to find such a link.
\section{U-Boot Compilation}
* As mentioned above, we also found a "u-boot_reflash" file at the top level of
the included source CD. We followed the instructions for compiling U-Boot,
which were fairly straight-forward. One modification would be to mention that
"\$U-BOOT_SRC" referred to the extracted source directory, which was implied,
but should have been explicit.
* Additionally, we noticed that the included toolchain binaries, which were used
by the U-Boot compilation process by default, did not run on our system. In
particular, we received this error:
mips-librecmc-linux-uclibc-gcc.bin: /lib/libc.so.6: version `GLIBC_2.14' not found (required by mips-librecmc-linux-uclibc-gcc.bin)
* We found that by removing toolchain/bin and symlinking the toolchain built for
the filesystem/kernel above in its place, we were able to complete the U-Boot
build. Specifically, we symlinked toolchain/bin to:
../../staging_dir/toolchain-mips_34kc_gcc-4.6-linaro_uClibc-0.9.33.2/bin