Merge branch 'master' of gitorious.org:copyleft-org/tutorial

This commit is contained in:
Bradley M. Kuhn 2014-11-07 20:05:06 -05:00
commit 7f213e67f8

View file

@ -274,7 +274,7 @@ Fortunately, thanks in large part to the FSF's
software freedom}. Products must meet
\href{http://www.fsf.org/resources/hw/endorsement/criteria}{strict
standards for RYF certification}, and among them is a pristine example of
CCS\@}, electronics products have begun to appear on the market that are
CCS\@.}, electronics products have begun to appear on the market that are
held to a higher standard of copyleft compliance. As such, for the first
time in the history of copyleft, CCS experts have pristine examples to study
and present as exemplars worthy of emulation.
@ -466,7 +466,7 @@ Therefore, the investigator proceeded to simply run:
\end{lstlisting}
and waited approximately 40 minutes for the build to complete\footnote{Build
times will likely vary widely on various host systems}. The investigator
times will likely vary widely on various host systems.}. The investigator
kept a
\href{https://gitorious.org/copyleft-org/tutorial/source/master:enforcement-case-studies_log-output/thinkpenguin_librecmc-complete.log}{full
log of the build}, which is not included herein due its size (approximately
@ -494,7 +494,9 @@ Ideally, the original ``README'' would indicate which image is appropriate
for the included hardware. However, this was ultimately an annoyance rather
than a compliance issue due to other information available. Specifically,
the web UI (see next section) on the TPE-NWIFIROUTER performs firmware image
installation. While ideal would be to find
installation. Additionally, the router's version number was specified on the
bottom of the device, which indicated which of the differently-versioned images
we should install. It would be ideal to find
\href{http://librecmc.org/librecmc/wiki?name=Tp+MR3020}{instructions similar
to these} in the README itself. However, application of the reasonableness
standard indicates compliance, since a knowledgeable user was able to
@ -509,13 +511,13 @@ The investigator then turned his attention to the file,
``u-boot\verb0_0reflash'' instructions. These instructions explained how to
build and install the bootloader for the device.
The investigator followed the instructions for compiling u-Boot, and found
The investigator followed the instructions for compiling U-Boot, and found
them quite straight-forward. The investigator discovered two minor
annoyances, however, while building U-Boot:
annoyances, however, while building U-Boot:
\begin{itemize}
\item the variable \verb0$U-BOOT_SRC0 was used as a placeholder for the name
\item The variable \verb0$U-BOOT_SRC0 was used as a placeholder for the name
of the extracted source directory. This was easy to surmise and was not a
compliance issue (per the reasonableness standard), but explicitly stating
that at the top of the instructions would be helpful.
@ -538,7 +540,7 @@ mips-librecmc-linux-uclibc-gcc.bin: /lib/libc.so.6:
This issue is an annoyance, not a compliance problem. It was clear from
context that these binaries were simply for a different architecture, and
the investigator simply removed ``toolchain/bin'' and used a symlink the
the investigator simply removed ``toolchain/bin'' and used a symlink to
utilize the toolchain already built earlier (during the compilation
discussed in \S~\ref{thinkpenguin-main-build}):
@ -647,20 +649,20 @@ compilation).
\section{Firmware Comparison}
To ensure that CCS did corresponds properly to the firmware original
To ensure the CCS did indeed correspond to the firmware original
installed on the TPE-NWIFIROUTER, the investigator compared the built
firmware image with the filesystem originally found on the device itself.
The comparison steps we as follows:
The comparison steps were as follows:
\begin{enumerate}
\item Extract the filesystem from the image we built by running
\href{https://gitorious.org/copyleft-org/gpl-compliance-scripts/source/master:find-firmware.pl}{find-firmware.pl}
on ``bin/ar71xx/librecmc-ar71xx-generic-tl-wr841n-v8-squashfs-factory.bin''
bottom), and running
and then running
\href{http://www.binaryanalysis.org/en/content/show/download}{bat-extratools}'
``squashfs4.2/squashfs-tools/bat-unsquashfs42'' (at ) on the resulting
morx0.squash and use the filesystem in the new squashfs-root directory for
``squashfs4.2/squashfs-tools/bat-unsquashfs42'' on the resulting
morx0.squash, using the filesystem in the new squashfs-root directory for
comparison.
\item Login to the router's web interface (at \url{http://192.168.10.1/ }) from a computer that is
@ -681,7 +683,7 @@ The comparison steps we as follows:
\item List the /bin folder (``ls -l /bin'') and confirm the list of files is the same
and that the file sizes are similar.
\item Check the ``strings'' output of ``/bin/busybox'' to confirm it was similar in both
\item Check the ``strings'' output of ``/bin/busybox'' to confirm it is similar in both
places (similar number of lines and content of lines). (One cannot directly
compare the binaries because the slight compilation variations will cause
some bits to be different.)
@ -694,8 +696,8 @@ The comparison steps we as follows:
similar, but had a different build date and user@host indicator. (The
kernel binary itself is not easily accessible from an SSH login, but was
retrievable using the U-Boot console (the start address of the kernel in
flash appears to be 0x9F000000, based on the ``u-boot\verb0_0reflash''
instructions).
flash appears to be 0x9F020000, based on the boot messages seen in the
serial console).
\end{enumerate}
\end{enumerate}
@ -718,7 +720,7 @@ annoyances were discovered:
device; the user must assume the web UI must be used.
\item Including pre-built toolchain binaries that don't work on all systems,
and failure to built toolchain binaries to the right location.
and failure to put built toolchain binaries in the right location.
\end{itemize}
\section{Lessons Learned}
@ -736,7 +738,7 @@ can be learned here:
substantially easier, but more importantly it also
\hyperref[offer-for-source]{completes the distributor's CCS compliance
obligations at the time of distribution} (provided, of course, that the
distributor is otherwise in compliance with copyleft.
distributor is otherwise in compliance with copyleft).
\item {\bf Include top-level build instructions in a natural language (such
as English) in a \hyperref[thinkpenguin-toplevel-readme]{clear and
@ -755,8 +757,9 @@ can be learned here:
\item {\bf Seek to adhere to the spirit of copyleft, not just the letter of
the license}. ThinkPenguin uses encouragement of users to improve and
make their devices better as commercial differentiator. Copyleft advocates
remain baffled why other companies have not realized how large the market for
make their devices better as a commercial differentiator. Copyleft advocates
remain baffled as to why other companies have not realized how the large the
market for
users who seek hackable devices continues to grow. By going beyond the
mere minimal requirements of GPL, companies can immediately reap the
benefits in that target market.