<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>adminlife.net &#187; howtos</title>
	<atom:link href="http://www.adminlife.net/category/howtos/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.adminlife.net</link>
	<description>... aus dem Alltag eines Sysadmins</description>
	<lastBuildDate>Tue, 27 Sep 2011 14:43:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Security fail pt3: Userauthentifizierung über externe Kommandos</title>
		<link>http://www.adminlife.net/hacks/security-fail-pt3-userauthentifizierung-ueber-externe-kommandos/</link>
		<comments>http://www.adminlife.net/hacks/security-fail-pt3-userauthentifizierung-ueber-externe-kommandos/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 16:47:09 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[howtos]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[wissen]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Fail]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacked]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=2229</guid>
		<description><![CDATA[Tim schlug hier vor, im Vorpost etwas anderes zur Authentifizierung als $USER zu nutzen: id. Auch das ist unsicher, wenn man es falsch macht. Ich benutze hier einfach mal die UIDs statt der Usernamen. Der folgende Code wäre dann die id-Variante, wer findet das Sicherheitsproblem? #!/bin/bash if [ "$(id -u)" != "1001" ] &#38;&#38; [ [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.poormojo.org/pmjadaily/archives/Blank-Facepalm.gif" alt="" width="168" height="125" /></p>
<p>Tim schlug <a href="http://www.adminlife.net/allgemein/security-fail-pt2-userauthentifizierung-in-bash/#comment">hier</a> vor, im Vorpost etwas anderes zur Authentifizierung als $USER zu nutzen: id. Auch das ist unsicher, wenn man es falsch macht. Ich benutze hier einfach mal die UIDs statt der Usernamen. Der folgende Code wäre dann die id-Variante, wer findet das Sicherheitsproblem? <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /><br />
<BR><BR></p>
<p><code><br />
#!/bin/bash<br />
if [ "$(id -u)" != "1001" ] &amp;&amp; [ "$(id -u)" != "1002" ]<br />
then<br />
echo "Zugriff verweigert."<br />
else<br />
echo OK<br />
[...]<br />
echo "$(date) Domain $1 gelöscht durch $USER" &gt;&gt; /var/log/domainlog<br />
fi<br />
</code></p>
<p>Umgehen kann man es jedoch wieder trivial, man erstelle ~/id:<br />
<code><br />
[stefan@srv2342 ~]$ sh authme.sh<br />
Zugriff verweigert.<br />
[stefan@srv2342 ~]$ echo "echo 1001" &gt; ~/id<br />
[stefan@srv2342 ~]$ chmod +x ~/id<br />
[stefan@srv2342 ~]$ PATH=".:$PATH" sh authme.sh<br />
OK<br />
[stefan@srv2342 ~]$<br />
</code></p>
<p>Wir haben hier PATH so geändert, dass zuerst im aktuellen Pfad nach id Datei gesucht wird &#8211; die Datei haben wir grade angelegt und sie gibt aus, was das Script als Antwort sehen möchte. Whoops! ;D<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/hacks/security-fail-pt3-userauthentifizierung-ueber-externe-kommandos/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Security fail pt2: Userauthentifizierung in BASH</title>
		<link>http://www.adminlife.net/allgemein/security-fail-pt2-userauthentifizierung-in-bash/</link>
		<comments>http://www.adminlife.net/allgemein/security-fail-pt2-userauthentifizierung-in-bash/#comments</comments>
		<pubDate>Tue, 13 Apr 2010 20:16:58 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[hacks]]></category>
		<category><![CDATA[howtos]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[wissen]]></category>
		<category><![CDATA[bash]]></category>
		<category><![CDATA[Fail]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[hacker]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=2208</guid>
		<description><![CDATA[Um die Security awareness etwas zu erhöhen, habe ich überlegt, noch ein paar witzige Schnippsel zu posten! Vielleicht entdeckt ja jemand auch etwas, das er selbst mal gemacht hat! Hier folgt nun ein sinngemäßer Auszug aus einem Script, das bei einem ISP sehr kritische Aktionen für Domains ausführt: #!/bin/bash if [ "$USER" != "franz" ] [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" src="http://www.justpressplay.net/images/stories/facepalm.jpg" alt="" width="229" height="172" /></p>
<p>Um die Security awareness etwas zu erhöhen, habe ich überlegt, noch ein paar witzige Schnippsel zu posten! Vielleicht entdeckt ja jemand auch etwas, das er selbst mal gemacht hat! <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Hier folgt nun ein sinngemäßer Auszug aus einem Script, das bei einem ISP sehr kritische Aktionen für Domains ausführt:<br />
<BR><BR><br />
<code><br />
#!/bin/bash<br />
if [ "$USER" != "franz" ] &amp;&amp; [ "$USER" != "karl" ]<br />
then<br />
echo "Zugriff verweigert."<br />
else<br />
[...]<br />
echo "$(date) Domain $1 gelöscht durch $USER" &gt;&gt; /var/log/domainlog<br />
fi<br />
</code></p>
<p>Wichtig ist hier vor allem das Audit Log. Umgehen kann man es jedoch trivial:<br />
<code><br />
USER=franz ./domain-delete.sh [domain]<br />
</code></p>
<p>Leider bedachte der Programmierer nicht, dass $USER natürlich trivial von jedem Shelluser geändert werden kann. Das Audit-Log würde ggfs. sehr unerfreuliche Folgen haben.</p>
<p>Bessere Lösung: sudo benutzen und nur den zwei Usern, die es wirklich benötigen, Rechte auf das Script gewähren.<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/allgemein/security-fail-pt2-userauthentifizierung-in-bash/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>FreeBSD: Ethernet Point-to-Point Verbindung</title>
		<link>http://www.adminlife.net/allgemein/freebsd-ethernet-point-to-point-verbindung/</link>
		<comments>http://www.adminlife.net/allgemein/freebsd-ethernet-point-to-point-verbindung/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 14:05:32 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[allgemein]]></category>
		<category><![CDATA[howtos]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[network]]></category>
		<category><![CDATA[netzwerk]]></category>
		<category><![CDATA[point-to-point]]></category>
		<category><![CDATA[pointopoint]]></category>
		<category><![CDATA[ptp]]></category>
		<category><![CDATA[routing]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=2174</guid>
		<description><![CDATA[Hier eine Kurzanleitung für all diejenigen, die ein FreeBSD unter kvm mit Point-to-Point benutzen wollen und daran verzweifelt sind, ins Netz zu kommen (dies ist ein kleiner Reminder für mich selbst *g): Lokal ist hier die IP 192.168.0.220, Remote ist 192.168.0.210. /etc/rc.conf: ifconfig_em0="inet 192.168.0.220 192.168.0.210" static_routes="default" route_default="-net 0.0.0.0 -iface -interface em0" Ist auf der anderen [...]]]></description>
			<content:encoded><![CDATA[<p>Hier eine Kurzanleitung für all diejenigen, die ein FreeBSD unter kvm mit Point-to-Point benutzen wollen und daran verzweifelt sind, ins Netz zu kommen (dies ist ein kleiner Reminder für mich selbst *g):</p>
<p>Lokal ist hier die IP 192.168.0.220, Remote ist 192.168.0.210.</p>
<p>/etc/rc.conf:</p>
<p style="padding-left: 30px"><code>ifconfig_em0="inet 192.168.0.220 192.168.0.210"<br />
static_routes="default"<br />
route_default="-net 0.0.0.0 -iface -interface em0"</code></p>
<p style="padding-left: 30px">
<p>Ist auf der anderen Seite Linux im Einsatz, so macht man dort:</p>
<p style="padding-left: 30px">
<code>ip addr add 192.168.0.210 peer 192.168.0.220/32 dev tunX</code></p>
<p>Natürlich erst, nachdem das neue tun-Interface oben ist (also z.B. im eigenen up-Script). <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> <!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/allgemein/freebsd-ethernet-point-to-point-verbindung/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Live USB-Stick aller Linux Distributionen</title>
		<link>http://www.adminlife.net/howtos/live-usb-stick-aller-linux-distributionen/</link>
		<comments>http://www.adminlife.net/howtos/live-usb-stick-aller-linux-distributionen/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 10:17:04 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bootfähig]]></category>
		<category><![CDATA[cd]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[live]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unetbootin]]></category>
		<category><![CDATA[usb]]></category>
		<category><![CDATA[usb device]]></category>
		<category><![CDATA[usb stick]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=2106</guid>
		<description><![CDATA[Live CDs sind tod &#8211; es lebe der Live USB-Stick! Dank UNetbootin wird die Erstellung eines solchen bootfähigen USB-Sticks zum Kinderspiel. Alle bekannten Linux Distributionen, verschiedene BSD Derivate sowie spezielle Live CDs (z.B. Antivir- und Systemrettungsdisks) können mittels UNetbootin mit wenigen Klicks auf einen USB Stick gebracht werden. Nach der Auswahl der gewünschten Distribution und [...]]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2107" title="unetbootin" src="http://www.adminlife.net/wp-content/uploads/2009/10/unetbootin.png" alt="unetbootin" width="525" height="381" /></p>
<p align="justify">Live CDs sind tod &#8211; es lebe der Live USB-Stick! Dank <a href="http://unetbootin.sourceforge.net/">UNetbootin</a> wird die Erstellung eines solchen bootfähigen USB-Sticks zum Kinderspiel. Alle bekannten Linux Distributionen, verschiedene BSD Derivate sowie spezielle Live CDs (z.B. Antivir- und Systemrettungsdisks) können mittels UNetbootin mit wenigen Klicks auf einen USB Stick gebracht werden.</p>
<p align="justify">Nach der Auswahl der gewünschten Distribution und des zu nutzenden USB-Sticks lädt <a href="http://unetbootin.sourceforge.net/">UNetbootin</a> alle benötigten Dateien automatisch herunter und erstellt den bootfähigen USB-Stick. Auch eigene ISO-Dateien &#8211; z.B. von anderen Linux Distributionen &#8211; kann man auswählen und auf den Stick speichern. Möglich ist auch die Auswahl eines benutzerdefinierten Kernels.</p>
<p align="justify"><a href="http://unetbootin.sourceforge.net/">UNetbootin</a> ist bei den meisten Linux Distributionen bereits als Paket vorhanden. Auch für Windows ist das Programm verfügbar. </p>
<p>Weitere Informationen zu Linux auf dem USB-Stick:<br />
<a href="http://www.pendrivelinux.com/">Pendrivelinux.com</a><br />
<a href="http://wiki.ubuntuusers.de/Live-USB">Live USB Stick mit Ubuntu Boardmitteln</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/live-usb-stick-aller-linux-distributionen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Firewallregelmanagement</title>
		<link>http://www.adminlife.net/adminlife/firewallregelmanagement/</link>
		<comments>http://www.adminlife.net/adminlife/firewallregelmanagement/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 16:04:29 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[adminlife]]></category>
		<category><![CDATA[howtos]]></category>
		<category><![CDATA[wissen]]></category>
		<category><![CDATA[backup]]></category>
		<category><![CDATA[bsi]]></category>
		<category><![CDATA[firewall]]></category>
		<category><![CDATA[Firewallregeln]]></category>
		<category><![CDATA[Repo]]></category>
		<category><![CDATA[Sicherung]]></category>
		<category><![CDATA[SVN]]></category>
		<category><![CDATA[zertifizierung]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=1726</guid>
		<description><![CDATA[Ich frage mich, wie ihr eure Firewallregeln in Firmenfirewalls verwaltet und sichert &#8211; wer iptables oder eine darauf basierende Lösung besitzt, wird wohl einfach automatisch oder eventbasiert Backups machen oder die Regeln in ein Repo einchecken &#8211; doch was machen die armen Admins, die mit proprietärer Hardware zu tun haben? Mir fallen spontan folgende 5 [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Ich frage mich, wie ihr eure Firewallregeln in Firmenfirewalls verwaltet und sichert &#8211; wer iptables oder eine darauf basierende Lösung besitzt, wird wohl einfach automatisch oder eventbasiert Backups machen oder die Regeln in ein Repo einchecken &#8211; doch was machen die armen Admins, die mit proprietärer Hardware zu tun haben? Mir fallen spontan folgende 5 Punkte ein:</p>
<ul>
<li>Programmieren einer Schnittstelle, die die Regeln ausliest und in ein Repo eincheckt</li>
<li>Automatische Backups durch die Firewall erzeugen lassen (oftmals per Mail möglich) und einchecken in ein Repo</li>
<li>Eingeben der Firewallregeln in ein Dokumentationssystem</li>
<li>Eingeben der Firewallregeln in ein System, welches die Regeln dann auf der Firewall anlegt</li>
<li>Keine Dokumentation <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ul>
<p>Mich würde interessieren, wie ihr hier vorgeht? Z.B. für eine Zertifizierung nach dem <a href="http://de.wikipedia.org/wiki/IT-Grundschutzhandbuch">IT-Grundschutzhandbuch</a> sind solche organisatorischen Dinge nicht ganz unwichtig.<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/adminlife/firewallregelmanagement/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>PdfMod Installation unter Ubuntu 9.04</title>
		<link>http://www.adminlife.net/howtos/pdfmod-installation-unter-ubuntu-9-04/</link>
		<comments>http://www.adminlife.net/howtos/pdfmod-installation-unter-ubuntu-9-04/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 07:51:38 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[hyena]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[jaunty]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[make]]></category>
		<category><![CDATA[package]]></category>
		<category><![CDATA[paket]]></category>
		<category><![CDATA[paketquelle]]></category>
		<category><![CDATA[pdfmod]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=1718</guid>
		<description><![CDATA[Bei PdfMod handelt es sich um eine einfache Applikation zum Bearbeiten von PDF Dateien. Mit der Gnome Applikation können beispielsweise einzelne PDF Seiten exportiert, entfernt oder rotiert werden. Weitere Funktionen finden sich auf der offiziellen Homepage. Da es derzeit kein offizielles Ubuntu Paket für Ubuntu Jaunty gibt, müssen wir PdfMod aus den Quellen kompilieren. Zuerst [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="size-full wp-image-1719 aligncenter" title="pdfmod" src="http://www.adminlife.net/wp-content/uploads/2009/09/pdfmod2.png" alt="pdfmod" width="500" height="375" /></p>
<p align="justify">Bei <a href="http://live.gnome.org/PdfMod">PdfMod</a> handelt es sich um eine einfache Applikation zum Bearbeiten von PDF Dateien. Mit der Gnome Applikation können beispielsweise einzelne PDF Seiten exportiert, entfernt oder rotiert werden. Weitere Funktionen finden sich auf der <a href="http://live.gnome.org/PdfMod">offiziellen Homepage</a>.</p>
<p align="justify">Da es derzeit kein offizielles Ubuntu Paket für Ubuntu Jaunty gibt, müssen wir PdfMod aus den Quellen kompilieren. Zuerst benötigen wir einige Abhängigkeiten und  bereiten das System vor:</p>
<p>[code language="css"]<br />
sudo aptitude install build-essential intltool mono-gmcs<br />
sudo ln -s /usr/bin/gmcs2 /usr/bin/gmcs<br />
[/code]</p>
<p align="justify">PdfMod hat als Abhängigkeit die C# Library <a href="http://live.gnome.org/Hyena">Hyena</a>, die wie folgt heruntergeladen und nach <code>/usr/local</code> installiert werden kann:</p>
<p>[code language="css"]<br />
wget http://ftp.gnome.org/pub/GNOME/sources/hyena/0.1/hyena-0.1.tar.gz<br />
tar xzvf hyena-0.1.tar.gz<br />
cd hyena-0.1/<br />
./configure --prefix=/usr/local<br />
make &amp;&amp; sudo make install<br />
[/code]</p>
<p align="justify">PdfMod wird ebenfalls heruntergeladen und konfiguriert:</p>
<p>[code language="css"]<br />
wget http://ftp.gnome.org/pub/GNOME/sources/pdfmod/0.6/pdfmod-0.6.tar.gz<br />
tar xzvf pdfmod-0.6.tar.gz<br />
cd pdfmod-0.6/<br />
./configure --prefix=/usr/local<br />
[/code]</p>
<p align="justify">Leider gibt es bei der aktuellen Version noch einen Bug, der folgenden Fehler beim <code>make</code> Aufruf erzeugt:</p>
<p>[code language="css"]<br />
cp: cannot stat `@expanded_libdir@/hyena/Hyena.dll': No such file or directory<br />
cp: cannot stat `@expanded_libdir@/hyena/Hyena.Gui.dll': No such file or directory<br />
[/code]</p>
<p align="justify">Hierbei hilf folgender <code>sed</code> Aufruf, der die fehlerhaften Zeilen ersetzt:</p>
<p>[code language="css"]<br />
sed -i 's/@expanded_libdir@/${expanded_libdir}/g' config.status<br />
[/code]</p>
<p align="justify">Danach wird PdfMod wie folgt kompiliert und installiert:</p>
<p>[code language="css"]<br />
make &amp;&amp; sudo make install<br />
[/code]</p>
<p align="justify">Nun ist PdfMod installiert und kann mittels <code>pdfmod</code> aufgerufen werden. Ubuntu 9.10/Karmic Benutzer können sich die Kompilierorgie übrigens sparen &#8211; es gibt <a href="https://launchpad.net/~pdfmod-team/+archive/ppa">fertige Pakete im PPA</a>.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/pdfmod-installation-unter-ubuntu-9-04/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Der eigene DNS Server in unter 5 Minuten</title>
		<link>http://www.adminlife.net/howtos/der-eigene-dns-server-in-unter-5-minuten/</link>
		<comments>http://www.adminlife.net/howtos/der-eigene-dns-server-in-unter-5-minuten/#comments</comments>
		<pubDate>Sun, 05 Jul 2009 15:05:00 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[anfrage]]></category>
		<category><![CDATA[anleitung]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[caching-only]]></category>
		<category><![CDATA[dig]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[domain name system]]></category>
		<category><![CDATA[frei]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[pdns]]></category>
		<category><![CDATA[powerdns]]></category>
		<category><![CDATA[recursor]]></category>
		<category><![CDATA[resolv.conf]]></category>
		<category><![CDATA[resolver]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[unzensiert]]></category>
		<category><![CDATA[wie]]></category>
		<category><![CDATA[zensur]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=1606</guid>
		<description><![CDATA[In Zeiten wie diesen, kann man dem DNS Server seines Providers leider nicht mehr trauen. Höchste Zeit also, einen eigenen DNS Server einzurichten, der die DNS Informationen unabhängig vom Provider direkt vom zuständigen Nameserver abfragen kann. Auf dem DNS Server Markt tummeln sich viele verschiedene Implementierungen &#8211; für einen einfachen rekursiven DNS Server eignet sich [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><a href="http://www.ccchb.de/wiki/DNS-Zensur">In Zeiten wie diesen, kann man dem DNS Server seines Providers leider nicht mehr trauen</a>. Höchste Zeit also, einen eigenen DNS Server einzurichten, der die DNS Informationen unabhängig vom Provider direkt vom zuständigen Nameserver abfragen kann.</p>
<p align="justify">Auf dem DNS Server Markt tummeln sich viele verschiedene Implementierungen &#8211; für einen einfachen rekursiven DNS Server eignet sich der <a href="http://www.powerdns.com">PowerDNS</a> Recursor. Bei den meisten Distributionen sollte ein Paket <code>pdns-recursor</code> über die jeweilige Paketverwaltung installierbar sein. Unter Ubuntu oder Debian lässt sich der Recursor wie folgt installieren:</p>
<p>[code language="css"]aptitude install pdns-recursor[/code]</p>
<p align="justify">Generell sollte nun bereits lokal ein DNS Server laufen, den man nun mit einer einfachen Anfrage prüfen kann:</p>
<p>[code language="css"]dig @localhost www.adminlife.net[/code]</p>
<p align="justify">Kommt hier eine Antwort, ist der Nameserver funktionsbereit. Nun sollte er noch in die <code>/etc/resolv.conf</code> eingetragen werden. Folgende Zeile wird an den Anfang der Datei eingefügt:</p>
<p>[code language="css"]nameserver 127.0.0.1[/code]</p>
<p align="justify">Fertig ist der eigene Nameserver, der nicht mehr durch den Provider zensiert werden kann. Weitere Einstellungen, wie z.B. die IP-basierte Zugriffskontrolle, lassen sich in der gut kommentierten Datei <code>/etc/powerdns/recursor.conf</code> einstellen.</p>
<p align="justify">Die Abfrage läuft nun wie folgt:</p>
<p style="text-align: center;"><img class="size-full wp-image-1608 aligncenter" title="nameserver" src="http://www.adminlife.net/wp-content/uploads/2009/07/nameserver2.png" alt="nameserver" width="500" height="389" /></p>
<p align="justify">Lokal stellt der Resolver eine rekursive DNS Anfrage an den ebenfalls lokal installierten caching-only Nameserver. Dieser stellt Anfragen an die zuständigen Nameserver im Netz, nachdem er diese von den root DNS Servern durch iterative Anfragen ermittelt hat.</p>
<p>Mehr zum Thema DNS:<br />
<a href="http://de.wikipedia.org/wiki/Rekursive_und_iterative_Namensaufl%C3%B6sung">Infos zur Namensauflösung @Wikipedia</a><br />
<a href="http://de.wikipedia.org/wiki/Domain_Name_System">DNS @Wikipedia</a><br />
<a href="http://dns-liste.de/">Anleitung zum Umstellen auf freie DNS Server</a><br />
<a href="http://doc.powerdns.com/built-in-recursor.html">PowerDNS Recursor Dokumentation</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/der-eigene-dns-server-in-unter-5-minuten/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Perl Upgrade unter FreeBSD</title>
		<link>http://www.adminlife.net/howtos/perl-upgrade-unter-freebsd/</link>
		<comments>http://www.adminlife.net/howtos/perl-upgrade-unter-freebsd/#comments</comments>
		<pubDate>Thu, 12 Feb 2009 15:35:17 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[perl-after-upgrade]]></category>
		<category><![CDATA[port]]></category>
		<category><![CDATA[ports]]></category>
		<category><![CDATA[portupgrade]]></category>
		<category><![CDATA[script]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=1215</guid>
		<description><![CDATA[Ein Upgrade von Perl unter FreeBSD kann sehr aufwendig werden, da die von Perl abhängigen Ports bestimmte Module nicht mehr finden können. Um den Aufwand minimal zu halten, gibt es das Script perl-after-upgrade. Zuerst empfiehlt sich das Update von Perl und davon abhängiger Ports mittels portupgrade: [code language="css"]portupgrade -rR perl[/code] Danach starten wir das Upgrade [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Ein Upgrade von <a href="http://www.perl.org/">Perl</a> unter <a href="http://www.freebsd.org/">FreeBSD</a> kann sehr aufwendig werden, da die von Perl abhängigen Ports bestimmte Module nicht mehr finden können. Um den Aufwand minimal zu halten, gibt es das Script <a href="http://people.freebsd.org/~tobez/pau.html"><code>perl-after-upgrade</code></a>.</p>
<p align="justify">Zuerst empfiehlt sich das Update von Perl und davon abhängiger Ports mittels <a href="http://wiki.freebsd.org/portupgrade"><code>portupgrade</code></a>:</p>
<p>[code language="css"]portupgrade -rR perl[/code]</p>
<p align="justify">Danach starten wir das Upgrade Script:</p>
<p>[code language="css"]perl-after-upgrade[/code]</p>
<p align="justify">Dieses Script zeigt uns an, wie viele Ports von Perl abhängen. Um die Änderungen an den Ports auch durchzuführen, muss das Script mit dem Parameter <code>-f</code> ausgeführt werden:</p>
<p>[code language="css"]perl-after-upgrade -f[/code]</p>
<p align="justify">Nun sollten alle Perl Programme auf dem System einwandfrei mit der neu installierten Perl Version laufen. Weitere Infos hat <a href="http://www.oreillynet.com/sysadmin/blog/2005/06/upgrading_perl.html">Dru Lavigne bei O&#8217;Reilly veröffentlicht</a>.<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/perl-upgrade-unter-freebsd/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Squid Logfiles auswerten mit SARG</title>
		<link>http://www.adminlife.net/howtos/squid-logfiles-auswerten-mit-sarg/</link>
		<comments>http://www.adminlife.net/howtos/squid-logfiles-auswerten-mit-sarg/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 18:29:05 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[access.log]]></category>
		<category><![CDATA[auswertung]]></category>
		<category><![CDATA[cronjob]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[logfile]]></category>
		<category><![CDATA[sarg]]></category>
		<category><![CDATA[squid]]></category>
		<category><![CDATA[statistik]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=1180</guid>
		<description><![CDATA[Wer die Logfiles seines Squid Proxy Servers grafisch darstellen möchte, für den bietet sich SARG &#8211; der Squid Analysis Report Generator &#8211; an. Das Auswertungstool ist bei allen gängigen Distributionen als Paket verfügbar und kann mit den üblichen Paketmanagern installiert werden. Ohne weitere Parameter vermutet sarg die Squid Logdatei unter /var/log/squid/access.log und möchte seine HTML [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Wer die Logfiles seines <a href="http://www.squid-cache.org/">Squid Proxy</a> Servers grafisch darstellen möchte, für den bietet sich <a href="http://sarg.sourceforge.net/sarg.php">SARG</a> &#8211; der Squid Analysis Report Generator &#8211; an.</p>
<p align="justify">Das Auswertungstool ist bei allen gängigen Distributionen als Paket verfügbar und kann mit den üblichen Paketmanagern installiert werden. Ohne weitere Parameter vermutet <code>sarg</code> die Squid Logdatei unter <code>/var/log/squid/access.log</code> und möchte seine HTML Ausgabe nach <code>/var/www/squid-reports/</code> schreiben. Dies kann man aber problemlos übersteuern:</p>
<p>[code language="css"]sarg  -o /absolute/path/to/outputdir -l access.log[/code]</p>
<p align="justify">Nach dem Aufruf findet sich eine übersichtliche HTML Statistik im <code>outputdir</code>. Diese zeigt unter anderem eine trafficbasierte Auswertung von Proxybenutzern und besuchten Webseiten an. Schnell lässt sich herausfinden welche Seiten am häufigsten besucht wurden, welcher Benutzer den meisten Traffic verursacht hat oder welche Dateien runtergeladen wurden.</p>
<p><center><a href="http://www.adminlife.net/wp-content/uploads/2009/02/sarg_12.png" rel="lightbox[1180]" title="sarg_1"><img src="http://www.adminlife.net/wp-content/uploads/2009/02/sarg_1-150x150.png" alt="sarg_1" title="sarg_1" width="150" height="150" class="aligncenter size-thumbnail wp-image-1181" /></a><a href="http://www.adminlife.net/wp-content/uploads/2009/02/sarg_22.png" rel="lightbox[1180]" title="sarg_2"><img src="http://www.adminlife.net/wp-content/uploads/2009/02/sarg_2-150x150.png" alt="sarg_2" title="sarg_2" width="150" height="150" class="aligncenter size-thumbnail wp-image-1182" /></a></center></p>
<p align="justify">SARG ist optimal für die tägliche Auswertung der Squid Logfiles mittels eines Cronjobs geeignet. Weitere Anwendungsmöglichkeiten und Parameter verrät die Manpage oder <code>sarg --help</code>.</p>
<p><a href="http://sarg.sourceforge.net/sarg.php">SARG Homepage</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/squid-logfiles-auswerten-mit-sarg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu Intrepid Ibex auf dem Dell XPS M1330</title>
		<link>http://www.adminlife.net/howtos/ubuntu-intrepid-ibex-auf-dem-dell-xps-m1330/</link>
		<comments>http://www.adminlife.net/howtos/ubuntu-intrepid-ibex-auf-dem-dell-xps-m1330/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 07:42:11 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[8.10]]></category>
		<category><![CDATA[8400m]]></category>
		<category><![CDATA[bios]]></category>
		<category><![CDATA[dell]]></category>
		<category><![CDATA[fan]]></category>
		<category><![CDATA[geforce]]></category>
		<category><![CDATA[ger]]></category>
		<category><![CDATA[ibex]]></category>
		<category><![CDATA[intrepid]]></category>
		<category><![CDATA[l]]></category>
		<category><![CDATA[laut]]></category>
		<category><![CDATA[m1330]]></category>
		<category><![CDATA[nvidia]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[upgrade]]></category>
		<category><![CDATA[xps]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=899</guid>
		<description><![CDATA[Wer das aktuelle Ubuntu 8.10 auf seinem Dell XPS M1330 mit nvidia Grafikkarte installiert, wird sich vielleicht über die nervenden lauten Lüftergeräusche wundern. Dies hängt mit dem aktuellen nvidia Treiber und der installierten BIOS Revision zusammen. Um den Lüfter zum Schweigen zu bringen, muss ein BIOS Upgrade durchgeführt werden. Das BIOS Upgrade kann direkt aus [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Wer das aktuelle Ubuntu 8.10 auf seinem <a href="http://www1.euro.dell.com/content/products/productdetails.aspx/xpsnb_m1330?c=de&#038;cs=dedhs1&#038;l=de&#038;s=dhs">Dell XPS M1330</a> mit nvidia Grafikkarte installiert, wird sich vielleicht über die nervenden lauten Lüftergeräusche wundern. Dies hängt mit dem aktuellen nvidia Treiber und der installierten BIOS Revision zusammen. Um den Lüfter zum Schweigen zu bringen, muss ein BIOS Upgrade durchgeführt werden.</p>
<p align="justify">Das BIOS Upgrade kann direkt aus dem Systembetrieb durchgeführt werden. Dazu muss zuerst das Paket <code>libsmbios-bin</code> installiert werden:</p>
<p>[code language="css"]# aptitude install libsmbios-bin[/code]</p>
<p align="justify">Anschließend müssen wir die System ID herausfinden.</p>
<p>[code language="css"]# sudo getSystemId<br />
Libsmbios:    0.12.1<br />
System ID:    0x01DD<br />
Service Tag:  DT6WLB1<br />
Express Service Code: 30063287773<br />
Product Name: Dell DM061<br />
BIOS Version: 2.3.2<br />
Vendor:       Dell Inc.<br />
Is Dell:      1<br />
[/code]</p>
<p align="justify">Den Wert bei System ID notieren und dann die aktuelle BIOS Version (höchste Versionsnummer) bei <a href="http://linux.dell.com/repo/firmware/bios-hdrs/">Dell</a> runterladen. In dem BIOS Ordner befindet sich eine Datei <code>bios.hdr</code>, die wir zum Upgrade benötigen.</p>
<p>[code language="css"]# sudo dellBiosUpdate -u -f ./bios.hdr<br />
Supported RBU type for this system: (MONOLITHIC)<br />
Using RBU v2 driver. Initializing Driver.<br />
Setting RBU type in v2 driver to: MONOLITHIC<br />
Prep driver for data load.<br />
Writing RBU data (4096bytes/dot): ............................<br />
..............................................................<br />
.......................<br />
Notify driver data is finished.<br />
Activate CMOS bit to notify BIOS that update is ready on next boot.<br />
Update staged sucessfully. BIOS update will occur on next reboot.<br />
[/code]</p>
<p align="justify">Der Rechner muss nun neu gestartet werden. Nach dem Systemneustart sollte der Lüfter wieder normal arbeiten. Weitere Infos finden sich im <a href="http://linux.dell.com/wiki/index.php/Tech/libsmbios_dellBiosUpdate">Dell Linux Wiki</a>.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/ubuntu-intrepid-ibex-auf-dem-dell-xps-m1330/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>DNS Server auf Cache Poisoning testen</title>
		<link>http://www.adminlife.net/howtos/dns-server-auf-cache-poisoning-testen/</link>
		<comments>http://www.adminlife.net/howtos/dns-server-auf-cache-poisoning-testen/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 11:59:59 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=726</guid>
		<description><![CDATA[Aktuell ist immer noch die von Dan Kaminsky gefundene DNS Lücke im Gespräch, die Cache Poisoning vereinfacht. Als Hauptgrund für die Lücke werden anfällige DNS Server, die keine zufälligen Ports generieren, genannt. Zur Prüfung des eigenen Nameservers bzw. des Nameservers des Providers auf diese Schwachstelle, hat das DNS-OARC einen extra DNS Dienst zur Verfügung gestellt, [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Aktuell ist immer noch die <a href="http://www.adminlife.net/allgemein/kritische-dns-luecken-erzeugen-updatewelle/">von Dan Kaminsky gefundene DNS Lücke</a> im Gespräch, die <a href="http://de.wikipedia.org/wiki/Cache_Poisoning">Cache Poisoning</a> vereinfacht. Als Hauptgrund für die Lücke werden anfällige DNS Server, die keine zufälligen Ports generieren, genannt.</p>
<p align="justify">Zur Prüfung des eigenen Nameservers bzw. des Nameservers des Providers auf diese Schwachstelle, hat das <a href="https://www.dns-oarc.net">DNS-OARC</a> einen <a href="https://www.dns-oarc.net/oarc/services/porttest">extra DNS Dienst</a> zur Verfügung gestellt, der einem Auskunft über das Verhalten des genutzten DNS Servers gibt. Abgefragt wird der Dienst mittels des <code>dig</code> Clients aus der <a href="http://www.isc.org/index.pl?/sw/bind/index.php">BIND</a> Familie:</p>
<p align="justify">Um den auf dem aktuellen System eingestellten DNS Resolver zu prüfen, reicht folgender Befehl:</p>
<p>[code language="css"]dig +short porttest.dns-oarc.net TXT<br />
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.<br />
&quot;217.237.150.202 is POOR: 27 queries in 4.8 seconds from 26 ports with std dev 160.37&quot;[/code]</p>
<p align="justify">Dieser DNS Server ist von der Schwachstelle betroffen. T-Online muss also noch was an seinen DNS Servern tun.</p>
<p align="justify">Um andere DNS Server zu prüfen, geben wir diese einfach mit einem vorangestellten <code>@</code> an:</p>
<p>[code language="css"]dig +short @my.nameserver.net porttest.dns-oarc.net TXT<br />
z.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.<br />
&quot;212.11.11.11 is GOOD: 226 queries in 799.3 seconds from 226 ports with std dev 18383.92&quot;[/code]</p>
<p align="justify">Der nun getestete Nameserver verhält sich schon besser &#8211; die Quellports werden zufällig vergeben, so dass ein Schutz vor der <a href="http://www.kb.cert.org/vuls/id/800113">weitreichenden DNS Schwachstelle</a> bestehen dürfte.</p>
<p><a href="http://www.cyberciti.biz/faq/dns-cache-poisoning-test/">via</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/dns-server-auf-cache-poisoning-testen/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Howto: UMTS mit o2 Surf Card unter Linux</title>
		<link>http://www.adminlife.net/tests/howto-o2-surf-card-unter-linux/</link>
		<comments>http://www.adminlife.net/tests/howto-o2-surf-card-unter-linux/#comments</comments>
		<pubDate>Fri, 02 May 2008 18:02:33 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[tests]]></category>
		<category><![CDATA[tipps]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[kernel config]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[pcmcia]]></category>
		<category><![CDATA[umts]]></category>
		<category><![CDATA[usb]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=678</guid>
		<description><![CDATA[Da mein Adminhandy kein HSDPA kann und mein Kollege kürzlich einfach so eine neue PCMCIA-UMTS Karte bestellt hat, stand ich neulich vor der Aufgabe, das Ding unter Linux zum Laufen zu bekommen &#8211; was sich als nicht ganz trivial herausstellte. Zuerst habe ich die Karte einfach in den PCMCIA-Slot meines Laptop geknallt und siehe da: [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignright" src="http://shop2.o2online.de/nw/assets/shop/bilder/produkte/o2/o2-surf-card-4530-000325-00-big-bild.jpg" alt="o2 Surf Card" /></p>
<p align="justify">Da mein Adminhandy kein HSDPA kann und mein Kollege kürzlich einfach so eine neue PCMCIA-UMTS Karte bestellt hat, stand ich neulich vor der Aufgabe, das Ding unter Linux zum Laufen zu bekommen &#8211; was sich als nicht ganz trivial herausstellte.<br />
Zuerst habe ich die Karte einfach in den PCMCIA-Slot meines Laptop geknallt und siehe da: es tat sich sogar etwas! Ein neues Gerät wurde erkannt! Die LED der Karte blinkte freudig! Es wird doch wohl nicht etwa auf Anhieb klappen? Ein neues USB-Storage Device wurde gefunden! Ääääh? Neugierig habe ich die 1. Partition (FAT) gemountet und siehe da, sie ist völlig leer. Nach einiger Recherche bin ich dann zu folgenden Ergebnissen gekommen:</p>
<p align="justify">
<ul>
<li>die Karte wird erstmal als OHCI USB Mass Storage Device erkannt (ja, über PCMCIA, ja, das geht!), der Windows Treiber &#8220;switcht&#8221; dann um und sie ist plötzlich ein über USB angebundenes Serial Device</li>
<li>Das Ding wird auch &#8220;GlobeTrotter GT MAX 3.6&#8243; geschimpft</li>
</ul>
<p>So, jetzt wollen wir das Ganze mal zum Laufen bringen.<br />
<span id="more-678"></span><br />
Falls man die nötigen Module nicht im Kernel hat, geht man per &#8220;make menuconfig&#8221; in die Kernel Konfiguration. Dort wird dann folgendes aktiviert:</p>
<p>[code language="css"]<br />
-&gt; Device Drivers -&gt; USB support (USB_SUPPORT [=y])<br />
-&gt; USB Serial Converter support (USB_SERIAL [=y])<br />
-&gt;USB driver for GSM and CDMA modems (NEW)<br />
[/code]<br />
außerdem noch:<br />
[code language="css"]<br />
-&gt; Device Drivers<br />
-&gt; USB support (USB_SUPPORT [=y])<br />
-&gt; Support for Host-side USB (USB [=y])<br />
[/code]</p>
<p>Nun compiliert man den ggfs. den Kernel neu und rebootet. Dann die Karte hereinstecken und man sieht im <em>dmesg</em>:</p>
<p>[code language="css"]Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: OHCI Host Controller<br />
Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: new USB bus registered, assigned bus number 6<br />
Apr 24 12:47:02 d400 ohci_hcd 0000:02:00.1: irq 11, io mem 0x38001000<br />
Apr 24 12:47:02 d400 usb usb6: configuration #1 chosen from 1 choice<br />
Apr 24 12:47:02 d400 hub 6-0:1.0: USB hub found<br />
Apr 24 12:47:02 d400 hub 6-0:1.0: 1 port detected<br />
Apr 24 12:47:02 d400 usb usb6: New USB device found, idVendor=1d6b, idProduct=0001<br />
Apr 24 12:47:02 d400 usb usb6: New USB device strings: Mfr=3, Product=2, SerialNumber=1<br />
Apr 24 12:47:02 d400 usb usb6: Product: OHCI Host Controller<br />
Apr 24 12:47:02 d400 usb usb6: Manufacturer: Linux 2.6.24-mm1 ohci_hcd<br />
Apr 24 12:47:02 d400 usb usb6: SerialNumber: 0000:02:00.1<br />
Apr 24 12:47:05 d400 usb 6-1: new full speed USB device using ohci_hcd and address 2<br />
Apr 24 12:47:05 d400 usb 6-1: configuration #1 chosen from 1 choice<br />
Apr 24 12:47:05 d400 usb 6-1: New USB device found, idVendor=05c6, idProduct=1000<br />
Apr 24 12:47:05 d400 usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3<br />
Apr 24 12:47:05 d400 usb 6-1: Product: USB MMC Storage<br />
Apr 24 12:47:05 d400 usb 6-1: Manufacturer: Qualcomm, Incorporated<br />
Apr 24 12:47:05 d400 usb 6-1: SerialNumber: 000000000002[/code]</p>
<p align="justify">Zum &#8220;Switchen&#8221; der Karte braucht man <a href="http://www.draisberghof.de/usb_modeswitch/">usb_modeswitch</a>, nehmt die aktuelle Version 0.9.4beta2, die &#8220;stabile&#8221; Version 0.9.3 hat teils Probleme mit udev und funktioniert bei mir (udev-119, Kernel 2.6.25-r1) nicht! Das Entpacken funktioniert wie üblich, configure ist nicht nötig, zum Compilieren reicht in simples <em>gcc -l usb -o usb_modeswitch usb_modeswitch.c</em> oder man nimmt einfach gleich compile.sh, welches danach noch strip&#8217;pt. <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /><br />
Unter Gentoo gibt es <a href="http://bugs.gentoo.org/show_bug.cgi?id=213973">hier</a> ein fertiges ebuild, die Installation funktioniert wie folgend beschrieben:</p>
<p>[code language="css"]mkdir -p /root/OVERLAY/sys-apps/usb_modeswitch/files<br />
wget http://bugs.gentoo.org/attachment.cgi?id=150886 -O \<br />
/root/OVERLAY/sys-apps/usb_modeswitch/usb_modeswitch-0.9.4_beta2.ebuild<br />
wget http://bugs.gentoo.org/attachment.cgi?id=150887 -O \<br />
/root/OVERLAY/sys-apps/usb_modeswitch/files/91-usb_modeswitch.rules.udev-ge-106<br />
wget http://bugs.gentoo.org/attachment.cgi?id=150889 -O \<br />
/root/OVERLAY/sys-apps/usb_modeswitch/files/91-usb_modeswitch.rules.udev-lt-106<br />
PORTAGE_OVERLAY=&quot;/root/OVERLAY&quot;<br />
cd /root/OVERLAY/sys-apps/usb_modeswitch<br />
ebuild usb_modeswitch-0.9.4_beta2.ebuild digest merge[/code]</p>
<p align="justify">Hoffentlich ist das bald auch in der Portage, man hat ja immer alles gerne aus einem Guss! <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Nach dem Ausführen von <em>usb_modeswitch</em> solltet ihr dann so etwas sehen:</p>
<p>[code language="css"]Apr 24 12:49:19 d400 usb 6-1: USB disconnect, address 2<br />
Apr 24 12:49:21 d400 usb 6-1: new full speed USB device using ohci_hcd and address 3<br />
Apr 24 12:49:21 d400 usb 6-1: configuration #1 chosen from 1 choice<br />
Apr 24 12:49:21 d400 usb 6-1: New USB device found, idVendor=0af0, idProduct=6701<br />
Apr 24 12:49:21 d400 usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=4<br />
Apr 24 12:49:21 d400 usb 6-1: Product: Globetrotter HSDPA Modem<br />
Apr 24 12:49:21 d400 usb 6-1: Manufacturer: Option N.V.<br />
Apr 24 12:49:21 d400 usb 6-1: SerialNumber: Serial Number<br />
Apr 24 12:49:21 d400 usbcore: registered new interface driver usbserial<br />
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial support registered for generic<br />
Apr 24 12:49:21 d400 usbcore: registered new interface driver usbserial_generic<br />
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial Driver core<br />
Apr 24 12:49:21 d400 drivers/usb/serial/usb-serial.c: USB Serial support registered for GSM modem (1-port)<br />
Apr 24 12:49:21 d400 option 6-1:1.0: GSM modem (1-port) converter detected<br />
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB0<br />
Apr 24 12:49:21 d400 option 6-1:1.1: GSM modem (1-port) converter detected<br />
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB1<br />
Apr 24 12:49:21 d400 option 6-1:1.2: GSM modem (1-port) converter detected<br />
Apr 24 12:49:21 d400 usb 6-1: GSM modem (1-port) converter now attached to ttyUSB2<br />
Apr 24 12:49:21 d400 usbcore: registered new interface driver option<br />
Apr 24 12:49:21 d400 drivers/usb/serial/option.c: USB Driver for GSM modems: v0.7.1[/code]</p>
<p align="justify">Nun kann man die Karte über /dev/ttyUSB0 wie ein normales AT-Modem benutzen und seine ppp-<em>chat</em>-Scripte damit laufen lassen, ihr findet eins z.B. <a href="http://www.gentoo-wiki.com/HARDWARE_Vodafone_UMTS-GPRS_PCMCIA_Adapter#Software_configuration">im Gentoo-Wiki</a>. Man sollte diese ggfs. nach seinen eigenen Bedürfnissen erweitern/abändern. Ich benutze:</p>
<p>[code language="css"]# /etc/ppp/peers/umtscard<br />
/dev/ttyUSB0<br />
connect '/usr/sbin/chat -v -f /etc/ppp/peers/umtscard-chatscript-connect'<br />
disconnect '/usr/sbin/chat -v -f /etc/ppp/peers/umts-chatscript-disconnect'<br />
defaultroute<br />
noipdefault<br />
460800<br />
usepeerdns<br />
nopcomp<br />
local[/code]<br />
[code language="css"]# /etc/ppp/peers/umtscard-chatscript-connect<br />
TIMEOUT         10<br />
ECHO            ON<br />
ABORT           '\nBUSY\r'<br />
ABORT           '\nERROR\r'<br />
ABORT           '\nNO ANSWER\r'<br />
ABORT           '\nNO CARRIER\r'<br />
ABORT           '\nNO DIALTONE\r'<br />
ABORT           '\nRINGING\r\n\r\nRINGING\r'<br />
''              \rAT<br />
TIMEOUT         30<br />
OK              ATZ<br />
OK              AT&amp;F<br />
OK              AT+CPIN=&quot;XXXX&quot;<br />
OK              AT_OPSYS=3,2<br />
TIMEOUT         60<br />
OK              'AT+cgdcont=1,&quot;IP&quot;,&quot;surfo2&quot;'<br />
OK              ATD*99***1#<br />
CONNECT[/code]<br />
[code language="css"]# /etc/ppp/peers/umts-chatscript-disconnect<br />
ABORT           &quot;BUSY&quot;<br />
ABORT           &quot;ERROR&quot;<br />
ABORT           &quot;NO DIALTONE&quot;<br />
SAY             &quot;\nSending break to the modem\n&quot;<br />
&quot;&quot;              &quot;\K&quot;<br />
&quot;&quot;              &quot;\K&quot;<br />
&quot;&quot;              &quot;\K&quot;<br />
&quot;&quot;              &quot;+++ATH&quot;<br />
&quot;&quot;              &quot;+++ATH&quot;<br />
&quot;&quot;              &quot;+++ATH&quot;[/code]</p>
<p align="justify">Mit <em>pon umtscard</em> gehts dann in die Weiten des Internets!</p>
<p>Wer mag, kann das &#8220;Umswitchen&#8221; der Karte auch automatisch beim Einstecken durch udev vornehmen lassen, wie das geht, schaut ihr am Besten direkt auf der Homepage von usb_modeswitch nach.</p>
<p>Eine Warnung zum Schluss: Seid mit den APNs vorsichtig und kontrolliert sie genaustens &#8211; ihr könnt euch sonst eine echt horrende Rechnung bescheren!<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/tests/howto-o2-surf-card-unter-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>mod_auth_mysql, Apache 2.2 und Debian Etch</title>
		<link>http://www.adminlife.net/howtos/mod_auth_mysql-apache-22-und-debian-etch/</link>
		<comments>http://www.adminlife.net/howtos/mod_auth_mysql-apache-22-und-debian-etch/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 16:01:14 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=651</guid>
		<description><![CDATA[Authentifizierung gegen eine MySQL Datenbank mit Apache 2.2 wird dem Anwender unter Debian Etch ziemlich schwer gemacht. Warum? Es gibt das allseits beliebte libapache2-mod-auth-mysql Paket nicht mehr im Etch Repository, da es nicht sauber gegen Apache 2.2 gebaut werden kann. Da ich alle anderen Lösungen für unnötig kompliziert oder zu unsicher halte, hier eine kleine [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Authentifizierung gegen eine MySQL Datenbank mit Apache 2.2 wird dem Anwender unter Debian Etch ziemlich schwer gemacht. Warum? Es gibt das allseits beliebte <a href="http://modauthmysql.sourceforge.net/">libapache2-mod-auth-mysql</a> Paket nicht mehr im Etch Repository, da es nicht sauber gegen Apache 2.2 gebaut werden kann. Da ich alle anderen Lösungen für <a href="http://www.holwegner.com/article/448/fixing-debian-etchs-broken-apache-mod_dbd">unnötig kompliziert</a> oder <a href="http://dev.e-taxonomy.eu/trac/wiki/ApacheMySQLAuthentication#PAM-MySQLAuthentication">zu unsicher</a> halte, hier eine kleine Anleitung, um das Modul per Hand zu kompilieren.</p>
<p><span id="more-651"></span></p>
<p align="justify">Ein installierter Apache wird vorausgesetzt, die restlichen Komponenten werden wie folgt nachinstalliert:</p>
<p>[code language="css"]aptitude install apache2-dev libmysqlclient-dev patch[/code]</p>
<p align="justify">Nun laden wir Quellcode und Patch von der Entwicklerseite herunter, entpacken das heruntergeladene Paket und wechseln in den neu erstellten Ordner:</p>
<p>[code language="css"]wget http://heanet.dl.sourceforge.net/sourceforge/modauthmysql/mod_auth_mysql-3.0.0.tar.gz<br />
wget http://dl.adminlife.net/apache22.diff<br />
tar xzf mod_auth_mysql-3.0.0.tar.gz<br />
mv apache22.diff mod_auth_mysql-3.0.0/<br />
cd mod_auth_mysql-3.0.0[/code]</p>
<p align="justify">Nun wird der Patch angewandt, der eine Funktion mit der in Debian Etch enthaltenen Apache 2.2 Version garantiert:</p>
<p>[code language="css"]patch -p1 &lt;apache22.diff[/code]</p>
<p align="justify">Nun bauen wir das Modul mit <code>apxs2</code> und installieren dieses:</p>
<p>[code language="css"]apxs2 -c -L/usr/lib/mysql -I/usr/include/mysql -lmysqlclient -lm -lz mod_auth_mysql.c<br />
apxs2 -i mod_auth_mysql.la[/code]</p>
<p align="justify">Nun bauen wir uns noch eine Debian-typische <code>.load</code> Datei, um das Modul in Apache zu laden und aktivieren das Modul mit einem Softlink:</p>
<p>[code language="css"]echo &quot;LoadModule mysql_auth_module  /usr/lib/apache2/modules/mod_auth_mysql.so&quot; &gt; /etc/apache2/mods-available/mod_auth_mysql.load<br />
ln -s /etc/apache2/mods-available/mod_auth_mysql.load /etc/apache2/mods-enabled/mod_auth_mysql.load[/code]</p>
<p align="justify">Eine Konfiguration kann wie folgt aussehen:</p>
<p>[code language="css"]&lt;directory /var/www/www.my-vhost.com&gt;<br />
    AuthName &quot;VIP only&quot;</p>
<p>    AuthType Basic<br />
    AuthBasicAuthoritative Off<br />
    AuthGroupFile /dev/null<br />
    AuthUserFile /dev/null<br />
    AuthMySQLEnable On<br />
    AuthMySQLHost localhost<br />
    AuthMySQLUser authuser<br />
    AuthMySQLPassword geheim<br />
    AuthMySQLDB auth<br />
    AuthMySQLUserTable user<br />
    AuthMySQLNameField username<br />
    AuthMySQLPasswordField password<br />
    AuthMySQLPwEncryption md5</p>
<p>    AuthMySQLUserCondition &quot;active = 1&quot;</p>
<p>    AuthMySQLAuthoritative On<br />
    require valid-user<br />
&lt;/directory&gt;[/code]</p>
<p align="justify">Weitere Konfigurationsparameter finden sich in der zugehörigen <a href="http://modauthmysql.sourceforge.net/CONFIGURE">README</a>.</p>
<p align="justify"><strong>Wichtig</strong>: Das Modul arbeitet mit der <a href="http://httpd.apache.org/docs/2.2/mod/worker.html">threadbasierten Version von Apache</a> (<code>apache2-mpm-worker</code>) nicht korrekt zusammen. Tut euch und euren Usern einen Gefallen und nutzt die <a href="http://httpd.apache.org/docs/2.2/mod/prefork.html">klassische Prefork Variante vom Apache</a> (<code>apache2-mpm-prefork</code>), um sporadischen Fehlern bei der Nutzung von mod_auth_mysql aus dem Weg zu gehen.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/mod_auth_mysql-apache-22-und-debian-etch/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Offlinekopie einer Website mit wget</title>
		<link>http://www.adminlife.net/howtos/offlinekopie-einer-website-mit-wget/</link>
		<comments>http://www.adminlife.net/howtos/offlinekopie-einer-website-mit-wget/#comments</comments>
		<pubDate>Thu, 03 Apr 2008 17:37:23 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/?p=638</guid>
		<description><![CDATA[Wer auf die Schnelle einen lokalen Mirror seiner Homepage erstellen will, muss nicht auf spezielle Tools zurückgreifen. Das Standardtool wget(1) macht hier einen exzellenten Job: [code language="css"]wget -m -k -K -E http://www.yoursite.com[/code] Hiermit wird eine Kopie von der angegeben URL in dem lokalen Ordner www.yoursite.com erstellt. Dabei wird bei dynamischem Content die Dateiendung .html hinzugefügt [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Wer auf die Schnelle einen lokalen Mirror seiner Homepage erstellen will, muss nicht auf spezielle Tools zurückgreifen. Das Standardtool <a href="http://www.gnu.org/software/wget/"><code>wget(1)</code></a> macht hier einen exzellenten Job:</p>
<p>[code language="css"]wget -m -k -K -E http://www.yoursite.com[/code]</p>
<p align="justify">Hiermit wird eine Kopie von der angegeben URL in dem lokalen Ordner <code>www.yoursite.com</code> erstellt. Dabei wird bei dynamischem Content die Dateiendung <code>.html</code> hinzugefügt sowie alle internen Verlinkungen und Pfade angepasst.</p>
<p align="justify">Die Bedeutung der verwendeten Parameter im Einzelnen:</p>
<p><strong>-m</strong> Optionen für das Spiegeln (<code>-r -N -l inf --no-remove-listing</code>)<br />
<strong>-k</strong> konvertiert die Links innerhalb der HTML Dokumente<br />
<strong>-K</strong> Sicherung der Originaldateien vor Konvertierung (Dateiendung <code>.orig</code>)<br />
<strong>-E</strong> Anhängen der <code>.html</code> Endung</p>
<p align="justify">Mehr Optionen und eine genauere Beschreibung liefert <code>man wget</code>.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/offlinekopie-einer-website-mit-wget/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Stoppt den Bilderklau mit lighttpd</title>
		<link>http://www.adminlife.net/howtos/stoppt-den-bilderklau-mit-lighttpd/</link>
		<comments>http://www.adminlife.net/howtos/stoppt-den-bilderklau-mit-lighttpd/#comments</comments>
		<pubDate>Fri, 14 Mar 2008 12:30:35 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/stoppt-den-bilderklau-mit-lighttpd/</guid>
		<description><![CDATA[Viele Leute suchen sich ihre Bilder bei Google &#038; Co zusammen und verlinken diese dann direkt auf ihrer Homepage oder eBay Auktion. Zwar kostet Traffic heute lange nicht mehr so viel, wie noch vor einigen Jahren. Dennoch stört der Bilderklau und verfälscht Statistiken. Die Lösung: eine Überprüfung des Referers. Folgender Code wird beim vHost eingetragen, [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Viele Leute suchen sich ihre Bilder bei Google &#038; Co zusammen und verlinken diese dann direkt auf ihrer Homepage oder eBay Auktion. Zwar kostet Traffic heute lange nicht mehr so viel, wie noch vor einigen Jahren. Dennoch stört der Bilderklau und verfälscht Statistiken. Die Lösung: eine Überprüfung des Referers.</p>
<p align="justify">Folgender Code wird beim vHost eingetragen, dessen Bilder geschützt werden sollen:</p>
<p>[sourcecode language="css"]<br />
$HTTP[&quot;referer&quot;] != &quot;http://www.adminlife.net&quot; {<br />
  url.access-deny = ( &quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.png&quot;, &quot;.gif&quot; )<br />
}<br />
[/sourcecode]</p>
<p align="justify">Ab sofort werden Bilder nur noch angezeigt, wenn der Referrer <code>http://www.adminlife.net</code> entspricht.</p>
<p align="justify">Wem das zu radikal ist, der kann mit regulären Ausdrücken weitere Subdomains oder Hosts erlauben. Im folgenden Beispiel werden alle Google Seiten sowie alle meine Domains mit Subdomains erlaubt.</p>
<p>[sourcecode language="css"]<br />
$HTTP[&quot;referer&quot;] !~ &quot;^($|(http|https)://.*\.(google\.*|adminlife\.(net|de|org)))&quot; {<br />
  url.access-deny = ( &quot;.jpg&quot;, &quot;.jpeg&quot;, &quot;.png&quot;, &quot;.gif&quot; )<br />
}<br />
[/sourcecode]<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/stoppt-den-bilderklau-mit-lighttpd/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Howto: Software-RAID 1 unter FreeBSD</title>
		<link>http://www.adminlife.net/howtos/howto-software-raid-1-unter-freebsd/</link>
		<comments>http://www.adminlife.net/howtos/howto-software-raid-1-unter-freebsd/#comments</comments>
		<pubDate>Sat, 19 Jan 2008 09:54:31 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/howto-software-raid-1-unter-freebsd/</guid>
		<description><![CDATA[Um einem FreeBSD Server die nötige Datensicherheit zu geben, muss es nicht immer ein teures Hardware-RAID sein. Ein Software-RAID mit den GEOM Tools bietet gute Performance und hohe Sicherheit zum Nulltarif. Nach der Installation auf einer der beiden Festplatten können wir im laufenden Betrieb das RAID definieren. Dazu müssen wir jedoch zuerst den Sicherheitsschutz der [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Um einem FreeBSD Server die nötige Datensicherheit zu geben, muss es nicht immer ein teures Hardware-RAID sein. Ein Software-RAID mit den <a href="http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/geom.html">GEOM Tools</a> bietet gute Performance und hohe Sicherheit zum Nulltarif.</p>
<p align="justify">Nach der Installation auf einer der beiden Festplatten können wir im laufenden Betrieb das RAID definieren. Dazu müssen wir jedoch zuerst den Sicherheitsschutz der Festplatte im Kernel deaktivieren:<br />
[sourcecode language="css"]# sysctl kern.geom.debugflags=16<br />
kern.geom.debugflags: 0 -&gt; 16[/sourcecode]</p>
<p align="justify">Danach können wir die Platte mit dem Betriebssystem unserem RAID Verbund hinzufügen:</p>
<p>[sourcecode language="css"]# gmirror label -v -b round-robin gm0 /dev/ad0<br />
Metadata value stored on /dev/ad0[/sourcecode]</p>
<p align="justify">Mittels des Parameters <code>-b round-robin</code> wählen wir den <a href="http://de.wikipedia.org/wiki/Round_Robin_(Informatik)">Round-Robin Algorithmus</a> zum Lesen und Schreiben der Daten im RAID Verbund. Weitere Verfahren finden sich in <a href="http://man.cx/gmirror(8)"><code>gmirror(8)</code></a>. Die frisch erstellten RAID Devices finden sich unter <code>/dev/mirror/</code> wieder.<br />
Damit das nötige GEOM Kernel Modul geladen wird und unser RAID 1 beim Bootvorgang erkannt wird, fügen wir folgende Zeile in die <code>loader.conf</code> ein:</p>
<p>[sourcecode language="css"]# echo geom_mirror_load=&quot;YES&quot; &gt;&gt; /boot/loader.conf[/sourcecode]</p>
<p align="justify">Zusätzlich müssen noch die Einträge in der <code>fstab</code> angepasst werden:</p>
<p>[sourcecode language="css"]# sed -i.bak &#8216;s%ad%mirror/gm%&#8217; /etc/fstab[/sourcecode]</p>
<p align="justify">Hierdurch werden Einträge wie <code>/dev/ad0s1a</code> zu <code>/dev/mirror/gm0s1a</code>.<br />
Nun ist es an der Zeit das System neu zu starten. Beim Bootvorgang sollte nun der GEOM Kernel Treiber geladen werden und Meldungen wie diese erscheinen:</p>
<p>[sourcecode language="css"]GEOM_MIRROR: Device gm0 created (id=2125638583).<br />
GEOM_MIRROR: Device gm0: provider ad0 detected.<br />
GEOM_MIRROR: Device gm0: provider ad0 activated.<br />
GEOM_MIRROR: Device gm0: provider mirror/gm0 launched.<br />
GEOM_MIRROR: Device gm0 already configured.<br />
Mounting root from ufs:/dev/mirror/gm0s1a[/sourcecode]</p>
<p align="justify">Wieder im laufenden System hängen wir die zweite Platte ins RAID ein, da ein RAID 1 mit nur einer Festplatte wenig Sinn macht:</p>
<p>[sourcecode language="css"]# gmirror insert gm0 /dev/ad2<br />
GEOM_MIRROR: Device gm0: provider ad2 detected.<br />
GEOM_MIRROR: Device gm0: rebuilding provider ad2.[/sourcecode]</p>
<p align="justify">Die Synchronisierung des RAID Verbunds wird gestartet. Den aktuellen Status können wir uns mit <code>gmirror</code> anschauen:</p>
<p>[sourcecode language="css"]# gmirror list<br />
Geom name: gm0<br />
State: DEGRADED<br />
Components: 2<br />
Balance: round-robin<br />
Slice: 4096<br />
Flags: NONE<br />
GenID: 0<br />
SyncID: 1<br />
ID: 2125638583<br />
Providers:<br />
1. Name: mirror/gm0<br />
   Mediasize: 10262568448 (9.6G)<br />
   Sectorsize: 512<br />
   Mode: r6w5e2<br />
Consumers:<br />
1. Name: ad0<br />
   Mediasize: 10262568448 (9.6G)<br />
   Sectorsize: 512<br />
   Mode: r1w1e1<br />
   State: ACTIVE<br />
   Priority: 0<br />
   Flags: DIRTY<br />
   GenID: 0<br />
   SyncID: 1<br />
   ID: 3986018406<br />
2. Name: ad2<br />
   Mediasize: 10262568448 (9.6G)<br />
   Sectorsize: 512<br />
   Mode: r1w1e1<br />
   State: SYNCHRONIZING<br />
   Priority: 0<br />
   Flags: DIRTY, SYNCHRONIZING<br />
   GenID: 0<br />
   SyncID: 1<br />
   Synchronized: 1%<br />
   ID: 1946262342[/sourcecode]</p>
<p align="justify">Sobald der Rebuild Vorgang abgeschlossen ist, erscheint folgende Meldung:</p>
<p>[sourcecode language="php"]GEOM_MIRROR: Device gm0: rebuilding provider ad2 finished.<br />
GEOM_MIRROR: Device gm0: provider ad2 activated[/sourcecode]</p>
<p align="justify">Unser System ist nun mit einem voll funktionierenden Software-RAID 1 abgesichert. Zur Überwachung empfehle ich <a href="http://www.adminlife.net/tipps/nagios-plugins-fuer-linux-und-freebsd-software-raids/">dieses Nagios Plugin</a>, um bei einer defekten Festplatte schnell reagieren zu können.</p>
<p><a href="http://www.onlamp.com/pub/a/bsd/2005/11/10/FreeBSD_Basics.html">via</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/howto-software-raid-1-unter-freebsd/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Das Dell XPS M1330, HDMI und Linux</title>
		<link>http://www.adminlife.net/howtos/das-dell-xps-m1330-hdmi-und-linux/</link>
		<comments>http://www.adminlife.net/howtos/das-dell-xps-m1330-hdmi-und-linux/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 19:42:46 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/das-dell-xps-m1330-hdmi-und-linux/</guid>
		<description><![CDATA[Letztes Wochenende war ein Videoabend auf einem HDTV angesagt. Zu dieser Gelegenheit wollte ich mal den HDMI Ausgang meines Dell XPS M1330 Notebooks unter Ubuntu Gutsy testen. Dies funktionierte auch ziemlich gut mit der eingebauten nVidia GeForce 8400M GS. Es wurde ein zweiter Bildschirm in der xorg.conf eingerichtet, der dem HDMI Ausgang zugeordnet wurde. Durch [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><img class="aligncenter" src="http://www.adminlife.net/wp-content/uploads/2008/01/dell_xps_m1330_hdmi2.jpg" alt="dell_xps_m1330_hdmi.jpg" /></p>
<p align="justify">Letztes Wochenende war ein Videoabend auf einem HDTV angesagt. Zu dieser Gelegenheit wollte ich mal den <a href="http://de.wikipedia.org/wiki/HDMI">HDMI</a> Ausgang meines <a href="http://www1.euro.dell.com/content/products/productdetails.aspx/xpsnb_m1330?c=de&amp;l=de&amp;s=dhs&amp;cs=dedhs1">Dell XPS M1330</a> Notebooks unter <a href="http://www.ubuntu.com/">Ubuntu Gutsy</a> testen. Dies funktionierte auch ziemlich gut mit der eingebauten nVidia GeForce 8400M GS. Es wurde ein zweiter Bildschirm in der <a href="http://dl.adminlife.net/xorg.conf">xorg.conf</a> eingerichtet, der dem HDMI Ausgang zugeordnet wurde. Durch die folgende Option wurde die Auflösung des angeschlossenen Fernsehers automatisch erkannt:</p>
<p>[sourcecode language="php"]Option         &quot;metamodes&quot; &quot;DFP-1: nvidia-auto-select +0+0&quot;[/sourcecode]</p>
<p align="justify">Leider funktioniert die digitale Audioausgabe über HDMI mit dem bei Ubuntu mitgelieferten Kernel noch nicht, so dass ich auf die alte analoge Variante zurückgreifen musste. Hierbei kam es jedoch zu einer Verzögerung zwischen Bild und Ton von +300ms. Dies lässt sich aber mit <a href="http://www.mplayerhq.hu/">mplayer</a> problemlos einstellen, so dass dem sorglosen Filmgenuß in HD Qualität nichts mehr im Wege stand. Interessierten XPS M1330 Besitzern sowie Besitzern eine nVidia Grafikkarte mit HDMI Ausgang stelle ich meine <a href="http://dl.adminlife.net/xorg.conf">xorg.conf zum Download</a>.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/das-dell-xps-m1330-hdmi-und-linux/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Howto: Status von dd anzeigen lassen</title>
		<link>http://www.adminlife.net/howtos/howto-status-von-dd-anzeigen-lassen/</link>
		<comments>http://www.adminlife.net/howtos/howto-status-von-dd-anzeigen-lassen/#comments</comments>
		<pubDate>Sun, 30 Dec 2007 13:13:23 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/howto-status-von-dd-anzeigen-lassen/</guid>
		<description><![CDATA[dd nutze ich häufig zum Klonen von Festplatten. Nervig ist es da, dass dd per default keine Statusanzeige besitzt, so dass man bei großen Datenmengen keine Informationen über die Dauer des Kopiervorgangs hat. dd reagiert jedoch auf das benutzerdefinierte Signal USR1 bzw. SIGUSR1. Startet man also einen Kopiervorgang im Hintergrund mit: [sourcecode language="css"]# dd if=/dev/sda [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><code>dd</code> nutze ich häufig zum Klonen von Festplatten. Nervig ist es da, dass <code>dd</code> per default keine Statusanzeige besitzt, so dass man bei großen Datenmengen keine Informationen über die Dauer des Kopiervorgangs hat. <code>dd</code> reagiert jedoch auf das benutzerdefinierte Signal <code>USR1</code> bzw. <code>SIGUSR1</code>. Startet man also einen Kopiervorgang im Hintergrund mit:</p>
<p>[sourcecode language="css"]# dd if=/dev/sda of=/dev/sdb &amp;<br />
[1] 8512[/sourcecode]</p>
<p align="justify">kann man das Signal <code>USR1</code> (Signal Nummer 10) mit <code>kill</code> an den <code>dd</code> Prozess schicken:</p>
<p>[sourcecode language="css"]# kill -USR1 8512<br />
17798625+0 Datensätze ein<br />
17798624+0 Datensätze aus<br />
9112895488 Bytes (9,1 GB) kopiert, 272,58 Sekunden, 33,4 MB/s[/sourcecode]</p>
<p align="justify">So hat man den Kopiervorgang im Blick und kann die ungefähre Dauer abschätzen.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/howto-status-von-dd-anzeigen-lassen/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>FreeBSD mit dem GRUB Bootloader starten</title>
		<link>http://www.adminlife.net/howtos/freebsd-mit-dem-grub-bootloader-starten/</link>
		<comments>http://www.adminlife.net/howtos/freebsd-mit-dem-grub-bootloader-starten/#comments</comments>
		<pubDate>Sun, 02 Dec 2007 15:25:06 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[ad]]></category>
		<category><![CDATA[ata]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bootloader]]></category>
		<category><![CDATA[bsd]]></category>
		<category><![CDATA[festplatte]]></category>
		<category><![CDATA[freebsd]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[load]]></category>
		<category><![CDATA[loader]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[partition]]></category>
		<category><![CDATA[root]]></category>
		<category><![CDATA[slice]]></category>
		<category><![CDATA[start]]></category>
		<category><![CDATA[starten]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/freebsd-mit-dem-grub-bootloader-starten/</guid>
		<description><![CDATA[Möchte man FreeBSD und Linux parallel auf einer Maschine installieren und nutzt GRUB als Bootloader, so kann man mit folgendem Eintrag in der /boot/grub/menu.lst FreeBSD auswählen und starten. [sourcecode language="css"]title FreeBSD root (hd0,3,a) kernel /boot/loader[/sourcecode] Im obigen Beispiel ist FreeBSD auf der vierten Partition der Master ATA Festplatte des primären IDE Channels installiert. Unter Linux [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Möchte man <a href="http://www.freebsd.org">FreeBSD</a> und Linux parallel auf einer Maschine installieren und nutzt <a href="http://www.gnu.org/software/grub/">GRUB</a> als Bootloader, so kann man mit folgendem Eintrag in der <code>/boot/grub/menu.lst</code> FreeBSD auswählen und starten.</p>
<p>[sourcecode language="css"]title FreeBSD<br />
root (hd0,3,a)<br />
kernel /boot/loader[/sourcecode]</p>
<p align="justify">Im obigen Beispiel ist FreeBSD auf der vierten Partition der Master ATA Festplatte des primären IDE Channels installiert. Unter Linux wäre dies dementsprechend die Partition <code>hda3</code> und unter FreeBSD das Slice <code>ad0s4</code>. Das root-Dateisystem von FreeBSD befindet sich auf der ersten Partition <code>ad0s4a</code>. Aufgerufen wird nicht direkt der Kernel, wie bei Linux üblich, sondern der <a href="http://www.freebsd.org/doc/de_DE.ISO8859-1/books/handbook/install-start.html#BOOT-LOADER-MENU">FreeBSD Loader</a>.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/freebsd-mit-dem-grub-bootloader-starten/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Howto: Service unter Windows installieren</title>
		<link>http://www.adminlife.net/howtos/howto-service-unter-windows-installieren/</link>
		<comments>http://www.adminlife.net/howtos/howto-service-unter-windows-installieren/#comments</comments>
		<pubDate>Wed, 31 Oct 2007 11:50:39 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[2003]]></category>
		<category><![CDATA[cmd]]></category>
		<category><![CDATA[command]]></category>
		<category><![CDATA[dienst]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[einfach]]></category>
		<category><![CDATA[eingabeaufforderung]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[instsrv]]></category>
		<category><![CDATA[instsrv.exe]]></category>
		<category><![CDATA[l]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[regedit]]></category>
		<category><![CDATA[registriy]]></category>
		<category><![CDATA[schnell]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[service]]></category>
		<category><![CDATA[services]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[wie]]></category>
		<category><![CDATA[win2k]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/howto-service-unter-windows-installieren/</guid>
		<description><![CDATA[Eben wollte ich auf die Schnelle einen Service unter einem Windows 2000 Server installieren. &#8220;Kann ja nicht allzu schwer sein&#8221; dachte ich mir. Nur ist das ohne Weiteres nicht mit den mitgelieferten Bordmitteln zu bewerkstelligen. Mit einem kleinen Kommandozeilentool namens instsrv ist die Prozedur jedoch eine Sache von nur einer Minute: [sourcecode language="css"]instsrv.exe dienst_name C:\pfad\zur\service.exe[/sourcecode] [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Eben wollte ich auf die Schnelle einen Service unter einem Windows 2000 Server installieren. &#8220;Kann ja nicht allzu schwer sein&#8221; dachte ich mir. Nur ist das ohne Weiteres nicht mit den mitgelieferten Bordmitteln zu bewerkstelligen. Mit einem kleinen Kommandozeilentool namens <a href="http://dl.adminlife.net/instsrv.exe">instsrv</a> ist die Prozedur jedoch eine Sache von nur einer Minute:</p>
<p>[sourcecode language="css"]instsrv.exe dienst_name C:\pfad\zur\service.exe[/sourcecode]</p>
<p align="justify">Schon wird der Dienst installiert und kann im Dienstemanager angepasst werden. Zusätzlich lassen sich auch weitere Einstellungen in der Registry unter <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\dienst_name</code> machen.</p>
<p align="justify">Löschen kann man einen Service wie folgt:</p>
<p>[sourcecode language="css"]instsrv.exe dienst_name remove[/sourcecode]</p>
<p align="justify">Da lob ich mir doch mein LINUX/*NIX &#8211; da geht das bedeutend einfacher mit Bordmitteln.</p>
<p><a href="http://dl.adminlife.net/instsrv.exe">Download instsrv.exe</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/howto-service-unter-windows-installieren/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Wildcard SSL Zertifikat mit OpenSSL erstellen</title>
		<link>http://www.adminlife.net/howtos/wildcard-ssl-zertifikat-mit-openssl-erstellen/</link>
		<comments>http://www.adminlife.net/howtos/wildcard-ssl-zertifikat-mit-openssl-erstellen/#comments</comments>
		<pubDate>Wed, 17 Oct 2007 11:56:23 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[adresse]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dienste]]></category>
		<category><![CDATA[dom]]></category>
		<category><![CDATA[domain]]></category>
		<category><![CDATA[erstellen]]></category>
		<category><![CDATA[iis]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[key]]></category>
		<category><![CDATA[lighttpd]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mail]]></category>
		<category><![CDATA[openssl]]></category>
		<category><![CDATA[pem]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[selbstsigniert]]></category>
		<category><![CDATA[self signed]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[sig]]></category>
		<category><![CDATA[subdomains]]></category>
		<category><![CDATA[tls]]></category>
		<category><![CDATA[umsonst]]></category>
		<category><![CDATA[verschl]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wie]]></category>
		<category><![CDATA[wildcard]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[zertifikat]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/wildcard-ssl-zertifikat-mit-openssl-erstellen/</guid>
		<description><![CDATA[Mit Wildcard Zertifikaten kann man beliebig viele Subdomains unterhalb einer Domain mit nur einem Zertifikat erstellen. Dies ist besonders praktisch, wenn man mehrere Dienste unter einer Domain anbietet und somit typische Domains wie www.domain.tld, ftp.domain.tld oder mail.domain.tld besitzt. Um ein solches selbstsigniertes Zertifikat mit OpenSSL mit einer Gültigkeitsdauer von einem Jahr für die Subdomains von [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Mit Wildcard Zertifikaten kann man beliebig viele Subdomains unterhalb einer Domain mit nur einem Zertifikat erstellen. Dies ist besonders praktisch, wenn man mehrere Dienste unter einer Domain anbietet und somit typische Domains wie <code>www.domain.tld</code>, <code>ftp.domain.tld</code> oder <code>mail.domain.tld</code> besitzt.</p>
<p align="justify">Um ein solches selbstsigniertes Zertifikat mit OpenSSL mit einer Gültigkeitsdauer von einem Jahr für die Subdomains von <code>domain.tld</code> zu erstellen, geht man wie folgt vor:</p>
<p>[sourcecode language="css"]openssl req -new -x509 -keyout cert.pem -out cert.pem -days 365 -nodes[/sourcecode]<br />
[sourcecode language="css"]Country Name (2 letter code) [AU]:DE<br />
State or Province Name (full name) [Some-State]:Germany<br />
Locality Name (eg, city) []:meineStadt<br />
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Firma<br />
Organizational Unit Name (eg, section) []:Abteilung<br />
Common Name (eg, YOUR name) []:*.domain.tld<br />
Email Address []:webmaster@domain.tld[/sourcecode]</p>
<p align="justify">Man erhält die Datei <code>cert.pem</code>, die das soeben erzeugte Zertifikat enthält. Dieses kann man nun problemlos in verschiedensten Programmen für alle Subdomains unterhalb von <code>domain.tld</code> nutzen.</p>
<p align="justify">Links:<br />
<a href="http://de.wikipedia.org/wiki/Transport_Layer_Security" target="_blank">TLS/SSL bei Wikipedia</a><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/wildcard-ssl-zertifikat-mit-openssl-erstellen/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>Linux Kernel backen &#8211; the Debian Way</title>
		<link>http://www.adminlife.net/howtos/linux-kernel-backen-the-debian-way/</link>
		<comments>http://www.adminlife.net/howtos/linux-kernel-backen-the-debian-way/#comments</comments>
		<pubDate>Sun, 14 Oct 2007 16:25:32 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[anleitung]]></category>
		<category><![CDATA[apt]]></category>
		<category><![CDATA[aptitude]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[bzimage]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[dapper]]></category>
		<category><![CDATA[datei]]></category>
		<category><![CDATA[deb]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[etch]]></category>
		<category><![CDATA[feisty]]></category>
		<category><![CDATA[grub]]></category>
		<category><![CDATA[gutsy]]></category>
		<category><![CDATA[headers]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[img]]></category>
		<category><![CDATA[initrd]]></category>
		<category><![CDATA[install]]></category>
		<category><![CDATA[installieren]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[konfiguration]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[make-kpkg]]></category>
		<category><![CDATA[manual]]></category>
		<category><![CDATA[neu]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[paket]]></category>
		<category><![CDATA[pakete]]></category>
		<category><![CDATA[quelle]]></category>
		<category><![CDATA[sourcen]]></category>
		<category><![CDATA[src]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[update]]></category>
		<category><![CDATA[wie]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/linux-kernel-backen-the-debian-way/</guid>
		<description><![CDATA[Braucht man unter Debian Etch (bzw. Ubuntu Linux) einen Treiber oder ein Feature, das im 2.6.18er Linux Kernel nicht verfügbar ist, so muss man sich selbst einen Kernel kompilieren. Natürlich möchte man hierbei möglichst wenig Aufwand betreiben und so nahe wie möglich an der Debian Paketverwaltung bleiben, um das System konsistent zu halten. Aus diesem [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Braucht man unter <a href="http://www.debian.org">Debian Etch</a> (bzw. <a href="http://www.ubuntu.com">Ubuntu Linux</a>) einen Treiber oder ein Feature, das im 2.6.18er Linux Kernel nicht verfügbar ist, so muss man sich selbst einen Kernel kompilieren. Natürlich möchte man hierbei möglichst wenig Aufwand betreiben und so nahe wie möglich an der Debian Paketverwaltung bleiben, um das System konsistent zu halten. Aus diesem Grund bietet Debian für das Erstellen und Kompilieren eines eigenen Kernels das Paket <code>kernel-package</code> an.</p>
<p> <span id="more-444"></span></p>
<p align="justify">Nebem diesem Paket sollten wir zwei weitere Pakete installieren, um unseren Kernel zu konfigurieren:</p>
<pre><code>aptitude install kernel-package build-essential libncurses5-dev</code></pre>
<p align="justify">Hat man zusätzlich <code>build-essential</code> mit notwendigen Programmen zum Übersetzen von Quellcode und <code>libncurses5-dev</code> zur übersichtlicheren Konfiguration des Kernels installiert, macht man sich an das Herunterladen eines aktuellen Kernels auf <a href="ftp://ftp.kernel.org/pub/linux/kernel/v2.6/">www.kernel.org</a>. Hat man seinen Wunschkernel gefunden, lädt man diesen runter und entpackt ihn z.B. nach <code>/usr/src/</code> und linkt die Kernelsources dann traditionell nach <code>/usr/src/linux</code>:</p>
<pre><code>tar xjvf linux-2.6.xx.tar.bz2 -C /usr/src
ln -s /usr/src/linux-2.6.xx /usr/src/linux</code></pre>
<p align="justify">Nun kopieren wir die Kernelkonfiguration des mitgelieferten Debian Kernels in das Verzeichnis, in dem die eben entpackten Kernelquellen liegen. Dies hat den Vorteil, dass wir von einer funktionierenden Kernelkonfiguration ausgehen können.</p>
<pre><code>cp /boot/config-`uname -r` /usr/src/linux/.config</code></pre>
<p align="justify">Nun geht es ans Konfigurieren. Zuerst gehen wir die alte Konfiguration durch und überprüfen dabei neue Features, die wir in den Kernel aufnehmen wollen oder nicht. Danach sollte man auf jeden Fall noch einmal einen Blick in die Konfiguration werfen und möglichen Ballast wie nicht genutzte Treiber und Features rauswerfen.</p>
<pre><code>cd /usr/src/linux
make oldconfig
make menuconfig</code></pre>
<p align="justify">Nun können wir den Kernel kompilieren und dabei die *.deb Pakete für Debian erstellen.</p>
<pre><code>make-kpkg buildpackage --revision 20071014 --initrd</code></pre>
<p align="justify">Mit dem Parameter <code>buildpackage</code> geben wir an, dass wir alle Pakete bauen lassen wollen:</p>
<ul>
<li><code>linux-doc</code></li>
<li><code>linux-headers</code></li>
<li><code>linux-image</code></li>
<li><code>linux-manual</code></li>
<li><code>linux-source</code></li>
</ul>
<p align="justify"><code>make-kpkg --targets</code> gibt einen Überblick über die möglichen Ziele. Mit <code>--revision</code> geben wir die Revision des Debian Paketes an. Hierdurch verliert man nicht den Überblick, auch wenn man mehrere Kernelpakete der gleichen Version baut. Um die benötigte <a href="http://de.wikipedia.org/wiki/Initrd">initial ramdisk</a> zu erstellen, fügen wir den Parameter <code>--initrd</code> hinzu. Benötigen wir keine Module und bauen alles fest in den Kernel ein, kann man auf die RAM-Disk verzichten. Weitere nützliche Optionen von <code>make-kpkg</code> finden sich in der zugehörigen man-Page.</p>
<p align="justify">Nachdem der Kernel kompiliert ist und alle Pakete erstellt worden sind, finden sich diese unter <code>/usr/src</code> wieder. Die *.deb-Pakete lassen sich wie gewohnt installieren:</p>
<pre><code>dpkg -i linux-(doc|headers|image|manual|source)-2.6.xx_rev_arch.deb</code></pre>
<p align="justify">Um nur den Kernel zu installieren, reicht das Paket <code>linux-image-2.6.xx_rev_arch</code> aus. Dabei werden alle benötigten Dateien nach /boot kopiert, die RAM-Disk erstellt und <code>update-grub</code> ausgeführt. Hierbei kann jedoch eine Zeile in der <code>/boot/grub/menu.lst</code> fehlen, die nachgetragen werden muss um eine <code>Kernel Panic</code> bei benötigter RAM-Disk zu verhindern:</p>
<pre><code>initrd          /boot/initrd.img-2.6.xx</code></pre>
<p align="justify">Nun sollte man einen Neustart wagen und überprüfen ob alles wunschgemäß funktioniert. Mit <code>uname -r</code> sollte man die neue Kernelversion angezeigt bekommen.</p>
<p align="justify">Auf diese Art und Weise erhält man einen aktuellen Kernel für sein Debian System, der vom Paketsystem erkannt und somit nicht durch ein (Kernel-)Update beeinträchtigt wird. Natürlich ist man für Updates des Kernels in diesem Fall selber zuständig und muss Kernelpatches bei Bedarf in Eigenregie auf die gleiche Art und Weise einspielen.</p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/linux-kernel-backen-the-debian-way/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Asus M2A-VM HDMI: zu wenig RAM unter Linux</title>
		<link>http://www.adminlife.net/adminlife/m2a-vm-hdmi-zu-wenig-ram-unter-linux/</link>
		<comments>http://www.adminlife.net/adminlife/m2a-vm-hdmi-zu-wenig-ram-unter-linux/#comments</comments>
		<pubDate>Sat, 13 Oct 2007 11:34:44 +0000</pubDate>
		<dc:creator>stefan</dc:creator>
				<category><![CDATA[adminlife]]></category>
		<category><![CDATA[howtos]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/tipps-und-tricks/m2a-vm-hdmi-zu-wenig-ram-unter-linux/</guid>
		<description><![CDATA[Ich habe mir kürzlich ein Asus M2A-VM HDMI Mainboard mit 2x 1GB RAM gekauft. Leider zeigte &#8220;free&#8221; nur 896MB Ram an. &#8220;dmesg&#8221; offenbarte folgendes: Warning only 896MB will be used. Use a HIGHMEM enabled kernel. 896MB LOWMEM available. HIGHMEM, aha! Also habe ich schnell per make menuconfig in die Kernel Konfiguration geschaut und folgendes aktiviert: [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Ich habe mir kürzlich ein Asus M2A-VM HDMI Mainboard mit 2x 1GB RAM gekauft. Leider zeigte &#8220;free&#8221; nur 896MB Ram an. &#8220;dmesg&#8221; offenbarte folgendes:</p>
<p align="justify"><em> Warning only 896MB will be used.<br />
Use a HIGHMEM enabled kernel.<br />
896MB LOWMEM available.</em></p>
<p align="justify">HIGHMEM, aha! Also habe ich schnell per make menuconfig in die Kernel Konfiguration geschaut und folgendes aktiviert:</p>
<p align="justify">-&gt; Processor type and features -&gt; High Memory Support -&gt; 4GB</p>
<p align="justify">Nach kurzer Compilierzeit und einen Neustart wird nun der weitere RAM (abzüglich 128MB für die onboard Grafik) auch erkennt. <img src='http://www.adminlife.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/adminlife/m2a-vm-hdmi-zu-wenig-ram-unter-linux/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Unison: Desktop und Laptop synchronisieren</title>
		<link>http://www.adminlife.net/howtos/unison-desktop-und-laptop-synchronisieren/</link>
		<comments>http://www.adminlife.net/howtos/unison-desktop-und-laptop-synchronisieren/#comments</comments>
		<pubDate>Tue, 02 Oct 2007 18:22:44 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[abgleich]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[daten]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[downloads]]></category>
		<category><![CDATA[einfach]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[laptop]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mac os]]></category>
		<category><![CDATA[mobil]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[notebook]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[pc]]></category>
		<category><![CDATA[programm]]></category>
		<category><![CDATA[rsync]]></category>
		<category><![CDATA[schnell]]></category>
		<category><![CDATA[socket]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[synchronisation]]></category>
		<category><![CDATA[synchronisieren]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[unison]]></category>
		<category><![CDATA[verbindung]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/unison-desktop-und-laptop-synchronisieren/</guid>
		<description><![CDATA[Wer zwei Systeme parallel betreibt kennt vielleicht das Problem: Unterschiedliche Datenbestände. Wie kann man bei zwei Systemen seine Daten synchron halten, ohne viel Handarbeit zu leisten? Unter Linux denkt man hier zuerst an rsync, nur ist dieses Programm nicht das Mittel der Wahl. Es ist dafür gedacht die Daten in eine Richtung abzugleichen. Was aber, [...]]]></description>
			<content:encoded><![CDATA[<p align="justify"><img class="alignright" src="http://www.adminlife.net/wp-content/uploads/2007/10/unison2.gif" alt="unison.gif" align="right" />Wer zwei Systeme parallel betreibt kennt vielleicht das Problem: Unterschiedliche Datenbestände. Wie kann man bei zwei Systemen seine Daten synchron halten, ohne viel Handarbeit zu leisten? Unter Linux denkt man hier zuerst an <a href="http://samba.anu.edu.au/rsync/" target="_blank">rsync</a>, nur ist dieses Programm nicht das Mittel der Wahl. Es ist dafür gedacht die Daten in eine Richtung abzugleichen. Was aber, wenn man Desktop und Notebook gleichzeitig nutzt und Änderungen auf beiden Systemen zusammenführen möchte? Hier kommt <a href="http://www.cis.upenn.edu/~bcpierce/unison/" target="_blank">Unison</a> ins Spiel.</p>
<p><span id="more-420"></span></p>
<p align="justify">Unison ist sowohl auf Linux als auch auf Windows und Mac OS zu Hause und kann Datenbestände betriebssystemübergreifend synchronisieren. Ähnlich wie bei rsync werden beim Datenabgleich zweier Systeme nur die Daten übertragen, die sich wirklich geändert haben. So werden beispielsweise bei einer Logdatei, an deren Ende fortlaufend neue Einträge geschrieben werden, nur die neu angehängten Daten übertragen, anstatt die komplette Datei neu zu transferieren. Dies spart Zeit und Bandbreite, insbesondere beim Abgleich über das Internet.</p>
<p align="justify">Als Übertragungsprotokoll kann neben einer sicheren SSH-Verbindung auch eine unverschlüsselte Socket-Verbindung genutzt werden. Die Socket-Verbindung macht im eigenen LAN bei großen Dateien aufgrund der besseren Performance Sinn, über das Internet sollte man jedoch eine SSH-Verbindung bevorzugen.</p>
<p align="justify">Unison kann Verzeichnisse und Dateien direkt per Kommandozeilenaufruf oder mit voreingestellten Profilen synchronisieren. Im folgenden Beispiel mache ich Gebrauch von den Profilen, durch welche die tägliche Arbeit mit Unison deutlich vereinfacht wird. Profile legt Unison unter <code>~/.unison</code> mit der Dateiendung <code>*.prf</code> ab. Ein einfaches Profil namens <code>default.prf</code> könnte wie folgt aussehen:</p>
<p>[sourcecode language="css"]# System A<br />
root = /home/matthias<br />
# System B<br />
root = ssh://192.168.0.50//home/matthias</p>
<p>path = home<br />
path = work[/sourcecode]</p>
<p align="justify">Zuerst definiert man das lokale Wurzelverzeichnis sowie das entfernte Pendant auf dem Zielsystem. Im obrigen Fall also (m)einen Heimatordner. Mit der Variable <code>path</code> werden diejenigen Verzeichnisse unterhalb des root-Verzeichnisses angegeben, die letztendlich auf den Systemen abgeglichen werden sollen.</p>
<p align="justify">Der Aufruf von Unison mittels</p>
<p>[sourcecode language="css"]unison default[/sourcecode]</p>
<p align="justify">startet nun den Synchronisierungsprozess. Dabei muss auf dem Zielsystem ebenfalls eine Version von Unison installiert sein. Es wird auf beiden Systemen eine Unison Archivdatei erstellt, die Hashwerte von den vorhandenen Dateien enthält. Daraufhin beginnt der Abgleichprozess. Sollte es sich um den ersten Lauf von Unison handeln, werden alle vorhandenen Dateien zwischen System A System B kopiert, so dass auf beiden Systemen alle Dateien verfügbar sind.</p>
<p align="justify">Werden nun sowohl auf  A als auch auf B Dateien geändert, hinzugefügt oder entfernt kann man einen erneuten Aufruf von Unison starten. Das Programm erkennt die Änderungen auf beiden Systemen und schlägt die Standardaktionen (erstellen, löschen, ändern) vor. Startet man Unison mit dem Parameter <code>-auto</code> werden Standardaktionen immer durchgeführt. Nur bei Konflikten wird der Eingriff des Benutzers verlangt. Ein Konflikt besteht, wenn dieselbe Datei auf beiden Systemen verändert wurde. Ist dies eine einfache Textdatei, so erlaubt Unison jedoch das interaktive Mergen der Datei.</p>
<p align="justify">Unison bietet viele weitere Parameter, die sich im <a href="http://www.cis.upenn.edu/~bcpierce/unison/download/releases/stable/unison-manual.html" target="_blank">offiziellen Handbuch</a> nachlesen lassen.</p>
<p align="justify">Links:<br />
<a href="http://www.cis.upenn.edu/~bcpierce/unison/" target="_blank">Unison Homepage</a></p>
<p><!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/unison-desktop-und-laptop-synchronisieren/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Howto: Rebuild eines Linux Software-RAIDs</title>
		<link>http://www.adminlife.net/howtos/howto-rebuild-eines-linux-software-raids/</link>
		<comments>http://www.adminlife.net/howtos/howto-rebuild-eines-linux-software-raids/#comments</comments>
		<pubDate>Wed, 12 Sep 2007 14:58:32 +0000</pubDate>
		<dc:creator>matthias</dc:creator>
				<category><![CDATA[howtos]]></category>
		<category><![CDATA[dd]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[device]]></category>
		<category><![CDATA[festplatte]]></category>
		<category><![CDATA[gentoo]]></category>
		<category><![CDATA[harddisk]]></category>
		<category><![CDATA[hdd]]></category>
		<category><![CDATA[hotswap]]></category>
		<category><![CDATA[ide]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[master boot record]]></category>
		<category><![CDATA[mbr]]></category>
		<category><![CDATA[md0]]></category>
		<category><![CDATA[md1]]></category>
		<category><![CDATA[mdadm]]></category>
		<category><![CDATA[mdstat]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[partition]]></category>
		<category><![CDATA[partition table]]></category>
		<category><![CDATA[partitionstabelle]]></category>
		<category><![CDATA[raid]]></category>
		<category><![CDATA[raid1]]></category>
		<category><![CDATA[read]]></category>
		<category><![CDATA[rebuild]]></category>
		<category><![CDATA[restore]]></category>
		<category><![CDATA[sata]]></category>
		<category><![CDATA[scsi]]></category>
		<category><![CDATA[sda]]></category>
		<category><![CDATA[sdb]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[softwareraid]]></category>
		<category><![CDATA[swap]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[wechsel]]></category>

		<guid isPermaLink="false">http://www.adminlife.net/howto/howto-rebuild-eines-linux-software-raids/</guid>
		<description><![CDATA[Software-RAIDs unter Linux sind eine kostengünstige und flexible Möglichkeit den Speicher eines Servers redundant auszulegen. Doch wie tauscht man eine defekte Platte im Fall der Fälle aus? Hier gibt es einige Schritte zu befolgen, um sein RAID wieder zum Laufen zu bekommen. Im folgenden Beispiel haben wir ein RAID1 mit den Laufwerken /dev/sda und /dev/sdb. [...]]]></description>
			<content:encoded><![CDATA[<p align="justify">Software-RAIDs unter Linux sind eine kostengünstige und flexible Möglichkeit den Speicher eines Servers redundant auszulegen. Doch wie tauscht man eine defekte Platte im Fall der Fälle aus? Hier gibt es einige Schritte zu befolgen, um sein RAID wieder zum Laufen zu bekommen.</p>
<p align="justify"><span id="more-383"></span>Im folgenden Beispiel haben wir ein RAID1 mit den Laufwerken <code>/dev/sda</code> und <code>/dev/sdb</code>. Die Festplatten sind in drei primäre Partitionen unterteilt:</p>
<p>[sourcecode language="css"]/dev/sdX1        /boot<br />
/dev/sdX2        swap<br />
/dev/sdX3        /[/sourcecode]<br />
Folglich haben wir 2 RAID Arrays (Swap im RAID1 macht wenig Sinn):<br />
[sourcecode language="css"]/dev/md0        /boot<br />
/dev/md1        /[/sourcecode]</p>
<p align="justify">In unserem Beispiel fällt die zweite Festplatte &#8211; <code>/dev/sdb</code> &#8211; aus. Um einen Ersatz einzubauen, nehmen wir zuerst die defekte Platte aus dem laufenden RAID Array:</p>
<p>[sourcecode language="css"]mdadm /dev/md0 -r /dev/sdb1<br />
mdadm /dev/md1 -r /dev/sdb3[/sourcecode]</p>
<p align="justify">Danach können wir die defekte Platte austauschen (evtl. muss das System heruntergefahren werden). Nach dem Wechsel müssen wir das Partitionslayout auf die Ersatzplatte spielen. In unserem Beispiel ist dies recht einfach, da wir keine erweiterten Partitionen haben:</p>
<p>[sourcecode language="css"]dd if=/dev/sda of=/dev/sdb bs=512 count=1[/sourcecode]</p>
<p align="justify">Hiermit kopieren wir den MBR (Größe = 512 Byte) auf die neue Festplatte. Handelt es sich bei dem Festplattenschema um ein Konstrukt mit erweiterteten Partitionen, müssen diese zusätzlich einzeln angelegt werden. Hierzu schauen wir uns mit <code>fdisk</code> das Partitionsschema an:</p>
<p>[sourcecode language="css"]fdisk -ul /dev/sda[/sourcecode]</p>
<p align="justify">Wir merken uns die Startwerte der erweiterteten Partitionen und übergeben diesen Wert an die Parameter <code>skip</code> und <code>seek</code> von <code>dd</code>:</p>
<p>[sourcecode language="css"]dd if=/dev/sda of=/dev/sdb count=1 skip=STARTWERT seek=STARTWERT[/sourcecode]</p>
<p align="justify">Nachdem wir das Partitionslayout komplett übernommen haben, teilen wir dies brav dem Kernel mit:</p>
<p>[sourcecode language="css"]blockdev Ã¢â‚¬â€œ-rereadpt /dev/sdb[/sourcecode]<br />
Jetzt können wir mit dem Rebuild des RAIDs beginnen:<br />
[sourcecode language="css"]mdadm /dev/md0 -a /dev/sdb1<br />
mdadm /dev/md1 -a /dev/sdb3[/sourcecode]<br />
Den Status kann man jederzeit aus der Datei <code>/proc/mdstat</code> auslesen, z.B. mit<br />
[sourcecode language="css"]watch -n1 cat /proc/mdstat[/sourcecode]<br />
Nun erstellen wir noch den Swapspace auf neuen Festplatte:<br />
[sourcecode language="css"]mkswap /dev/sdb2[/sourcecode]<br />
und hängen den Swapspace ins laufende System ein:<br />
[sourcecode language="css"]swapon /dev/sdb2[/sourcecode]<br />
Schon ist unser RAID wieder voll einsatzbereit.<!-- PHP 5.x --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.adminlife.net/howtos/howto-rebuild-eines-linux-software-raids/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 7.873 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-02-04 17:20:13 -->

