Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen
Posts mit dem Label Linux werden angezeigt. Alle Posts anzeigen

Freitag, 18. September 2009

DB2 auf Ubuntu 9.04 Jaunty installieren

Bei der Installation von DB2 9.7 gibt es einen "geringfügigen Fehler", der leider zur Folge hat, dass DB2 nicht startet. Der Ursache ist ein fehlendes Verzeichnis. Zum Korrigieren sind folgende Befehle auszuführen:

cd /opt/ibm/db2/V9.7
rm logs
mkdir logs
chown bin.bin logs

Statt dem Verzeichnis existiert nur ein Link auf ein nicht existierendes Verzeichnis.

Sonntag, 13. September 2009

Azureus auf AMD64 (x86_64)

Azureus verweigert unter einem 64-Bit-Linux den Dienst mit der Meldung, dass ihm das 32-Bit SWT unter 64-Bit nicht passt. Zur Abhilfe lädt man das 64-Bit SWT herunter und ersetzt mit der darin enthaltenen swt.jar diejenige von Azureus. Aktuell (12. Juni 2009) ist die URL für SWT diese hier:

http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops/R-3.5-200906111540/swt-3.5-gtk-linux-x86_64.zip

Da die Zeit vergeht und diese Seiten bestehen bleibt, hier der Weg zur jeweils aktuellsten Version:
  1. Auf der SWT-Seite unter "Releases - Stable" den Link "more..." anklicken
  2. dort unter "SWT Binary and Source" den Link "Linux (x86_64/GTK 2) verwenden.

Freitag, 24. April 2009

Das schnellste Dateisystem für USB-Sticks

Ich habe mal getestet, wie schnell die unterschiedlichen Dateisysteme auf meinem Transcent 64 GB USB-Stick sind. Hierzu habe ich den Stick jeweils mit dem entsprechenden Dateisystem formatiert und dann mein NetBeans-Projektverzeichnis mit viel Quellcode und Bibliotheken auf den Stick kopiert und mit sync sichergestellt, dass es auch geschrieben war. Danach das Verzeichnis wieder gelöscht, wieder sync und ein zweites Mal draufkopiert. Hier das Ergebnis mit Zeiten in Minuten:Sekunden:






DateisystemKopieren 1LöschenKopieren 2
ReiserFS1:170:061:14
XFS2:200:272:15
EXT33:100:083:03
EXT23:130:193:26


Wie man sieht ist ReiserFS deutlich schneller als die anderen. Schade eigentlich, dass Hans Reiser jetzt im Gefängnis sitzt.

Freitag, 27. Februar 2009

mod_jk und SSL-Verbindungen hängen

Das Problem

Mehrere Probleme mit einer Ursache: Verbindungen von Apache über mod_jk zu einem JBoss (genauer zu dem darin enthaltenen Tomcat) hängen und SSL Verbindungen wollen sich einfach nicht aufbauen. Das Problem tritt manchmal auf, ein Apache-Neustart oder die Option "JkOptions +DisableReuse" scheinen manchmal zu helfen.

Die Ursache

Die Ursache ist aber eine ganz andere: fehlender Zufall! Linux stellt zwei Geräte zur verfügung, die Zufall liefern: /dev/random und /dev/urandom. Diese greifen beide auf eine Kernel-interne Entropie-Quelle zu, die sich aus recht unvorhersehbaren Ereignissen im System füllt, wie Festplattenzugriffe, Netzwerkaktivität, Tastatur- und Mauseingaben usw. Der Unterschied zwischen den beiden ist, dass /dev/random sich nur auf diese Ereignisse verlässt, während /dev/urandom auch einen Pseudozufallszahlengenerator (PRNG) verwendet. In der Praxis bedeutet dies, dass /dev/random "hängen" kann, wenn zuviel Zufall abgerufen wurde, während /dev/urandom immer ein Ergebnis liefert.

Man kann sich leicht anzeigen lassen, wieviel Zufall der Kernel gerade zur Verfügung hat:

cat /proc/sys/kernel/random/entropy_avail

Mit einem

cat /dev/random

kann man den Zufall auslesen. Der Befehl hängt recht schnell und kann mit Strg-C abgebrochen werden. Eventuell ist das Terminal dann verkonfiguriert, was man durch Eingabe von "reset" wieder korrigiert. Versucht man das Gleiche mit /dev/urandom, so erhält man ständig neue Werte.

Java verwendet standardmäßig /dev/random für java.secure.SecureRandom, was wiederum für SSL-Verbindungen u.ä. verwendet wird. JBoss Seam verwendet es für seine Session-IDs. Gibt es nicht genug Zufall, dann wartet Java auf /dev/random und deshalb teilweise recht lange, bis es weiter geht.

Die Lösung

Hängt ein Prozess aktuell, so muss man für mehr Zufall sorgen, indem man beispielsweise mit einem

ls -lR /

oder

hdparm -t /dev/sda

für Festplattenaktivität sorgt. Besser ist es, den Hänger gar nicht erst auftreten zu lassen. Hierzu muss man Java lediglich anweisen, statt /dev/random einfach /dev/urandom zu verwenden. Dies geht mit einer einfachen Kommandozeilenoption für die JVM:

-Djava.security.egd=file:/dev/urandom

oder direkt im Programmcode mit

System.setProperty("java.security.egd", "file:/dev/urandom");

Der Nachteil dieses Ansatzes ist, dass sich der Zufall von /dev/urandom leichter vorhersagen lässt und damit beispielsweise ein Angriff auf SSL-Verbindungen denkbar ist. Wer hier auf der sicheren Seite bleiben will, der muss über einen Hardware-Zufallszahlengenerator nachdenken. Ein leicht zu realisierender Ansatz ist ein Mikrofon vor einem Lüfter. Die damit aufgenommenen Samples aber noch etwas nachbearbeiten, aber das ist ein ganz anderes Thema.

Freitag, 21. November 2008

Tomcat, Glassfish auf Port 80

Unter Unix Betriebssystemen dürfen die Ports unter 1024 nicht von normalen Benutzern verwendet werden, sondern nur vom Benutzer root. Aus Sicherheitsgründen will man so wenig Prozesse wie möglich mit Root-Rechten laufen lassen, da eine Sicherheitslücke damit automatisch Vollzugriff auf das System bedeutet. Webserver wie Apache helfen sich dadurch, dass ein Prozess mit Root-Rechten auf dem Port 80 lauscht, die Anfragen aber von normalen Benutzer-Prozessen bearbeitet werden. Die Funktionalität des Benutzerwechsels eines Prozesses ist Java nicht möglich. Man kann es auch nicht über JNI tricksen, da Java Threads verwendet und die immer einem gemeinsamen Benutzer gehören.

Eine mögliche Lösung ist es, den Webserver auf einem hohen Port - zum Beispiel 8080 - laufen zu lassen und eine passende Umleitung einzurichten. Dies kann beispielsweise über mod_jk oder mod_proxy im Apache geschehen, oder über eine Umleitung über iptables:

iptables -t nat -A PREROUTING -i eth0 -p tcp \
--dport 80 -j REDIRECT --to-ports 8080


Beide Ansätze haben den Nachteil, dass der Tomcat oder Glassfish denkt, er wird über Port 8080 angesprochen. Dies kann zu Problemen führen, wenn komplette URLs ausgegeben werden, denn diese haben dann :8080 darin. mod_jk und Tomcat kennen als Abhilfe entsprechende Optionen ("proxy-port"), mit denen ein anderer Port mitgeteilt wird.

Es gibt aber auch eine bessere Möglichkeit, mit der ein beliebiges Java-Programm auf privilegierten Ports lauschen kann und trotzdem als normaler Benutzer läuft: authbind und privbind. Die Einrichtung ist sehr einfach; als Beispiel hier die Freigbe des Ports 80 für den Benutzer glassfish: authbind ist SUID-root und kann deshalb direkt vom Benutzer gestartet werden. Bei dem Versuch auf einem niedrigen Port zu lauschen prüft es, ob der Benutzer Schreibzugriff auf eine bestimmte Datei hat. In unserem Beispiel wäre dies die Datei

/etc/autbind/byport/80

Um diese anzulegen, müssen die folgenden Befehle als root eingegeben werden:

touch /etc/authbind/byport/80
chmod 500 /etc/authbind/byport/80
chown glassfish /etc/authbind/byport/80

Für privbind ist eine solche Konfiguration nicht notwendig. Da es nicht SUID-root ist, muss es von root direkt gestartet werden. Außerdem ist es nicht möglich, den Zugriff auf einen Port einzuschränken - es sind immer alle möglich.

Leider haben beide Programme eine große Einschränkung: sie funktionieren nicht mit IPv6 sondern nur mit IPv4. Java versucht standardmäßig auch IPv6 zu nutzen, was einen Fehler zur Folge hat. Dem Java-Prozess muss deshalb die Option
-Djava.net.preferIPv4Stack=true
mitgegeben werden. Beim Tomcat schreibt man dies in die Variable CATALINA_OPTS in der Datei setenv.sh/setenv.bat, die man ggf. noch erzeugen muss. Beim Glassfish kommt diese Option in die entsprechende domain.xml in den Abschnitt mit den JVM-Optionen:

<jvm-options>-Djava.net.preferIPv4Stack=true</jvm-options>

Gestartet wird beispielsweise der Glassfish bei Verwendung von authbind als Benutzer glassfish mit

authbind --deep asadmin start-domain domain1

Die Option --deep ist notwendig, da der Java-Befehl ein Skript ist, das den eigentlichen Befehl erst aufruft und hierbei die Rechte für den Port sonst verloren gehen. Will man privbind verwenden, so lautet der Befehl so:

sudo privbind -u glassfish $(which asadmin) start-domain domain1

Starte man den Befehl als Root, kann man das sudo weg lassen.

Dies Ausgabe ist in beiden Fällen diese:

Starting Domain domain1, please wait.

Log redirected to /opt/glassfish-v2ur2/domains/domain1/logs/server.log.

Redirecting output to /opt/glassfish-v2ur2/domains/domain1/logs/server.log

Domain domain1 is ready to receive client requests. Additional services are being started in background.

Domain [domain1] is running [Sun Java System Application Server 9.1_02 (build b04-fcs)] with its configuration and logs at: [/opt/glassfish-v2ur2/domains].

Admin Console is available at [http://localhost:4848].

Use the same port [4848] for "asadmin" commands.

User web applications are available at these URLs:
[http://localhost:80 https://localhost:443 ].

Following web-contexts are available:
[/web1 /__wstx-services ].

Standard JMX Clients (like JConsole) can connect to JMXServiceURL:
[service:jmx:rmi:///jndi/rmi://pckurt:8686/jmxrmi] for domain management purposes.

Domain listens on at least following ports for connections:
[80 443 4848 3700 3820 3920 8686 ].

Domain does not support application server clusters and other standalone instances.

Auf diesem Server wurde auch der SSL-Port von 8181 auf 443 umgestellt; hierfür ist bei Verwendung von authbind auch die entsprechende Datei notwendig.

Mittwoch, 7. November 2007

Sprache bei Ubuntu/Gutsy ändern

Ich sag's ja, wenn man Windows-Administratoren Linux-Maschinen installieren lässt: bei der Installation "Englisch" als Sprache ausgewählt! Klar, unter Windows macht man das so, damit man die Updates früher bekommt, bzw. damit Dritt-Software überhaupt funktioniert. Also die Sprache umstellen. Der altbekannte Weg

sudo dpkg-reconfigure localeconf

funktionierte unter Feisty, aber unter Gutsy nicht mehr. Hier muss man händisch die Datei

/etc/default/locale

Folgendes eintragen:

LANG="de_DE.UTF-8"

noch das Sprachpaket installieren:

sudo apt-get install language-pack-de

dann das altbewährte

sudo dpkg-reconfigure locales

und schon hat man nach einem Relogin alles auf Deutsch. Genauer beschrieben ist es hier:

http://wiki.ubuntuusers.de/Spracheinstellungen

Donnerstag, 1. November 2007

nVidia Netzwerkkarten, Hibernate/Suspend und fehlende Netzwerkkonfiguration

Ich habe einen nVidia Corporation CK8S Ethernet Controller auf meinem Asus Board. Nach einem Suspend erhält die Karte keine IP-Adresse mehr. Den Grund dafür liefert ein dmesg:

0000:00:05.0: Invalid Mac address detected: 71:4a:28:d8:11:00
Please complain to your hardware vendor. Switching to a random MAC.

Bzw ein ifconfig, der nach jedem Suspend/Resume-Zyklus eine neue Netzwerkkarte (eth1, eth2 usw) anzeigt.

Aha: nach jedem Resume wechselt die MAC-Adresse, woraufhin mein Ubuntu von einer neuen Netzwerkkarte ausgeht. Ein Blick in /etc/udev/rules.d/70-persistent-net.rules zeigt auch das ganze Ausmaß der Katastrophe: viele Einträge mit unterschiedlichen MAC-Adressen. Laut einem Forums-Post handelt es sich hier um "reversed IP-address", was man im BIOS abstellen kann. Wer keine entsprechende Option findet, oder wie ich keine Lust hat, den Rechner neu zu starten, der stellt seine Netzwerkkonfiguration von MAC-Adresse auf PCI-Adresse um: die korrekte PCI-Adresse steht in der dmesg-Ausgabe; alternativ kann man auch die Ausgabe von lspci für die Netzwerkkarte verwenden und "0000:" davor schreiben (wer hat schon mehrere PCI-Busse installiert?). Dann passt man die Datei

/etc/udev/rules.d/70-persistent-net.rules

an, indem man den Eintrag

SUBSYSTEM=="net", DRIVERS=="?*", ATTRS{address}=="00:11:d8:28:4a:71", NAME="eth0"

durch

SUBSYSTEM=="net", DRIVERS=="?*", ID=="0000:00:05.0", NAME="eth0"

ersetzt, wobei natürlich die passende ID einzutragen ist. Danach klappt es dann auch mit dem Netzwerk nach einem Resume.

Dienstag, 30. Oktober 2007

VirtualBox Shared Folder

Die VirtualBox ist eine gute Alternative zu VMware & Co, die zudem unter der GPL steht. Recht praktisch sind die "Shared Folder", mit denen man ein Verzeichnis des Gastgebes freigeben und vom Gast aus zugreifen kann. Realisiert ist das für Windows als CIFS-Freigabe. Leider bekommt man leicht eine Meldung in der Art "Fehler 67" Name nicht gefunden. Die Ursache hierfür ist sind fehlende oder falsch installierte Gasterweiterungen. Mir ist es passiert, dass ich eine Virtuelle Maschine unter Linux mit Version 1.5.0 installiert habe und dann unter MacOS X mit Version 1.4 nutzen wollte und eben diesen Fehler erhielt. Zur Lösung habe ich die Gasterweiterungen deinstalliert

  • mit "regedit" im magischen "Run"-Verzeichnis das Starten der Gasterweiterungen entfernt
  • kurzfristig den Grafikkartentreiber umgestellt und beim obligatorischen Reboot dann die automatische Hardwareerkennung abgebrochen habe
  • die Dateien aus C:\Programme und C:\Windows\System32 gelöscht (alles mit "innoprakt" und "vbox" im Namen)
Danach kann man die restlichen Dateien entfernen und die älteren Gasterweiterungen installieren. Und schon klappt auch das

net use x: \\vboxsvr\share

Montag, 22. Oktober 2007

JDK 1.3.1 unter Feisty/Gutsy

Installiert man das Sun JDK 1.3.1 unter Ubuntu/Feisty oder Gutsy, so erhält man beim Starten folgende Fehlermeldung:

/opt/jdk1.3.1_20/bin/i386/native_threads/java: error while loading shared libraries: libstdc++-libc6.1-1.so.2: cannot open shared object file: No such file or directory

weil die entsprechende LibC nicht mehr unter diesem Namen verfügbar ist (das mit den unterschiedlichen inkompatiblen (G)LIBC-Versionen hab ich eh noch nie verstanden). Das Problem lässt sich glücklicherweise mit 3 Befehlen beheben:

sudo apt-get install libstdc++2.10-glibc2.2
cd /usr/lib
sudo ln -s libstdc++-3-libc6.2-2-2.10.0.so libstdc++-libc6.1-1.so.2

Danach klappt es auch wieder mit dem Java:

/opt/jdk1.3.1_20/bin/java -version
java version "1.3.1_20"
Java(TM) 2 Runtime Environment, Standard Edition (build 1.3.1_20-b03)
Java HotSpot(TM) Client VM (build 1.3.1_20-b03, mixed mode)

Mittwoch, 27. Juni 2007

Umlaute mit Kopete und ICQ

Schon länger hat mich geärgert, dass mein Kopete bei ICQ die Umlaut als chinesische Zeichen darstellt. Da ich gerade in Bahrain auf den verspäteten Flieger warte, habe ich Zeit gefunden, nach einer Lösung zu suchen; und diese war überraschend einfach: in den Zugangs-Einstellungen zu ICQ die "Standardkodierung für Nachrichten" auf "ISO-8859-15" stellen.

Mittwoch, 20. Juni 2007

Cisco VPN client unter Linux

Viele Unternehmen verwenden den Cisco VPN Client, um den verschlüsselten Zugriff auf ihr Netzwerk zu erlauben. Es gibt hierfür zwar einen Linux-Client, aber den hab ich nicht zum Laufen gebracht. Viel besser ist VPNC von den Jungs aus Kaiserslautern, das beim aktuellen Ubuntu enthalten ist.

Die Installation gestaltet sich sehr einfach: zuerst mit dem mitgelieferten Programm pcf2vpnc die .PCF-Datei konvertieren:

/usr/share/vpnc/pcf2vpnc vpn.pcf > vpn.conf

und dann den Zugang starten, wobei der vollständige Pfad zur Konfigurationsdatei angegeben werden muss:

sudo vpnc $PWD/vpn.conf

Wer die Passwörter nicht jedes Mal eintippen will, kann sie auch in der Konfigurationsdatei hinterlegen:

Xauth username Benutzername
Xauth password Passwort

Sehr praktisch sind auch die Optionen Target network und DNSUpdate: damit kann man das VPN auf bestimmte IPs oder IP-Bereiche einschränken sowie das Umstellen des DNS verhindern:

Target networks 192.168.1.17/32 192.168.2.0/24
DNSUpdate no

Richtig konfiguriert hat man damit eine reine Punkt-zu-Punkt-Verbindung zu den Zielrechnern und hat nicht mehr die Einränkungen eines deaktivierten "Allow Local LAN Access".

Freitag, 15. Juni 2007

Skype-Startprobleme

Testweise hatte ich die Windows-Version von Skype unter Linux mit Wine installiert, leider nur mit mäßigem Erfolg. Statt es sauber zu deinstallieren, habe ich das Installationsverzeichnis einfach gelöscht. Danach konnte ich mein (Linux-)Skype unter KDE nicht mehr über «Befehl ausführen» starten. Nach einigem Suchen bin auf in den Grund hierfür in der Datei .xsession-errors gestoßen:

wine: cannot find 'C:\Programme\Skype\Skype.exe'

Mein KDE wollte also lieber die Wine-Version als die Linux-Version starten. Der Grund hierfür lag in der Datei

~/.local/share/applications/wine/Programme/Skype/Skype.desktop

die eine FreeDesktop-Konforme Verknüpfung zu einem Programm darstellt. Nachdem ich die Datei gelöscht habe, startet (Linux-)Skype wieder problemlos.

Samstag, 9. Juni 2007

Cursor kaputt mit neuem FGLRX-Treiber

Nach dem Update auf Version 8.37.6 des FGLRX-Treibers für meine Radeon Mobility X1400 funktionierte Xinerama nicht mehr: Der Mauszeiger auf dem zweiten Bildschirm erschien als ein Block aus uninitialisiertem Speicher. Eine Umstellung auf "SwCursor" hatte den bekannten Fehler zur Folge, dass beim Scrollen oder Klicken auf einen Link der vorherige Inhalt unter dem Cursor über den neuen Inhalt gezeichnet wurde und damit die Ausgabe stark störte. Abhilfe schaffte ein Downgrade auf Version 8.36.5, die aktuellste funktionierende Version.

Donnerstag, 7. Juni 2007

Alles kontrollieren

Gestern bin ich über ein nettes Programm gestolpert: Synergy. Damit kann man eine beliebige Zahl an Rechnern - Linux (bzw. jedes Unix), MacOS X und Windows - mittels einer Tastatur und Maus bedienen. Man braucht lediglich auf jedem Rechner die Software zu starten und dann die Monitorpositionen zu definieren, d.h. wo die Maus hin soll, wenn man auf jedem Rechner jeweils nach oben, unten, rechts und links aus dem Bildschirmfenster rausgeht. Es ähnelt damit x2vnc und x2x, die allerdings nur zwei Rechner fern steuern können. Die Definition der Monitorpositionen ist noch etwas hakelig, aber in der Praxis hat man meistens die Monitore nebeneinander stehen, so dass es recht einfach ist, die dazu passenden Werte einzutragen. Zudem kann man die gleiche Konfigurationsdatei auf allen Maschinen verwenden - sofern diese sich über die Rechnernamen einig sind - und kann deshalb das für einen selbst einfachste Konfigurationsprogramm - zur Zeit nur für Windows und Linux - verwenden.

Mittwoch, 6. Juni 2007

Webentwickler im Himmel

Als Webseiten-Schreiber muss oder zumindest sollte man seine Seiten mit möglichst vielen Browsern und vor allem Browserversionen testen, ob sie überall korrekt angezeigt werden. Mit Firefox/Mozilla/Netscape & Co ist das kein Problem - mehrere Versionen können gleichzeitig installiert sein. Vom InternetExplorer ist jedoch immer nur eine Version installierbar. Deshalb verwenden mache Web-Entwickler mehrere PCs oder VMWare mit unterschiedlichen Versionen, was natürlich nicht sonderlich komfortabel ist, aber so hat es Microsoft eben bestimmt. Dank der überlegenen Macht von Linux ist es jedoch möglich, mehrere IEs auf dem gleichen Rechner zu betreiben: einfach IEs4Linux verwenden, IE 5.01, 5.5 und 6 installieren und gleichzeitig verwenden:

Dienstag, 5. Juni 2007

Zeitsprünge

Betreibt man VMWare auf einem Rechner mit variabler Prozessorgeschwindigkeit (Intel SpeedStep, AMD PowerNow oder Cool'n'Quiet), dann kommt das Gastbetriebssystem innerhalb der VMWare außer Tritt und lässt die Uhr mal schneller, mal langsamer laufen, je nachdem, welche Geschwindigkeit der Prozessor gerade hat. Eine Lösung des Problems findet sich auf den VMWare-Seiten: zuerst muss man die maximale Geschwindigkeit des eigenen Prozessors herausfinden, beispielsweise so:

cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq

danach trägt man diese Zahl zusammen mit zwei weiteren Parametern in die Datei /etc/vmware/config ein:

host.cpukHz = "1833000"
host.noTSC = "TRUE"
ptsc.noTSC = "TRUE"

Zusätzlich sollte man in den VMWare-Tools noch die automatische Zeitsynchronisation aktivieren - damit wird jede Minute die Uhr nachgestellt.

Masquerading ist veraltet

Wer wie ich mit Kernel 1.0 groß geworden ist, der hat mehrere Änderungen des Linux-Firewallcodes mitgemacht. Der letzte Stand war bei mir, dass man Masquerading über

iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

einrichtet. Das ist natürlich immer noch so, aber wenn man eine statische IP-Adresse hat, dann wird eine andere Vorgehensweise empfohlen. Insbesondere wenn man mit virtuellen IP-Adressen arbeitet, also mehrere Adresse auf einem Interface definiert hat und man nicht die Haupt-IP-Adresse verwenden will, dann muss man statt MASQUERADE das Target SAME verwenden:

ifconfig eth0:0 192.168.0.1
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 192.168.0.1

und schon erhalten alle maskierten Pakete die IP-Adresse des virtuellen Interfaces.

Samstag, 2. Juni 2007

Netzwerkkarte für VMWare-Bridging auswählen

Hat man mehrere Netzwerkschnittstellen und will man VMWare im Bridging-Modus verwenden, muss man die zu verwendende Netzwerkkarte einstellen. Diese Information speichert VMWare in der Datei /etc/vmware/locations im seltsamen Format:

answer VNET_0_INTERFACE wlan0

Wem das zu abenteuerlich ist, der muss bei der Konfiguration des Netzwerkes über vmware-config.pl statt den "wizard" den "editor" verwenden und kann dort dann die Schnittstelle angeben.

VMWare unter Ubuntu/Feisty

VMWare 5.5.x läuft nicht ohne Weiteres unter Kernel 2.6.20, da die Kernel-Module nicht mehr kompilieren:

Using 2.6.x kernel build system.
make: Gehe in Verzeichnis '/tmp/vmware-config0/vmmon-only'
make -C /lib/modules/2.6.20-16-generic/build/include/.. SUBDIRS=$PWD SRCROOT=$PWD/. modules
make[1]: Betrete Verzeichnis '/usr/src/linux-headers-2.6.20-16-generic'
CC [M] /tmp/vmware-config0/vmmon-only/linux/driver.o
In file included from /tmp/vmware-config0/vmmon-only/linux/driver.c:80:
/tmp/vmware-config0/vmmon-only/./include/compat_kernel.h:21: Fehler: expected declaration specifiers or »...« before »compat_exit«
/tmp/vmware-config0/vmmon-only/./include/compat_kernel.h:21: Fehler: expected declaration specifiers or »...« before »exit_code«
/tmp/vmware-config0/vmmon-only/./include/compat_kernel.h:21: Warnung: »int« ist Standardtyp in Deklaration von »_syscall1«
make[2]: *** [/tmp/vmware-config0/vmmon-only/linux/driver.o] Fehler 1
make[1]: *** [_module_/tmp/vmware-config0/vmmon-only] Fehler 2
make[1]: Verlasse Verzeichnis '/usr/src/linux-headers-2.6.20-16-generic'
make: *** [vmmon.ko] Fehler 2
make: Verlasse Verzeichnis '/tmp/vmware-config0/vmmon-only'
Unable to build the vmmon module.

Eine Anleitung, wie man es zum Laufen bekommt, findet man unter http://kb.barnoid.com/?p=18: eine tar-Datei auspacken, eine Datei drin ändern und wieder einpacken - dann geht es.

Freitag, 1. Juni 2007

Fglrx und Xinerama

Nachdem sich der Flachbildschirm etwas gewehrt hat, habe ich ihn doch zusammen mit dem Laptop-Schirm an den Start bekommen. Kurze Eckdaten: Toshiba A7 mit Radeon X1400, 1280x800 Pixel und ein Dell Bildschirm mit 1280x1024. Hier ist meine /etc/X11/xorg.conf:

Section "ServerLayout"
Identifier "Default Layout"
Screen 0 "aticonfig-Screen[0]" 0 0
Screen "aticonfig-Screen[1]" RightOf "aticonfig-Screen[0]"
InputDevice "Generic Keyboard"
InputDevice "Configured Mouse"
InputDevice "Synaptics Touchpad"
EndSection

Section "Files"

# path to defoma fonts
FontPath "/usr/share/fonts/X11/misc"
FontPath "/usr/share/fonts/X11/cyrillic"
FontPath "/usr/share/fonts/X11/100dpi/:unscaled"
FontPath "/usr/share/fonts/X11/75dpi/:unscaled"
FontPath "/usr/share/fonts/X11/Type1"
FontPath "/usr/share/fonts/X11/100dpi"
FontPath "/usr/share/fonts/X11/75dpi"
FontPath "/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType"
EndSection

Section "Module"
Load "bitmap"
Load "ddc"
Load "dri"
Load "extmod"
Load "freetype"
Load "glx"
Load "int10"
Load "vbe"
EndSection

Section "InputDevice"
Identifier "Generic Keyboard"
Driver "kbd"
Option "CoreKeyboard"
Option "XkbRules" "xorg"
Option "XkbModel" "pc105"
Option "XkbLayout" "de"
Option "XkbVariant" "nodeadkeys"
EndSection

Section "InputDevice"
Identifier "Configured Mouse"
Driver "mouse"
Option "CorePointer"
Option "Device" "/dev/input/mice"
Option "Protocol" "ImPS/2"
Option "ZAxisMapping" "4 5"
Option "Emulate3Buttons" "true"
EndSection

Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "SendCoreEvents" "true"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "HorizScrollDelta" "0"
EndSection

Section "Monitor"
Identifier "Standardbildschirm"
Option "DPMS"
EndSection

Section "Monitor"
Identifier "aticonfig-Monitor[0]"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection

Section "Monitor"
Identifier "aticonfig-Monitor[1]"
Option "VendorName" "ATI Proprietary Driver"
Option "ModelName" "Generic Autodetecting Monitor"
Option "DPMS" "true"
EndSection

Section "Device"
Identifier "ATI RADEON X1400"
Driver "ati"
BusID "PCI:1:0:0"
EndSection

Section "Device"
Identifier "aticonfig-Device[0]"
Driver "fglrx"
Option "EnableMonitor" "lvds,tmds1"
Option "PairModes" ""
BusID "PCI:1:0:0"
EndSection

Section "Device"
Identifier "aticonfig-Device[1]"
Driver "fglrx"
BusID "PCI:1:0:0"
Screen 1
EndSection

Section "Screen"
Identifier "Default Screen"
Device "ATI RADEON X1400"
Monitor "Standardbildschirm"
DefaultDepth 24
SubSection "Display"
Depth 24
Modes "1280x800" "1024x768" "800x600" "640x480"
EndSubSection
EndSection

Section "Screen"
Identifier "aticonfig-Screen[0]"
Device "aticonfig-Device[0]"
Monitor "aticonfig-Monitor[0]"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x800"
EndSubSection
EndSection

Section "Screen"
Identifier "aticonfig-Screen[1]"
Device "aticonfig-Device[1]"
Monitor "aticonfig-Monitor[1]"
DefaultDepth 24
SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280x1024"
EndSubSection
EndSection

Section "ServerFlags"
Option "Xinerama" "true"
EndSection

Section "DRI"
Mode 0666
EndSection

Section "Extensions"
Option "Composite" "Disable"
EndSection