/usr/portage

Sound on a 3rd generation MacBook 2

Thanks to the heros on the Mactel list I have sound again. If you use Linux on a MacBook of the third generation and your soundcard has been detected but just no sound will come out, putting the following in /etc/modprobe.conf (on Gentoo: /etc/modprobe.d/alsa and modules-update afterwards) should fix the problem. Please reboot or reload snd-hda-intel after changing the configuration. NOTE: it has been reported to work fine on MacBook Pro’s too.

options snd-hda-intel index=0 model=mbp3

Filed on 10-06-2008, 08:08 under , , , , , , & two comments & no trackbacks

Wireless LAN with a 2nd generation MacBook and kernel 2.6.22.1 0

First of all, you need hal from the 0.5.9-serie, then fetch madwifi-hal-0.9.20.3-current.tar.gz and my patch (adapted from http://madwifi.org/attachment/ticket/1315/141-Madwifi-fixes.patch). Apply this patch, ignore the first two chunks, execute make, make install and then reboot. Finally the device ath0 exists which is your wireless device.

Filed on 13-07-2007, 09:09 under , , , & no comments & no trackbacks

What to do? 0

During my daily work I often heard discussions about how to handle charset properly. What a server must provide to handle charsets correctly, which configuration for Apache is needed, what options must be set in php.ini to make PHP correctly working, which functions should be avoided when using PHP, which locales must be used and so on. So I want to give a short overview how to sail around common problems in a LAMP-setup.

Kernel

Just to make sure the option CONFIG_NLS_UTF8 is set to y.

Environment

To make sure, newly created filenames are there in UTF-8 and in general VT-input is handled correctly, you have to choose a charset, which comes with an .UTF-8-suffix. For german feel free to choose de_DE.UTF-8. Make sure your glibc is provides this locales. To convert current names of files you can just use convmv. For a desktop you must also adjust the font and set a correct TTY-font but this could be ignored for a server which is just administrated via remote shell.

Webservers in general – focus on Apache

To make sure, the users input is UTF-8, the server has to deliver the correct Content-Type-header. Take a look at the output of wget -S http://usrportage.de, my weblog, which is hosted on Schokokeks.org, a properly configured server (sure!):
wget -S usrportage.de
—21:00:33— http://usrportage.de/ => `index.html’
Resolving usrportage.de… 87.106.4.7
Connecting to usrportage.de|87.106.4.7|:80… connected.
HTTP request sent, awaiting response… HTTP/1.1 200 OK Date: Thu, 13 Jul 2006 19:00:27 GMT Server: Apache X-Powered-By: PHP/5.1.4-pl0-gentoo with Hardening-Patch X-Blog: Serendipity Set-Cookie: PHPSESSID=9da2ded6522851ef8ddc3ebe7590b354; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache X-Serendipity-InterfaceLang: de X-FreeTag-Count: Array Connection: close Content-Type: text/html; charset=UTF-8
Length: unspecified [text/html]

[ <=> ] 65,557 250.71K/s

21:00:33 (250.19 KB/s) – `index.html’ saved [65557]


You see the header Content-Type: text/html; charset=UTF-8. (You can also the a bug in S9Y, which poorly casts an array, but anyway.) So your browser is notified, that it should send UTF-8 encoded data. That’s the whole secret. To configure Apache properly, make sure the directive AddDefaultCharset is set to UTF-8.

One thing at last: if you’re using AJAX-functions from Prototype for JavaScript-purposes, you have to reencode the string delivered by the AJAX-call. In PHP the following would work:
$string = utf8_encode( $_POST[‘key’] );

MySQL

Before transacting any data, make sure your connection charset is set to UTF-8:
SET NAMES utf8;
By the way: have I ever mentioned you should ever use mysql_real_escape_string() instead of mysql_escape_string()?

PHP

Just two rules: use mb_string-functions whereever it is possible, set the INI-setting default_charset to UTF-8 and – anyway – don’t use functions from the ereg-family also they have an mb_-Prefix. They aren’t binary-safe, that’s all you need to know.
Also make sure, your sources are UTF-8 encoded. Use iconv to correct those who are not.

Update


I forgot to mention, that the functions htmlentities(), html_entity_decode() and htmlspecialchars() does not reflect PHPs default_charset-directive but assumes iso-8859-15 as the default charset, which is pretty annoying and should be considered as a bug, from my point of view. So you need to pass UTF-8 as the third parameter to the function to make sure it will work properly with Unicode.

Filed on 13-07-2006, 20:08 under , , , , , , , & no comments & no trackbacks

April, April 0

Machte meinen Tag:

From: Georgi Guninski
To: full-disclosure@lists.grok.org.uk
Subject: [Full-disclosure] Linus mass killing integer overflows
[...]
the news is, the benevolant dictator has said “let there be C++”, and there is more secure, full featured, reliable and faster linux kernel written2 mainly in C++. the official release is scheduled for 2.8 or when redhat™ becomes ready for the desktop3, whichever comes first.

key improvements include:

a) integer overflows were PITA for the kernel janitors. once the classes SafeInt and SafeLong were implemented with suitable operators, the new kernel is 100% “int/long too big” free. the refactoring tool made this part easy.
b) some clever abuse of exceptions dramatically reduces the amount of OOPS:
cases like ‘(SafeInt)0=foo->bar()’ are now gracefully catch()ed, killing
the OOPS.
c) kernel structures were just lame emulation of C++ objects. now they are native C++ objects.
d) exceptions result in cleaner, easier to read code and almost stop the nasty abuse of “goto”

currently there are discussions for implementing COM in the kernel and/or scripting the kernel from userland, but Linus hasn’t made up his mind yet.

the first public prerelease will be available from ftp://ftp.kernel.org/pub/linux/kernel soon.


Reply:
My wishlist for 2.8:
-jvm (should boost my swing apps)
-sql support to query kernel table and fs data
-lisp and prolog interpreters (don’t have a use for this but I’m sure somebody will need it)

Reply:
The kernel folks have taken a seriously wrong turn here. They should have delayed the preview release until the garbage collector was ready. That’s where the real value for these patches starts.

Regards,
Brian


Reply:
> My wishlist for 2.8:
> -jvm (should boost my swing apps)

agreed. i vote for implementing parrot – http://www.parrotcode.org/ to avoid
perl vs python vs java flames.

> -sql support to query kernel table and fs data

this seems a bad idea. what if a mcse discovers a sql injection in kernelspace? the side effects may be worse than a cake on b1l1.

> -lisp and prolog interpreters (don’t have a use for this but I’m sure
> somebody will need it)

rms likes lisp, so we can count on him.

Filed on 01-04-2006, 20:08 under , , , , , & no comments & no trackbacks

Zitronenfalter 0

Wenn eine Crawler eine »robots.txt« im Document Root eines Webservers übergeht, verstößt dies gegen den DMA (»Digital Millenium Act«). Jedenfalls versucht sich am Beweis dieser Tatsache die Firma »Healthcare Advocates«. Das Internet Archive, dessen zugehörige Software – die »WaybackMachine« – wohl ab und an die »robots.txt« ignoriert, ist hierbei der angebliche Übeltäter. Ein absurdes Verfahren umd eine kleine Textdatei…

Hoffen wir nur, dass dieses Verfahren einfach locker-flockig abgeschmettert wird. Nur als Anmerkung: »archive.org« scheint technisch sehr nett zu sein, jedenfalls findet sich dort bspw. auch eine alte Version von usrportage.de.

Während die einen sich mit der »robots.txt« abmühen, scheinen die großen Firmen immer häufiger die GPL zu missachten. Zwei aktuelle Fälle gibt’s nun wieder: die meisten Konsolen-Server (Florian Schlachter, Golem, Harald Welte) sind wohl Linux-basiert und liefern die GPL geschweige denn ihren Quelltext nicht mit und Asus produziert eine Serie von Routern, die Software des netfilter/iptables-Projekts bemühen, dies aber nicht ausweisen.

Filed on 12-07-2005, 15:03 under , , & no comments & one trackback

Strike! 1

Das EU-Parlament hat mit großer Mehrheit die »Richtlinie über die Patentierbarkeit computerimplementierter Erfindungen« abgelehnt. Das ist doch mal was. Auch wenn ich immer das Gefühl hatte, dieses ganze Verfahren würde etwas überschätzt werden, so ist es doch positiv zu wissen, dass man aus dieser Richtung als Entwickler freier Software mal keinen Stress zu erwarten hat.

Weitere Artikel:

Filed on 06-07-2005, 14:02 under , , , , , , , & one comment & one trackback

linux-2.6.11 and GrSecurity 0

Today linux-2.6.11 was released (Symlink, Slashdot, Slashdot, Heise) today. There is nothing special to say about it but one thing is quite nice: Spender, one of the famous GrSecurity-Developers, released a version for 2.6.11-rc5 a few days ago. And now the nice news: this version also applies to 2.6.11.

<strong>Update I:</strong>
It won’t compile with GrSecurity. I’m really sad :-/

<strong>Update II:</strong>
Spender released a new patch which is especially for 2.6.11. Applies nice but also didn’t compile :-(

Filed on 02-03-2005, 18:06 under , , & no comments & two trackbacks

"Meine Daten sind meine Daten sind meine Daten sind meine Daten..." oder dm-crypt fickt Justicia 5

<strong>Abstract:</strong>
Ein 19-jähriger Auszubildender wurde in Paderborn von der Polizei beim Wardriven erwischt. Nun hagelt es eine Anzeige und die Polizei ist fest davon überzeugt, daraus eine Straftat basteln zu können.

<strong>Was seitdem geschah:</strong>
Basquiat fasste bisher Geschriebenes zusammen, LawBlog verhandelte juristische Verhaltenstipps und auf intern.de machte man sich Gedanken, ob dies überhaupt strafbar sein sollte. Was fehlt jetzt noch? Richtig. Eine genauere Beschreibung dessen, wie man seinen Rechner absichern kann, dass die Polizei gar keine Möglichkeit erhält, Daten einzusehen.

<strong>Was tun?</strong>
Wenn es also soweit ist, also die Polizei einen beim <em>“illegalen Surfen”</em> erwischt hat oder meint aufgrund irgendwelcher Gründe die heimische Wohnung durchsuchend unter die Lupe nehmen zu wollen, dann ist man froh darüber, dass die Geräte zwar mitgenommen werden können, man sich aber sicher sein kann, dass nichts gefunden wird. Ich zitiere ganz kurz dazu einen Ermittlungsbericht:

“(…)Der Beschuldigte hatte einen Großteil seiner Daten verschlüsselt, so dass kaum relevantes Material eingesehen werden konnte.(…)”
Aus einem Ermittlungsbericht der Ludwigsburger Polizei

So stellt man sich das vor. Nur: was muss man tun? Wie ich aus gewöhnlich gut informierter Quelle zu berichten weiß, waren die betroffenen Rechner wie folgt aufgesetzt:

<strong>Crypt-Swap und Crypt-/tmp:</strong>
Swapspace zu verschlüsseln klingt auf den ersten Blick widersinnig, wird er doch (fast) jedesmal neu beschrieben. Das Problem allerdings sind Rückstände, Keys von verschlüsselten Partitionen, etc. Diese sollen auf keinen Fall auffindbar sein. Gentoo Linux bietet hierfür eine native Lösung: <em>/etc/conf.d/cryptfs</em> ist das heiße Stichwort. Dort können Einstellungen für Partitionen vorgenommen werden, die per dm-crypt gemappt werden.
Hier ein Beispiel für verschlüsselten Swapspace:
swap=crypt-swap source='/dev/vg_name00/swap'
Und den zugehörigen Eintrag aus der <em>/etc/fstab</em>:
/dev/mapper/crypt-swap&amp;nbsp;&amp;nbsp;&amp;nbsp;none&amp;nbsp;&amp;nbsp;&amp;nbsp;swap&amp;nbsp;&amp;nbsp;&amp;nbsp;sw&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 0
Beispiel für verschlüsseltes <em>/tmp</em>:
mount=crypt-tmp source='/dev/mabuse_vg00/tmp' options='-c twofish -d /dev/random' pre_mount='/sbin/mkfs.xfs -f /dev/mapper/crypt-tmp' post_mount='chown root:root /tmp ; chmod 1777 /tmp'
<strong>/home verschlüsseln:</strong>
Wie das funktioniert, habe ich bereits früher beschrieben.

Filed on 26-02-2005, 17:05 under , , , , & five comments & no trackbacks

Playing around with hdparm, Pentium IV documentation 0

<strong>hdparm</strong>
I asked Sascha Silbe what to use to configure standby-mode for harddisks. He pointed me to hdparm, which has been only known as a tool for enabling/disabling dma until now.
I’ve checked out the following lines for <em>adorno.strojny.net</em>, my homeserver:
hdparm -d1 -c 1 -m 16 -S12 -X udma2 /dev/hd{a,c}If you also want to use the line above, please be careful with the <em>”-m”</em>-option. It is possible, that it will destroy data. I’m not going to be responsible in case of doubt.

<strong>Desktop documentation (<em>mabuse.strojny.net</em>)</strong>
As another point I got lm-sensors running on my desktop. Read more in the manual itself. Hope it will be helpful.
By the way: does someone know any daemon, which checks the sensor-state and send warning-messages or also something which just logs?

Filed on 11-02-2005, 05:05 under , , , & no comments & one trackback

RAID-1 mit mdadm, neuer Desktop-PC und I/O-Probleme 0

<em><strong>RAID-1</strong></em>
Seit vorgestern speichert adorno, mein treuer Heimserver, seine Daten, Backup etc. auf einem RAID-1. Nun sollte es <em>nie wieder</em> passieren, dass ich auch nur ein Bit Daten verliere. Ich habe extra 10€ mehr investiert um zwei gleichgroße Festplatten unterschiedlicher Hersteller zu besorgen. Somit sollten sogar produktionsbedingte Mängel ausgeschlossen sein.

Dank geht an Bastian Blank, der mir riet auf <em>raidtools</em> zu verzichten und <em>mdadm</em> zu verwenden. Ging wirklich wunderbar. Danke!

<strong>So gehts:</strong>
Ersteinmal müssen die beiden Platten partitioniert werden, so dass sich jeweils eine große Partition über die gesamte Platte erstreckt.
$ emerge mdadm $ mdadm &ndash;create /dev/md/0 &ndash;raid-devices=2 &ndash;level=1 /dev/hda1 /dev/hdc1

Nun läuft das RAID auch schon. Nun das ganze in die <em>/etc/mdadm.conf</em> schreiben, dann initalisiert es Gentoo auch von selbst.
$ cat /etc/mdadm.conf
DEVICE /dev/hda1 /dev/hdc1
ARRAY /dev/md/0 devices=/dev/hda1,/dev/hdc1

MAILADDR admin@yourdomain.tld

Nun gehts weiter mit dem Anlegen eines LVMs:
$ emerge lvm2 $ pvcreate /dev/md/0 $ vgcreate vg_name_00 /dev/md/0
Jetzt können munter LVMs angelegt werden. Beispiel:
$ lvcreate -L 10GB -n lvm_test vg_name_00
Jetzt kann man wie gewohnt z.B. mit dem Anlegen einer verschlüsselten Partition (dm-crypt) fortfahren.

<em><strong>Desktop</strong></em>
Seit gestern habe ich endlich wieder einen leistungsfähigen Rechner. Ein Pentium IV mit 1GB RAM ist es geworden. Ich muss schon sagen, Gentoo kompilieren macht hier richtig Spaß.
$ genlop -t perl * dev-lang/perl

Mon Feb 7 02:24:12 2005 >>> dev-lang/perl-5.8.6-r2 merge time: 4 minutes and 44 seconds. $ genlop -t gimp * media-gfx/gimp Mon Feb 7 21:36:31 2005 >>> media-gfx/gimp-2.2.3 merge time: 22 minutes and 54 seconds.

<strong>Weiteres zum Desktop:</strong>
Damit der Kompiliervorgang noch schneller geht, habe ich mich entschlossen, <em>/var/tmp/portage</em> auf eine ramdisk zu legen. Der Eintrag für die <em>/etc/fstab</em> sieht folgendermaßen aus:
none /var/tmp/portage ramfs size=70% 0 0

Probleme hatte ich immer wieder mit I/O-Errors. Anfangs dachte ich, dies durch einen etwas gediegeneren Kernel (nicht 2.6.11-rc3-mm1) erschlagen zu können, nur leider gelingt das bisher nur eingeschränkt.

Filed on 08-02-2005, 02:02 under , , , , & no comments & no trackbacks

Update: Improvement for Gentoo's dm-crypt stuff 0

Sascha Silbe gave me two helpful tips related to the init-script hack to make gpg in combination with dm-crypt working. I decided to release the patches not longer inline so the patch can be found there

Filed on 29-12-2004, 00:12 under , , , & no comments & no trackbacks

Improvement for Gentoo's dm-crypt stuff 1

Today I discovered the manual for dm-crypt partitions of the Gentoo Hardened Project. I saw, that there were some mechanism for setting up dm-crypted devices on boot-time. But I needed a possibility to mount dm-crypted devices via GnuPG. The following patches will makes this possible.

Update
I’v released an updated version which can be found there

Example for /etc/conf.d/cryptfs
mount=crypt-home source=/dev/vg/home key=/root/home.key.asc options='-c aes -s 256 -h plain'
This sets up the volume /dev/vg/home using gpg –decrypt /root/home.key.asc on /dev/mapper/crypt-home

Filed on 26-12-2004, 01:01 under , , & one comment & two trackbacks

menoca-sources or: there aren't enough kernel-sources until now 0

Today I’ve released menoca-sources, a patched version of Kernel 2.6.7. It includes a lot of security fixes (proc-, nfs- and mem-bugs, etc.) and the Grsecurity-patch. Its created for the audience of those who want to have a short delay between the announce of the security-whole and the fix. To do this, I will release revision how often it is needed. It will be continued as a complete Kernel-Tree, including Grsecurity, the ongoing security-fixes and maybe later rsbac. In general it is for server-systems, which want to have an up-to-date Kernel. But you can also use it in your Laptop or whatever you want…

Current Version: 2.6.7-beta1 (should be stable)
Project Page: strojny.net/menoca-sources.php

Filed on 08-08-2004, 16:04 under & no comments & no trackbacks