cryptonas/cbox-tree.d/usr/share/doc/cryptobox/html/CryptoBoxDev.html

354 lines
12 KiB
HTML

<a id="top"></a>
<ol>
<li>
<a href="#head-6eb518f032b739c4ddc4336b19cefd3fa16e20aa">Komponenten</a>
<ol>
<li>
<a href="#head-734d8f8dd2dc75137657154aab53d33f64f891bd">dfsbuild</a>
</li>
<li>
<a href="#head-693b97f1f140e361364dcc277c0afa779430f527">cbox-build</a>
<ol>
<li>
<a href="#head-5850d37242fe07221892c0126989304825831e5c">Beispiele</a>
</li>
</ol>
<li>
<a href="#head-b4a0271d176c624fda4d38f5c138aefe0a329bca">der CryptoBox-Kernel</a>
</li>
<li>
<a href="#head-d81befa59fe38bcf5ffae7c0c4c42141d74395eb">Verwendung des Subversion-Repositories</a>
</li>
</ol>
<li>
<a href="#head-488d495ca9bbbac0c903c2de823c13efa299cc43">Ablauf</a>
<ol>
<li>
<a href="#head-ccb175f65be28296434126b424a7d8d0ca40c4c5">der erste Bootvorgang</a>
</li>
<li>
<a href="#head-ae7819ff9abff3fbdc393673215b858ba4528109">per webfrontend mounten</a>
</li>
</ol>
<li>
<a href="#head-2968dfa19053089622a83f46a999c6d2f8d0c7de">Bugs</a>
</li>
<li>
<a href="#head-3627c73e59109bcdb97aeeb51d07efa784bb633e">Hints</a>
</li>
<li>
<a href="#head-4b1cd21b02476764e3cb220094117e69699f3ba9">andere Ansätze</a>
<ol>
<li>
<a href="#head-032dea2c5aba735742a9e935ee55629bf2739194">Knoppix</a>
</li>
<li>
<a href="#head-0eec3ed15826633b2667c982fb486e988514faac">Morphix / IBuild</a>
</li>
</ol>
</li>
</ol>
<p> </p>
<hr>
<p> </p>
<h2 id="head-6eb518f032b739c4ddc4336b19cefd3fa16e20aa">Komponenten</h2>
<p>Eine <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> CD wird in wenigen Schritten erstellt. Die Basisarbeit erledigt 'dfsbuild' und die genaue Konfiguration macht 'cbox-build'. </p>
<h3 id="head-734d8f8dd2dc75137657154aab53d33f64f891bd">dfsbuild</h3>
<p>Das Linux Grundsystem für die <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> CD wird mit <a class="interwiki" title="DebianPackage" href="http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&amp;subword=1&amp;version=all&amp;release=all&amp;keywords=dfsbuild"><img src="/moin-base/greenthumb/img/moin-inter.png" alt="[DebianPackage]" height="16" width="16">dfsbuild</a> gebaut. Das ist ein Programm, welches eine <a class="external" href="http://www.debian.org"><img src="/moin-base/greenthumb/img/moin-www.png" alt="[WWW]" height="11" width="11"> Debian</a> Live-CD erzeugt.<br>
<em>(Wir entwickeln die <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> bisher auf Debian/Linux-Systemen. Prinzipiell dürfte es auch mit deiner Lieblingsdistro funktionieren, nur der anfängliche Einrichtungsaufwand wird dadurch größer.)</em> </p>
<p>Für "dfsbuild" bietet sich <a class="interwiki" title="DebianPackage" href="http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&amp;subword=1&amp;version=all&amp;release=all&amp;keywords=apt-cacher"><img src="/moin-base/greenthumb/img/moin-inter.png" alt="[DebianPackage]" height="16" width="16">apt-cacher</a> an. Damit brauchst du nicht für jeden Bau des Grundsystems alle Debian-Pakete erneut herunter laden. </p>
<p>Installation: </p>
<ul>
<li><p> <tt>apt-get&nbsp;install&nbsp;dfsbuild&nbsp;apt-cacher</tt> </p>
</li>
</ul>
<p>Die <em>dfsbuild</em>-Dokumentation ist noch recht spärlich. Du kommst aber kaum in direkten Kontakt mit <em>dfsbuild</em>, da es durch 'cbox-build' aufgerufen wird. Die folgenden Links helfen dir vielleicht trotzdem weiter: </p>
<ul>
<li><p> <a class="external" href="http://www.debian-administration.org/articles/125"><img src="/moin-base/greenthumb/img/moin-www.png" alt="[WWW]" height="11" width="11"> Debian Administration: Building Debian CD-ROMS Part 1 - dfsbuild</a> </p>
</li>
<li><p> <a class="external" href="http://www.debian-administration.org/articles/149"><img src="/moin-base/greenthumb/img/moin-www.png" alt="[WWW]" height="11" width="11"> Debian Administration: Getting in deep with dfsbuild</a> </p>
</li>
</ul>
<h3 id="head-693b97f1f140e361364dcc277c0afa779430f527">cbox-build</h3>
<p>Die wichtige Kleinarbeit, damit aus dem dfsbuild-System eine <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> wird, erledigt <em>cbox-build.sh</em>.<br>
Das Script und die bestehenden Konfigurationsdateien liegen im <a class="interwiki" title="SubVersion" href="/websvn/cryptobox"><img src="/moin-base/greenthumb/img/moin-inter.png" alt="[SubVersion]" height="16" width="16">cryptobox-Repository</a>. </p>
<p>Mit diesem Script baust du deine eigene <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a>-CD. Hier ein verkürzter Überblick: </p>
<div>
<table>
<tr>
<td>
<p> <em>Aktion</em> </p>
</td>
<td>
<p> <em>Beschreibung</em> </p>
</td>
</tr>
<tr>
<td>
<p> dfsbuild </p>
</td>
<td>
<p> startet dfsbuild und legt eine Arbeitskopie an </p>
</td>
</tr>
<tr>
<td>
<p> config </p>
</td>
<td>
<p> konfiguriert das Basissystem </p>
</td>
</tr>
<tr>
<td>
<p> harden </p>
</td>
<td>
<p> entfernt das <em>devel-feature.sh</em> Skript und einige unnötige Pakete </p>
</td>
</tr>
<tr>
<td>
<p> iso </p>
</td>
<td>
<p> erstellt ein iso-image </p>
</td>
</tr>
<tr>
<td>
<p> chroot </p>
</td>
<td>
<p> für kleine Tests reicht auch chroot (<strong>Vorsicht</strong>: dabei riskierst du, deine reale Festplatte zu überschreiben) </p>
</td>
</tr>
<tr>
<td>
<p> qemu </p>
</td>
<td>
<p> startet das iso-image mit <em>qemu</em> (zum sicheren Testen) </p>
</td>
</tr>
<tr>
<td>
<p> revert </p>
</td>
<td>
<p> Wiederherstellung des dfsbuild-Endprodukts - falls mensch mit <em>config</em> die Arbeitskopie übertrieben verschmutzt hat </p>
</td>
</tr>
<tr>
<td>
<p> release </p>
</td>
<td>
<p> Abkürzung für <em>dfsbuild config harden iso</em> - es wird also eine Release-CD erstellt </p>
</td>
</tr>
</table>
</div>
<p>Das kannst mehrere Aktionen nacheinander als Parameter angeben. </p>
<p>Weitere Aktionen, die die Entwicklung erleichtern, werden unter <a href="/cryptobox?action=show_doc&page=CryptoBoxDevFeatures">CryptoBoxDevFeatures</a> beschrieben. </p>
<p>Das fertige iso-Image findest du unter <em>_builddir/cd1/cryptobox.iso</em>. </p>
<h4 id="head-5850d37242fe07221892c0126989304825831e5c">Beispiele</h4>
<dl>
<dt>Die erste Erstellung des Grundsystems</dt>
<dd><p><tt>./cbox-build.sh&nbsp;dfsbuild</tt> </p>
</dd>
<dt>Anpassungen vornehmen, ISO-Image erstellen und per ''qemu'' testen</dt>
<dd><p><tt>./cbox-build.sh&nbsp;config&nbsp;iso&nbsp;qemu</tt> </p>
</dd>
</dl>
<ul>
<li style="list-style-type:none"><p>Release-CD erstellen: <tt>./cbox-build.sh&nbsp;release</tt> </p>
</li>
</ul>
<h3 id="head-b4a0271d176c624fda4d38f5c138aefe0a329bca">der CryptoBox-Kernel</h3>
<p>Der Kernel für die <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> wird statisch kompiliert. Wenn du ihn selbst bauen/verändern willst, dann am einfachsten so: </p>
<ul>
<li><p> apt-get install kernel-tree-2.6.8 </p>
</li>
<li><p> schnapp dir /boot/config-2.6.8 von einer gebauten <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> CD und verändere sie nach deinen Wünschen </p>
</li>
<li><p> zum Erstellen des Debian-Pakets: <tt>&nbsp;make-kpkg&nbsp;--revision=1.dfs&nbsp;--rootcmd=fakeroot&nbsp;kernel_image</tt> </p>
</li>
<li><p> nun musst du eventuell in der <em>dfsbuild.conf</em> den Namen des vorherigen Kernel-Pakets durch deinen neuen ersetzen </p>
</li>
</ul>
<h3 id="head-d81befa59fe38bcf5ffae7c0c4c42141d74395eb">Verwendung des Subversion-Repositories</h3>
<p>Erstellung einer lokalen Arbeitskopie des Entwickler-Repositories: <tt>svn&nbsp;checkout&nbsp;https://svn.systemausfall.org/svn/cryptobox&nbsp;deincryptoboxverzeichnis</tt> </p>
<p>Deine Änderungen an der <a href="/cryptobox?action=show_doc&page=CryptoBox">CryptoBox</a> klannst du per <tt>svn&nbsp;commit</tt> in unser Repository übertragen. Dazu musst du, aber vorher Schreibrechte erhalten (die wir gerne vergeben). <img src="/moin-base/greenthumb/img/smile.png" alt=":)" height="15" width="15"> </p>
<h2 id="head-488d495ca9bbbac0c903c2de823c13efa299cc43">Ablauf</h2>
<p>Hier werden wichtige interne Abläufe der Cryptobox beschrieben. </p>
<h3 id="head-ccb175f65be28296434126b424a7d8d0ca40c4c5">der erste Bootvorgang</h3>
<ul>
<li><p> checken ob config partition auf der platte liegt </p>
<ul>
<li><p> testmount der ersten partition </p>
</li>
</ul>
</li>
<li><p> wenn ja, configs einlesen und system normal starten </p>
</li>
<li><p> wenn nicht: </p>
<ul>
<li><p> webserver starten und anbieten die gefundene platte "hinzurichten" </p>
<ul>
<li><p> nutzerdaten sammeln (ip adresse, netzwerkname usw.) </p>
</li>
<li><p> <em>abfrage ob wirklich: wipe -f -k -R /dev/urandom /dev/?d? (fortschritt anzeigen)</em> </p>
<ul>
<li><p> <em>wenn nicht, dann hilfeseite zeigen</em> </p>
</li>
</ul>
</li>
<li><p> partitionen anlegen </p>
<ul>
<li><p> erste part. mkfs &amp; mount (config) </p>
</li>
<li><p> fstab drauf schreiben </p>
</li>
<li><p> crypttab dito </p>
</li>
<li><p> interfaces dito </p>
</li>
<li><p> smb.conf dito </p>
</li>
</ul>
</li>
<li><p> kennwort abfrage per cgi </p>
</li>
<li><p> zweite part. cryptsetup &amp; mkfs &amp; mount (crypto) </p>
</li>
</ul>
</li>
</ul>
</li>
</ul>
<h3 id="head-ae7819ff9abff3fbdc393673215b858ba4528109">per webfrontend mounten</h3>
<ul>
<li><p> pw abfrage </p>
</li>
<li><p> checken ob mount geklappt hat </p>
</li>
<li><p> samba starten </p>
</li>
<li><p> ... </p>
</li>
<li><p> nach timeout oder auf wunsch samba stoppen </p>
</li>
<li><p> cryptodevice entfernen </p>
</li>
</ul>
<hr>
<p> </p>
<h2 id="head-2968dfa19053089622a83f46a999c6d2f8d0c7de">Bugs</h2>
<ul>
<li><p> unter qemu trat immer wieder ein Fehler "interleaved files not (yet) supported" auf </p>
<ul>
<li><p> willkürlich waren manche Verzeichnisse ungültig (also hatten nur das Datei-Attribut) </p>
</li>
<li><p> die nicht-standardkonformen mkisofs-Optionen "-U -D" haben das Problem nicht behoben </p>
</li>
</ul>
</li>
<li><p> eventuell hängt dies mit dem vorherigen Fehler zusammen: das System verhält sich systematisch fehlerhaft (beispielsweise löst der Start von <em>nmbd</em> generell ein <em>segfault</em> aus) </p>
</li>
</ul>
<h2 id="head-3627c73e59109bcdb97aeeb51d07efa784bb633e">Hints</h2>
<ul>
<li><p> Du brauchst etwa 1GB Plattenplatz für den Bau einer Cryptobox. Das eigentliche CD-Image wird aber nur knapp 250MB groß. </p>
</li>
<li><p> Für <em>dfsbuild</em> bietet sich <a class="interwiki" title="DebianPackage" href="http://packages.debian.org/cgi-bin/search_packages.pl?searchon=names&amp;subword=1&amp;version=all&amp;release=all&amp;keywords=apt-cacher"><img src="/moin-base/greenthumb/img/moin-inter.png" alt="[DebianPackage]" height="16" width="16">apt-cacher</a> an. Damit müssen die Debian-Pakete nicht bei jedem neuen <em>dfsbuild</em>-Vorgang erneut heruntergeladen werden. </p>
</li>
<li><p> cbox-build muss für folgende Vorgänge mit root Rechten laufen: <tt>dfsbuild,&nbsp;config,&nbsp;chroot,&nbsp;revert</tt> </p>
</li>
<li><p> <em>cbox-build.sh</em> verwendet relative Pfad-Angaben - du solltest es also aus dem Verzeichnis heraus starten, in dem sich beispielsweise auch <em>cbox-build.sh</em> befindet. </p>
</li>
<li><p> Netzwerk für <em>qemu</em>: </p>
<ul>
<li><p> dein Systemkernel muss das <em>tun/tap</em>-Netzwerkgerät unterstützen
</p>
<pre>
CONFIG_TUN=m</pre>
</li>
<li><p> eventuell musst du "misc/qemu-ifup.sh" an dein System anpassen </p>
</li>
</ul>
</li>
</ul>
<hr>
<p> </p>
<h2 id="head-4b1cd21b02476764e3cb220094117e69699f3ba9">andere Ansätze</h2>
<p>Hier findest du ältere Ideen, die zum Teil schon recht umfangreiche Gestalt angenommen haben aber momentan von uns nicht weiter verfolgt werden. </p>
<h3 id="head-032dea2c5aba735742a9e935ee55629bf2739194">Knoppix</h3>
<ul>
<li><p> <a href="/cryptobox?action=show_doc&page=CryptoBoxKnoppixVerworfen">CryptoBoxKnoppixVerworfen</a> </p>
</li>
</ul>
<h3 id="head-0eec3ed15826633b2667c982fb486e988514faac">Morphix / IBuild</h3>
<ul>
<li><p> <a href="/cryptobox?action=show_doc&page=CryptoBoxMorphixVerworfen">CryptoBoxMorphixVerworfen</a> </p>
</li>
</ul>
<a id="bottom"></a>
</div>
<p id="pageinfo" class="info" lang="en" dir="ltr">last edited 2005-08-08 08:33:33 by <span title=""></span></p>
</div> <!-- end page -->