Mein Zweithirn
https://zweithirn.friiks.de/
Über Dinge, die ich mal wusste und später wissen will, wo sie stehendehttps://zweithirn.friiks.de/templates/default/img/s9y_banner_small.pngRSS: Mein Zweithirn - Über Dinge, die ich mal wusste und später wissen will, wo sie stehen
https://zweithirn.friiks.de/
10021Wicd und dhcpcd
https://zweithirn.friiks.de/archives/175-Wicd-und-dhcpcd.html
<p>Neuerdings wollte mein Networkmanager "<strong>wicd</strong>" sich weigern mir kabelgebundenes Netz einzurichten.</p> <br />
<p> Zunächst verbindet er sich fröhlich, holt sich (laut Log) ein DHCP Lease und schreibt dann aber nach ein paar Sekunden ins Log:<br /></p> <br />
<pre>dhcpcd[12948]: dhcpcd not running<br />
dhcpcd[12954]: sending signal ARLM to pid 12864<br />
dhcpcd[12954]: waiting for pid 12864 to exit<br />
dhcpcd[12864]: received signal ALRM from PID 12954, releasing<br />
dhcpcd[12864]: eth0: removing interface<br />
dhcpcd[12864]: eth0: deleting address 2001:.....</pre> <br />
<p>Nach etwas googlen stellt sich raus, das es am Zusammenspiel zwischen dhcpcd und wicd hängt [1].</p> <br />
<p>Der <strong>dhcpcd</strong> verschwindet nämlich in der Standardeinstellung in den Hintergrund, sobald er eine IP-Adresse<strong> irgendeines Protokolls</strong> erhalten hat, in dem Fall <strong>IPv6</strong>:</p> <br />
<pre>dhcpcd[12721]: eth0: soliciting a DHCP lease<br />
dhcpcd[12721]: eth0: Router Advertisement from fe80::...<br />
dhcpcd[12721]: eth0: adding address 2001:..../64<br />
dhcpcd[12721]: eth0: adding route to 2001:..../64<br />
dhcpcd[12721]: eth0: adding default route via fe80::...<br />
dhcpcd[12721]: eth0: requesting DHCPv6 information<br />
dhcpcd[12721]: forked to background, child pid 12864<br />
</pre> <br />
<p> Der wicd schaut aber, wenn der dhcpcd sich verabschiedet, ob eine IPv4-Adresse konfiguriert wurde, was wegen des noch laufenden DHCP Handshakes noch nicht der Fall ist. Daher wird gleich wieder disconnected.</p> <br />
<h3>Lösung des Problems:</h3> <br />
<p>In die /etc/dhcpcd.conf die Zeile</p> <br />
<pre>waitip 4</pre> <br />
<p>hinzufügen. Das veranlasst den dhcpcd immer auf eine IPv4-Adresse zu warten, bevor er sich forked.</p> <br />
<p>[1] <a href="https://bugs.launchpad.net/wicd/+bug/933378">https://bugs.launchpad.net/wicd/+bug/933378</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)
Linux, 2014-08-20T11:49:51Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1753https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=175linuxWindows Server 2008 Password Reset
https://zweithirn.friiks.de/archives/173-Windows-Server-2008-Password-Reset.html
<p>Wie das immer so ist: irgendwer setzt einen Server auf, macht eine Weile nichts damit und schon ist das Passwort vergessen.</p> <br />
<p>Um das Problem ohne Neuinstallation zu lösen, gibt es Linux-Tool namens <strong>chntpw</strong> [1]. Das liegt eingen Linux LiveCDs bereits bei, auf anderen LiveCDs reicht ein Download des Executables per Netzwerk, da es kaum Bibliotheksabhängigkeiten hat.</p> <br />
<ol> <br />
<li>Auf der LiveCD die Windows Partition mounten</li> <br />
<li>Das Verzeichnis nach /mnt/$winpartition/Windows/System32/config wechseln</li> <br />
<li><strong>chntpw -i SAM</strong> aufrufen und sich durchs Menu klicken<br /></li> <br />
<li>Am Ende Änderungen speichern nicht vergessen</li> <br />
<li>Reboot<br /></li> <br />
</ol> <br />
<p>Nach meinen Recherchen und Versuchen gibt es jedenfalls folgende Erkenntnisse: <br /></p> <br />
<ul> <br />
<li>Recovery funktioniert eher nicht</li> <br />
<li>Passwort neu setzen brachte bei Server 2008 R2 keinen Erfolg. Meldet zwar keinen Fehler, das neue Passwort funktioniert dann aber trotzdem nicht.</li> <br />
<li><strong>Passwort entfernen funktioniert</strong></li> <br />
<li>Jemand zum Admin machen funktioniert<br /></li> <br />
</ul> <br />
<p>[1] <a href="http://pogostick.net/~pnh/ntpasswd/">http://pogostick.net/~pnh/ntpasswd/</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2013-09-30T12:19:01Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1730https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=173Hack it!
https://zweithirn.friiks.de/archives/172-Hack-it!.html
<p>Beim Stöbern in alten Backups und "to_sort"-Ordnern hab ich was wiedergefunden, was ich Ende des 4. Semesters gebaut habe, was nun schon einige Jahre her ist:</p>
<blockquote>
<p> <font size="4"><strong>Hack its</strong></font></p>
</blockquote>
<p>Ein Hackit besteht aus einer Datei, die es zu knacken gilt. Sie besteht aus mehreren Leveln und hat am Ende einen Hinweis und einen Link zu einer Hall of Fame.</p>
<p>Es bedarf an manchen Stellen nur scharfen Hinsehens, machmal aber auch Programmierkenntnisse. Ist also definitiv für Nerds geeignet.</p>
<p><strong>Warnung</strong>: ehrgeizige Rätselfans sollten sicherstellen, grade nix wichtiges auf der TODO-Liste stehen zu haben, denn so ein Hackit kann viele Stunden verbrauchen. Suchtgefahr! Also sagt nich, ich hätte euch nicht gewarnt.</p>
<p>Zu den Hackits:</p>
<h1>Hackit 1</h1>
<p>Download: <a href="https://zweithirn.friiks.de/uploads/hackit1.zip" title="hackit1.zip" target="_blank">hackit1.zip</a><br />Level: mehr als 10<br />Einträge in Hall of Fame: 6<br /></p>
<h1>Hackit 2</h1>
<p>Download: <a href="https://zweithirn.friiks.de/uploads/hackit2.zip" title="hackit2.zip" target="_blank">hackit2.zip</a><br />Level: ungefähr 10 Level<br />Einträge in Hall of Fame: 3</p>
<p>Falls ihr hier Kommentieren wollt, bitte nicht spoilern. Fragen kann man auch per Mail an <em>helpmehackit [at] friiks.de</em> loswerden.</p>
<p>Viel Spaß beim Knobeln.<br /></p>
<p><br /> </p>
Mein Zweithirnnospam@example.com (pegro)
Sonstiges, 2012-09-12T23:23:27Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1720https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=172hackitsonstigesGitolite 3 and gitweb
https://zweithirn.friiks.de/archives/171-Gitolite-3-and-gitweb.html
<p>The author of <strong><a href="https://github.com/sitaramc/gitolite" target="_blank" title="Gitolite">gitolite</a></strong> is currently working on a rewrite of the widely used git repository management tool. The new branch got the working title "<em>g3</em>".</p>
<p>Since we used an antique version of <strong>gitosis</strong> on our repository server I used the opportunity to migrate to the new version. So I wrote an live ebuild [1].</p>
<h3>Setup</h3>
<p>A few steps are needed after installation:</p>
<ul>
<li>make sure the home directory of the system user <em>git</em> is set to /var/lib/gitolite</li>
<li>provide the initial public ssh key of the repositories administrator (for bootstrapping) and make sure it is readable by the user "git"</li>
<li>run following commands on the server:</li>
<ul>
<li>su - git</li>
<li>gitolite setup -pk <path/to/initial/pubkey.pub></li>
<li>if you want to use gitweb, change UMASK in ~/.gitolite.rc to 0027</li>
</ul>
<li>clone management repo on your client (with the administrator ssh key pair)</li>
<ul>
<li>git clone git@<myrepo-server>:gitolite-admin.git</li>
<li>configure users, add keys, setup repositories, ... (see documentation [2])</li>
</ul>
</ul>
<h3>Gitweb</h3>
<p>There are enough tutorials out there how to setup gitweb, so I only point out some specifics of our setup.</p>
<p>The VirtualHost config looks something like this: <br /></p>
<blockquote align="left"> </blockquote>
<pre> ServerName git.fem.tu-ilmenau.de
ServerAlias git*
DocumentRoot /usr/share/gitweb
<Directory /usr/share/gitweb>
Allow from all
AllowOverride all
Order allow,deny
Options ExecCGI
<Files gitweb.cgi>
SetHandler cgi-script
</Files>
</Directory>
AliasMatch ^(/.*?\.git)(/.*)?$ /var/lib/gitolite/repositories$1$2
<Directory /var/lib/gitolite/repositories>
Allow from all
</Directory>
SetEnv GITWEB_CONFIG /etc/git/gitweb_config.perl
RewriteEngine on
# redirect userdir listing to gitweb search
RewriteRule ^/?(~[^/]+)/?$ /?s=$1 [R]
# rewrite all other paths that aren't git repo internals to gitweb
RewriteRule ^/$ /gitweb.cgi [PT]
RewriteRule ^/(.*\.git/(?!/?(HEAD|info|objects|refs)).*)?$ /gitweb.cgi%{REQUEST_URI} [L,PT]</pre>
<blockquote> </blockquote>
<p>To make this work, you have to add some gitolite specific configuration to the gitweb config file:</p>
<pre><blockquote> read_config_file("/etc/git/gitweb-gitolite.conf");</blockquote></pre>
<p>This works for git versions >= 1.7.5. For older version just prepend the contents of the gitweb-gitolite.conf to gitweb config.</p>
<p><strong>Note</strong>: Make sure the <em>user running the webserver</em> (gentoo: apache) is member of the group <em>git</em>, otherwise gitweb won't be able to browse repositories.</p>
<h3>Multikeys </h3>
<p>If you have got more than one machine for developing and don't want to share your ssh key between them, you would need to add multiple ssh keys.</p>
<p>With the multikey feature [3] of gitolite you can add as many ssh keys as you want for a username without changing gitolite configuration.</p>
<p>[1] http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/dev-vcs/gitolite/<br />[2] http://sitaramc.github.com/gitolite/g3/<br />[3] http://sitaramc.github.com/gitolite/oldmultikeys.html</p>
Mein Zweithirnnospam@example.com (pegro)2012-04-02T13:55:35Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1710https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=171Xfce4 + Slim: Screen lock
https://zweithirn.friiks.de/archives/170-Xfce4-+-Slim-Screen-lock.html
<p>Nachdem mein alter Laptop zu schwach war für KDE4 und KDE3 dann irgendwann unsupported war, hab ich mich nach einer neuen Desktopumgebung umgesehen und bin nun bei <strong>Xfce4</strong> hängen geblieben.</p>
<p>Sehr zu empfehlen sind dabei die USE-Flags <em>consolekit </em>und <em>policykit</em>, da man mit den beiden Diensten ohne weitere Verrenkungen als normaler User den Rechner in Suspend schicken kann oder angesteckte USB-Sticks mounten kann. Als Window manager nutze ich slim, ein Programm genau nach meinem Geschmack: kein Spielkram, klein, schnell und nur ein Configfile.</p>
<p>Slim selber hat kein Screenlock, Xfce4 bringt kein eigenes Programm mit, sondern unterstützt <em>xscreensaver, gnome-screensaver, slock oder xlock</em> (siehe /usr/bin/xflock4). Die haben aber alle eigene GUIs zum locken. Da mir der Loginscreen von slim im <a href="http://slim.berlios.de/themes01.php" target="_blank">Gentoo Theme</a> so gut gefällt, hab ich nochmal geschaut und <strong>slimlock</strong> gefunden. Das liest die slim.conf und lockt den Screen im passenden Slimtheme. *yeah*</p>
<p>Den Code gibts bei <a href="https://github.com/joelburget/slimlock" target="_blank">Github</a>, ebuild im <a href="https://bugs.gentoo.org/show_bug.cgi?id=366405" target="_blank">Bugtracker</a>. </p>
<p> </p>
Mein Zweithirnnospam@example.com (pegro)2012-01-23T13:58:19Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1700https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=170Qmail-SMTP mit TLS mit neuem Zertifikat wieder fit machen
https://zweithirn.friiks.de/archives/169-Qmail-SMTP-mit-TLS-mit-neuem-Zertifikat-wieder-fit-machen.html
<p>Anzeigen der Zertifikatdetails:</p>
<blockquote>
<p>openssl x509 -text -in certificate.crt</p>
</blockquote>Erzeugen eines CSR für netqmail-SMTP:
<blockquote>
<p>openssl req -new -nodes -out req.pem -config /var/qmail/control/servercert.cnf -keyout /var/qmail/control/servercert.pem.new</p>
</blockquote>
<p>Nach Zertifikatserstellung:</p>
<blockquote>
<p>cat cert.pem >> /var/qmail/control/servercert.pem.new</p>
<p>mv  /var/qmail/control/servercert.pem.new /var/qmail/control/servercert.pem</p>
</blockquote>
<p>Verifizieren des Zertifikats eines SMTP-Servers (Beispiel unter Gentoo, explizites TLS):</p>
<blockquote>
<p>openssl s_client -CApath /etc/ssl/certs -starttls smtp -crlf -connect mein.stmpserver.de:25</p>
</blockquote>
<p>Und schon kann man SMTP mit TLS ohne Warnungen benutzen.<br /></p>
<blockquote>
<p><br /></p>
</blockquote>
<blockquote>
<p> <br /></p>
</blockquote>
Mein Zweithirnnospam@example.com (pegro)2011-10-19T13:15:05Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1690https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=169buntes gelade
https://zweithirn.friiks.de/archives/168-buntes-gelade.html
<p>Schon seit dem Upgrade auf Ubuntu 10.04 (Lucid Lynx) nervt mich der neue Plymouth-Bootscreen. Nicht nur, dass er hässlich ist und sich weder Hintergrundbild noch Animation so einfach ändern ließen wie bei usplash - auch hab ich dank proprietärem nivdia-Treiber nur eine Auflösung von 640x480 bei 8bit Farben.</p>
<p>Also hab ich das gerade eben mal fix angegangen.</p>
<p>Zunächst das Auflösungsproblem: </p>
<p>Das häufiger im Netz vorgeschlagene folgende Vorgehen führte zwar zu einem Bootvorgang in voller Auflösung aber dafür hat der X-Server beim Start gemeckert, dass irgendein Puffer im nividia-Treiber zu klein oder voll wäre oder sowas. Naja, liegt wahrscheinlich an meinem dual head setup:</p>
<p> </p>
<blockquote>Removing the # from the GRUB_GFXMODE command in /etc/default/grub + Änderung auf ordentliche Auflösung (~Zeile 13)<br /></blockquote>
<blockquote>Adding set gfxpayload=keep after the set gfxmode=${GRUB_GFXMODE} to the /etc/grub.d/00_Header (~Zeile 104)<br /></blockquote>
<blockquote>Then sudo update-grub gives a flawless graphical boot.</blockquote>
<p> </p>
<p>Besser funktionierte ein hinzufügen von <strong>"vga=792"</strong> zu der Zeile <strong>GRUB_CMDLINE_LINUX=""</strong> in der <strong>/etc/default/grub</strong> mit anschließendem sudo update-grub. Dies führt zu einer Auflösung von 1024x786 bei vollen Farben. Die Nummern für andere Grafikmodi gibts z.B. hier: http://www.my-guides.net/en/content/view/125/26/1/12/#plymouth</p>
<p>Auch nach dem Boot gibbet keinen Stress.</p>
<p>Hässlich war der lila boot screen aber immer noch, also noch ein anderes Plymouth Theme installiert:</p>
<p>Auserkoren habe ich das<a href="http://love2spooge.deviantart.com/art/MIB-Ubuntu-Plymouth-Theme-170195920" title="Theme bei deviant art"> MIB-Ubuntu-Plymouth-theme</a>, da sich Hintergrundbild einfach ändern lassen und es aufgrund der Ursprünge bei Mandriva zu hoffen ließ, dass die Eingabe von Passwörtern während des Bootvorgangs gescheit unterstützt wird.</p>
<p>Installiert sich folgendermaßen:<br /> </p>
<blockquote>sudo cp -R MIB-Ubuntu/ /lib/plymouth/themes/<br /></blockquote>
<blockquote>sudo update-alternatives --install /lib/plymouth/themes/default.plymouth default.plymouth /lib/plymouth/themes/MIB-Ubuntu/MIB-Ubuntu.plymouth 100<br /></blockquote>
<blockquote>sudo update-alternatives --config default.plymouth and chose MIB-Ubuntu from list<br /></blockquote>
<blockquote>sudo update-initramfs -u<br /></blockquote>
<p> </p>
Mein Zweithirnnospam@example.com (aple)2010-08-12T22:39:39Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1680https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=168Bison und kaputte Röhren
https://zweithirn.friiks.de/archives/167-Bison-und-kaputte-Roehren.html
<p>Auf verschiedenen Kisten hatte ich das Problem, dass einige Pakete nicht bauen und mit sehr ominösen Fehlern abbrechen. Bisher dachte ich, es liegt an meinen Xen-Spielereien, da dies nur auf virtuellen Maschinen auftrat.</p>
<p align="left">Emerge brach ab mit:</p>
<p align="left"> </p>
<blockquote>config.status: executing default commands<br />make -j1<br />bison -y -d ./parse.y<br />conflicts: 1 shift/reduce<br />__file__: <__file__><br />
<p>...<br /></p>
<p>make: *** [y.tab.c] Broken pipe</p>
</blockquote>
<p>Abhilfe schafft ein einfaches Neubauen von <strong>sys-devel/bison</strong>. Was da genau kaputt war, weiß ich nicht, geht auf jeden Fall wieder.</p>
<p> </p>
Mein Zweithirnnospam@example.com (pegro)2009-12-23T23:14:14Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1670https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=167Opera flasht
https://zweithirn.friiks.de/archives/166-Opera-flasht.html
<p>Seit dem ich mit Linux (aktuell Ubuntu 9.04 Jaunty Jackalope) unterwegs bin hatte ich eigentlich ständig Probleme mit Opera und Flash, während das bunte Geraffel in FF ohne Probleme funktioniert hat. </p>
<p>Nachdem ich gestern auf die stabile Version von Opera 10 umgestiegen bin hab ich mich jetzt doch noch mal hingesetzt um dem Flash-Problem auf den Grund zu gehen.</p>
<p>Die Symptome waren, dass einfache Flashanimationen öfter mal ohne Probleme liefen aber der Großteil nicht angezeigt wurde. Ton funktioniert jedoch meistens. Insbesondere Flashvideos, z.B. auf Youtube waren praktisch nie zu sehen.</p>
<p>Ohne jetzt weiter drumrumzureden die Lösung des Problems:</p>
<p>In den Plugin-Optionen tauchten zwei Flash-Plugins auf. Eines im Mozilla Plugin Verzeichnis mit Namen "<strong>flashplugin-alternative.so</strong>" und eines in <em>/usr/lib/flashplugin-installer/ </em>namens <strong>libflashplayer.so</strong>. Beide weisen sich als Shockwave Flash 10.0 r32 aus.</p>
<p>Zweiteres wirkt etwas "offizieller" also mal das Mozilla Plugin Verzeichnis aus den Suchpfaden entfernt und siehe da Flash läuft ohne Probleme. Da ich die anderen Plugins in dem Verzeichnis eigentlich eh nicht brauche (sowas wie quicktime oder divx-player) lass ich das auch erstmal so und überleg mir gegebenenfalls 'ne andere Lösung, wenn diese Notwendig werden sollte.</p>
Mein Zweithirnnospam@example.com (aple)2009-09-02T09:55:12Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1660https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=166Aktueller accessfs Patch
https://zweithirn.friiks.de/archives/165-Aktueller-accessfs-Patch.html
<p>Vor einiger Zeit hab ich mal über <strong>Accessfs</strong> geschrieben [1]. Mittlerweile sind wir bei Kernelversion 2.6.30. Leider gibt es auf der Herstellerhomepage Patches nur bis Version 2.6.26, daher habe ich mal einen für 2.6.30 gebaut [2]. </p>
<p>Quellen:<br />[1] <a href="https://zweithirn.friiks.de/archives/148-Unprivilegierte-Prozesse-auf-privilegierten-Ports.html" title="http://zweithirn.friiks.de/archives/148-Unprivilegierte-Prozesse-auf-privilegierten-Ports.html">http://zweithirn.friiks.de/archives/148-Unprivilegierte-Prozesse-auf-privilegierten-Ports.html</a><br />[2] <a href="http://subversion/repository/fem-overlay/trunk/sys-kernel/xen-sources/files/accessfs-2.6.30-0.22.patch" title="http://subversion/repository/fem-overlay/trunk/sys-kernel/xen-sources/files/accessfs-2.6.30-0.22.patch">http://subversion/repository/fem-overlay/trunk/sys-kernel/xen-sources/files/accessfs-2.6.30-0.22.patch</a><br /><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-08-09T17:33:49Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1651https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=165Ich dreh hier noch am RA(I)D
https://zweithirn.friiks.de/archives/134-Ich-dreh-hier-noch-am-RAID.html
<p>Zuletzt habe ich mal wieder einen neuen Server aufgesetzt, natürlich mit Gentoo.</p>
<p>Leider hatte ich keine Gentoo Boot-CD am Start, so dass ich auf ein Knoppix 5.1 zugegriffen habe, was für eine Gentoo-Installation ja egal sein sollte.</p>
<p>Sollte. <img src="https://zweithirn.friiks.de/templates/default/img/emoticons/wink.png" alt=";-)" class="emoticon" /></p>
<p>Die zwei Festplatten im Rechner sollten als Software-RAID 1 konfiguriert werden. Also "<strong>Linux raid autodetect</strong>" Partitionen angelegt (partition type <strong>FD</strong>) und mit <strong>mdadm</strong> die Raiddevices erstellt und damit den Raidsuperblock geschrieben.</p>
<p> </p>
<blockquote>
<p>mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1</p>
</blockquote>
<p>Das ganze formatiert, eingehangen und mit nem Gentoo bestückt.</p>
<p>Nachdem alle wichtige Pakete emerget, der Kernel gebacken und der Grub konfiguriert und in den MBR geschrieben wurde, stand neustarten an. </p>
<p>So weit so gut, jedoch erklärte der Kernel panisch, er könne sein Rootdevice nicht finden. Weiter oben im Log sah mal das md-Subsystem hochfahren, <strong>ohne jedoch für den Betrieb im RAID konfigurierte Geräte zu finden.</strong></p>
<p> </p>
<blockquote>md: raid1 personality registered for level 1<br />md: Autodetecting RAID arrays.<br />md: autorun ...<br />md: ... autorun DONE.<br />...<br /><strong>md: unknown device "md0" or unknown block device (9,0)</strong><br />VFS: Kernel panic (something about root= parameter not set right).<br /></blockquote>
<p> </p>
<p>Es hat eine Weile gedauert, bis ich dahinterkam, woran es lag.</p>
<p>Für den RAID-Superblock gibt es 2 sehr unterschiedliche Formate (<strong>metadata format</strong>), Version "<strong>version-0.90</strong>" und "<strong>version-1</strong>". Genaue Details und Unterschiede findet man in einem Kernerlwiki [1]. </p>
<p>Wenn "md" in den Kernel <strong>einkompiliert</strong> wurde (nicht als Modul!), ist er in der Lage, RAID-Devices <strong>automatisch zu erkennen</strong> und zusammenzusetzen. Das geht aber <strong>nur mit Metadata-Version 0.90</strong>. Für die andere Version muss ein Userspace-Programm aufgerufen werden. Um dies vor dem Einhängen der Rootpartiton zu erledigen (um davon booten zu können), bräuchte man dazu eine initiale Ramdisk (initrd), was unter Gentoo wiederum relativ unüblich ist. [2]</p>
<p>Da Knoppix ein Debianderivat ist, gehört dort eine initrd natürlich dazu. Daher erstellt das <strong>mdadm unter Knoppix</strong> standardmäßig RAIDs mit <strong>Version-1-Superblöcken</strong>, unter Gentoo jedoch mit <strong>Version 0.90</strong> als Standardwert, wie in der Manpage angegeben.</p>
<p>Deswegen war der Kernel ohne initrd auch nicht in der Lage, die Devices zusammenzusetzen.</p>
<p>Neuerstellen des RAIDs mit Metadata-Version 0.90 sorgte für Abhilfe.</p>
<p>Unter Knoppix/Debian:</p>
<p> </p>
<blockquote>mdadm --create /dev/md0 <strong>--metadata=0.90</strong> --level=1 --raid-devices=2 /dev/hda1 /dev/hdb1</blockquote>
<p> </p>
<p>Quellen:<br />[1] <a href="http://linux-raid.osdl.org/index.php/RAID_superblock_formats" title="http://linux-raid.osdl.org/index.php/RAID_superblock_formats">http://linux-raid.osdl.org/index.php/RAID_superblock_formats</a><br />[2] <a href="http://bugzilla.kernel.org/show_bug.cgi?id=7208#c3" title="http://bugzilla.kernel.org/show_bug.cgi?id=7208#c3">http://bugzilla.kernel.org/show_bug.cgi?id=7208#c3</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-08-07T17:09:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1341https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=134PHP5 und Multiviews unter Gentoo
https://zweithirn.friiks.de/archives/159-PHP5-und-Multiviews-unter-Gentoo.html
<p>Für das Subversionrepository verwenden wir Websvn als Frontend.<br /></p>
<p>Nach einem PHP-Update funktionierte plötzlich das MultiViews-Feature [1] nicht mehr, mit dem Websvn kürzere und lesbarere URLs realisiert.</p>
<p align="left"> </p>
<blockquote>[error] [client x.x.x.x] Negotiation: discovered file(s) matching request: /var/www/localhost/htdocs/websvn/wsvn (None could be negotiated).<br /></blockquote>
<p>Im Bugtracker hatte bereits jemand das Problem gemeldet [2]. Ursache ist ein Update der <em>mod_php5.conf</em> für das Apachemodul. Dort wurde die Einbindung von PHP auf die vom Hersteller empfohlene Weise umgestellt [3]. Dabei wird auf <strong>SetHandler</strong> statt <strong>AddType</strong> gesetzt:</p>
<p> </p>
<blockquote> # Set it to handle the files<br /> <FilesMatch "\.ph(p5?|tml)$"><br /> SetHandler application/x-httpd-php<br /> </FilesMatch><br /><br /> <FilesMatch "\.phps$"><br /> SetHandler application/x-httpd-php-source<br />
<p> </FilesMatch><br /></p>
</blockquote>
<p>Um PHP mit MultiViews wieder zu aktivieren, reicht ein</p>
<p> </p>
<blockquote>
<p><strong>AddType application/x-httpd-php .php</strong></p>
</blockquote>
<p>in der entsprechenden Vhost-Konfiguration oder in einer .htaccess.</p>
<p> </p>
<p>Quellen:</p>
<p>[1] <a href="http://httpd.apache.org/docs/2.2/content-negotiation.html" title="http://httpd.apache.org/docs/2.2/content-negotiation.html">http://httpd.apache.org/docs/2.2/content-negotiation.html</a> <br />[2] <a href="http://bugs.gentoo.org/show_bug.cgi?id=256941" title="http://bugs.gentoo.org/show_bug.cgi?id=256941">http://bugs.gentoo.org/show_bug.cgi?id=256941</a><a href="http://bugs.gentoo.org/show_bug.cgi?id=256941" title="http://bugs.gentoo.org/show_bug.cgi?id=256941"></a><br />[3] <a href="http://www.php.net/manual/en/install.unix.apache2.php" title="http://www.php.net/manual/en/install.unix.apache2.php">http://www.php.net/manual/en/install.unix.apache2.php</a> Example #1 Installation Instructions - Schritt 15 </p>
Mein Zweithirnnospam@example.com (pegro)2009-08-07T16:10:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1590https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=159X11VNC unter KDE4
https://zweithirn.friiks.de/archives/161-X11VNC-unter-KDE4.html
X11VNC [1] ist ein sehr guter VNC-Server unter Linux, den ich seit Jahren erfolgreich einsetze. Seit dem Umstieg auf KDE4 gabs aber einige Probleme mit Sonderzeichen, die z.B. nur per Alt-Gr zu erreichen sind.<br />
<p>Nach einer Weile googlen und ausführliches FAQ [2] lesen, hab ich nun eine stabile Konfiguration, in der alle Tasten zumindest zwischen Client und Server funktionieren.</p>
<p>Meine ~/.x11vncrc:</p>
<p> </p>
<blockquote>rfbauth /home/pegro/.vnc/passwd
<br />display :0
<br />forever
<br />bg
<br />skip_lockkeys<br />nomodtweak</blockquote>
<p><em>rfbauth</em> kümmert sich um die Authentifizierung</p>
<p><em>forever</em> lässt den Dienst weiterlaufen, wenn sich der Client abmeldet</p>
<p><em>bg</em> schickt den Dienst in den Hintergrund (starten des Daemon durch "x11vnc" ohne Parameter)<br /></p>
<p><em>skip_lockkeys</em> ignoriert alle einrastenden Tasten (Capslock, Scrolllock, ...) verhindert auch nerviges Einrasten der Alt-Taste nach einem Fensterwechsel mit Alt+Tab<br /></p>
<p><em>nomodtweak</em> schaltet einen Mechanismus ab, der bei unterschiedlichen Tastaturlayouts hilft, z.B. ein fehlendes AltGr auf der Tastatur zu emulieren<br /></p>
<p>Den letztgenannten Mechanismus hab ich deaktiviert, da die meisten VNC-Clients, die ich getestet habe, dieses Verhalten scheinbar selber übernehmen und es dadurch zu komischen Effekten kam.</p>
<p>Als brauchbar haben sich folgende Clients erwiesen:</p>
<p>Mac OS X: RealVNC Enterprise Edition Viewer<br />Linux: KRDC, RealVNC Viewer, ...<br />Windows: RealVNC Viewer<br /></p>
<p>Quellen:</p>
<p>[1] <a href="http://www.karlrunge.com/x11vnc" title="http://www.karlrunge.com/x11vnc">http://www.karlrunge.com/x11vnc</a><br />[2] <a href="http://www.karlrunge.com/x11vnc/faq.html#faq-altgr" title="http://www.karlrunge.com/x11vnc/faq.html#faq-altgr">http://www.karlrunge.com/x11vnc/faq.html#faq-altgr</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-08-07T11:06:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1610https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=161Lalala, lalala
https://zweithirn.friiks.de/archives/162-Lalala,-lalala.html
 Nachdem ich mir heute fast mein KDE kaputt gebaut habe, gabs noch andere Softwareupdates für mein Gentoo. Darunter VLC.<br /><br />Es scheiterte an der <strong>libogg.la</strong>. Um eine besser nutzbare Multilibumgebung (also parallel 32bit und 64bit Libraries) zu bekommen, wird versucht, ohne die la-Files auszukommen, welche Metadaten zum Linken mit libtool beinhalten. So flog also beim Update von media-libs/libogg das la-File raus und verursachte einige Compilefehler.
<p>Im Bugtracker gab es passenderweise einen Bug [1] dazu, wobei die Installation und Ausführung von <strong>dev-utils/lafilefixer</strong> als Problemlösung beschrieben wird: </p>
<blockquote><strong>lafilefixer --justfixit</strong></blockquote>
<p> Leider steht sowas mal wieder nur nach einigem Suchen tief im Bugtracker und nicht als Notice direkt beim Update. Ich hoffe, dass bessert sich noch.<br /></p>
<p>Quellen:<br />[1] <a href="http://bugs.gentoo.org/show_bug.cgi?id=275597" title="http://bugs.gentoo.org/show_bug.cgi?id=275597">http://bugs.gentoo.org/show_bug.cgi?id=275597</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-06-30T20:10:38Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1621https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=162pgAdminIII 1.10 Beta
https://zweithirn.friiks.de/archives/160-pgAdminIII-1.10-Beta.html
<p>Es gibt eine Betaversion vom neuen pgAdminIII. Neu ist neben einigen Detailverbesserungen ein grafischer Query-Builder. Eine Übersicht findet sich auf der Pgadmin-Homepage [1]. </p>
<p>Ich hab dazu mal ein Ebuild [2] gebastelt.</p>
<blockquote># Copyright 1999-2008 Gentoo Foundation<br />
# Distributed under the terms of the GNU General Public License v2<br />
# $Header$<br /> <br />
EAPI="2"<br />
<br/>
WX_GTK_VER="2.8"<br/>
<br/>
inherit wxwidgets eutils<br/>
<br/>
KEYWORDS="~alpha ~amd64 ~ppc ~sparc ~x86 ~x86-fbsd"<br/>
<br/>
MY_PV=${PV/_/-}<br/>
MY_P=${PN}-${MY_PV}<br/>
S=${WORKDIR}/${MY_P}<br/>
<br/>
DESCRIPTION="wxWidgets GUI for PostgreSQL."<br/>
HOMEPAGE="http://www.pgadmin.org/"<br/>
SRC_URI="mirror://postgresql/pgadmin3/release/v${MY_PV}/src/${MY_P}.tar.gz"<br/>
LICENSE="Artistic"<br/>
SLOT="0"<br/>
IUSE="debug"<br/>
<br/>
DEPEND="x11-libs/wxGTK:2.8<br/>
virtual/postgresql-base<br/>
>=dev-libs/libxml2-2.6<br/>
>=dev-libs/libxslt-1.1"<br/>
RDEPEND="${DEPEND}"<br/>
<br/>
src_configure() {<br/>
econf \<br/>
--with-wx-version=2.8 \<br/>
$(use_enable debug)<br/>
}<br/>
<br/>
src_install() {<br/>
emake DESTDIR="${D}" install || die "einstall failed"<br/>
<br/>
insinto /usr/share/pixmaps<br/>
newins "${S}/pgadmin/include/images/elephant48.xpm" pgadmin3.xpm<br/>
<br/>
insinto /usr/share/pgadmin3<br/>
newins "${S}/pgadmin/include/images/elephant48.xpm" pgadmin3.xpm<br/>
<br/>
insinto /usr/share/applications<br/>
doins "${S}/pkg/pgadmin3.desktop"<br/>
<br/>
# Fixing world-writable files<br/>
chmod -R go-w "${D}/usr/share"<br/>
} </blockquote>
<p>Quellen:<br />[1] <a href="http://www.pgadmin.org/visualtour.php" target="_blank">http://www.pgadmin.org/visualtour.php</a><br />[2] <a href="http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/dev-db/pgadmin3/pgadmin3-1.10.0_beta3.ebuild">http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/dev-db/pgadmin3/pgadmin3-1.10.0_beta3.ebuild</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-05-28T10:47:16Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1600https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=160Hindernisse systemübergreifenden Sicherungsbedürfnisses
https://zweithirn.friiks.de/archives/158-Hindernisse-systemuebergreifenden-Sicherungsbeduerfnisses.html
<p>Szenario: Von Linux und Windows auf eine mittels Truecrypt verschlüsselte Partition zugreifen</p>
<p>Die NTFS-Unterstützung unter Linux ist zwar mittlerweile richtig gut, hat aber einen entscheidenden Nachteil. NTFS kennt kein execute-flag. Es können also entweder alle Dateien oder keine ausführbar sein. Blöd, wenn man primär Linux nutzt und auf der Partition auch Anderes als Bilder und Musik rumkullern. Lösung ist also Windows ext3 beizubringen. Dank der neuen Version 1.11a von <a href="http://www.fs-driver.org/extendeddl.html" target="_blank" title="Ext2IFS hier runterladen">Ext2IFS</a> konnte ich endlich Truecryptvolumes, welche Ext3 als Dateisystem verwenden, auch ohne Bluescreens unter Windows mounten. Doch zu früh gefreut. Mounten ließ sich das Volume zwar, drauf zugreifen aber noch lange nicht. Der Explorer behauptete trotz korrekt installiertem ext2ifs, dass er das Dateisystem nicht kenne und doch gerne mal Formator spielen würde. Einige Suche hat ergeben, dass das Problem darin besteht, dass in aktuelleren Linuxdistributionen Inodes mit einer Größe von 256 angelegt werden, statt wie früher 128, womit ext2ifs nicht klar kommt. Abhilfe verschaffte die erneute Formatierung mittels:</p>
<blockquote>
<p><strong>sudo mkfs.ext3 -I 128 /dev/mapper/truecrypt1</strong></p>
</blockquote>
<p>Glücklicherwiese war noch nicht viel drauf auf der Partition. Eine Alternative wäre die Verwendung von <a href="http://ext2fsd.sourceforge.net/" target="_blank" title="ext2fsd">ext2fsd</a>, jedoch habe ich schon mehrfach gelesen, dass schreibender Zugriff damit zu Datenverlust geführt hat. </p>
Mein Zweithirnnospam@example.com (aple)2009-04-10T19:16:41Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1581https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=158Keine Speicherung auf Vorrat bitte!
https://zweithirn.friiks.de/archives/157-Keine-Speicherung-auf-Vorrat-bitte!.html
<p>Wenn man z.B. auf einem Testsystem gemeinsam eine Software entwickelt, jeder Entwickler jedoch seine eigenen Zugangsdaten zum Subversionrepository verwenden will, damit der richtige Name im Log auftaucht, kann man die Kommandozeilenoption <strong>--no-auth-cache</strong> verwenden. Dann wird man bei jedem Commit nach Nutzername und Passwort gefragt.</p>
<p>Um diese Einstellung dauerhaft zu speichern, kann man in die <em>~/.subversion/config</em> folgendes eintragen:<br /></p>
<blockquote>[auth]<br />
store-auth-creds = no</blockquote>
<p>Quelle:<br />[1] <a href="http://svnbook.red-bean.com/en/1.4/svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache" target="_blank">http://svnbook.red-bean.com/en/1.4/svn.serverconfig.netmodel.html#svn.serverconfig.netmodel.credcache</a><br /></p>
Mein Zweithirnnospam@example.com (pegro)2009-03-10T16:19:14Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1570https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=157Wie aus einem Guss
https://zweithirn.friiks.de/archives/155-Wie-aus-einem-Guss.html
<p>Schon seit der Installation von Ubuntu (8.10 - Intrepid Ibex) geht mir total auf den Sack, dass sich sämtliche KDE-Anwendungen anders verhalten und aussehen, als der Rest des Gnome-Desktops. Insbesondere das standardmäßige einfache Klicken um Ordner zu öffnen hat schon des öfteren für Frustration, in diversen Datei-öffnen/speichern-Dialogen, gesorgt.</p>
<p>Da in Intrepid auf KDE4 umgestiegen wurde führt früher genutzte Ansatz Kcontrol zu installieren und dort Aussehen und Verhalten nach eigenem Gusto anzupassen zu keinem Erfolg mehr - Kcontrol gibbet nimmer.</p>
<p>Also "systemsettings" installiert um feststellen zu müssen, dass die entsprechenden Optionen ("Tastatur & Maus", sowie "Fenstereigenschaften" und noch ein paar andere) bei mir schlichtweg fehlen. Wahrscheinlich fehlen einfach noch ein paar KDE-Pakete welche dem systemsettings die notwendigen Optionen zur Verfügung stellen. Immerhin konnte ich in "Erscheinungsbild" die Icons auf "Human" umstellen und ein wenig die Dateiverknüpfungen überarbeiten.</p>
<p>Das Mausverhalten habe ich, nach längerem Suchen, in der Datei <strong>~/.kde/share/config/kdeglobals</strong> geändert. Hier einfach folgendes einfügen/ergänzen/ändern:</p>
<pre style="border: 1px dashed ; margin-left: 10px; margin-right: 10px; padding-left: 5px; padding-right: 5px;">[KDE]
SingleClick=false</pre>
<p>Hier können auch die Icons geändert werden, wenn man sich die Installation von systemsettings ersparen will.</p>
<pre style="border: 1px dashed; margin-left: 10px; margin-right: 10px; padding-left: 5px; padding-right: 5px;">[Icons]
Theme=Human</pre>
<p>Nun zur weiteren Optik. Sämtliche KDE-Software erstrahlt weiterhin in ihrem Oxygen-Look. Seit kurzem gibt es <strong>QGtKStyle</strong>, welches QT4 veranlasst die GTK-Engine zum Zeichnen der Fenster zu verwenden. Gibt's aber noch nicht in irgendwelchen Repos, also das .deb von <a href="http://ubuntuforums.org/showthread.php?p=5222533" target="_blank" title="QGtkStyle Debs für 32 und 64 bittiges Ubuntu">hier</a> genommen.</p>
<p>Folgender Eintrag in die kdeglobals sorgt dafür, dass fortan GTK für sämtliche qt4-KDE-Anwendungen verwendet wird.</p>
<pre style="border: 1px dashed ; margin-left: 10px; margin-right: 10px; padding-left: 5px; padding-right: 5px;">[General]
widgetStyle=gtk</pre>
<p>Hat man auch reine qt4-Anwendungen (ohne KDE drumrum), so sorgt das Einstellen von GTK im qtconfig für optische Anpassung.</p>
<p>Qt3-Anwendungen erscheinen weiterhin im plastik-outfit, aber dafür (dagegen) hab ich auch noch keine schöne Lösung</p>
Mein Zweithirnnospam@example.com (aple)2009-02-19T22:06:59Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1550https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=155KDE4: Phonon mit Dmix
https://zweithirn.friiks.de/archives/154-KDE4-Phonon-mit-Dmix.html
Wenn die eigene Soundkarte kein Hardwaremixing unterstützt und man keinen Extra Sounddeamon installieren möchte, kann man das mitgelieferte ALSA-Plugin Dmix verwenden.<br />
<br />
Meine Einstellung lief prima mit KDE 3.5.x, jedoch mit KDE4 konnte wieder nur ein Programm zur gleichen Zeit das Sounddevice belegen. In den Multimediaeinstellungen tauchte das Plugin-Device auch nicht auf. Erst nachdem ich ein<blockquote>hint {<br />
show on<br />
description "DMix Softvol Device"<br />
}</blockquote>in meine /etc/asound.conf einfügte und das Device als bevorzugt eingestellt hatte, funktioniert der Ton in allen KDE-Programmen wieder wie erwartet.<br />
<br />
Quellen:<br />
[1] <a href="http://phonon.kde.org/cms/1032">http://phonon.kde.org/cms/1032</a>
Mein Zweithirnnospam@example.com (pegro)2009-02-13T12:55:04Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1540https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=154Powermize me baby
https://zweithirn.friiks.de/archives/151-Powermize-me-baby.html
Nachdem ich nun stolzer Besitzer eines Dell Vostro 1310 bin auf welchem mittlerweile ein Ubuntu 8.10 läuft ist mir aufgefallen, dass die Akkulaufzeit unter Intrepid Ibex merkbar geringer ist als unter dem parallel installierten Windows XP.<br />
Erster Anlaufpunkt waren natürlich Prozessor und Grafikkarte. Der Prozessor lässt sich dank Panelapplet ziemlich einfach den eigenen Stromsparwünschen anpassen.<br />
<br />
Mit der eingebauten nVidia GeForce™ 8400M GS ist das leider nicht ganz so einfach. Zwar gibt es in den Optionen des properitären nVidia Treibers eine eigene Seite für den Powermizer. Da kann man aber nur gucken, nicht klotzen.<br />
Eine kurze Suche im Netz hat jedoch verraten, dass man die Einstellungen dennoch anpassen kann - in der <b>Xorg.conf</b><br />
<br />
Dazu im entsprechenden "Device" Abschnitt eine zusätzliche Option für den Powermizer hinzufügen. Bei mir sieht das ganze wie folgt aus:<blockquote>Section "Device"<br />
  Identifier "Configured Video Device"<br />
  Driver "nvidia"<br />
  Option "NoLogo" "True"<br />
  Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3"<br />
EndSection</blockquote><br />
PerfLevelSrc=0xAABB gibt die Strategie an, mit welcher Taktrate gefahren wird. Die ersten beiden Ziffern (AA) stehen für den Batteriebetrieb, die zweiten (BB) für Netzbetrieb.<br />
Dabei steht eine 22 für feste Taktrate und eine 33 für eine variable Taktung je nach Anforderung. In meiner Config läuft die Grafikkarte auf Akku also mit festem Takt und mit engestecktem Netzkabel mit adaptiver Taktstrategie.<br />
<br />
PowerMizerDefault=0xC gibt nun an, mit welchem festen Takt die Grafikkarte fahren soll:<blockquote>0x1 - Maximale Performance<br />
0x2 - Irgendeine der mittleren möglichen Taktraten wird verwendet<br />
0x3 - Maximales Energiesparen ist angesagt</blockquote><br />
Sollte man unter PerfLevelSrc zweimal einen festen Takt vorgegeben haben (0x2222) so muss man auch zwei Abschnitte PowerMizerDefault eintragen. Der erste steht dann für Batteriebetrieb, der zweite für Netzbetrieb.<br />
<br />
Das ganze sieht dann z.B. so aus:<br />
<br />
Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x1"<br />
<br />
und sagt aus, dass im Akkubetrieb mit minimalem Energieverbrauch gearbeitet werden soll und unter Netzbetrieb die Grafikkarte dauerhaft mit den maximalen Performanceeinstellungen läuft.
Mein Zweithirnnospam@example.com (aple)2009-01-29T23:17:55Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1511https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=151Unprivilegierte Prozesse auf privilegierten Ports
https://zweithirn.friiks.de/archives/148-Unprivilegierte-Prozesse-auf-privilegierten-Ports.html
Linux unterscheidet zwischen privilegierten (1-1024) und unprivilegierten Ports (>1024). Die Idee dahinter war mal, dass wenn man zu einem Server auf einem privilegiertem Port connected, dass dort mit ziemlicher Sicherheit ein vertrauenswürdiger, vom Systemadministrator eingerichteter Dienst lauscht. Das ist heute aber nicht mehr zwingend der Fall.<br />
<br />
Jedenfalls hat man beim Betrieb von Webservern immer das Problem, einem möglichst unprivilegierten Prozess Zugriff auf Port 80 oder 443 zu geben. Oft wird das so gelöst, dass der Prozess mit root-Rechten gestartet wird und dann nach Öffnen des Ports <strong>freiwillig</strong> die Rechte wieder abgibt. Das machen aber nicht alle Webserver so.<br />
<br />
Eine weitere auch nicht wirklich schöne Lösung ist es, den Webserver auf Port 8080 und 8043 lauschen zu lassen und per Iptables ein Portredirect zu machen. Das klappt solange, bis IPv6 ins Spiel kommt, denn dafür gibt es kein NAT und damit auch kein Portredirect.<br />
<br />
Auf der Suche nach einer anderen Lösung bin ich auf <strong>accessfs</strong> [1] gestoßen. Mit diesem Kernelmodul kann man über ein Verzeichnis is /proc die Gruppe und den Eigentümer für einen spezifischen Port zu setzen.<br />
<br />
Accessfs gibt es unter [1] als Kernelpatch für verschiedene, auch recht aktuelle Kernel. Für den von uns verwendeten Kernel 2.6.21 musste der Patch leicht angepasst werden. [2]<blockquote># cd /usr/src/linux<br />
# cat accessfs-2.6.21-0.20.patch | patch -p1<br />
# make menuconfig</blockquote>Danach findet man unter<blockquote>File Systems ---><br />
Miscellanenous filesystems ---><br />
<*> Accessfs support (Experimental)<br />
<*> User permission based IP ports</blockquote>die passende Einstellung. Durch die Veränderung am Kernel reicht es nicht, einfach nur das Modul zu bauen und zu laden.<br />
<br />
Danach muss das accessfs noch eingehangen werden:<blockquote># mount -t accessfs none /proc/access</blockquote>oder per <em>/etc/fstab</em>:<blockquote>proc /proc proc defaults 0 0<br />
none /proc/access accessfs 0 0</blockquote>Zum Schluss noch ein <blockquote><strong>chown jboss:jboss /proc/access/net/ip/bind/80</strong></blockquote>und der Jboss kann unprivilegiert auf Port 80 laufen.<br />
<br />
Quellen:<br />
[1] <a href="http://www.olafdietsche.de/linux/accessfs/">http://www.olafdietsche.de/linux/accessfs/</a><br />
[2] <a href="http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/sys-kernel/xen-sources/">http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/sys-kernel/xen-sources/</a>
Mein Zweithirnnospam@example.com (pegro)2009-01-21T09:44:08Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1480https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=148Gut zu wissen
https://zweithirn.friiks.de/archives/147-Gut-zu-wissen.html
Wenn man selbst Ebuilds schreibt oder Ebuilds aus dem Bugtracker verwenden will, muss man die für Portage notwendige Manifest-Datei erstellen. Dazu ein Hinweis:<blockquote>If you've made a local modification to an ebuild, patch, or added anything else to your local overlay and need to make Portage aware of the changes so the package can be properly merged, do <strong>not use the "digest"</strong> command. Use <strong>"manifest"</strong> instead. For example:<br />
<br />
<strong>ebuild foo-1.0.17.ebuild manifest</strong><br />
<br />
Digests have been dead for a long time. Please don't encourage bad practices.</blockquote>Digests werden nach und nach aus dem Tree entfernt und durch das <a href="http://www.gentoo.org/proj/en/glep/glep-0044.html">Manifest2-Format</a> ersetzt.<br />
<br />
Quellen:<br />
[1] http://blogs.gentoo.org/nightmorph/2008/12/24/december-public-service-announcement
Mein Zweithirnnospam@example.com (pegro)2009-01-16T11:12:30Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1471https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=147LLDP mit Tcpdump
https://zweithirn.friiks.de/archives/142-LLDP-mit-Tcpdump.html
Das <strong>Link Layer Discovery Protocol</strong> (<a href=""http://de.wikipedia.org/wiki/LLDP>LLDP</a>) dient zum Austausch von Informationen bezüglich benachbarten Netzwerkgeräten, wie z.B. Switches oder Router und wird daher eher im Netzwerkcore verwendet, um herauszufinden, welches Gerät an welchem Port hängt.<br />
<br />
Es gibt aber auch Implementierungen für Linux: u.a. OpenLLDP [1] und lldpd [2]<br />
<br />
Falls man aber grade mal nur das Notebook dabei hat und keinen dieser Dienste installiert hat, reicht ein einfacher <strong>tcpdump</strong>-Aufruf, um den Switchport, an dem ich hänge herauszufinden. Vorausgesetzt der Switch spricht LLDP.<blockquote>tcpdump -i eth0 ether proto 0x88cc</blockquote>Wer weiß, welche Informationen wo stehen, kann auf Anhieb sagen, welcher Port es ist. Wer das nicht kann, verwendet Wireshark [3].<br />
<br />
Quellen:<br />
[1] <a href="http://openlldp.sourceforge.net/">http://openlldp.sourceforge.net/</a><br />
[2] <a href="https://trac.luffy.cx/lldpd">https://trac.luffy.cx/lldpd</a><br />
[3] <a href="http://wiki.wireshark.org/LinkLayerDiscoveryProtocol">http://wiki.wireshark.org/LinkLayerDiscoveryProtocol</a><br />
<br />
Mein Zweithirnnospam@example.com (pegro)2009-01-13T17:15:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1421https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=142Opera und CaCert Zertifikate
https://zweithirn.friiks.de/archives/143-Opera-und-CaCert-Zertifikate.html
Ich habe meine Zertifikate von <a href="https://www.cacert.org">CaCert</a> ausstellen lassen. Da das Rootzertifikat von CaCert bei nur sehr wenigen Browser dabei bzw. aktiviert ist, muss man meist das Root-Zertifikat erst importieren.<br />
<br />
Der Opera in Version 10 (auch schon in der 9er) hat dann aber das Problem, dass er die verwendete Verschlüsselungsmethode für unsicher hält.<blockquote>(1) This site is using an outdated encryption method which is no longer classified as secure. It cannot sufficiently protect sensitive data. Do you wish to continue?</blockquote>Nach ewiger Suche fand sich die Problemerklärung im Forum [1] auf der Operaseite.<blockquote>Both problems are due to problems caused by CACert.org, the "open source" CA. <br />
<br />
Their OCSP server is not standards compliant, and refuse to return a valid response when we try to GET it (POST works fine, but Opera now uses GET). They will have to fix their server.<br />
<br />
The request for their CRL fails because they have specifed a HTTPS URL for that, signed by the same root specifying that CRL, meaning that the CRL is setting up a dependency on itself as we can't fetch the CRL until we have downloaded it, which means it will never happen. As CRLs are digitally signed, and have certain validity periods, using HTTPS for CRL fetching is unnecessary (and sets up a Catch-22 situation). CACert should reissue their root, removing the CRL URL, and also reissue their Class 3 intermediate so that the HTTP CRL URL is located there.</blockquote> Übersetzt ungefähr so: 2 Probleme:<br />
<ul><li>Zur <a href="http://de.wikipedia.org/wiki/Online_Certificate_Status_Protocol">OCSP</a> Validation kann man den OCSP Server laut RFC in 2 Varianten fragen: per GET und per POST. Opera verwendet die GET Anfrage, der CaCert OCSP Validator versteht aber nur Anfragen per POST und arbietet damit nicht RFC-konform.</li><br />
<li>Als <a href="http://de.wikipedia.org/wiki/Zertifikatsperrliste">CRL</a> URL steht im Rootzertifikat eine HTTPS URL, deren Zertifikat mit eben demselben Rootzertifikat signiert wurde. Damit besteht eine Abhängigkeit zum eigentlich zu prüfenden Zertifikat.</li></ul>CaCert muss also beide Probleme lösen, es ist <strong>kein Bug</strong> im Opera. Leider kann man die Mailinglistenarchive nicht öffentlich einsehen und auch sonst finden sich nur wenige Informationen auf der Seite. Schade, denn ich kenne keine ähnlich günstige Alternative zu den großen Issuern.<br />
<br />
Quellen:<br />
[1] <a href="http://my.opera.com/community/forums/topic.dml?id=259490">http://my.opera.com/community/forums/topic.dml?id=259490</a>
Mein Zweithirnnospam@example.com (pegro)2009-01-13T16:17:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=14364https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=143Mit Apaches mod_proxy richtig weiterleiten
https://zweithirn.friiks.de/archives/138-Mit-Apaches-mod_proxy-richtig-weiterleiten.html
Wenn man mehrere virtuelle Maschinen für verschiedene Webdienste mit einer IP betreiben will, kommt man nicht umhin einen Proxy zu verwenden.<br />
<br />
Dafür eignet z.B. <strong>mod_proxy</strong> mit <strong>mod_proxy_http</strong>.<blockquote><code>ProxyPass /myApp http://internerServer:8080/myApp<br />
ProxyPassReverse /myApp http://internerServer:8080/myApp</code></blockquote>Dies leitet alle Anfragen an /myApp an den entfernten Host weiter, der nur im internen Netz erreichbar ist, und kümmert sich drum, dass alle Hostnamen in den HTTP-Headern entsprechend geändert werden.<br />
<br />
Die ausgegebene Webseite wird jedoch nicht verändert, so dass absolute Links möglicherweise auf die falsche Adresse linken.<br />
<br />
Wenn die hinter dem Proxy laufende Software damit nicht umgehen kann, empfielt sich <strong>mod_proxy_html</strong>, welches versucht alle absoluten Pfade im HTML zu ersetzen.<br />
<br />
Wenn die Software die Links jedoch entsprechend der URL generiert, mit der sie aufgerufen wurde, kann man mit der Direktive<blockquote><code><strong>ProxyPreserveHost On</strong></code></blockquote>den Apache dazu bringen, die Anfrage ohne Änderung des <em>Host:</em>-Headers weiterzuleiten. Lohnt sich vorallem bei der Generierung von RSS-Feeds.<br />
<br />
Quellen:<br />
[1] <a href="http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost">http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost</a><br />
[2] <a href="http://www.atlassian.com/software/jira/docs/latest/apacheintegration.html">http://www.atlassian.com/software/jira/docs/latest/apacheintegration.html</a>
Mein Zweithirnnospam@example.com (pegro)2008-11-04T10:14:08Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1380https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=138Spärliche Ernte
https://zweithirn.friiks.de/archives/135-Spaerliche-Ernte.html
Mit Subversion Version 1.5 gibt ein neues Feature: <strong>Sparse Checkouts</strong><br />
<br />
Das ist vorallem bei großen Repositories nützlich, wenn man nur an einem kleinen Teil arbeiten möchte und deswegen nicht den ganzen Branch z.B. auschecken will.<br />
<br />
Ein Szenario ist z.B. die Betreuung mehrerer Branches eines Projekts. z.B. ein Branch <em>STABLE</em>, in den nur wichtige Bugfixes eingepflegt werden und auf der anderen Seite <em>trunk</em> mit der aktuellsten Entwicklerversion. <blockquote>pegro@grossesp ~/myProject $ find * | grep -v .svn | sort<br />
branches<br />
branches/BROKEN<br />
branches/BROKEN/file1<br />
branches/BROKEN/file10<br />
branches/BROKEN/file2<br />
branches/BROKEN/file3<br />
branches/BROKEN/file4<br />
branches/BROKEN/file5<br />
branches/BROKEN/file6<br />
branches/BROKEN/file7<br />
branches/BROKEN/file8<br />
branches/BROKEN/file9<br />
branches/STABLE<br />
branches/STABLE/source.c<br />
tags<br />
trunk<br />
trunk/source.c<br />
</blockquote>Findet man nun einen Bug, der sowohl in der Stable- als auch in der Entwicklerversion auftritt, im Beispiel in der Datei <em>source.c</em>, wäre es ja wünschenswert, ihn mit <strong>einem Commit</strong> für beide Versionen zu beheben. Dazu müsste man aber von der obersten Ebene an auschecken und so das komplette Repository als Arbeitskopie liegen haben. Das kann bei größeren Projekten zu einem echten Problem werden.<br />
<br />
Sparse checkouts funktionieren über eine neue Variable <strong>--depth</strong>, für die es 3 Werte gibt: <strong>empty, immediates</strong> und <strong>infinity</strong>. <br />
<br />
Was das bedeutet, versuche ich mal an Beispielen deutlich zu machen:<br />
<br />
<strong>empty:</strong><blockquote>pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject <strong>--depth empty</strong><br />
Checked out revision 1.</blockquote>enthält somit nur ein .svn-Verzeichnis, keine Ordner und keien Dateien.<br />
<br />
<strong>immediates:</strong><blockquote>pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject <strong>--depth immediates</strong><br />
A myProject/trunk<br />
A myProject/branches<br />
A myProject/tags<br />
Checked out revision 1.</blockquote>checkt nur Dateien und direkte Unterordner aus, jedoch nicht deren Unterordner oder Dateien.<br />
<br />
<strong>infinity:</strong><br />
Das ist bei Checkout dasselbe, wie ohne diesen Parameter: Alles landet in der Workingcopy.<br />
<br />
Diese Tiefenangabe wird persistent für diese Arbeitskopie gespeichert, sodass beim <em>svn update</em> auch nur das notwendigste aktualisiert wird.<br />
Jedoch kann man diese Angabe verzeichnisweise überschreiben.<br />
<br />
Ziel im Beispiel ist also nun, das Repository auszuchecken ohne den Branch BROKEN. Beginnen wir mit den Ordnern auf der obersten Ebene:<blockquote>pegro@grossesp ~ $ svn co https://subversion/repos/myProject myProject <strong>--depth immediates</strong><br />
A myProject/trunk<br />
A myProject/branches<br />
A myProject/tags<br />
Checked out revision 1.</blockquote>Dann folgen noch die <em>immediates</em> vom <em>branches</em>-Ordner:<blockquote>pegro@grossesp ~ $ svn up myProject/branches/ <strong>--set-depth immediates</strong><br />
A myProject/branches/BROKEN<br />
A myProject/branches/STABLE<br />
Updated to revision 1.</blockquote>Bei initialen Checkout wird die Tiefe mit <strong>--depth</strong> gesetzt. Für dieses Update muss der Wert mit <strong>--set-depth</strong> für den Ordner überschrieben werden, damit dessen Unterordner erscheinen.<br />
<br />
Den <em>trunk</em> und den <em>STABLE</em>-Branch wollen wir hingegen komplett auf der Festplatte:<blockquote>pegro@grossesp ~ $ svn up myProject/branches/STABLE <strong>--set-depth infinity</strong><br />
A myProject/branches/STABLE/source.c<br />
Updated to revision 1.<br />
<br />
pegro@grossesp ~ $ svn up myProject/trunk <strong>--set-depth infinity</strong><br />
A myProject/trunk/source.c<br />
Updated to revision 1.</blockquote>Somit haben wir nun die gewünschte teilweise Arbeitskopie ohne den <em>BROKEN</em>-Branch:<blockquote>pegro@grossesp ~/myProject $ find * | grep -v .svn | sort<br />
branches<br />
branches/BROKEN<br />
branches/STABLE<br />
branches/STABLE/source.c<br />
tags<br />
trunk<br />
trunk/source.c<br />
</blockquote>Nun kann man seine Änderung in beide Zweige mit einem Commit einchecken:<blockquote>pegro@grossesp ~/myProject $ svn commit --message "fixes bug #1"<br />
Sending branches/STABLE/source.c<br />
Sending trunk/source.c<br />
Transmitting file data ..<br />
Committed revision 2.<br />
</blockquote>Quellen:<br />
[1] <a href="http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html">http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html</a><br />
[2] <a href="http://subversion.tigris.org/svn_1.5_releasenotes.html#sparse-checkouts">http://subversion.tigris.org/svn_1.5_releasenotes.html#sparse-checkouts</a>
Mein Zweithirnnospam@example.com (pegro)2008-11-03T22:39:34Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1351https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=135Fatal: PHP und empty
https://zweithirn.friiks.de/archives/132-Fatal-PHP-und-empty.html
Also ich hab ja schon viel gesehen, aber das ist mir noch nicht passiert.<br />
<br />
Durch einen Bug konnte ein Cronscript nicht sauber durchlaufen und startete deswegen alle 5 Minuten und schrieb mir einige nette Mails. Das Problem war eine nicht geprüfte Variable. Also einfach eine if-Schleife mit <blockquote>if(empty(calcReturnValue($variable))) { ...</blockquote>dachte ich sollte das Problem beheben. Denkste.<blockquote><strong>Fatal error: Can't use function return value in write context in /path/to/script on line irrelevant</strong></blockquote>Da hab ich nicht schlecht gestaunt. Denn empty kann nur Variablen auf "leer" prüfen:<blockquote>Note: <strong>empty()</strong> only <strong>checks variables</strong> as anything else will result in a <strong>parse error</strong>. In other words, the following will not work: empty(trim($name)).</blockquote>Und ja, empfohlen wird <blockquote>$result = calcReturnValue($variable);<br />
if(empty($result)) { ...</blockquote>Sachen gibts...<br />
<br />
Quelle:<br />
<a href="http://www.php.net/manual/en/function.empty.php">http://www.php.net/manual/en/function.empty.php</a>
Mein Zweithirnnospam@example.com (pegro)2008-11-02T17:13:51Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1321https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=132Wo denn nur?
https://zweithirn.friiks.de/archives/131-Wo-denn-nur.html
Für die Statistiken auf dem Webserver verwende ich den <strong>Stone Step Webalizer</strong> [1], einer Weiterentwicklung des <strong>Webalizer</strong> [2]. Als ich mich für ihn entschied, gab es schon mehrere Jahre keine Updates des Originals mehr. Mittlerweile gibt es eine neue Version mit sehr interessanten Features, aber mal abwarten wie schnell die Entwicklung wieder einschläft.<br />
<br />
Beim Auswerten kann der Webalizer die GeoIP Datenbank benutzen, um den IPs aus den Logfiles Länder zuzuordnen. Theoretisch zumindest.<br />
<br />
Ich hatte den Webalizer und die unter Debian dafür benötigte <strong>libgeoip1</strong> installiert, jedoch stand neben den IPs immer nur:<blockquote>Unresolved/Unknown</blockquote>Der Pfad für die GeoIPDB (<em>GeoIPDBPath</em>) war ebenfalls richtig gesetzt. Mhm.<br />
<br />
In der README [3] fand ich die Ursache für mein Problem:<blockquote><strong>DNSChildren</strong><br />
<br />
The number of DNS children processes to run in order to<br />
resolve IP addresses to domain names or lookup country <br />
codes in the GeoIP database. Use a value of <br />
zero ('0') to disable. If disabled, both, DNS and GeoIP <br />
lookups will be disabled.</blockquote>Mit DNSChildren 5 krieg ich jetzt auch Tortendiagramme mit mehr als dem unbekannten Land.<br />
<br />
Quellen:<br />
[1] <a href="http://www.stonesteps.ca/projects/webalizer/">http://www.stonesteps.ca/projects/webalizer/</a><br />
[2] <a href="http://www.webalizer.com/">http://www.webalizer.com/</a><br />
[3] <a href="http://www.stonesteps.ca/projects/webalizer/README.asp">http://www.stonesteps.ca/projects/webalizer/README.asp</a>
Mein Zweithirnnospam@example.com (pegro)2008-10-31T20:34:42Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1310https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=131Na wasn nu?
https://zweithirn.friiks.de/archives/130-Na-wasn-nu.html
Mittlerweile sind doch einige drüber gestolpert, dass es mehrere Pakete für <strong>PostgreSQL</strong> im Portagetree gibt. So gibt es die alten <strong><em>dev-db/libpq</em></strong> und <strong><em>dev-db/postgresql</em></strong>. Beide haben nur ein Slot.<br />
<br />
Und es gibt <strong><em>dev-db/postgresql-base</em></strong> (als Ersatz für <em>libpq</em>) und <strong><em>dev-db/postgresql-server</em></strong> (als Ersatz für <em>postgresql</em>), diese hingegen mit jeweils einem Slot pro Minorversion.<br />
<br />
Das hat den großen Vorteil, grade im Vergleich mit MySQL, dass man mehrere PostgreSQL-Versionen parallel betreiben kann.<br />
<br />
Damit im Portagetree kein Chaos auftritt hat man noch 2 virtuelle Pakete eingeführt: <strong>virtual/postgresql-base</strong> und <strong>virtual/postgresql-server</strong>, die dann aus Kompatibiltätsgründen entweder von libpq oder postgresql-base bzw. von postgresql oder postgresql-server abhängen, je nachdem was installiert ist. Alle anderen Ebuilds sollten dann nur noch auf diese beiden verweisen, sodass der Umstieg auf die neuen Pakete in Ruhe abgewägt und dann eventuell durchgeführt werden kann.<br />
<br />
Die Doku landete in <em>dev-db/postgresql-docs</em><br />
<br />
Wie das alles kam und welche Gründe den Ausschlag für die neue Struktur gaben, kann man unter [1] nachlesen.<br />
<br />
Quellen:<br />
[1] <a href="http://www.mail-archive.com/gentoo-dev@lists.gentoo.org/msg28455.html">http://www.mail-archive.com/gentoo-dev@lists.gentoo.org/msg28455.html</a>
Mein Zweithirnnospam@example.com (pegro)2008-10-29T22:01:03Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1301https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=130GTK-Themes unter KDE verwalten
https://zweithirn.friiks.de/archives/121-GTK-Themes-unter-KDE-verwalten.html
Hinweis: Betrifft KDE Version 3.5.x<br />
<br />
Die Schriftarten und -größen sowie das Design für QT-Anwendungen (sicherlich der Großteil, wenn man KDE verwendet) lassen sich bequem im <strong>KDE</strong> Kontrollcenter verwalten. Dies gilt jedoch nicht für <strong>GTK</strong>-Programme, wie Firefox, Thunderbird, oder wie in meinem Fall, <strong>Eclipse</strong>.<br />
<br />
In Eclipse kann man zwar unter "Window -> Preferences -> General -> Appearance -> Colors and Fonts" die Schriftgröße im Editor anpassen, aber nicht für die Menüs und den anderen Kram drumrum. Bei meiner Auflösung hätte ich die Schriften schon gerne etwas kleiner.<br />
<br />
Nach ein wenig suchen fand ich andere, wie dieses Problem auch schon hatten: <a href="http://www.miradlo.net/bloggt/tipps/linux-mit-kde-schriftgroessen-und-optik-in-firefox-gimp-und-eclipse">Linux-mit-kde-schriftgroessen-und-optik-in-firefox-gimp-und-eclipse</a><br />
<br />
So genügt wirklich ein<blockquote><strong>emerge gtk-chtheme</strong></blockquote>dann das Programm starten und Themes und Schriftarten wie gewünscht ändern. Ohne Neustart sieht sogar der Firefox viel schöner aus.<br />
<br />
Manchmal kann es so einfach sein.
Mein Zweithirnnospam@example.com (pegro)2008-10-29T17:34:00Zhttps://zweithirn.friiks.de/wfwcomment.php?cid=1211https://zweithirn.friiks.de/rss.php?version=1.0&type=comments&cid=121