<?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>Lars Schenk &#187; Linux</title>
	<atom:link href="http://lars-schenk.com/category/open-source/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://lars-schenk.com</link>
	<description>IT-Services :: Software-Development since 1980 :: Freelancer since 1988</description>
	<lastBuildDate>Sat, 21 Apr 2012 15:42: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>&#8220;Waiting for root file system&#8221; caused by out dated VMware Server</title>
		<link>http://lars-schenk.com/waiting-for-root-file-system-caused-by-out-dated-vmware-server/445</link>
		<comments>http://lars-schenk.com/waiting-for-root-file-system-caused-by-out-dated-vmware-server/445#comments</comments>
		<pubDate>Wed, 25 Feb 2009 20:48:35 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[boot]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Etch]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[Lenny]]></category>
		<category><![CDATA[Upgrade]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/?p=445</guid>
		<description><![CDATA[I run into a strange problem when I upgraded some VMs from Debian Etch to Lenny. I&#8217;m using VMware Fusion on my MacBook Pro and VMware Server on my local Debian Server. Upgrading VMs hosted by the VMware Server ended in System boot hangs &#8220;Waiting for root file system&#8221;. Upgrading nearly the same Etch VMs [...]]]></description>
			<content:encoded><![CDATA[<p>I run into a strange problem when I upgraded some VMs from Debian Etch to Lenny. I&#8217;m using VMware Fusion on my MacBook Pro and VMware Server on my local Debian Server. Upgrading VMs hosted by the VMware Server ended in System boot hangs &#8220;Waiting for root file system&#8221;. Upgrading nearly the same Etch VMs hosted by VMware Fusion did not fail.</p>
<p>According to Debians Upgrade instruction and it&#8217;s &#8220;<a href="http://debian.org/releases/stable/i386/release-notes/ch-upgrading.en.html#how-to-recover">How to recover</a>&#8221; section, the problem can be caused by new naming conventions for IDE disks.</p>
<blockquote><p>This problem can occur when the upgrade of the kernel introduces the use of the new generation of IDE drivers. The IDE disk naming convention for the old drivers was hda, hdb, hdc, hdd. The new drivers will name the same disks respectively sda, sdb, sdc, sdd. The problem appears when the upgrade does not generate a new /boot/grub/menu.lst file to take the new naming convention into account. During the boot, Grub will pass a system root partition to the kernel that the kernel doesn&#8217;t find.
</p></blockquote>
<p>This seems like to be very common reason for these &#8220;Waiting for root file system&#8221; troubles that many faces now when upgrading to Lenny. But in my case I allready had the new sda* names in the grub/menu.lst and /etc/fstab. The &#8220;solution to recover&#8221; did not work. </p>
<p>The virtual lenny server with the new kernel images that fails to boot was hosted by VMWare Server 1.0.3. For a nearly the same upgrade process (etch to lenny) hosted on FMWare fusion 2.0.2, I did not have these problems. </p>
<p><strong>Solution:</strong> My VMWare Server 1.0.3 was out of date and had a known vmware bug that caused this error. Upgrading to the latest version (now 1.0.8) solved the problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/waiting-for-root-file-system-caused-by-out-dated-vmware-server/445/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nagios commands via web-interface on Debian</title>
		<link>http://lars-schenk.com/nagios-commands-via-web-interface-on-debian/446</link>
		<comments>http://lars-schenk.com/nagios-commands-via-web-interface-on-debian/446#comments</comments>
		<pubDate>Tue, 24 Feb 2009 21:58:15 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[tech-recipes]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Lenny]]></category>
		<category><![CDATA[Nagios]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/?p=446</guid>
		<description><![CDATA[Ups, I did it again &#8211; when I upgraded to Debian GNU/Linux 5 (lenny) and Nagios3 I stumbled about this nagios error when I try to send directs commands via the web-interface: Error: Could not stat() command file ‘/var/lib/nagios3/rw/nagios.cmd’! In &#8220;/etc/nagios3/nagios.cfg&#8221; the &#8220;check_external_commands=1&#8243; was already set. So there was something more required to make it [...]]]></description>
			<content:encoded><![CDATA[<p>Ups, I did it again &#8211; when I upgraded to Debian GNU/Linux 5 (lenny) and Nagios3 I stumbled about this nagios error when I try to send directs commands via the web-interface:</p>
<blockquote><p>Error: Could not stat() command file ‘/var/lib/nagios3/rw/nagios.cmd’!</p></blockquote>
<p>In &#8220;/etc/nagios3/nagios.cfg&#8221; the &#8220;check_external_commands=1&#8243; was already set. So there was something more required to make it run on Debian&#8230; </p>
<p>Deep in my memory I know that there was a debian way to solve this user right related problem. This time I&#8217;ll write it down here &#8211; perhaps I&#8217;ll find it more easily when I upgrade to Debian GNU/Linux 6.0 (codenamed squeeze) and/or Nagios4.</p>
<blockquote><p>/etc/init.d/nagios3 stop<br />
dpkg-statoverride &#8211;update &#8211;add nagios www-data 2710 /var/lib/nagios3/rw<br />
dpkg-statoverride &#8211;update &#8211;add nagios nagios 751 /var/lib/nagios3<br />
/etc/init.d/nagios3 start
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/nagios-commands-via-web-interface-on-debian/446/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Welches SDK: Android oder iPhone?</title>
		<link>http://lars-schenk.com/welches-sdk-android-oder-iphone/222</link>
		<comments>http://lars-schenk.com/welches-sdk-android-oder-iphone/222#comments</comments>
		<pubDate>Thu, 25 Sep 2008 00:14:53 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[osx]]></category>
		<category><![CDATA[Andriod]]></category>
		<category><![CDATA[G1]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[T-Mobile]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/welches-sdk-t-mobile-android-g1-oder-iphone/222</guid>
		<description><![CDATA[Ich habe mir das Video der Vorstellung des T-mobile G1 Android angeschaut&#8230;. Nunja. Der einzige echte Plusplunkt ist die konsequente Umsetzung von OpenSource. Alledings wirkt es auf mich auch fast wie eine Entschuldigung für alles wo das iPhone (noch) in einer anderen Liga spielt&#8230; Ich habe zu wenig Zeit um in das interessante Thema tiefer [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe mir das <a href="http://www.t-mobileg1.com/g1-announcement.aspx">Video der Vorstellung des T-mobile G1 Android</a> angeschaut&#8230;. Nunja. Der einzige echte Plusplunkt ist die konsequente Umsetzung von OpenSource. Alledings wirkt es auf mich auch fast wie eine Entschuldigung für alles wo das iPhone (noch) in einer anderen Liga spielt&#8230; </p>
<p>Ich habe zu wenig Zeit um in das interessante Thema tiefer einzusteigen &#8211; aber hier dennoch ein paar lesenswerte Artikel (etwas iPhone-lastig):</p>
<p><a href="http://gizmodo.com/5053747/android-and-t+mobile-g1s-five-most-obnoxious-flaws">Über die Schwachtstellen des T-mobile Android G1: zZ kein Syncing, Keyboard, Hardware, T-Mobile Tarife und mehr.</a></p>
<p>Aus Entwickler-Sicht sehr interessant der Vergleich zum &#8220;kontrollierten&#8221; <a href="http://gizmodo.com/5053211/android-market-might-be-even-bigger-mess-than-apples-app-store">AppStore vs. dem unreguliertem Andorid Market Place</a>.</p>
<p>Und ebenfalls interessant: <a href="http://gizmodo.com/5053441/giz-explains-whats-good-and-bad-about-developing-for-android-and-iphone">http://gizmodo.com/5053441/giz-explains-whats-good-and-bad-about-developing-for-android-and-iphone</a></p>
<p>Aus Benutzersicht ist das iPhone zZ noch das deutlich rundere Paket. Zumal wenn man auf dem Desktop OS X einsetzt, drängt sich das iPhone geradezu auf. Allerding sieht es aus Entwicklersicht ganz anders aus: wenn man nicht in das geregelte (geschlossene) System von Apple eintauchen will (und Objective C nicht einsetzen mag), bleibt nur der Android.</p>
<p>Ich vermute, dass Android zum Start kein Renner wird und sich womöglich ähnlich schwer tun wird wie Linux den Desktop zu erobern. Aber immerhin hat das iPhone nun einen mächtigen Gegenspieler (mit sehr starken Konzepten) und die OpenSource Entwickerkommunity hat endlich ein <a href="http://code.google.com/android/">SDK 1.0 für Android</a>. Es wird spannend&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/welches-sdk-android-oder-iphone/222/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Debians Supergau: Das Internet ist nicht mehr sicher &#8211; und Kurt ist schuld</title>
		<link>http://lars-schenk.com/debians-supergau-das-internet-ist-nicht-mehr-sicher-und-kurt-ist-schuld/212</link>
		<comments>http://lars-schenk.com/debians-supergau-das-internet-ist-nicht-mehr-sicher-und-kurt-ist-schuld/212#comments</comments>
		<pubDate>Sat, 17 May 2008 00:57:30 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[OpenSSL]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SSH]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/debians-superau-das-internet-ist-nicht-mehr-sicher-und-kurt-ist-schuld/212</guid>
		<description><![CDATA[&#8216;Ach Du Schreck&#8217; denke ich, als ich beim obligatorischen upgraden der Debian-Pakete den folgenden Hinweis bekam: Vulnerable host keys will be regenerated Some of the OpenSSH server host keys on this system were generated with a version of OpenSSL that had a broken random number generator. As a result, these host keys are from a [...]]]></description>
			<content:encoded><![CDATA[<p>&#8216;Ach Du Schreck&#8217; denke ich, als ich beim obligatorischen upgraden der Debian-Pakete den folgenden Hinweis bekam:</p>
<blockquote><p>Vulnerable host keys will be regenerated</p>
<p>Some of the OpenSSH server host keys on this system were generated with a version of OpenSSL that had a broken random number generator. As a result, these host keys are from a well-known set, are subject to brute-force attacks, and must be regenerated.<br />
&#8230;
</p></blockquote>
<p>Mehr Details dazu unter: <a href="http://lists.debian.org/debian-security-announce/2008/msg00152.html">http://lists.debian.org/debian-security-announce/2008/msg00152.html</a></p>
<p>Das ist wirklich schlimm, denn anders als bei den meisten üblichen Sicherheitslücken, die durch einen Patch sofort mehr oder weniger zuverlässig geschlossen werden (hoffentlich ohne neue Sicherheitslücken aufzureissen), ist dieser Fehler eher wie eine Art Bandwurm. Das fehlerhafte Debian Paket OpenSSL hat Schlüssel erzeugt, die nicht so zufällig waren wie sie hätten sein sollen. Daher sind diese Schlüssel vorhersagbar und nicht sicher. </p>
<p>Etliche sicher geglaubte Keys sind längst im Umlauf (das Problem besteht seit dem 17.09.2006) und müssen nun rasch durch neue, sichere Schlüssel ersetzt werden, bevor die schwachen Schlüssel, die ja auch zur Authentifizierung genutzt werden, geknackt werden. <span id="more-212"></span></p>
<p>Wenn solche schwachen Schlüssel für vermeintlich sichere Verbindungen genutzt wurden, könnten die übertragenen Daten sogar im Nachhinein entschlüsselt werden, wenn der Traffic mitgeschnitten wurde. Womöglich lassen sich daraus sicherheitsrelevante Daten gewinnen.</p>
<p>Das Patchen verhindert zunächst nur, dass nicht weitere schwache Schlüssel erzeugt werden &#8211; aber die bereits in Verwendung befindlichen schwachen Schlüssel sind zunächst ja weiterhin im Umlauf. Das macht diesen Fehler so dramatisch. Der Aufwand für die Admins ist jetzt irre gross: Alles betroffenen Schlüssel müssen ermittelt und ausgetauscht werden &#8211; in allen Anwendungen und auf allen Servern wo sie eingesetzt werden. Viel Angriffsfläche wie man auch dem <a href="http://www.debian.org/security/key-rollover/">Debian Key-Rollover Dokument</a> entnehmen kann. </p>
<p>Der Fehler zieht also weite Kreise über Debian Grenzen hinaus und stiftet grosses Chaos &#8211; auch <a href="http://www.heise.de/security/OpenSSL-Wirrwarr-verunsichert-Anwender-und-Admins--/news/meldung/108005">Heise berichtete schon darüber</a> und bietet einen einfachen <a href="http://www.heise.de/security/Der-kleine-OpenSSL-Wegweiser--/artikel/108001">deutsprachigen Leitfaden an</a>. </p>
<p>Das installieren des Patches aktiviert eine Blacklist für &#8220;schwache&#8221; Schlüssel, so dass Debian Admins Gefahr laufen, sich auszuschliessen, wenn sie bisher nur mit schwachen Schlüssen einloggen konnten und versäumen neue &#8220;harte&#8221; Schlüssel anzulegen und einzutragen. </p>
<p>Der Schaden für das Ansehen von Debian ist gross &#8211; auch wenn <a href="http://www.heise.de/open/Die-Woche-OpenSSL-und-die-Folgen--/artikel/107951/">heise mit einem guten Kommentar versucht die Wogen etwas zu glätten</a>. Wie konnte ein einzelner Paket-Maintainer (Kurt R.) einen solchen dummen und unnötigen Bug einbauen ohne dass eine Qualitätssicherung greift oder jemand von der Mailingliste darüber stolpert. Wieso gab es keine Kommunikation mit den Autoren des OpenSSL Quellcodes. Konnte sich der Fehler einschleichen und so lange unentdeckt bleiben, weil Debian ja neuerdings versucht aktueller zu sein und somit den Zeitdruck auf die Maintainer erhöht? <a href="http://www.gergely.risko.hu/debian-dsa1571.en.html">Gergely Riskó stellt in seinem Artikel die Hintergründe des Supergau zusammen</a>.</p>
<p>Auch für Open Source könnte damit Schaden entstanden sein. Was üblicherweise eine Stärke von Open Source ist, könnte sich nun als Nachteil erweisen, denn bei einem Closed-Source System würden wohl nicht so rasch die Details über die Schwachstelle zu ermitteln sein, die es &#8220;den Bösen&#8221; erleichtern das Sicherheitsloch rasch auszunutzen. Derzeit kann wohl noch keiner einschätzen, wie groß der Schaden sein wird, der durch die Entschlüsselung von mitgeschnittenen Daten über vermeintlich sichere Verbindungen entsteht. </p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/debians-supergau-das-internet-ist-nicht-mehr-sicher-und-kurt-ist-schuld/212/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>VMWare Fusion nicht kompatibel zu VMWare Server 1.x</title>
		<link>http://lars-schenk.com/vmware-fusion-nicht-kompatibel-zu-vmware-server-1x/203</link>
		<comments>http://lars-schenk.com/vmware-fusion-nicht-kompatibel-zu-vmware-server-1x/203#comments</comments>
		<pubDate>Tue, 18 Mar 2008 20:47:45 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Converter]]></category>
		<category><![CDATA[Fusion]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/vmware-fusion-nicht-kompatibel-zu-vmware-server-1x/203</guid>
		<description><![CDATA[Ich habe eine VM mit Fusion erstellt, die Debian Etch enthält. Diese soll nun unter VMWare Server 1.x laufen. Die unter Fusion erstellte VM ist aber nicht kompatibel mit VMWareServer 1.x. Ob der neue VMWare Server 2.x, der zZ. in beta ist, mit Fusion erstelte VMs laufen lassen kann, habe ich nicht ausprobiert. Ich habe [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe eine VM mit <a href="http://www.vmware.com/products/fusion/">Fusion</a> erstellt, die Debian Etch enthält. Diese soll nun unter <a href="http://www.vmware.com/products/server/">VMWare Server</a> 1.x laufen. Die unter Fusion erstellte VM ist aber nicht kompatibel mit VMWareServer 1.x. Ob der neue VMWare Server 2.x, der zZ. in beta ist, mit Fusion erstelte VMs laufen lassen kann, habe ich nicht ausprobiert. Ich habe mit <a href="http://www.vmware.com/products/converter/">VMWare Converte</a>r die mit Fusion erstellte VM in das Format von VMWareServer 1.x gebracht. </p>
<p>Nach dem Konvertieren findet die VM unter VMWare Server nicht mehr das Netzwerk. /etc/network/interfaces ist unter Fusion mit eth0 gelaufen. Unter VMWareServer zeigt die VM mit &#8220;ifconfig -a&#8221; nur ein eth1 an. Ich habe die also in /etc/interfaces das primary network interface von eth0 auf eht1 geändert. Danach &#8220;/etc/ini.d/network restart&#8221; und nun läuft es wieder. Muss ich bei Gelegenheit mal genauer schauen, was da schief gelaufen ist &#8211; muss wohl irgendwas mit dem vmxnet networking driver sein.</p>
<p>Update: Die VM wurde &#8220;geklont&#8221; dabei wurde eine neue MAC-Adresse angelegt. Bei Debian ist in der &#8220;/etc/udev/rules.d/z25_persistent-net.rules&#8221; die alte MAC-Adresse eingetragen. Ich habe die &#8220;/etc/udev/rules.d/z25_persistent-net.rules&#8221; gelöscht und rebootet. Danach war das interface wieder als eth0 zu verwenden. </p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/vmware-fusion-nicht-kompatibel-zu-vmware-server-1x/203/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Zeitsynchronisierungs-Probleme unter VMWare</title>
		<link>http://lars-schenk.com/zeitsynchronisierungs-probleme-unter-vmware/202</link>
		<comments>http://lars-schenk.com/zeitsynchronisierungs-probleme-unter-vmware/202#comments</comments>
		<pubDate>Sun, 16 Mar 2008 21:36:59 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[guest]]></category>
		<category><![CDATA[host]]></category>
		<category><![CDATA[ntpd]]></category>
		<category><![CDATA[sync]]></category>
		<category><![CDATA[time]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/zeitsynchronisierungs-probleme-unter-vmware/202</guid>
		<description><![CDATA[Um zigtausende &#8220;rtc: lost some interrupts&#8221; Meldungen aus dem syslog zu verbannen, hatte ich für einzelne betroffenen VMs den Eintrag &#8220;host.useFastClock = FALSE&#8221; in der *.vmx gesetzt. Der Preis dafür war eine nicht mehr exakte Zeitsynchronisierung die bisher für meine Anwendungsfälle vertretbar war und durch externe Zeitsynchronisierung (ntpd) aufgefangen wurde. Auch andere haben schon vor [...]]]></description>
			<content:encoded><![CDATA[<p>Um zigtausende &#8220;<a href="/vmware-rtc-lost-some-interrupts/140/trackback">rtc: lost some interrupts</a>&#8221; Meldungen aus dem syslog zu verbannen, hatte ich für einzelne betroffenen VMs den Eintrag &#8220;host.useFastClock = FALSE&#8221; in der *.vmx gesetzt. Der Preis dafür war eine nicht mehr exakte Zeitsynchronisierung die bisher für meine Anwendungsfälle vertretbar war und durch externe Zeitsynchronisierung (<a href="http://de.wikipedia.org/wiki/Network_Time_Protocol">ntpd</a>) aufgefangen wurde. </p>
<p>Auch <a href="http://www.adrianbradshaw.co.uk/secretwiki/index.php/VMware-Time-Sync">andere</a> haben schon vor dem Problem gestanden und versucht die 25 seitige Dokumentation &#8220;<a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf">Timekeeping in VMware Virtual Machines</a>&#8221; irgendwie auf das wesentliche zusammenzufassen.</p>
<p>Nach dem Tipp eines befreundeten Admins (Danke Dirk) in die Knowledgebase bei <a href="http://kbase.redhat.com/faq/FAQ_43_9259.shtm">RedHat</a> zu schauen, finde ich dort nur den Weg, den ich zuvor schon versucht hatte. Grob zusammengefasst:</p>
<p>1. Im Gast OS die VMWare-Tools installieren.</p>
<p>2. In der *.vmx Datei den Eintrag<br />
tools.syncTime = &#8220;TRUE&#8221;<br />
setzen.</p>
<p>3. ntpd im Gast nicht erforderlich aber für den Host empfohlen.</p>
<p>Damit hatte es aber noch nicht geklappt (Gast Uhr läuft extrem hinterher) und ohne den Eintrag &#8220;host.useFastClock = FALSE&#8221; werde ich mit &#8220;rtc: lost some interrupts&#8221; im Syslog zugeschmissen. </p>
<p>Also ist eine rasch zu ergoogelnde Lösung nicht in Sicht und ich muss nochmal genauer in die VMWare-Bibel der Zeitsynchronierung schauen. Dort finde ich auf Seite 22 bei Punkt 3, Unterpunkt 3 eine Lösung die für meine Konfiguration (Host = 2.6.18-6-686 #1 SMP mit VMWare Server1.x) funktioniert: </p>
<blockquote><p>Linux kernel 2.6 guests normally request 1000 PIT 0 timer interrupts per second, plus, in<br />
some cases, 1000 local APIC timer interrupts on each virtual CPU. For single processor guests, you can usually eliminate the unneeded APIC timer interrupts by including the kernel command line flags noapic nolapic nosmp. (All three flags may not be needed, depending on your exact kernel version, but it should be harmless to give all three.)</p></blockquote>
<p>Aktuelle fahre ich also folgende Kernel Flags für die VM in der grub/menu.lst:<br />
kernel      /boot/vmlinuz-2.6.18-6-686 root=/dev/sda1 ro noapic nolapic nosmp clock=pmtmr<br />
und habe damit eine synchrone Zeit zwischen Host und VM und keinerlei &#8220;rtc: lost some interrupts&#8221; Meldungen im Syslog mehr.  </p>
<p>Wie schön dass es noch immer einen Schalter mehr gibt, den man noch ausprobieren kann&#8230; Oder wie schreibt VMWare so schön auf Seite 25: &#8220;Conclusion: Timekeeping in virtual machines is a complex subject.&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/zeitsynchronisierungs-probleme-unter-vmware/202/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>VMWare rtc: lost some interrupts</title>
		<link>http://lars-schenk.com/vmware-rtc-lost-some-interrupts/140</link>
		<comments>http://lars-schenk.com/vmware-rtc-lost-some-interrupts/140#comments</comments>
		<pubDate>Tue, 04 Sep 2007 00:01:55 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Etch]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/vmware-rtc-lost-some-interrupts/140</guid>
		<description><![CDATA[Nachdem ich VMWare Server unter Debian Etch Linux laufen lasse, bekomme ich bei einigen Gast OS die Meldung &#8220;rtc: lost some interrupts&#8221; im Syslog des Hosts eingetragen &#8211; und war sehr häufig, so dass das Syslog regelrecht zugemüllt wird. Eine Lösung für Gast OSe, die keine absolut exakte Zeiterfassung benötigen kann man dem VMWare Timekeeping [...]]]></description>
			<content:encoded><![CDATA[<p>Nachdem ich VMWare Server unter Debian Etch Linux laufen lasse, bekomme ich bei einigen Gast OS die Meldung &#8220;rtc: lost some interrupts&#8221; im Syslog des Hosts eingetragen &#8211; und war sehr häufig, so dass das Syslog regelrecht zugemüllt wird. Eine Lösung für Gast OSe, die keine absolut exakte Zeiterfassung benötigen kann man dem <a href="http://www.vmware.com/pdf/vmware_timekeeping.pdf">VMWare Timekeeping Manual</a> entnehmen:</p>
<blockquote><p>
You can prevent /dev/rtc from being used. This will generally cause clocks to run slow<br />
in any virtual machines you have that need the additional interrupts, but that may be<br />
acceptable to you, depending on your application. To do so, add the following setting to<br />
each virtual machine&#8217;s .vmx configuration file, or add the setting globally to the host&#8217;s<br />
configuration file (/etc/vmware/config):</p>
<p>host.useFastClock = FALSE</p></blockquote>
<p>Wenn man diese Zeile im /etc/vmware/config einträgt und vmware neu startet (/etc/init.d/vmware restart), ist man die Einträge im Syslog los.</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/vmware-rtc-lost-some-interrupts/140/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Browse button in VMWare führt zum Crash</title>
		<link>http://lars-schenk.com/browse-button-in-vmware-fuehrt-zum-crash/138</link>
		<comments>http://lars-schenk.com/browse-button-in-vmware-fuehrt-zum-crash/138#comments</comments>
		<pubDate>Sat, 01 Sep 2007 00:32:20 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Virtualisierung]]></category>
		<category><![CDATA[Ubuntu]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/browse-button-in-vmware-fuehrt-zum-crash/138</guid>
		<description><![CDATA[Ich habe meine VMWare Server Installation von Ubuntu 6.06 LTS auf eine performantere Machine unter Debian 4 (Etch) portiert. Ein HowTo zur Installation von VMWare unter Etch gibt es hier. Dabei bin ich darüber gestolpert, dass der &#8220;Browse Button&#8221; zum Crash führte. Hier habe ich eine Lösung gefunden, die als root durchzuführen ist: 1. cd [...]]]></description>
			<content:encoded><![CDATA[<p>Ich habe meine VMWare Server Installation von Ubuntu 6.06 LTS auf eine performantere Machine unter Debian 4 (Etch) portiert. Ein HowTo zur <a href="http://www.howtoforge.com/debian_etch_vmware_server_howto">Installation von VMWare unter Etch gibt es hier</a>. Dabei bin ich darüber gestolpert, dass der &#8220;Browse Button&#8221; zum Crash führte.</p>
<p>Hier habe ich eine Lösung gefunden, die als root durchzuführen ist:</p>
<blockquote><p>1.  cd /usr/lib/vmware/lib/libpng12.so.0<br />
2. mv libpng12.so.0 libpng12.so.0.old<br />
3. ln -sf /usr/lib/libpng12.so.0<br />
4. cd ../libgcc_s.so.1<br />
5. mv libgcc_s.so.1 libgcc_s.so.1.old<br />
6. ln -sf /lib/libgcc_s.so.1</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/browse-button-in-vmware-fuehrt-zum-crash/138/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Automatisierte Backups nach Amazon S3 mit s3sync</title>
		<link>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137</link>
		<comments>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137#comments</comments>
		<pubDate>Tue, 28 Aug 2007 10:14:44 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tech-recipes]]></category>
		<category><![CDATA[S3]]></category>
		<category><![CDATA[s3sync]]></category>

		<guid isPermaLink="false">http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137</guid>
		<description><![CDATA[Um meine Daten nach Amazon S3 zu sichern, habe ich mich unter der vielzahl verfügbarer Tools für S3Sync entschieden. Da dieses in ruby geschriebene Tools sich an rsync anlehnt und es auch unter Amazon EC2 wertvolle Dienste erbringt um das flüchtige Filesystem der virtuellen Server persistent zu halten, ist es für mich die erste Wahl. [...]]]></description>
			<content:encoded><![CDATA[<p>Um meine Daten nach <a href="http://www.amazon.com/s3/">Amazon S3</a> zu sichern, habe ich mich unter der <a href="http://elastic8.com/blog/tools_for_accessing_using_to_backup_your_data_to_and_from_s3.html">vielzahl verfügbarer Tools</a> für <a href="http://s3.amazonaws.com/ServEdge_pub/s3sync/README.txt">S3Sync</a> entschieden. Da dieses in <a href="http://www.ruby-lang.org">ruby</a> geschriebene Tools sich an <a href="http://samba.anu.edu.au/rsync/">rsync</a> anlehnt und es auch unter Amazon <a href="http://aws.amazon.com/ec2/">EC2</a> wertvolle Dienste erbringt um das flüchtige Filesystem der virtuellen Server persistent zu halten, ist es für mich die erste Wahl.</p>
<p>Auf einer Debian (oder auch Ubuntu) basierten Linux Distribution erfolgt die Installation mit: <span id="more-137"></span></p>
<div class="igBar"><span id="lcode-2"><a href="#" onclick="javascript:showPlainTxt('code-2'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-2">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># Ruby <span style="color:#006600; font-weight:bold;">&#40;</span>&gt;=<span style="color:#800000;color:#800000;">1</span>.<span style="color:#800000;color:#800000;">8</span>.<span style="color:#800000;color:#800000;">4</span><span style="color:#006600; font-weight:bold;">&#41;</span> und die OpenSSL ruby library werden benötigt</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ sudo apt-get install ruby libopenssl-ruby</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># In das Verzeichnis in das s3sync installiert werden soll</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ cd /home/user/</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># s3sync downloaden und entpacken</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ wget http:<span style="color:#FF9933; font-style:italic;">//s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$ tar xvzf s3sync.<span style="">tar</span>.<span style="">gz</span>; rm s3sync.<span style="">tar</span>.<span style="">gz</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># das s3config.<span style="">yml</span> mit Umgebungsvariablen füllen</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">cp s3config.<span style="">yml</span>.<span style="">example</span> s3config.<span style="">yml</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># Das yml nur für den Owner lesbar machen</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">chmod <span style="color:#800000;color:#800000;">600</span> s3config.<span style="">yml</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">vi s3config.<span style="">yml</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># aws_access_key_id: <span style="color:#800000;color:#800000;">11111111111111111111111</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># aws_secret_access_key: <span style="color:#800000;color:#800000;">222222222222222222222</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># ssl_cert_file: /home/user/s3sync/my_ssl_cert</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"># <span style="color:#006600; font-weight:bold;">&#40;</span>hier nun die eigenen AWS Daten eintragen<span style="color:#006600; font-weight:bold;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Das Verwenden der yml Datei wurde erst in einer späten Version von s3sync hinzugefügt. Es erspart das Setzen der Umgebungsvariablen bevor das s3sync Script aufgerufen wird.</p>
<p>Ein Beispiel für ein SSL_CERT_FILE wird im <a href="http://s3.amazonaws.com/ServEdge_pub/s3sync/README.txt">Readme</a> von s3sync gegeben.</p>
<p>Besitzer, Gruppe und Rechte bleiben mit s3sync erhalten. Leider gehen mir aber die Timestamps verloren.</p>
<p>Weiterführende Dokumentation gibt es <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=931&#038;categoryID=100">hier</a>. In diesem Beispiel wird auch gezeigt wie man s3sync auf einer ec2 Instanz einsetzt.</p>
<p>Jeder Benutzer kann bis zu 100 Buckets erstellen. Da die Buckets bei öffentlichen Dateien als Teil der URL erscheinen sollte man sich hier sprechende und kurze Namen überlegen (sofern diese noch frei sind). Jedes Bucket kann man wie ein logisches Laufwerk betrachten. Daher ist es auch möglich in unterschiedlichen Buckets unterschiedliche Inhalte/Strukturen zu verwenden. Es spricht also nichts dagegen mit einem S3 Benutzerkonto <a href="http://">JungleDisk</a> oder andere S3 basierte Tools und S3Sync parallel in getrennten Buckets zu verwenden.</p>
<p>Während der Evaluierungsphase habe ich neben s3cmd.rb auch <a href="http://www.rjonna.com/ext/s3fox.php">S3Fox</a> verwendet um den Inhalt meiner mit s3sync.rb gefüllten Buckets zu kontrollieren. Wie auch bei rsync schätze ich den Vorteil, dass ich die erstellten Backups - anders als bei tar oder Duplicity - direkt betrachten, kontrollieren und nutzen kann. Da jede Datei in einem Key/Blob abgelegt wird, kann man leicht einzelne Dateien restaurieren oder über die S3 ACL öffentlich zugänglich machen. Leider hat S3Fox Probleme die von s3sync gefüllten Buckets darzustellen. Im s3sync Readme (Changelog) gibt der Autor dazu folgenden Hinweis:</p>
<blockquote><p>
In the case of commands of the form:<br />
	s3sync -r somedir somebucket:<br />
The root directory node in s3 was being stored as "somedir/" instead of "somedir"<br />
which caused restores to mess up when you say:<br />
	s3sync -r somebucket: restoredir<br />
The fix to this, by coincidence, actually makes s3fox work even *less* well with<br />
s3sync.  I really need to build my own xul+javascript s3 GUI some day.
</p></blockquote>
<p>Anstatt von S3Fox nutze ich nun den <a href="http://people.no-distance.net/ol/software/s3/">Mac OS X S3 Browser</a>. </p>
<p>Alternativen zu S3Sync?<br />
Für umfangreichere Backups mag der s3sync Ansatz weniger geeignet sein, denn aufgrund der Architektur von S3 muss s3sync für jede Datei einen Request an S3 senden, was viel Bandbreite und Zeit verbrauchen kann.</p>
<p>Aus diesem Grund wäre eigentlich <a href="http://duplicity.nongnu.org/">Duplicity</a> die bessere Wahl um umfangreiche Datenmengen bzw. viele Dateien auf S3 zu sichern. Duplicity verfolgt einen ganz anderen Ansatz und ist damit in der Lage sehr bandbreitenschonend Backups zu erstellen. Seit der Version 0.4.3.RC9 (2007/07/09) unterstützt Duplicity auch S3 nativ als Backend.<br />
Für mein Vorhaben ist Duplicity jedoch weniger geeigent, da die gesicherten Dateien nicht mehr im "direkten" Zugriff in S3 verfügbar sind sondern in encrypted und signierten Archiven abgelegt werden. Da inkrementell gesichert wird, wird der erforderliche Speicherplatz immer größer da Archive nicht gelöscht werden können solange nicht eine erneute Vollständige Sicherung gemacht wird. Eine vollständige Sicherung auf S3 verbraucht jedoch wieder enorme Bandbreite / Traffic und Zeit. Und immer nur inkrementell zu sichern erscheint mir auch nicht ratsam.</p>
<p>Bestrebungen S3 über ein Filesystem nutzbar zu machen (S3/Fuse, JungleDisk u.a.) um dieses dann per rsync nutzen zu können erscheinen mir aber auch nicht vielversprechend, da die S3 API nur sehr grundlegende Funktionen bereitstellt (z.b. kein Seek in einem Blob; ändert sich ein Blob, so muss er komplett neu hochgeladen werden), so dass die Vorteile von rsync hier nicht ausgespielt werden können.</p>
<p>Allerdings wäre S3/fuse natürlich eine KillerApp. Insbesondere auch für EC2 um so ein persistentes Filesystem zu erhalten.</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/automatisierte-backups-nach-amazon-s3-mit-s3sync/137/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>String-Funktionen und Patternmatching in Bash</title>
		<link>http://lars-schenk.com/string-funktionen-und-patternmatching-in-bash/121</link>
		<comments>http://lars-schenk.com/string-funktionen-und-patternmatching-in-bash/121#comments</comments>
		<pubDate>Thu, 14 Jun 2007 13:06:23 +0000</pubDate>
		<dc:creator>Lars Schenk</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tech-recipes]]></category>

		<guid isPermaLink="false">http://www.lars-schenk.com/string-funktionen-und-patternmatching-in-bash/121</guid>
		<description><![CDATA[String-Funktionen und Patternmatching in Bash nutze ich eher selten und bin daher immer froh, wenn ich rasch etwas zum Nachschlagen finde. Diesmal hat mir dieser Artikel weitergeholfen der in einem Kommentar diese ergänzende und mir sehr hilfreiche Tabelle enthielt: PLAIN TEXT CODE: $&#123;var:pos&#91;:len&#93;&#125; # extract substr from pos &#40;0-based&#41; for len $&#123;var/substr/repl&#125; # replace first [...]]]></description>
			<content:encoded><![CDATA[<p>String-Funktionen und Patternmatching in Bash nutze ich eher selten und bin daher immer froh, wenn ich rasch etwas zum Nachschlagen finde. Diesmal hat mir <a href="http://www.linuxjournal.com/article/8919">dieser Artikel</a> weitergeholfen der in einem Kommentar diese ergänzende und mir sehr hilfreiche Tabelle enthielt:</p>
<div class="igBar"><span id="lcode-4"><a href="#" onclick="javascript:showPlainTxt('code-4'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">CODE:</span>
<div id="code-4">
<div class="code">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var:pos<span style="color:#006600; font-weight:bold;">&#91;</span>:len<span style="color:#006600; font-weight:bold;">&#93;</span><span style="color:#006600; font-weight:bold;">&#125;</span> # extract substr from pos <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;color:#800000;">0</span>-based<span style="color:#006600; font-weight:bold;">&#41;</span> for len</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var/substr/repl<span style="color:#006600; font-weight:bold;">&#125;</span> # replace first match</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var<span style="color:#FF9933; font-style:italic;">//substr/repl} # replace all matches</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var/#substr/repl<span style="color:#006600; font-weight:bold;">&#125;</span> # replace if matches at beginning <span style="color:#006600; font-weight:bold;">&#40;</span>non-greedy<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var/##substr/repl<span style="color:#006600; font-weight:bold;">&#125;</span> # replace if matches at beginning <span style="color:#006600; font-weight:bold;">&#40;</span>greedy<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var/%substr/repl<span style="color:#006600; font-weight:bold;">&#125;</span> # replace if matches at end <span style="color:#006600; font-weight:bold;">&#40;</span>non-greedy<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>var/%%substr/repl<span style="color:#006600; font-weight:bold;">&#125;</span> # replace if matches at end <span style="color:#006600; font-weight:bold;">&#40;</span>greedy<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>#var<span style="color:#006600; font-weight:bold;">&#125;</span> # returns length of $var</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#123;</span>!var<span style="color:#006600; font-weight:bold;">&#125;</span> # indirect expansion </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Verwandte weiterführende Infos gibt's in meinem Artikel "<a href="/regulaere-ausdruecke/77">Reguläre Ausdrücke - kurz und bündig</a>".</p>
]]></content:encoded>
			<wfw:commentRss>http://lars-schenk.com/string-funktionen-und-patternmatching-in-bash/121/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

