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

345 lines
11 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>CryptoBoxDev - howto</title>
<link rel=stylesheet type=text/css charset=utf-8 media=all href=../cryptobox.css>
</head>
<body>
<div id="page" lang="en" dir="ltr"><!-- start page -->
<h1 id="title"><a title="Click to do a full-text search for this title" href="/wikis/howto/CryptoBoxDev?action=fullsearch&amp;value=%22CryptoBoxDev%22&amp;context=180">CryptoBoxDev</a></h1>
<div lang="en" id="content" dir="ltr">
<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-254d88cf784c8561fa87b86fb6114b5024808a3f">cb-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="/wikis/howto/CryptoBox">CryptoBox</a> CD wird in wenigen Schritten erstellt. Die Basisarbeit erledigt 'dfsbuild' und die genaue Konfiguration macht 'cb-build'. </p>
<h3 id="head-734d8f8dd2dc75137657154aab53d33f64f891bd">dfsbuild</h3>
<p>Das Linux Grundsystem für die <a href="/wikis/howto/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/modern/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/modern/img/moin-www.png" alt="[WWW]" height="11" width="11"> Debian</a> Live-CD erzeugt.<br>
<em>(Wir entwickeln die <a href="/wikis/howto/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="badinterwiki" title="DebianPackages" href="/wikis/howto/InterWiki"><img src="/moin-base/modern/img/moin-inter.png" alt="[DebianPackages]" 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 'cb-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/modern/img/moin-www.png" alt="[WWW]" height="11" width="11"> dfsbuild1</a> </p>
</li>
<li><p> <a class="external" href="http://www.debian-administration.org/articles/149"><img src="/moin-base/modern/img/moin-www.png" alt="[WWW]" height="11" width="11"> dfsbuild2</a> </p>
</li>
</ul>
<h3 id="head-254d88cf784c8561fa87b86fb6114b5024808a3f">cb-build</h3>
<p>Die wichtige Kleinarbeit, damit aus dem dfsbuild-System eine <a href="/wikis/howto/CryptoBox">CryptoBox</a> wird, erledigt <em>cb-build.sh</em>.<br>
Das Script und die bestehenden Konfigurationsdateien liegen im <a class="interwiki" title="SubVersion" href="/websvn/cryptobox"><img src="/moin-base/modern/img/moin-inter.png" alt="[SubVersion]" height="16" width="16">cryptobox-Repository</a>. </p>
<p>Mit diesem Script baust du deine eigene <a href="/wikis/howto/CryptoBox">CryptoBox</a>-CD. Hier ein kurzer Ü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> kopiert die Konfiguration (cryptobox.conf.d) in die Arbeitskopie </p>
</td>
</tr>
<tr>
<td>
<p> iso </p>
</td>
<td>
<p> erstellt das 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 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>
</table>
</div>
<p>Das kannst mehrere Aktionen als Parameter angeben. </p>
<h4 id="head-5850d37242fe07221892c0126989304825831e5c">Beispiele</h4>
<dl>
<dt>Die erste Erstellung des Grundsystems</dt>
<dd><p><tt>./cb-build.sh&nbsp;dfsbuild</tt> </p>
</dd>
<dt>Anpassungen vornehmen, ISO-Image erstellen und per ''qemu'' testen</dt>
<dd><p><tt>./cb-build.sh&nbsp;config&nbsp;iso&nbsp;qemu</tt> </p>
</dd>
</dl>
<h3 id="head-b4a0271d176c624fda4d38f5c138aefe0a329bca">der CryptoBox-Kernel</h3>
<p>Der Kernel für die <a href="/wikis/howto/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="/wikis/howto/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="/wikis/howto/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/modern/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/modern/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> cb-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>cb-build.sh</em> verwendet relative Pfad-Angaben - du solltest es also aus dem Verzeichnis heraus starten, in dem sich beispielsweise auch <em>cb-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 <strong>(TODO: entsprechende Zeile der Kernel-Config einfuegen)</strong> </p>
</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="/wikis/howto/CryptoBoxKnoppixVerworfen">CryptoBoxKnoppixVerworfen</a> </p>
</li>
</ul>
<h3 id="head-0eec3ed15826633b2667c982fb486e988514faac">Morphix / IBuild</h3>
<ul>
<li><p> <a href="/wikis/howto/CryptoBoxMorphixVerworfen">CryptoBoxMorphixVerworfen</a> </p>
</li>
</ul>
<a id="bottom"></a>
</div>
<p id="pageinfo" class="info" lang="en" dir="ltr">last edited 2005-07-07 19:01:07 by <span title=""></span></p>
</div> <!-- end page -->
</body>
</html>