Discussion of included README & its lesson learned
Included also is a code listing of mounting the iso, and the like, which required use of a new LaTeX package.
This commit is contained in:
parent
6063938804
commit
31220d4762
2 changed files with 69 additions and 6 deletions
|
@ -11,6 +11,7 @@
|
|||
% research memoir.
|
||||
|
||||
\usepackage{hyperref}
|
||||
\usepackage{listings}
|
||||
\usepackage{enumerate}
|
||||
\usepackage[Conny]{fncychap}
|
||||
\usepackage[dvips]{graphicx}
|
||||
|
|
|
@ -326,12 +326,66 @@ ThinkPenguin.
|
|||
|
||||
* 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.
|
||||
The CD found in the box was labeled ``libreCMC v1.2.1 source code'', and
|
||||
contained 407 megabytes of data. The investigator copied this ISO and
|
||||
examined its contents. Upon doing so, the investigator immediately found a
|
||||
file called ``README'' at the top-level directory.
|
||||
|
||||
\lstset{tabsize=2}
|
||||
\begin{lstlisting}[language=bash]
|
||||
$ dd if=/dev/cdrom of=libreCMC_v1.2.1_SRC.iso
|
||||
$ mkdir libCMC
|
||||
$ sudo mount -o loop ./libreCMC_v1.2.1_SRC.iso libCMC
|
||||
mount: block device /path/to/libreCMC_v1.2.1_SRC.iso is write-protected, mounting read-only
|
||||
$ ls -1 libCMC
|
||||
bin
|
||||
librecmc-u-boot.tar.bz2
|
||||
librecmc-v1.2.1.tar.bz2
|
||||
README
|
||||
u-boot_reflash
|
||||
$ cat libCMC/README
|
||||
\end{lstlisting}
|
||||
\label{thinkpenguin-toplevel-readme}
|
||||
The investigator therefore knew immediately to begin the CCS check by
|
||||
studying the contents of the ``README'', which contained the appropriate
|
||||
details to get started with a build:
|
||||
\begin{quotation}
|
||||
|
||||
In order to build firmware images for your router,the following needs to be
|
||||
installed:
|
||||
|
||||
gcc, binutils, bzip2, flex, python, perl, make, find, grep, diff, unzip,
|
||||
gawk, getopt, libz-dev and libc headers.
|
||||
|
||||
Please use ``make menuconfig'' to configure your appreciated configuration
|
||||
for the toolchain and firmware. 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.
|
||||
|
||||
Simply running ``make'' will build your firmware. The build system will
|
||||
download all sources, build the cross-compile toolchain, the kernel and all
|
||||
chosen applications.
|
||||
|
||||
To build your own firmware you need to have access to a GNU/Linux system
|
||||
(case-sensitive filesystem required).
|
||||
\end{quotation}
|
||||
|
||||
In other words, the first ``script'' that investigator ran in building
|
||||
testing this CCS candidate was the above, which ran on the investigator's own
|
||||
brain --- like a script of a play. Less glibly, instructions written in
|
||||
English are particularly necessary for parts of the build and installation
|
||||
process that cannot require some amount of actual intelligence to complete.
|
||||
In this case, the investigator was able to determine the requirements for the
|
||||
host system to use when constructing the firmware for the embedded device.
|
||||
|
||||
GPL does not, of course, give specific guidance on the form or location of
|
||||
such instructions. Community-oriented GPL enforcers generally use a
|
||||
reasonableness standard to evaluate such instructions. If an investigator of
|
||||
average skill in embedded firmware construction can surmise the proper
|
||||
procedures to build and install a replacement firmware, the instructions are
|
||||
likely sufficient to meet GPL's requirements. However, in this case, the
|
||||
instructions are more abundant and give more detail.
|
||||
|
||||
** Since it appears that this source release will build on a wide range of
|
||||
distributions, it was fine that no specific distribution was specified.
|
||||
However, most source releases we see will only build on a very specific
|
||||
|
@ -622,6 +676,14 @@ are both more problematic infractions. These minor infractions were:
|
|||
obligations at the time of distribution} (provided, of course, that the
|
||||
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
|
||||
conspicuous place}.} Copyleft licenses require that someone reasonably
|
||||
skilled in the art can reproduce your work. Ultimately, sometimes
|
||||
instructions written in English are necessary, and often easier than trying
|
||||
to write programmed scripts to do everything. The ``script'' included can
|
||||
certainly be more like the script of a play and less like a Bash script.
|
||||
|
||||
\end{enumerate}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
|
Loading…
Reference in a new issue