<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>de.credativ-Blog: Kategorie Linux</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/" />
    <link rel="self" type="application/atom+xml" href="http://blog.credativ.com/de/atom.xml" />
    <id>tag:blog.credativ.com,2010-03-05:/de//1</id>
    <updated>2010-11-11T09:40:32Z</updated>
    <subtitle>All about Linux and Open Source</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.34-en</generator>

<entry>
    <title>[Howto] SASL mit Postfix via MySQL und libsasl-auxprop [Update]</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/06/howto-sasl-mit-postfix-via-mysql-und-saslauthdrimap-auf-centos.html" />
    <id>tag:blog.credativ.com,2010:/de//1.168</id>

    <published>2010-06-28T10:30:00Z</published>
    <updated>2010-11-11T09:40:32Z</updated>

    <summary>Um Postfix als SMTP-Server für viele Nutzer anzubieten, muss er auf eine Nutzerdatenbank zurück greifen. Dieser Artikel zeigt am Beispiel der Groupware Zarafa, wie Postfix via libsasl mit einer MySQL-Nutzerdatenbank verknüpft wird. Mit Hilfe von SASL können Nutzer sich gegen...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Um Postfix als SMTP-Server für viele Nutzer anzubieten, muss er auf eine Nutzerdatenbank zurück greifen. Dieser Artikel zeigt am Beispiel der Groupware Zarafa, wie Postfix via libsasl mit einer MySQL-Nutzerdatenbank verknüpft wird.</em></p>

<p>Mit Hilfe von <a href="http://de.wikipedia.org/wiki/Simple_Authentication_and_Security_Layer">SASL</a> können Nutzer sich gegen Postfix authentifizieren und E-Mails einliefern, damit dieser die weiter zustellt. Dies ist zum Beispiel interessant, wenn der Postfix als zentraler MTA für eine Firma oder größere Institution genutzt werden soll.</p>

<p>Die Schwierigkeit besteht darin, eine vorhandene Nutzerdatenbank einzubinden, hier die MySQL-DB der Groupware Zarafa. Häufig wird dabei auf PAM zurückgegriffen: Postfix authentifiziert gegen PAM, via PAM kann eine Vielzahl verschiedenster Plugins angebunden werden, um z.B. auch auf Datenbanken zurück zu greifen. Ein anderer Weg ist, die Bibliothek libsasl des Cyrus-Projekts zu nutzen, da dies ebenfalls auf verschiedene Plugins zurückgreifen kann.</p>

<p>Dafür muss im ersten Schritt Postfix in der <tt>main.cf</tt> für die Authentifizierung gegen SASL fit gemacht werden:<br />
</p>
<pre class='brush: text'>
smtpd_sasl_auth_enable = yes
broken_sasl_auth_clients = yes
smtpd_sasl_path = smtpd
smtpd_sender_restrictions = permit_sasl_authenticated, ...
</pre><p></p>

<p><tt>saslauthd</tt> wird nicht direkt aufgerufen, es wird nur die libsasl-Bibliothek genutzt. Daher kann <tt>/etc/sysconfig/saslauthd</tt> auf den Standardwerten bleiben. Der Dienst selbst braucht nicht gestartet werden!</p>

<p>Es fehlt aber noch die eigentliche Konfiguration, in der unter Anderem auch die Syntax der MySQL-Abfrage definiert wird. Diese Konfiguration wird in der <tt>smtpd.conf</tt> definiert, die standardmäßig unter <tt>/usr/lib/sasl2/</tt> erwartet wird. Erst wenn sie dort *nicht* vorliegt, wird sie unter <tt>/etc/sasl2/smtpd.conf</tt> erwartet. Warum dort nicht zuerst gesucht wird, entzieht sich meinem Verständnis. Es bietet sich also an, einen symbolischen Link auf die Datei unter <tt>/etc/</tt> zu erstellen...<br />
So oder so muss der Inhalt wie folgt aussehen:<br />
</p>
<pre class='brush: text'>
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: PLAIN LOGIN
allow_plaintext: true
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: zarafa
sql_passwd: ******
sql_database: zarafa
sql_select: select value from objectproperty where objectid=(select objectid from objectproperty where value='%s' limit 1) and propname='loginname'
</pre><p></p>

<p>Dabei müssen die natürlich die Sternchen für das Passwort gegen das tatsächliche Passwort ersetzt werden. Sind alle Komponenten neu gestartet worden, können E-Mails von Nutzern eingeliefert werden, die sich via libsasl gegen die MySQL-Datenbank von Zarafa authentifizieren.</p>

<p>Alle Artikel zum Thema CentOS stehen auch als <a href="http://blog.credativ.com/de/rhelcentos/">eigene Kategorie</a> mit eigenem Feed zur Verfügung. Falls Ihr tiefergehende Fragen zu <a href="http://www.credativ.de/home/software/softwareubersicht/groupware/zarafa/">Support und Services für Zarafa</a> habt, oder euch <a href="http://www.credativ.de/home/software/softwareubersicht/betriebssysteme/centos/">Supportangebote für CentOS</a> interessieren, seid ihr bei uns ebenfalls richtig.</p>

<p><strong>Update:</strong><br />
Ursprünglich hatte ich in diesem Artikel auf saslauthd direkt aufgesetzt, dann aber fälschlicherweise nicht gegen die DB, sondern gegen den IMAP-Server von Zarafa (via rimap) authentifiziert. Danke an Uli in den Kommentaren für den Hinweis. Mehr Infos zu saslauthd, libsasl und den unterschiedlichen Einsatzszenarien finden sich im <a href="http://www.postfix.org/SASL_README.html">SASL-Readme von Postfix</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Google veröffentlicht VP8 Code, gründet Open Web Media Project</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/05/google-veroffentlicht-vp8-code-grundet-open-web-media-project.html" />
    <id>tag:blog.credativ.com,2010:/de//1.164</id>

    <published>2010-05-20T10:37:45Z</published>
    <updated>2010-05-20T10:50:55Z</updated>

    <summary>Google hat den Videocodec VP8 unter einer freien Lizenz veröffentlicht und preist diesen als Standard-Video-Codec für das Internet an. Google hatte On2-Technologies aufgekauft, und im Zuge dessen auch den Video-Codec VP8 übernommen. Dieser wurde nun unter einer freien Lizenz veröffentlicht...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="X11" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Google hat den Videocodec VP8 unter einer freien Lizenz veröffentlicht und preist diesen als Standard-Video-Codec für das Internet an.</em></p>

<p>Google hatte On2-Technologies aufgekauft, und im Zuge dessen auch den Video-Codec VP8 übernommen. Dieser wurde nun unter einer freien Lizenz veröffentlicht und soll dem Willen Googles nach der zukünftige Videostandard des Netzes werden. Das zu diesem Zweck eigenes gegründete <a href="http://www.webmproject.org/">Open Web Media Project</a> soll die Firmen und Projekte hinter dem Video-Codec bündeln und diesem so die notwendige Verbreitung und Akzeptanz sichern.</p>

<p>Hintergrund des Schritts ist, dass es für den HTML5-Video-Standard des WWW bisher keinen einheitlichen Codec gibt: kommerzielle Anbieter setzen meist auf <a href="http://de.wikipedia.org/wiki/H.264/MPEG-4_AVC">H.264</a>, dieser ist jedoch Patentbelastet und erfordert zukünftig Lizenzzahlungen. Freie Projekte setzen daher lieber auf den freien <a href="http://de.wikipedia.org/wiki/Ogg_Theora">Ogg Theora</a> (das übrigens ebenfalls aus einem Video-Codec von On2 hervor gegangen ist), welches aber häufig wegen einer geringeren Qualität gegenüber H.264 kritisiert wird. Kritiker vermuten außerdem auch bei diesem noch nicht bekannte Patente.</p>

<p>Der von Google vorgestellte Codec soll hier Abhilfe schaffen - die Qualität kann sich sehen lassen, und Google selbst hält diverse Patente an dem Codec selbst. Außerdem ist die Zahl der Unterstützer sehr groß. Medienberichten soll auch Microsofts zukünftiger Browser IE 9 VP8 unterstützen sofern er installiert ist, womit von den großen Software-Herstellern nur noch Apple in der Liste der Unterstützer fehlt.</p>

<p>Es bleibt abzuwarten, ob VP8 sich gegen H.264 durchsetzt, oder aber ob es einen Konter der Interessengruppen rund um H.264 gibt, um zum Beispiel dauerhaft zukünftig eine zumindest kostenfreie Version H.264 zu erlauben.</p>

<p>Alle Blog-Artikel zu aktuellen Themen werden auch als <a href="/de/news">Kategorie News</a> samt eigenem Feed angeboten. Wir bieten zu nahezu allen angesprochenen Open-Source-Themen auch unseren gewohnten <a href="http://www.credativ.de/home/open-source-support-center/unser-support-angebot/">Open Source Support</a>.</p>]]>
        
    </content>
</entry>

<entry>
    <title>End of Life für RHEL/CentOS 3 angekündigt</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/05/end-of-life-fur-rhelcentos-3-angekundigt.html" />
    <id>tag:blog.credativ.com,2010:/de//1.163</id>

    <published>2010-05-11T12:18:00Z</published>
    <updated>2010-05-11T12:38:40Z</updated>

    <summary>In 6 Monaten wird RHEL 3 sowie alle davon abgeleiteten Distributionen das Ende ereilen: sie werden ab da nicht mehr mit Sicherheitsupdates versorgt werden. Für Red Hats kommerzielle Linux-Distribution werden regulär 7 Jahre lang Updates angeboten. Für den Zweig 3.x...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Security" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>In 6 Monaten wird RHEL 3 sowie alle davon abgeleiteten Distributionen das Ende ereilen: sie werden ab da nicht mehr mit Sicherheitsupdates versorgt werden.</em></p>

<p>Für Red Hats kommerzielle Linux-Distribution werden regulär 7 Jahre lang Updates angeboten. Für den Zweig 3.x der Distribution nähert sich damit <a href="https://rhn.redhat.com/errata/RHSA-2010-0386.html">das Ende</a>: am 31. Oktober 2010 sind die 7 Jahre um, es wird keinen weiteren Support mehr geben. Dies betrifft auch die Community-Distributionen, die auf den Quellen von RHEL aufbauen, wie <a href="http://www.centos.org/">CentOS</a> und <a href="http://www.scientificlinux.org/">Scientific Linux</a>.</p>

<p>Nutzern der Distribution legen wir ein Upgrade auf eine neuere Version wärmstens ans Herz, da sonst nicht garantiert werden kann, dass die Maschinen zuverlässig und vor allen Dingen sicher weiter laufen. Zur Zeit liegen für alle genannten Distributionen die aktuell noch gepflegten Zweige 4.x und 5.x vor, ein Release des Zweigs 6.x könnte eventuell noch rechtzeitig zum EOL des Zweigs 3.x veröffentlicht werden.<br />
Da solche Upgrades sehr umfangreich und arbeitsaufwendig sein können, bietet sich alternativ auch eine Migration auf eine andere Distribution wie Debian an.</p>

<p>Ein entsprechender Upgrade-Plan sollte aber in jedem Fall bereits jetzt evaluiert werden - tendenziell sind es gerade die Maschinen des sensiblen produktiven Betriebs, die selten angefasst und noch seltener aktualisiert werden. Eine tiefgehende Analyse des Ist-Zustands so wie der Ansprüche, Notwendigkeiten und Bedingungen an das System vor dem Upgrade sind genau so unerlässlich wie Tests auf Staging-Systemen und eine frühzeitige Migration lange vor dem EoL. Wer bis zum letzten Tag wartet, tut sich keinen Gefallen.</p>

<p>Alle Blog-Artikel zum Thema CentOS werden auch als Kategorie <a href="http://blog.credativ.com/de/rhelcentos/">RHEL/CentOS</a> samt eigenem Feed angeboten. Wir bieten natürlich auch <a href="http://www.credativ.de/software/softwareubersicht/betriebssysteme/centos/">Support und Services für CentOS</a> - insbesondere bei Upgrades und Migrationen auf neuere Versionen oder alternative Distributionen.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Tipp] SSH-Jumphosts konfigurieren</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/04/tipp-ssh-jumphosts-konfigurieren.html" />
    <id>tag:blog.credativ.com,2010:/de//1.158</id>

    <published>2010-04-29T11:09:36Z</published>
    <updated>2010-04-29T11:24:38Z</updated>

    <summary> Beim Administrieren von Systemen kommt es häufig zu der Situtaion, dass eine SSH-Verbindung auf Host B nur über den SSH-Umweg via Host A möglich ist: client -&gt; ssh A -&gt; ssh B Um diesen Zweier-Schritt zu verkürzen, kann ein...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Security" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tipp" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><br />
Beim Administrieren von Systemen kommt es häufig zu der Situtaion, dass eine SSH-Verbindung auf Host B nur über den SSH-Umweg via Host A möglich ist:<br />
client -> ssh A -> ssh B</p>

<p>Um diesen Zweier-Schritt zu verkürzen, kann ein Eintrag in der <tt>~/.ssh/config</tt> den Host A als Jumphost markieren, damit dieser Schritt zukünftig automatisch erfolgt:</p>
<pre class='brush: text'>
Host Bdirekt
Hostname $IP_von_B
User rwo 
ProxyCommand ssh root@A.intern.lan nc %h %p
</pre><p><br />
In der ersten Zeile wird ein Alias definiert - dieser kann beliebig sein, ein Bezug zu B ist aber sicherlich nicht falsch. Die zweite Zeile definiert den Hostname von B - bei Bedarf und je nach Netzwerk ist hier die IP sinnvoller als der Hostname! Die Option ProxyCommand definiert dann die eigentliche Jump-Funktion - hier also den Zugriff via ssh auf A und die Weiterleitung der Daten mittels nc.</p>

<p>Sind nun auch SSH-Keys überall ausreichend verteilt, gibt es auch keine Abfragen mehr. Ein simples <tt>ssh Bdirekt</tt> führt dann direkt auf den Host B.</p>

<p>Alle Tipps dieses Blogs werden auch als  <a href="/de/tipp/">Kategorie Tipp</a> mit eigenem Feed angeboten -  und solltet ihr gerade nach <a href="http://www.credativ.de/open-source-support-center/unser-support-angebot/">Support für Linux</a> suchen, seid ihr bei uns immer richtig.</p>]]>
        
    </content>
</entry>

<entry>
    <title>credativ-Schulungen bei der Open-Source-School</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/04/credativ-schulungen-bei-der-open-source-school.html" />
    <id>tag:blog.credativ.com,2010:/de//1.157</id>

    <published>2010-04-09T12:07:26Z</published>
    <updated>2010-05-10T11:32:47Z</updated>

    <summary>Spezialisten der credativ GmbH werden ab Mai einige dreitägige Experten-Schulungen im Bereich System- und Netzwerk-Administration bei der Open-Source-School in München halten. Die Schulungen sind im Einzelnen (Änderungen vorbehalten): Kerberos: Diese Schulung behandelt das Kerberos Authentifizierungsprotokoll, über das eine Vielzahl von...</summary>
    <author>
        <name>Michael Banck</name>
        
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<em>Spezialisten der credativ GmbH werden ab Mai einige dreitägige Experten-Schulungen im Bereich System- und Netzwerk-Administration bei der <a href="http://www.opensourceschool.de/">Open-Source-School</a> in München halten.</em>
<br><br>
Die Schulungen sind im Einzelnen (Änderungen vorbehalten):
<ul>
<li><b><a href="http://www.opensourceschool.de/kurse/muenchen/schulung/kerberos/">Kerberos:</a></b> Diese Schulung behandelt das Kerberos Authentifizierungsprotokoll, über das eine Vielzahl von Diensten und Betriebssystemen transparent eingebunden werden können. Die Verwendung von Tickets macht ein Single-Sign-On möglich, so dass ein Benutzer mit einmaliger Anmeldung auf alle Dienste zugreifen kann. Die Schulung richtet sich an Netzwerk- und System-Administratoren, die Kerberos in ihrem Firmen- oder Behörden-Netzwerk einführen wollen und behandelt sowohl die Installation und Einrichtung von Kerberos, als auch die Integration von Diensten und Client-Programmen.
<br />
Termine: <a href="http://www.opensourceschool.de/kurstermine/muenchen/schulung/kerberos-5-2010/">03.-05.05.2010</a> und <a href="http://www.opensourceschool.de/kurstermine/muenchen/schulung/kerberos-09-2010/">13.-15.09.2010</a>

<li><b><a href="http://www.opensourceschool.de/kurse/muenchen/schulung/spam-und-virenabwehr/">Spam- und Virenabwehr:</a></b> Die Schulung erläutert die Integration und Feinabstimmung der Open-Source-basierten Dienste Postfix, Amavis und SpamAssassin für den Schutz vor unnötiger Netzlast durch Spam-Mails oder Schadsoftware. Sie richtet sich an Administratoren, die die Email-Systeme von Unternehmen oder Behörden gegen Spam und Viren absichern wollen.
<br />
Termine: <a href="http://www.opensourceschool.de/kurstermine/muenchen/schulung/spam-und-virenabwehr-05-2010/">26.-28.05.2010</a> und <a href="http://www.opensourceschool.de/kurstermine/muenchen/schulung/spam-und-virenabwehr-10-2010/">18.-20.10.2010</a>

<li><b><a href="http://www.opensourceschool.de/kurse/muenchen/schulung/samba-in-heterogenen-netzen/">Samba in heterogenen Netzen:</a></b> Diese Schulung behandelt Samba als Ersatz für Windows-Server für nahtlose Integration sowohl von Windows-Clients in Unix-basierte Netzwerke, als auch von Linux-Servern in Windows-basierte Netzwerke. Die Schulung richtet sich an Administratoren, die mit Hilfe von Samba ein Windows-Netzwerk ganz- oder teilweise zu Linux migrieren wollen. Ziel der Schulung ist die Einrichtung und Administration eines LDAP-basierten Primär/Backup Domänen-Controller Setups.
<br />
Termine: <a href="http://www.opensourceschool.de/kurstermine/muenchen/schulung/samba-06-2010/">30.06.-02.07.2010</a>
</ul>

Die Schulungen finden in den <a href="http://www.opensourceschool.de/ort-anreise/">Räumlichkeiten</a> der Open-Source-School in der Münchner Innenstadt, Amalienstr. 77 statt. Anmeldungen erfolgen über die Webseite der Open-Source-School oder per <a href="http://www.opensourceschool.de/fileadmin/oss_website/downloads/oss_anmeldung.pdf">Fax-Formular</a>.  Für weitere Informationen steht <a href="mailto:Michael Banck <michael.banck@credativ.de>">Michael Banck</a> zur Verfügung.

Außerdem findet vom  21.04.-23.04.2010 auch wieder eine <a href="http://www.linuxhotel.de/kurs/postgresql/">PostgreSQL-Schulung</a> von credativ-Spezialisten beim <a href="http://www.linuxhotel.de">Linuxhotel</a> in Essen statt.]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] Debian Preseed mit Netboot</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/howto-debian-preseed-mit-netboot.html" />
    <id>tag:blog.credativ.com,2010:/de//1.156</id>

    <published>2010-03-31T14:34:00Z</published>
    <updated>2010-03-31T14:52:36Z</updated>

    <summary>Das massenhafte Installieren von Debian-Maschinen lässt sich mit Hilfe von Preseeding und Netboot vereinfachen. Friedrich Weber hat in seinem Schülerpraktikum hier bei uns den entsprechenden Prozess gelernt - und in einem Howto fest gehalten. Man stelle sich die folgende Situation...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="debianlogo.png" src="http://blog.credativ.com/de/static/debianlogo.png" width="60" height="73" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Das massenhafte Installieren von Debian-Maschinen lässt sich mit Hilfe von Preseeding und Netboot vereinfachen. Friedrich Weber hat in seinem Schülerpraktikum hier bei uns den entsprechenden Prozess gelernt - und in einem Howto fest gehalten.</em></p>

<p>Man stelle sich die folgende Situation vor: plötzlich finden sich einige zehn bis zwanzig fabrikneue Notebooks und eine wunderbare Idee, was man mit ihnen anstellen könnte: ein deutschsprachiges Debian installieren und das Ganze nach den eigenen Wünschen anpassen. Allerdings wird sofort klar, dass es nicht den geringsten Spaß macht, auf jedem Notebook manuell die Debian-Installation und -Konfiguration vorzunehmen. An dieser Stelle kommt <a href="http://d-i.alioth.debian.org/manual/de.i386/apb.html">Debian Preseed</a> ins Spiel.</p>

<p>Das Konzept ist einfach und einleuchtend: Der normale Debian-Installer stellt während der Installation eine Reihe Fragen (zu Sprache, Partitionierung, Paketen, Bootloader etc.). Über Preseed kann man nun zu jeder zu stellenden Frage eine Antwort vorgeben. Nur Fragen, für die man nicht schon über Preseed eine Antwort vorgibt, stellt der Debian-Installer überhaupt noch. Im Idealfall werden nun nur noch am Anfang der Installation einige Fragen angezeigt, deren Antworten sich von Zielsystem zu Zielsystem unterscheiden und die der Administrator manuell abhandeln muss - nachdem diese beantwortet wurden, kann die Installation unbeaufsichtigt ablaufen.</p>

<p>Preseed arbeitet mit einer sehr einfach aufgebauten Konfigurationsdatei: der <tt>preseed.cfg</tt>. Sie beinhaltet, wie oben beschrieben, Antworten auf Fragen während der Installation, und das im <a href="http://en.wikipedia.org/wiki/Debconf_(software_package)">debconf</a>-Format. Eine solche Datei besteht aus mehreren Zeilen, von denen jede Zeile eine debconf-Konfigurationsoption - eine Antwort auf eine Frage - festlegt, zum Beispiel so:<br />
</p>
<pre class='brush: text'>
    d-i debian-installer/locale	string de_DE.UTF-8
</pre><p></p>

<p>Diese Zeile beinhaltet als erstes Element den Namen des Paketes, das konfiguriert wird (d-i ist hier eine Kurzform für debian-installer), als zweites Element den Namen der Option, die gesetzt wird, als drittes Element den Typ der Option (hier string, eine Zeichenkette), und der Rest ist der Wert der Option. Mit diesem Beispiel wird also die Sprache auf deutsch mit UTF-8-Kodierung gesetzt.</p>

<p>Solche Zeilen kann man sich selbst zusammenbasteln, einfacher geht es aber mit dem Tool <tt>debconf-get-selections</tt>: Dieses Kommando gibt schlicht und einfach alle Optionen aus, die lokal gesetzt wurden. Aus der Ausgabe können die gewünschten Einstellungen herausgefischt, gegebenenfalls angepasst und in die <tt>preseed.cfg</tt> kopiert werden.</p>

<p>Hier ein Beispiel einer solchen <tt>preseed.cfg</tt>:<br />
</p>
<pre class='brush: text'>
    d-i debian-installer/locale string de_DE.UTF-8
    d-i debian-installer/keymap select de-latin1
    d-i console-keymaps-at/keymap select de
    d-i languagechooser/language-name-fb select German
    d-i countrychooser/country-name select Germany
    d-i console-setup/layoutcode string de_DE

    d-i clock-setup/utc boolean true
    d-i time/zone string Europe/Berlin
    d-i clock-setup/ntp boolean true
    d-i clock-setup/ntp-server string ntp1

    tasksel tasksel/first multiselect standard, desktop, gnome-desktop, laptop
    d-i pkgsel/include string openssh-client vim less rsync
</pre><p></p>

<p>Mit diesen Optionen werden Spracheinstellungen und Zeitzone gesetzt, außerdem zu installierende Tasks und Pakete ausgewählt.<br />
Vollkommen unbeaufsichtigt wird diese Installation nicht ablaufen, aber ein Anfang ist es auf jeden Fall.</p>

<p>Nun stellt sich die Frage, woher Preseed eigentlich seine Konfigurationsdatei bezieht. Grundsätzlich ist es möglich, Preseed mit CD- und DVD-Images oder USB-Sticks zu nutzen. Wesentlich komfortabler ist es aber, ein Debian-netboot-Image zu benutzen, also einen Installer, der über das Netzwerk gestartet wird und bei dieser Gelegenheit auch seine Preseed-Konfiguration beziehen kann. Dieses Booten über Netzwerk wird mit <a href="http://de.wikipedia.org/wiki/Preboot_Execution_Environment">PXE</a> realisiert und setzt ein System voraus, das von Netzwerkkarte booten kann.</p>

<p>Zunächst wird das System angewiesen, von der Netzwerkkarte zu booten. Dafür fordert es von einem DHCP-Server per Broadcast eine IP-Adresse an. Dieser DHCP-Server übermittelt aber nicht nur eine passende IP, sondern auch die IP eines sogenannten Bootservers. Ein Bootserver ist ein <a href="http://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP-Server</a>, der einen Bootloader bereitstellt, mit dem der Administrator den gewünschten Debian-Installer auswählt. Gleichzeitig kann dem Debian-Installer hier über Boot-Optionen mitgeteilt werden, dass er Preseed benutzen soll und wo er die Preseed-Konfiguration finden kann. Hier ein Ausschnitt der PXELINUX-Konfigurationsdatei <tt>pxelinux.cfg/default</tt>:<br />
</p>
<pre class='brush: text'>
    label i386
        kernel debian-installer/i386/linux
        append vga=normal initrd=debian-installer/i386/initrd.gz netcfg/choose_interface=eth0 domain=example.com locale=de_DE debian-installer/country=DE debian-installer/language=de debian-installer/keymap=de-latin1-nodeadkeys console-keymaps-at/keymap=de-latin1-nodeadkeys auto-install/enable=false preseed/url=http://$server/preseed.cfg DEBCONF_DEBUG=5 -- quiet 
</pre><p></p>

<p>Wenn der User also <tt>i386</tt> eintippt, wird der Kernel <tt>debian-installer/i386/linux</tt> (zu finden auf dem TFTP-Server) heruntergeladen und gestartet, diesem werden außerdem eine ganze Menge Bootoptionen mit auf den Weg gegeben. Der Debian-Installer erlaubt das Angeben von debconf-Optionen als Bootparameter. Das ist sehr praktisch, denn dem Installer muss irgendwie mitgeteilt werden, wo die Preseed-Konfiguration im Netzwerk zu finden (<tt>preseed/url</tt>) ist. Damit er diese Preseed-Konfiguration herunterladen kann, muss er allerdings auch ins Netzwerk eingebunden sein. Dafür werden ihm die nötigen Optionen übergeben (die Option für den Hostnamen wurde hier bewusst ausgelassen, denn jedes Zielsystem hat natürlich einen anderen Hostname). <tt>auto-install/enable</tt> würde die Spracheinstellungen verzögern, sodass sie erst nach der Netzwerkkonfiguration gestellt würden, damit diese Einstellungen ebenfalls aus der <tt>preseed.cfg</tt> gelesen werden könnten. Das ist hier nicht notwendig, denn die Spracheinstellungen werden ebenfalls als Kerneloptionen übergeben, um zu gewährleisten, dass auch die Netzwerkkonfiguration deutschsprachig ist.</p>

<p>Die vorgestellten Beispiele und Konfigurationsauszüge sind natürlich sehr allgemein gehalten und stark gekürzt. Trotzdem sollte dieser Blog-Post eine Einführung in das Preseed-Konzept in Verbindung mit netboot geboten haben. Abschließend noch eine vollständigere Fassung der <tt>preseed.cfg</tt>:<br />
</p>
<pre class='brush: text'>
    d-i debian-installer/locale string de_DE.UTF-8
    d-i debian-installer/keymap select de-latin1
    d-i console-keymaps-at/keymap select de
    d-i languagechooser/language-name-fb select German
    d-i countrychooser/country-name select Germany
    d-i console-setup/layoutcode string de_DE

    # Netzwerk
    d-i netcfg/choose_interface select auto
    d-i netcfg/get_hostname string debian
    d-i netcfg/get_domain string example.com

    # Paketmirror
    d-i mirror/protocol string http
    d-i mirror/country string manual
    d-i mirror/http/hostname string debian.example.com
    d-i mirror/http/directory string /debian
    d-i mirror/http/proxy string
    d-i mirror/suite string lenny

    # Zeitzone
    d-i clock-setup/utc boolean true
    d-i time/zone string Europe/Berlin
    d-i clock-setup/ntp boolean true
    d-i clock-setup/ntp-server string ntp.example.com

    # Root-Account
    d-i passwd/make-user boolean false
    d-i passwd/root-password password geheimespasswort
    d-i passwd/root-password-again password geheimespasswort

    # Weitere APT-Optionen
    d-i apt-setup/non-free boolean false
    d-i apt-setup/contrib boolean false
    d-i apt-setup/security-updates boolean true

    d-i apt-setup/local0/source boolean false
    d-i apt-setup/local1/source boolean false
    d-i apt-setup/local2/source boolean false

    # Tasks
    tasksel tasksel/first multiselect standard, desktop
    d-i pkgsel/include string openssh-client vim less rsync
    d-i pkgsel/upgrade select safe-upgrade

    # Popularity-Contest
    popularity-contest popularity-contest/participate boolean true

    # Kommando, das nach der Installation ausgeführt wird. `in-target` bedeutet, dass das folgende
    # Kommando in der installierten Umgebung ausgeführt wird, nicht in der Installationsumgebung.
    # Hier wird http://$server/skript.sh nach /tmp heruntergeladen, ausführbar gemacht und ausgeführt.
    d-i preseed/late_command string in-target wget -P /tmp/ http://$server/skript.sh; in-target chmod +x /tmp/skript.sh; in-target /tmp/skript.sh
</pre><p></p>

<p>Alle Howtos dieses Blogs werden auch als <a href="/de/howto/">Kategorie Howto</a> samt eigenem Feed angeboten - und falls ihr nach <a href="http://www.credativ.de/home/software/debian_long/">Support und Services für Debian</a> sucht, seit ihr bei uns ebenfalls richtig.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Nvidia stellt freien nv-Treiber ein</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/nvidia-stellt-freien-nv-treiber-ein.html" />
    <id>tag:blog.credativ.com,2010:/de//1.155</id>

    <published>2010-03-29T11:15:14Z</published>
    <updated>2010-03-31T10:47:21Z</updated>

    <summary> Nvidia hat bekannt gegeben, dass der freie nv-Treiber nicht mehr länger unterstützt wird. Beginnend mit den soeben neu veröffentlichten Fermi-Grafikkarten werden zukünftige Karten von Nvidia nicht mehr mit dem Treiber nv funktionieren. Ursprünglich war der nv-Treiber von Nvidia entwickelt...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="X11" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="290px-OpenGL_logo.svg.png" src="/de/static/290px-OpenGL_logo.svg.png" width="100" height="44" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><br />
<em>Nvidia hat bekannt gegeben, dass der freie nv-Treiber nicht mehr länger unterstützt wird. Beginnend mit den soeben neu veröffentlichten Fermi-Grafikkarten werden zukünftige Karten von Nvidia nicht mehr mit dem Treiber nv funktionieren.</em></p>

<p>Ursprünglich war der nv-Treiber von Nvidia entwickelt worden, um auf aktueller Hardware eine brauchbare 2D-Performance zu erlangen. 3D-Unterstützung war dort von vornherein weder gewollt noch geplant gewesen, und wurde auch nie angegangen. Nutzer mit 3D-Ansprüchen wurden schon immer auf den proprietären Treiber von Nvidia verwiesen.</p>

<p>Für die Zukunft sollen nun alle Nutzer den <a href="http://www.nvidia.com/object/unix.html">proprietären Treiber</a> verwenden - für eine erste Installation unter Linux sei der Vesa-Treiber ausreichend, so Nvidia in <a href="http://lists.freedesktop.org/archives/xorg/2010-March/049749.html">einem Statement</a>. Da der nv-Treiber kaum mehr biete als der Vesa-Treiber, sei dies in Ordnung.</p>

<p>Dabei geht die Bekanntgabe in keinster Weise auf den mittlerweile recht weit fortgeschrittenen Treiber <a href="http://nouveau.freedesktop.org/wiki/">nouveau</a> ein, der vor einigen Wochen in den Kernel aufgenommen wurde und daher standardmäßig bei zukünftigen Distributionen für Nvidia-Karten zum Einsatz kommen wird. Denn dieser Treiber bietet neben 2D- auch 3D-Funktionen, es war bereits absehbar, dass dieser den nv-Treiber mittelfristig überflüssig machen würde.</p>

<p>Unter diesem Gesichtspunkt ist die Ankündigung daher wenig überraschend. Es wäre aber wünschenswert gewesen, hätte Nvidia seine Open-Source-Ankündigungen auf den neuen Treiber nouveau verlegt, statt sie vollständig einzustellen. Bisher sieht es damit leider nicht so aus, als würde sich die <a href="http://liquidat.wordpress.com/2007/03/04/the-forcedeth-story/">forcedeth-Geschichte</a> im Grafik-Bereich wiederholen.</p>

<p>Alle Blog-Artikel zum Thema X11 werden auch als <a href="/de/x11/">Kategorie X11</a> samt eigenem Feed angeboten - und falls ihr nach <a href="http://www.credativ.de/open-source-support-center/">Support und Services für Linux</a> sucht, seit ihr bei uns ebenfalls richtig.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Pressespiegel Open Source Support Card</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/pressespiegel-open-source-support-card.html" />
    <id>tag:blog.credativ.com,2010:/de//1.153</id>

    <published>2010-03-24T11:22:28Z</published>
    <updated>2010-03-24T11:28:36Z</updated>

    <summary>Die Resonanz auf die Vorstellung der Open Source Support Card war immens. Im Folgenden listen wir die wichtigsten Reaktionen der Presse und das Feedback der Community auf. Die gestern erfolgte Vorstellung der Open Source Support Card wurde von einem großen...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Support" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><em>Die Resonanz auf die Vorstellung der Open Source Support Card war immens. Im Folgenden listen wir die wichtigsten Reaktionen der Presse und das Feedback der Community auf.</em></p>

<p>Die gestern erfolgte <a href="/de/2010/03/gute-karten-fur-open-source.html">Vorstellung</a> der <a href="http://www.credativ.de/open-source-support-center/open-source-support-card/">Open Source Support Card</a> wurde von einem großen Presse-Echo begleitet - alle großen Nachrichtenportale haben darüber berichtet, und die Berichte waren sehr positiv. Das ist ein deutliches Zeichen dafür, dass <a href="http://www.credativ.de/open-source-support-center/unser-support-angebot/">Linux-Support</a> für viele Business-Kunden ein interessantes und wichtiges Thema ist - und dass unser Angebot etwas wirklich neues ist - wir lassen "einen frischen Frühlingswind" durch den Markt fegen, wie die <a href="http://www.credativ.de/news/2010/03/23/support-card-pressemitteilung/">Pressemitteilung</a> so schön sagte.</p>

<p>Hier die bisher gefundenen Artikel im deutschsprachigen Raum - bitte hinterlasst Kommentare, wenn wir was übersehen haben:<br />
<ul><br />
<li>Heise - <a href="http://www.heise.de/newsticker/meldung/Linux-Support-a-la-carte-960772.html">Linux-Support à la carte</a></li><br />
<li>Golem - <a href="http://www.golem.de/1003/74023.html">Linux Support Card: Prepaid-Karte für Linux-Hilfe</a></li><br />
<li>Linux-Magazin - <a href="http://www.linux-magazin.de/content/view/full/50045">Linux-Support auf Guthabenkarte</a> (Dort waren wir auch Top-Thema im Newsletter.)</li><br />
<li>Pro-Linux - <a href="http://www.pro-linux.de/NB3/news/1/15453/credativ-startet-die-linux-support-card.html">Credativ startet die Linux Support Card</a></li><br />
<li>Winfuture - <a href="http://winfuture.de/news,54363.html">Linux-Support gibt es nun auch per Prepaid-Karte</a></li><br />
<li>OSZine - <a href="http://oszine.de/node/10957">credativ veröffentlicht die Open Source Support Card</a> (Achtung: bei OSZine arbeiten wir selbst ehrenamtlich viel als Autor mit!)</li><br />
</ul></p>

<p>Aber auch die Reaktionen in diversen Foren waren interessant zu lesen: die Preise, aber auch unser Open Source Support Center (<a href="http://www.credativ.de/open-source-support-center/">OOSC</a>), unsere <a href="http://www.credativ.de/uber-credativ/referenzen/">Open Source Support Referenzen</a> und unsere Firma an sich wurden ausführlichst besprochen. Diese sehr umfangreichen Diskussionen zeigen ebenfalls, dass wir mit dem Angebot den Puls der Zeit und den Nerv vieler Linux-Admins im professionellen Umfeld getroffen haben.</p>

<p>Für uns alle war es ein dementsprechend bestärkender Tag, und wir sind zufrieden in den Feierabend gegangen. Wir danken für das umfangreiche Feedback, und stehen für Fragen immer gerne zur Verfügung - auch hier im Blog. Allerdings werden wir nicht verraten, welches Thema die nächste Open Source Support Card abdeckt. Ihr könnt ja mal raten. ;-)</p>

<p>Alle Blog-Artikel zu unserer Firma werden auch als <a href="/de/credativ/">Kategorie credativ</a> samt eigenem Feed angeboten.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Gute Karten für Open Source!</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/gute-karten-fur-open-source.html" />
    <id>tag:blog.credativ.com,2010:/de//1.150</id>

    <published>2010-03-23T08:45:00Z</published>
    <updated>2010-03-23T14:31:52Z</updated>

    <summary>Ab sofort bietet credativ die Open Source Support Card an. Mit ihr kann Open Source Support für klar umrissene Themen ohne Vertragsbindung eingekauft werden - zu einem festen Preis. Nach langer Vorbereitungszeit ist es jetzt so weit: ab heute bieten...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><em>Ab sofort bietet credativ die Open Source Support Card an. Mit ihr kann Open Source Support für klar umrissene Themen ohne Vertragsbindung eingekauft werden - zu einem festen Preis.</em></p>

<p>Nach langer Vorbereitungszeit ist es jetzt so weit: ab heute bieten wir mit der <a href="http://www.credativ.de/open-source-support-center/open-source-support-card/">Open Source Support Card</a> unseren gewohnten Service auf eine neue, einfachere Art an: Themen-bezogen, im Vorfeld bezahlt und mit festem Kontingent.</p>

<p><a href="http://www.credativ.de/open-source-support-center/open-source-support-card/"><img alt="frontside_3_shade_bg_white.png" src="/de/static/frontside_3_shade_bg_white.png" width="303" height="190" class="mt-image-center" style="text-align: center; display: block; margin: 0 auto 20px;" /></a></p>

<p>Mit der Open Source Support Card haben die Kunden den Vorteil einer absoluten Kostenkontrolle, und es entfällt die für einige Kunden hinderliche Bindung an einen Vertrag - die Karte wird als normales Produkt erworben! Das kann insbesondere in der Rechnungsführung größerer Unternehmen praktisch sein, nicht zu Unrecht wird sich der ein oder andere Leser an die "Prepaid"-Modelle im Mobilfunkbereich erinnert fühlen. Die Presse-Mitteilung gibt eine ganz gute Übersicht der Vorteile und Bedingungen der Karte:</p>

<ul><li>Open Source Support für ein klar umrissenes
Thema</li><li>Themenbezogener Support für alle Desktops und Server des
Unternehmens</li><li>Knackiger Preis: 890 Euro</li><li>Volle Kostenkontrolle</li><li>Support per Telefon,
E-Mail und Remote</li><li>Hilfe in englischer oder deutscher
Sprache</li><li>KEINE Abhängigkeit von Zahl der Nutzer, CPUs oder
ähnlichem</li><li>KEINE Vertragsbindung, sondern einfache Bestell-Abwicklung</li><li>KEIN Call-Center - direkter Support durch
uns</li><li>Die Supporteinheiten können für folgende
Dienstleistungen genutzt werden:</li><ul><li>Administration</li><li>Installation (Remote)</li><li>Beratung</li></ul></ul>

<p>Dabei wird der Support auf die credativ-typische Art und Weise geliefert: unabhängig von der Zahl der CPUs, Nutzer oder DB-Einträge, wie auch bei unseren klassischen Verträgen. Support-Einheiten, die mit der Open Source Support Card erworben werden, können für alle vorhandenen Rechner genutzt werden, unternehmensweit. Geleistet wird der Support - selbstverständlich - von unserem Open Source Support Center: dort gibt es keine FAQ-Schleifen oder lästige Diskussionen mit nicht-technischem Personal. Wir sind Linux-Spezialisten und Open-Source-Experten, die allesamt selbst in diversen Projekten aktiv sind - regelmäßigen Lesern dieses Blogs dürfte das aber eh klar sein. ;-)</p>

<p>Für die Community ist das Angebot in so fern interessant, dass der Einsatz freier Distributionen jetzt attraktiver wird. Denn das Preisangebot von unter 1000 Euro dürfte den Anbietern kommerzieller Distributionen einiges an Kopfzerbrechen bereiten, und nicht wenige Firmen können sich jetzt einen Umstieg hin zu Debian oder CentOS ernsthaft überlegen. Die Karte ist sogar so angelegt, dass auch Reseller sie verkaufen können - mit etwas Glück könnt ihr demnächst neben dem Debian-Server auch gleich den Support in den Warenkorb klicken.</p>

<p>Aktuell steht die <a href="http://www.credativ.de/open-source-support-center/open-source-support-card/">Support Card</a> in Deutschland für die Distributionen Debian und CentOS zur Verfügung. Weitere Projekte und andere Open-Source-Software werden folgen, genauso wie die Verfügbarkeit in den USA, Großbritannien und Kanada. Wenn ihr weitere Fragen oder vielleicht auch Wünsche habt, hinterlasst bitte Kommentare - wir haben viel Arbeit in dieses Projekt gesteckt, und sind sehr auf die Reaktion unserer Kunden, aber auch der Community selbst, gespannt.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] PostgreSQL und das Linux Memory Management</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/postgresql-und-linux-memory-management.html" />
    <id>tag:blog.credativ.com,2010:/de//1.149</id>

    <published>2010-03-22T15:42:00Z</published>
    <updated>2010-03-24T09:09:57Z</updated>

    <summary>Der OOM-Killer kann auf stark ausgelasteten Maschinen für böse Überraschungen sorgen: Prozesse werden plötzlich und unerwartet beendet. Dieses Verhalten lässt sich aber mit Kernel-Bord-Mitteln sehr genau beeinflussen. Administratoren auf Linuxmaschinen mit hoher RAM-Nutzung erleben oft eine Begegnung der unheimlichen Art:...</summary>
    <author>
        <name>Bernd Helmle</name>
        
    </author>
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="PostgreSQL" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="postgresql" label="PostgreSQL" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="postgreslogo.png" src="/de/static/postgreslogo.png" width="97" height="100" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Der OOM-Killer kann auf stark ausgelasteten Maschinen für böse Überraschungen sorgen: Prozesse werden plötzlich und unerwartet beendet. Dieses Verhalten lässt sich aber mit Kernel-Bord-Mitteln sehr genau beeinflussen.</em></p>

<p>Administratoren auf Linuxmaschinen mit hoher RAM-Nutzung erleben oft eine Begegnung der unheimlichen Art: den Linux <a href="http://linux-mm.org/OOM_Killer">OOM-Killer</a> (OOM = Out Of Memory). Der Administrator findet in diesem Szenario eine "abgestürzte" PostgreSQL-Instanz vor, im Serverlog finden sich dann einer oder meist mehrere Einträge der Form<br />
</p>
<pre class='brush: text'>
Out of Memory: Killed process PID (Prozessname)
</pre><p></p>

<p>Doch was genau steckt dahinter?</p>

<h3>Virtueller Speicher und Overcommit</h3>

<p>Virtueller Speicher in Linuxsystemen wird auf vielfältige Weise adressiert: RAM, mmap(), Swap oder Shared Memory, um ein paar Beispiele zu nennen. Es ist möglich, durch das sogenannte Overcommit-Verhalten bei Allokieren von Speicher mehr Ressourcen anzufordern, als tatsächlich im System aktuell vorhanden ist. In solchen Situationen spricht man von einer OOM-Situation, das System hat alle Ressourcen aufgebraucht und ist nicht mehr in der Lage, mehr virtuellen Speicher zu adressieren. Hier wird der OOM-Killer aktiv, der Prozesse nach festgelegten Kriterien auswählt und diese terminiert, um dem System ein wenig Luft zu verschaffen. Dieses Verhalten ist insbesondere für Datenbanksysteme zu berücksichtigen, die nicht auf dedizierter Hardware laufen. Der OOM-Killer bevorzugt in solchen Umgebungen häufig PostgreSQL, da als Kandidaten zum Terminieren solche Prozesse ausgewählt werden, die mit aggressiver Speichernutzung auffallen. Da der OOM-Killer den gesamten Adressraum aller Kinder inklusive Shared Memory in Summe sieht, erkennt man recht schnell, dass PostgreSQL auf jeden Fall weit oben in der Liste der Kandidaten auftauchen wird.<br />
Wie stark der zur Verfügung stehende Speicher genutzt wird, findet man am schnellsten über das <tt>/proc</tt>-Filesystem heraus:<br />
</p>
<pre class='brush: text'>
$ grep Commit /proc/meminfo 
CommitLimit:    376176 kB
Committed_AS:   265476 kB
</pre><p></p>

<p>In diesem Beispiel sind aktuell als Obergrenze <tt>376176 kB</tt>(<tt>CommitLimit</tt>) an Speichernutzung möglich, zugewiesen wurden <tt>265476 kB</tt> (<tt>Committed_AS</tt>). Nähert sich <tt>CommitLimit</tt> sehr stark an <tt>Committed_AS</tt> an oder übersteigt diesen sogar, dann ist der Einsatz des OOM-Killers wahrscheinlich.</p>

<p>Der Linux-Kernel stellt einige Schnittstellen zur Verfügung, die das Verhalten des OOM-Killers gegenüber PostgreSQL beeinflusst.</p>

<h3>Overcommit abschalten</h3>

<p>Die radikalste Methode ist, Overcommit generell im Kernel abzuschalten. Allerdings kommt dies nur für dedizierte Datenbanksysteme in Frage, auf denen PostgreSQL exklusiv läuft. Das Overcommit-Verhalten lässt sich in modernen 2.6ern Kernel in drei Kategorien mit dem Parameter<br />
</p>
<pre class='brush: text'>
vm.overcommit_memory = 0
</pre><p></p>

<p>konfigurieren. Die einzelnen Kategorien hierbei sind:</p>

<ul>
	<li><strong>0</strong>: Vorsichtiges Overcommitverhalten. Während gemäßigte Allokierungen erlaubt sind, werden extrem große Allokierungen, die zu übermäßigem Overcommit führen, abgelehnt. In diesem Modus kann root auch mehr Speicher allokieren als ein unprivilegierter Benutzer. Dieser Modus ist auch die Standardeinstellung des Kernels.</li>
        <li><strong>1</strong>: Overcommit unterliegt keinen Einschränkungen</li>
        <li><strong>2</strong>: Schaltet Overcommitverhalten ab. Generell bedeutet dies, dass der maximale allokierbare tatsächliche Adressraum nicht größer werden kann, als <tt>swap</tt> + ein konfigurierbarer Anteil an Prozent des physkalischen RAM. 
</ul> 

<p>Der Anteil des physikalischen RAM bei Modus <tt>2</tt> wird über den zusätzlichen Parameter<br />
</p>
<pre class='brush: text'>
vm.overcommit_ratio = 50
</pre><p></p>

<p>kontrolliert.</p>

<p>Während <tt>vm.overcommit_memory=1</tt> für Spezialanwendungen interessant sein könnte, wird es im Praxiseinsatz eher zum Einsatz für die Parameterwerte <tt>0</tt> oder <tt>2</tt> kommen. Wird Overcommit über <tt>vm.overcommit_memory=2</tt> abgeschaltet, so wird ein Prozess (in Abhängigkeit von <tt>vm_overcommit_ratio</tt>) sofort eine "Out Of Memory"-Bedingung beim Allokieren von Speicher erhalten. Abhängig von der Distribution sollte man die Einstellungen permanent in die Datei <tt>/etc/sysctl.conf</tt> speichern, so dass diese auch nach einem Neustart des Systems aktiv sind:<br />
</p>
<pre class='brush: text'>
$ echo &quot;vm.overcommit_memory=2 &gt;&gt; /etc/sysctl.conf
$ echo &quot;vm.overcommit_ratio=60 &gt;&gt; /etc/sysctl.conf
$ sysctl -p /etc/sysctl.conf
</pre><p></p>

<p> Die Änderungen wirken sich sofort auf den virtuellen Speicher aus, man kann dies erneut durch Abrufen von <tt>/proc/meminfo</tt> überprüfen:<br />
</p>
<pre class='brush: text'>
$ grep Commit /proc/meminfo 
CommitLimit:    401440 kB
Committed_AS:   266456 kB
</pre><p></p>

<p>Die Maschine verfügt über <tt>249848 kB</tt> Swap und <tt>252656 kB</tt> physikalischen RAM. Nach der Formel <tt>Swap + vm.overcommit_ratio * RAM</tt> ergibt dies ein <tt>CommitLimit</tt> von 401440 kB. </p>

<h3>OOM-Killer auf Prozessebene konfigurieren</h3>

<p>Ist PostgreSQL nicht auf einem dedizierten Server installiert und wird mit einer speicherhungrigen Middleware (bspw. JBoss- oder Tomcat-Installation) auf demselben System betrieben, so ist es wünschenswert, Overcommit-Verhalten zwar zu erlauben, im Falle einer "Out Of Memory"-Situation aber PostgreSQL vom OOM-Killer auszunehmen. Seit Kernel 2.6.11 bietet Linux daher ein Interface an, um den OOM-Score eines Prozesses zu tunen, so dass dieser vom OOM-Killer weniger oder stärker berücksichtigt wird. Dies erlaubt ein sehr feinfühliges Einstellen des Systems auf die Speicherbedürfnisse einzelner Prozesse. Die Konfiguration wird über eine Datei im <tt>/proc-Filesystem</tt> des Kernel vorgenommen, beispielsweise hier für den <tt>PostgreSQL</tt>-Hauptprozess unter Debian (0 ist die Standardeinstellung für Prozesse):<br />
</p>
<pre class='brush: text'>
$ cat /proc/$(cat /var/run/postgresql/8.4-main.pid)/oom_adj
0
</pre><p></p>

<p>Die erlaubten Werte sind von -17 bis +15, negative Werte verringern die Affinität des Prozesses gegenüber den OOM-Killer, positive Werte erhöhen diese. -17 schaltet den OOM-Killer für den jeweiligen Prozess komplett ab. Die Einstellung wird vom Parent an etwaige Kindprozesse weitervererbt. Da PostgreSQL sich für eine Datenbankverbindung forked, reicht es, diese Einstellung dem PostgreSQL-Hauptprozess mitzugeben:<br />
</p>
<pre class='brush: text'>
$ echo -17 &gt;&gt; /proc/$(cat /var/run/postgresql/8.4-main.pid)/oom_adj
$ psql -q postgres
test=# SELECT pg_backend_pid();
 pg_backend_pid 
----------------
           3429
(1 Zeile)

test=# 
[1]+  Stopped                 psql -q test
$ cat /proc/3429/oom_adj
-17
</pre><p></p>

<p>Der Nachteil dieser Methode ist, dass dies nun für <strong>alle</strong> Kindprozesse des PostgreSQL-Hauptprozesses gilt, was eventuell vom DBA nicht mehr gewünscht ist. Beispielsweise möchte man zwar gerne die PostgreSQl-Systemprozesse wie <tt>Background Writer</tt> oder <tt>Autovacuum</tt> vor dem OOM-Killer schützen, nicht jedoch normale Datenbankverbindungen.</p>

<p>Das Setzen von <tt>/proc/PID/oom_adj</tt> erfordert jedoch einen privilegierten Benutzer, so dass man am Besten die Einstellung direkt im Startskript der PostgreSQL-Datenbank vornimmt.</p>

<h3>Erweiterungen in PostgreSQL 9.0</h3>

<p><a href="/de/2010/02/postgresql-agenda-2010.html">PostgreSQL 9.0</a> wird hinsichtlich der Zusammenarbeit mit dem <tt>/proc</tt>-Interface ebenfalls einige <a href="http://archives.postgresql.org/pgsql-committers/2010-01/msg00169.php">Neuerungen</a> mitbringen. Zum einen wurde das im Quelltext mitgelieferte <a href="http://git.postgresql.org/gitweb?p=postgresql.git;a=blob_plain;f=contrib/start-scripts/linux;hb=HEAD">Linux-Startskript</a> dahingehend erweitert, zum anderen bietet das Backend nun auch Unterstützung, falls man die <tt>/proc</tt>-Einstellungen eben nicht an normale Datenbankverbindungen weitervererben möchte. Hierzu kann der PostgreSQL-Server mit dem Makro <tt>LINUX_OOM_ADJ=0</tt> kompiliert werden, beispielsweise:<br />
</p>
<pre class='brush: text'>
$ ./configure CC=&quot;ccache gcc&quot; CFLAGS=&quot;-DLINUX_OOM_ADJ=0&quot;
</pre><p></p>

<p>Diese Methode schützt dann die PostgreSQL-Systemprozesse effektiv, erlaubt aber dem OOM-Killer etwaige Amoklaufende Backends trotzdem zu terminieren.</p>

<h3>Alternativen</h3>

<p>Eine alternative Lösung gibt es auch in Form eines <a href="http://www.cybertec.at/en/linux-kernel-patch">Kernelpatches</a>. Dies ergänzt das <tt>/proc</tt>-Filesystem um eine Liste an Prozessnamen, die explizit vom OOM-Killer nicht berücksichtigt werden dürfen. Da dies jedoch eine inoffizielle Erweiterung des Kernels ist, muss man seinen eigenen Kernel damit pflegen, auch ist diese Erweiterung bei weitem nicht so flexibel wie das Interface über <tt>oom_adj</tt>. Des weiteren sind Prozessnamen relativ ungeeignet, um spezifische Prozesse eindeutig zu identifizieren (z.B. Java- oder Perlbasierte Prozesse).</p>

<h3>Zusammenfassung</h3>

<p>Der Linuxkernel bietet mittlerweile umfassende Möglichkeiten, die Speichernutzung von Prozessen an das Memory Management des Kernels anzupassen. Die flexibelste Lösung stellt das <tt>/proc</tt>-Filesystem mit dem <tt>oom_adj</tt>-Interface dar. PostgreSQL 9.0 ergänzt dies durch weitere Maßnahmen. Dedizierte Datenbanksysteme können vom Administrator dahingehend angepasst werden, gar kein Overcommit des virtuellen Speichers zuzulassen, hier muss jedoch sorgfältig abgewogen werden, welche Anforderungen die PostgreSQL-Instanz an die VM des Kernels stellt.</p>

<p>Alle Blog-Artikel zum Thema PostgreSQL werden auch als <a href="/de/postgresql/">Kategorie PostgreSQL</a> samt eigenem Feed angeboten - und falls ihr nach <a href="http://www.credativ.de/home/software/softwareubersicht/datenbanken/postgresql_brief/">Support und Services für PostgreSQL</a> sucht, seit ihr bei uns ebenfalls richtig.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] RHCS: Installation unter Debian</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/howto-rhcs-installation-unter-debian.html" />
    <id>tag:blog.credativ.com,2010:/de//1.147</id>

    <published>2010-03-16T12:47:00Z</published>
    <updated>2010-03-17T16:46:27Z</updated>

    <summary>Nach der Einführung in RHCS geht es jetzt ins Eingemachte: die Installation von RHCS unter Debian, um einzelne KVM-Gäste als Dienst anzubieten. Die Hintergründe von RHCS haben wir bereits erklärt. Die konkrete Umsetzung wird am Beispiel zweier Hosts mit einem...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="RHEL/CentOS" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="tux.jpg" src="/de/static/tux.jpg" width="86" height="102" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Nach der Einführung in RHCS geht es jetzt ins Eingemachte: die Installation von RHCS unter Debian, um einzelne KVM-Gäste als Dienst anzubieten.</em></p>

<p>Die <a href="/de/2010/03/rhcs-ein-uberblick.html">Hintergründe von RHCS</a> haben wir bereits erklärt. Die konkrete Umsetzung wird am Beispiel zweier Hosts mit einem Shared Storage erklärt, die als Service verschiedene KVM-Gäste anbieten.</p>

<h3>Installation der Nodes</h3>
In diesem Setup sind die Nodes die Maschinen, auf denen KVM läuft. Jeder darauf laufende KVM-Gast ist wiederum ein über RHCS verwalteter Dienst. Bei der Installation der KVM-Hosts ist auf mehrere Punkte zu achten:
<ul><li><tt>/tmp/</tt> und <tt>/var/</tt> sollten auf verschiedenen Partitionen liegen, das verbessert die Performance.</li>
<li>Es sollten Debian-Backports genutzt werden, insbesondere für die Kernel.</li>
<li>Alle IP-Adressen sollten via DNS in beide Richtungen auflösbar oder in <tt>/etc/hosts</tt> eingetragen sein.</li>
<li>Der Hostname darf nicht auf <tt>127.0.0.1</tt> zeigen, das führt zu Problemen mit dem Cluster Management System CMAN.</li>
<li><tt>/etc/hosts/</tt> und <tt>/etc/resolv.conf</tt> sollte auf allen Nodes gleich sein.</li>
<li>ssh-Keys sollten auf allen Nodes passwortlos für root bestehen und auf alle anderen Nodes verteilt werden.</li>
<li>Aus Performance-Gründen ist es besser, den aktuellesten stabilen Kernel zu installieren. Allerdings lässt <tt>linux-image-2.6.32-bpo.2-amd64</tt> die Gast-Kernel >= 2.6.30 crashen, ein Patch ist aber verfügbar, siehe <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=573071">#573071</a>. </li>
<li>Die Netzwerk-Geräte sollten für einen guten Überblick klar benannt sein - zum Beispiel <tt>rhcs-backbone</tt> und <tt>external</tt> anstatt <tt>eth0</tt> und <tt>eth1</tt>.</li></ul>

<h3>Einrichtung des Shared Storage</h3>
Ein zentrales Element des RHCS ist das Shared Sotrage, auf das die Nodes gemeinsame zugreifen. In diesem Beispiel nehmen wir einen "normalen" Rechner, und installieren auf diesem ein iSCSI-Target:
<pre class='brush: plain'>
apt-get install iscsitarget iscsitarget-source 
echo 'ISCSITARGET_ENABLE=true' &gt; /etc/default/iscsitarget
m-a a-i iscsitarget
</pre><p><br />
Hier ist zu beachten, dass das iscsi-Target korrekt bauen muss, siehe auch <a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=566740">#566740</a>. Eingerichtet wird die Maschine, welche das Shared Storage bereit stellt, via <tt>/etc/ietd.conf</tt>:</p>
<pre class='brush: plain'>
IncomingUser discovery_in YourSecurePwd1
OutgoingUser discovery_out YourSecurePwd2
Target YOURMACHINE:clvm1
       IncomingUser node_in YourSecurePwd1
       OutgoingUser node_out YourSecurePwd2
       Lun 0 Path=/dev/sdx1,Type=blockio
</pre><p><br />
Auf den Nodes muss das Target korrekt angesprochen werden. Dies wird in der <tt>/etc/iscsi/iscsid.conf</tt> definiert:</p>
<pre class='brush: plain'>
discovery.sendtargets.auth.authmethod = CHAP
discovery.sendtargets.auth.username = discovery_in
discovery.sendtargets.auth.password = YourSecurePwd1
discovery.sendtargets.auth.username_in = discovery_out
discovery.sendtargets.auth.password_in = YourSecurePwd2
node.startup = automatic
node.session.auth.authmethod = CHAP
node.session.auth.username = node_in
node.session.auth.password = YourSecurePwd1
node.session.auth.username_in = node_out
node.session.auth.password_in = YourSecurePwd2
</pre><p><br />
Gestartet wird der Dienst mit <tt>/etc/init.d/open-iscsi start</tt>. Vorhandene Targets werden mit den folgenden Befehlen gesucht, gelöscht oder hinzugefügt:</p>
<pre class='brush: plain'>
# discovering the targets
iscsiadm -m discovery -t st -p YOURMACHINE -P 1
# deleting target on wrong interface
iscsiadm -m node -p 192.168.0.100:3260,1 -o delete
# opening the portal
iscsiadm -m node --targetname &quot;iqn.2010-03.YOURMACHINE:clvm1&quot; --portal &quot;YOURMACHINE:3260&quot; --</pre><p></p>

<h3>VM setup</h3>
Die virtuellen Maschinen werden via KVM bereit gestellt. Dafür muss zuerst die passende Software installiert werden:
<pre class='brush: plain'>
apt-get install linux-image-2.6.32-bpo.2-amd64 kvm libvirt-bin virtinst -t lenny-backports
</pre><p><br />
Bei der Einrichtung der Bridge für die Gäste muss darauf geachtet werden, dass der Bridge-Name für alle Nodes gleich sein muss. Auch die libvirt-Konfiguration muss gleich sein, es ist daher hilfreich, auf git und vergleichbare Techniken zurück zu greifen. Danach können die Gäste mit </p>
<pre class='brush: plain'>
virt-install -n &lt;NAME&gt; -r 256 --vcpus=1 --disk path=/dev/vg_cluster#/&lt;LV&gt; \
  -c /root/debian-&lt;VERSION&gt;-amd64-netinst.iso --vnc --noautoconsole --os-type linux \
  --os-variant debianLenny --accelerate --network=bridge:bridge0 --hvm -k de
</pre><p><br />
installiert und mit <tt>virt-viewer -c qemu+ssh://<node>:<port>/system <NAME></tt> angesehen werden.</p>

<h3>RHCS setup</h3>
Der nächste Schritt ist das Aufsetzen von RHCS selbst - dafür müssen in erster Instanz die Programme installiert und aufgerufen werden: <tt>apt-get install redhat-cluster-suite</tt>. Die dadurch bereit gestellten NFS-Dienste werden aber nicht gebraucht:
<pre class='brush: plain'>
invoke-rc.d nfs-kernel-server stop
invoke-rc.d nfs-common stop
invoke-rc.d portmap stop
update-rc.d -f nfs-kernel-server remove
update-rc.d -f nfs-common remove
update-rc.d -f portmap remove
</pre><p><br />
Ein anderes Problem ist, dass das Programm <tt>system-config-cluster</tt> nicht unter Lenny zur Verfügung steht. Es wurde von credativ-Mitarbeiter Philipp Hübner paketiert und ist in Debian erst ab Squeeze enthalten.<br />
Durch einen Backport kann system-config-cluster aber auch auf Lenny genutzt werden:</p>
<pre class='brush: plain'>
wget --no-check-certificate https://www.credativ.com/~phu/lenny-backports/system-config-cluster/system-config-cluster_1.0.53-1_all.deb
dpkg -i system-config-cluster_1.0.53-1_all.deb
apt-get -f install
apt-get install xauth
</pre><p><br />
Damit LVM Locking Cluster-weit funktioniert, muss in der <tt>/etc/lvm/lvm.conf</tt> im Abschnitt <tt>global</tt> eine Anpassung vorgenommen werden:</p>
<pre class='brush: plain'>
 locking_type = 3
</pre><p><br />
Falls wie empfohlen ein neuerer Kernel eingesetzt wird, liegt das Modul <tt>lock_dlm</tt> nicht mehr vor. Daher muss das Init-Script von CMAN angepasst werden, die Zeile <tt>modprobe lock_dlm 2>&1 || return 1</tt> muss auskommentiert werden. Außerdem unterstützt RHCS 2 nur XEN, für libvirt-Unterstützung muss der Ressource Handler <tt>vm.sh</tt> geladen werden - er liegt für Debian Squeeze bereit:</p>
<pre class='brush: plain'>
wget --no-check-certificate https:///www.credativ.com/~phu/vm.sh -O /usr/share/cluster/vm.sh
chmod +x /usr/share/cluster/vm.sh
</pre><p></p>

<p>RHCS selbst wird gestartet mittels</p>
<pre class='brush: plain'>
/etc/init.d/cman start
/etc/init.d/clvm start
/etc/init.d/rgmanager start
</pre><p></p>

<h3>Fencing</h3>
Fencing beschreibt das automatisierte Neutralisieren von Nodes, die nicht mehr reagieren. Wir setzen in unserem Beispiel dafür eine per Netz steuerbare Steckdose ein, NETIO-230A. Es liegt bisher kein fence agent für dieses Gerät vor, aber mit Hilfe der verfügbaren <a href="http://github.com/pklaus/netio230a">Python-Bibliothek</a> kann ohne Weiteres ein solcher geschrieben werden.

<h3>Abschließende Worte</h3>
Dieses Howto zeigt, dass das Einrichten von RHCS unter Debian mit einfachen Schritten möglich ist - wenn auch je nach Einsatz weitere Anpassungen vorgenommen werden müssen. Dabei helfen wir übrigens gerne - <a href="http://www.credativ.de/home/software/softwareubersicht/">Open Source Hochverfügbarkeits-Lösungen</a> gehören zu unseren Spezialitäten, und <a href="http://www.credativ.de/home/software/softwareubersicht/virtualisierung/kvm/">Services und Support  bei KVM-Virtualisierung</a> ist unser Alltagsgeschäft.]]>
        
    </content>
</entry>

<entry>
    <title>[Howto] Code-Templates mit vim</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/howto-code-templates-mit-vim.html" />
    <id>tag:blog.credativ.com,2010:/de//1.144</id>

    <published>2010-03-15T12:51:17Z</published>
    <updated>2010-03-15T12:51:21Z</updated>

    <summary>Der Text-Editor vim bietet viele Möglichkeiten für Automatismen. Im folgenden Artikel wird das automatische Einfügen von Textbausteinen vorgestellt. Sehr häufig schreibt man beim Programmieren oder beim Administrieren immer wieder die gleichen Code-Teile. Dabei kann der Editor vim schon beim Anlegen...</summary>
    <author>
        <name>Martin Zobel-Helas</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Howto" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="bash.png" src="/de/static/bash.png" width="90" height="72" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Der Text-Editor <tt>vim</tt> bietet viele Möglichkeiten für Automatismen. Im folgenden Artikel wird das automatische Einfügen von Textbausteinen vorgestellt.</em></p>

<p>Sehr häufig schreibt man beim Programmieren oder beim Administrieren immer wieder die gleichen Code-Teile. Dabei kann der Editor vim schon beim Anlegen von Dateien erkennen, um was für einen Datei-Typ es sich handelt, und entsprechende Textbausteine bereit stellen. Dies kann durch die Datei <tt>.vim/plugin/autoinsert.vim</tt> realisiert werden, die zum Beispiel wie folgt aussieht:<br />
</p>
<pre class='brush: plain'>
if has(&quot;autocmd&quot;)
augroup autoinsert
  au!
  autocmd BufNewFile *.c call s:Template(&quot;c&quot;)
  autocmd BufNewFile Makefile call s:Template(&quot;make&quot;)
  autocmd BufNewFile makefile call s:Template(&quot;make-simple&quot;)
augroup END
endif

function s:Template(argument)
        if (a:argument == &quot;help&quot;)
                echo &quot;Currently availible templates:&quot;
                echo &quot; c                - Plain C Template&quot;
                echo &quot; make             - Makefile Template&quot;
                echo &quot; make-simple      - Simple Variant of the Makefile Template&quot;
        else
                &quot; First delete all in the current buffer
                %d

                &quot; The Makefile variants
                if (a:argument == &quot;make&quot;)
                        0r ~/.vim/skeletons/template.make
                        set ft=make
                elseif (a:argument == &quot;make-simple&quot;)
                        0r ~/.vim/skeletons/template.make_simple
                        set ft=make
                elseif (a:argument == &quot;make-simple-cpp&quot;)
                        0r ~/.vim/skeletons/template.make_simple_cpp
                        set ft=make

                &quot; Stuff for plain C
                elseif (a:argument == &quot;c&quot;)
                        0r ~/.vim/skeletons/template.c
                        set ft=c
                endif

                silent %!~/.vim/do_header %
        endif
endfunction

command! -nargs=1 Template call s:Template(&lt;f-args&gt;)
</pre><p></p>

<p>Wie zu sehen ist, werden in den Zeilen 21-35 diverse Templates aufgerufen, die wiederum die Textbausteine beinhalten. Das Template für <tt>make_simple</tt>, <tt>~/.vim/skeletons/template.make_simple</tt> fügt zum Beispiel die üblichen Compiler-Flags zum Bauen von C/C++-Programmen mit dem gcc ein:</p>
<pre class='brush: plain'>
CC := gcc
CFLAGS := -Wall -pedantic -O3
LDFLAGS :=

PROG := main
OBJS := main.o

all: $(PROG)

$(PROG): $(OBJS)
        $(CC) $(LDFLAGS) -o $@ $^

clean:
        rm -rf $(PROG) $(OBJS)

.PHONY: all clean
</pre><p></p>

<p>Das folgende Template <tt>~/.vim/skeletons/template.c</tt> mit Textbausteinen für Dateien mit der Endung <tt>.c</tt> fügt neben dem obligatorischen GPL-Header auch ein C-Code-Gerüst ein:</p>
<pre class='brush: c'>
/*
 * %%FILENAME%% - description
 *
 * Copyright (C) %%YEAR%% %%AUTHOR%%
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2, or (at your option)
 * any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
 */

#include &lt;stdio.h&gt;

int
main (int argc, char **argv)
{
  return 0;
}

/**This must remain at the end of the file.**********
 * vim600:set sw=2 ts=8 fdm=marker fmr=«««,»»»:     *
 * vim600:set cindent cinoptions={1s,&gt;2s,^-1s,n-1s: *
 ****************************************************/
</pre><p><br />
Die im Code vorkommenden Variablen wie <tt>%%FILENAME%%</tt> oder auch <tt>%%AUTHOR%%</tt> können ebenfalls automatisch beim Aufruf durch ein kleines Shell-Skript ersetzt werden: das Skript <tt>~/.vim/do_header</tt>, aufgerufen mit dem Dateinamen als Übergabewert, ermittelt über die glibc-Funktion <tt>getent</tt> bzw. aus der <tt>/etc/passwd</tt> den Namen des Autors und setzt diesen ein. Auch andere Variablen werden mit üblichen GNU-Tools ermittelt, wie das folgende Listing zeigt:</p>
<pre class='brush: plain'>
#!/usr/bin/env zsh

if which getent &gt; /dev/null; then
        REALNAME=$(getent passwd $USER|awk -F : '{print $5}' | awk -F , '{print $1}')
else
        REALNAME=$(grep $USER /etc/passwd|awk -F : '{print $5}' | awk -F , '{print $1}')
        if which nidump &gt; /dev/null &amp;&amp; [ -z &quot;$REALNAME&quot; ]; then
                REALNAME=$(nidump passwd / | grep $USER|awk -F : '{print $8}')
        fi
fi
DATE=$(date)
YEAR=$(date +%Y)
FILENAME=$(echo $1 | sed 's/[^/]*\///')
FILE=$(echo $FILENAME | sed 's/\..*//')
FILEBIG=$(echo $FILE | tr '[:lower:]' '[:upper:]')
sed     &quot;s/%%AUTHOR%%/$REALNAME/g;
        s/%%DATE%%/$DATE/g;
        s/%%YEAR%%/$YEAR/g;
        s/%%FILENAME%%/$FILENAME/g;
        s/%%FILE%%/$FILE/g;
        s/%%FILEBIG%%/$FILEBIG/g;&quot;
</pre><p><br />
Neben den hier gezeigten Beispielen können auch Templates für andere Programmiersprachen oder generell Datei-Typen erstellt werden, die Möglichkeiten sind fast endlos.</p>

<p>Dieses Howto zeigt nur eine kleine Auswahl der möglichen <a href="http://www.vim.org/vimscriptlinks.php">Automatismen des Editors vim</a>, welche die tägliche Arbeit eines Admins erheblich erleichtern. Alle weiteren Howtos dieses Blogs werden als <a href="/de/howto/">Kategorie Howtos</a> samt eigenem Feed angeboten - falls ihr tiefer gehende <a href="http://www.credativ.de/home/open-source-support-center/unterstutzte-software/">Support- oder Service-Leistungen für GNU-Tools oder Linux</a> allgemein sucht, seit ihr bei uns ebenfalls richtig.</p>]]>
        
    </content>
</entry>

<entry>
    <title>[Tipp] Bilder automatisch richtig drehen mit exiftran</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/tipp-bilder-automatisch-richtig-drehen-mit-exiftran.html" />
    <id>tag:blog.credativ.com,2010:/de//1.140</id>

    <published>2010-03-12T12:30:08Z</published>
    <updated>2010-03-12T12:36:24Z</updated>

    <summary>Heutige Digitalkameras speichern zusätzlich zu den Bild-Daten noch weitere Meta-Daten im Exif-Standard - unter Anderem, wie die Kamera gedreht war, als das Bild aufgenommen wurde. Bild-Anzeige-Programme nutzen diese Informationen aber nur teilweise - einige drehen die Bilder in der Anzeige...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Debian" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tipp" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="bash.png" src="/de/static/bash.png" width="90" height="72" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" />Heutige Digitalkameras speichern zusätzlich zu den Bild-Daten noch weitere Meta-Daten im <a href="http://de.wikipedia.org/wiki/Exchangeable_Image_File_Format">Exif</a>-Standard - unter Anderem, wie die Kamera gedreht war, als das Bild aufgenommen wurde. Bild-Anzeige-Programme nutzen diese Informationen aber nur teilweise - einige drehen die Bilder in der Anzeige korrekt, andere nicht, so dass das Verhalten inkonsistent und für den Nutzer nicht vorhersehbar ist.</p>

<p>Dem Problem kann mit dem Programm <a href="http://linux.bytesex.org/fbida/">exiftran</a> begegnet werden: es dreht alle Bilder eines Verzeichnisses korrekt und löscht danach die entsprechende Exif-Information. Und es kann wirklich einfach für Massenverarbeitung genutzt werden:<br />
</p>
<pre class='brush: plain'>
# apt-get install exiftran
$ find -print0 | xargs -0 exifautotran
</pre><p></p>

<p>Bei anderen Distributionen heißt das Paket eventuell anders, Fedora z.B. liefert es als <tt>fbida</tt> aus.</p>]]>
        
    </content>
</entry>

<entry>
    <title>OpenGL 4.0 veröffentlicht</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/opengl-40-veroffentlicht.html" />
    <id>tag:blog.credativ.com,2010:/de//1.142</id>

    <published>2010-03-11T16:04:48Z</published>
    <updated>2010-03-11T16:34:36Z</updated>

    <summary>Wie soeben bekannt wurde, hat die Khronos-Gruppe die Versionen 3.3 und 4.0 der 2D und 3D-API OpenGL veröffentlicht. Insbesondere die Version 4.0 ist unerwartet. Nachdem OpenGL sich zwischen den Jahren 2004 und 2008 kaum bewegte, ja fast schon tot gesagt...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="X11" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="290px-OpenGL_logo.svg.png" src="http://blog.credativ.com/de/static/290px-OpenGL_logo.svg.png" width="100" height="44" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Wie soeben bekannt wurde, hat die Khronos-Gruppe die Versionen 3.3 und 4.0 der 2D und 3D-API OpenGL veröffentlicht. Insbesondere die Version 4.0 ist unerwartet.</em></p>

<p>Nachdem OpenGL sich zwischen den Jahren 2004 und 2008 kaum bewegte, ja fast schon tot gesagt wurde und immer weiter hinter den Konkurrenten DirectX zurück fiel, konzentriert sich die dafür verantwortliche Khronos-Gruppe seit Mitte 2008 wieder verstärkt auf die Fortentwicklung der Spezifikation: 2008 wurde die Version 3.0 veröffentlicht, 2009 folgten 3.1 und 3.2. Für diese Tage war die Version 3.3 erwartet worden, doch wurde heute neben 3.3 auch die Version 4.0 der überraschten Öffentlichkeit präsentiert.</p>

<p>Laut der Khronos-Gruppe bietet OpenGL 4.0 eine API, um auch modernste Hardware zu unterstützen - dies positioniert die neue API indirekt als Konkurrent zu DirectX11, das bisher neueste Hardware besser ansprechen konnte als das auf etwas ältere Hardware ausgelegte OpenGL 3.x. Dies konnte im Sinne der Unterstützung eher mit DirectX10 verglichen werden kann. Auch weist die <a href="http://www.khronos.org/news/press/releases/khronos-unleashes-cutting-edge-cross-platform-graphics-acceleration-opengl4">Pressemitteilung</a> explizit darauf hin, dass dieses Release insbesondere auf die Ansprüche der Entwickler angepasst ist und eine einfachere Entwicklung von Programmen ermöglichen soll.</p>

<p>Die neue API kommt aber erst zum Tragen, wenn sie auch implementiert wird: AMD und NVIDIA werden beide in der Pressemitteilung zitiert mit den Worten, dass sie bald die neue API unterstützen werden. Da NVIDIA und ATI in ihren Treibern für Linux und Windows weitestgehend den gleichen OpenGL-Stack verwenden, wird die OpenGL-4.0-Unterstützung damit auch bald unter Linux Einzug halten. Länger dauern wird es aber bei freien Linux-Treiber von Grafikkarten: die freie OpenGL-Implementierung <a href="http://www.mesa3d.org/">Mesa3D</a> bietet bisher nicht mal eine erste OpenGL-3.x-Unterstützung. Doch auch hier bewegt sich viel: während in der Vergangenheit teilweise Monate nichts von dem Projekt zu hören war, gibt es mittlerweile monatlich neue Versionen und Bugfix-Releases.</p>

<p>Wir von credativ wünschen uns transparentere Prozesse bei der Khronos-Gruppe, begrüßen aber natürlich das neue Release - immerhin sind <a href="http://www.credativ.de/home/software/softwareubersicht/">Support und Service rund um Open Source</a> unser Tagesgeschäft, und OpenGL ist ein wichtiger Bestandteil der Open-Source-Welt.</p>]]>
        
    </content>
</entry>

<entry>
    <title>Desktops und ihre Performance - was frisst eigentlich Ressourcen?</title>
    <link rel="alternate" type="text/html" href="http://blog.credativ.com/de/2010/03/kde-gnome-und-die-desktop-performance.html" />
    <id>tag:blog.credativ.com,2010:/de//1.137</id>

    <published>2010-03-10T09:53:09Z</published>
    <updated>2010-03-19T10:42:47Z</updated>

    <summary>Phoronix hat seine Test-Suite genutzt, um den Speicher- und Stromverbrauch verschiedener aktueller Desktops zu vergleichen. Die ermittelten Ergebnisse müssen aber differenziert betrachtet werden. Der &quot;Power &amp; Memory Usage&quot;-Test wurde durchgeführt, um zu ermitteln, ob LXDE und XFCE ressourcenschonender sind als...</summary>
    <author>
        <name>Roland Wolters</name>
        <uri>http://www.credativ.de</uri>
    </author>
    
        <category term="KDE" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Linux" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="News" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Open Source" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="credativ" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="de" xml:base="http://blog.credativ.com/de/">
        <![CDATA[<p><img alt="klogo-official-oxygen-128x128.png" src="/de/static/klogo-official-oxygen-128x128.png" width="100" height="100" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /><em>Phoronix hat seine Test-Suite genutzt, um den Speicher- und Stromverbrauch verschiedener aktueller Desktops zu vergleichen. Die ermittelten Ergebnisse müssen aber differenziert betrachtet werden.</em></p>

<p>Der <a href="http://www.phoronix.com/scan.php?page=article&item=linux_desktop_vitals&num=1">"Power & Memory Usage"-Test</a> wurde durchgeführt, um zu ermitteln, ob LXDE und XFCE ressourcenschonender sind als Gnome und KDE. Dabei kam auf den ersten Blick heraus, dass KDE besonders viel Speicher und Strom verbraucht. Die Desktops wurden dazu in ihrer Standard-Installation auf Ubuntu getestet. Die Werte sind aber mit Vorsicht zu betrachten.</p>

<p>So ist zum Beispiel das Messen des Speicherverhaltens von Applikationen nicht-trivial, exakte Messungen erfordern eine Menge Aufwand. Hintergrund ist unter Anderem, dass viele Applikationen sich den Speicher teilen - gerade bei KDE wird das massiv genutzt. Nur die wenigsten Programme können diesen geteilten Speicherverbrauch sauber auseinander rechnen. "top" und "free" sind zum Beispiel wertlos unter diesen Gesichtspunkten, wenn überhaupt sollte bei so etwas eher "exmap" genutzt werden. Eine genaue Analyse mit Hintergründen findet sich <a href="http://ktown.kde.org/~seli/memory/analysis.html">hier</a>.</p>

<p>Aber selbst wenn der Speicher korrekt gemessen wird, muss immer noch geprüft werden, was eigentlich den Speicher belegt: wenn ein Desktop wie Gnome oder KDE viel Speicher belegt beim Start, heißt das vor allen Dingen, dass sie umfangreiche Bilbiotheken laden, die eine Menge bieten - und von anderen Programmen genutzt werden können. Das führt zum Beispiel schnell dazu, dass beim <a href="http://ktown.kde.org/~seli/memory/desktop_benchmark.html">Test einer Speicherauslastung mit mehreren Programmen</a> eine Desktop-Umgebung kaum mehr Speicher braucht, während der Verbrauch anderer Umgebungen in die Höhe schnellt.</p>

<p>Doch selbst wenn diese Punkte berücksichtigt werden, muss beachtet werden, was die Desktops in dem Moment bereit stellen: KDE und auch Gnome werden in heutigen Versionen meist mit standardmäßig aktivierter Indizierung und Verschlagwortung von Dateien installiert, die zwischendurch mal anspringt, mal pausiert. Das kann Ergebnisse massiv verfälschen, wenn es nicht berücksichtigt wird. Auch sind meist Desktop-Effekte aktiviert - dass diese beiden Funktionen nicht ohne Einfluss auf den Verbrauch bleiben, versteht sich von selbst.</p>

<p>Ein Vergleich mit einem Desktop mit deutlich weniger Funktionen ist daher sinnfrei - sonst könnte man auch einen ausgeschalteten Rechner mit einbeziehen, der natürlich der Sieger wäre.</p>

<p>Die Zahlen des genannten  Phoronix-Tests sind daher leider nicht zu gebrauchen.</p>

<p>Allgemein kann die Phoronix-Test-Suite bestimmt genutzt werden, um Daten zu ermitteln oder Trends zu erkennen. Das erfordert aber in jedem Fall klar definierte Rahmenbedingungen, eine detaillierte Auseinandersetzung mit den verglichenen Objekten und deren Fähigkeiten und eine wissenschaftliche Analyse der ermittelten Daten. Bei diesem Test fehlt das aber - leider.</p>]]>
        
    </content>
</entry>

</feed>

