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.
|
% research memoir.
|
||||||
|
|
||||||
\usepackage{hyperref}
|
\usepackage{hyperref}
|
||||||
|
\usepackage{listings}
|
||||||
\usepackage{enumerate}
|
\usepackage{enumerate}
|
||||||
\usepackage[Conny]{fncychap}
|
\usepackage[Conny]{fncychap}
|
||||||
\usepackage[dvips]{graphicx}
|
\usepackage[dvips]{graphicx}
|
||||||
|
|
|
@ -326,12 +326,66 @@ ThinkPenguin.
|
||||||
|
|
||||||
* We found a CD included in the box that the ThinkPenguin TPE-NWIFIROUTER
|
* 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
|
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
|
The CD found in the box was labeled ``libreCMC v1.2.1 source code'', and
|
||||||
needed a GNU/Linux system as well as a list of approximately 10 packages.
|
contained 407 megabytes of data. The investigator copied this ISO and
|
||||||
These sorts of plain text instructions are helpful because we know what kind
|
examined its contents. Upon doing so, the investigator immediately found a
|
||||||
of system we are expected to use, and what commands we should run on it. Such
|
file called ``README'' at the top-level directory.
|
||||||
instructions are not strictly required, as an obviously-named shell script may
|
|
||||||
suffice, but they are helpful in clarifying any ambiguities that may arise.
|
\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
|
** Since it appears that this source release will build on a wide range of
|
||||||
distributions, it was fine that no specific distribution was specified.
|
distributions, it was fine that no specific distribution was specified.
|
||||||
However, most source releases we see will only build on a very specific
|
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
|
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
|
||||||
|
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}
|
\end{enumerate}
|
||||||
|
|
||||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
Loading…
Reference in a new issue