Fedora ntfs-3g – Fuse Automount, Usermount etc.

Im folgenden eine kleine Anleitung wie man NTFS Partitionen unter Fedora 6 automatisch mountet, einem User mounten erlaubt, bzw. externe Festplatten automatisch gemountet und angezeigt werden. Folgende Pakete sind dazu zu installieren:

fuse
fuse-libs
fuse-devel
ntfsprogs
ntfsprogs-gnomevfs

Anschließend neueste ntfs-3g Version kompilieren und installieren, dazu configure mit Option –with_fuse aufrufen.

Datei /etc/udev/rules.d/50-udev.rules editieren und Zeile:

 SUBSYSTEM==“block“, GROUP=“disk“, MODE=“0640″

in

 SUBSYSTEM==“block“, GROUP=“disk“, MODE=“0660″

umändern. Dadurch bekommen User in Gruppe disk die benötigten Schreibrechte auf die Festplattendevicenodes
User in Gruppe:

  disk, fuse

hinzufügen. Danach ntfs-3g  setuid-root setzen:

  chown root $(which ntfs-3g)

  chmod 4755 $(which ntfs-3g)

Abschließend ntfs-3g erlauben user mounts durchzuführen:

echo user_allow_other >/etc/fuse.conf

Jetzt noch einen Mountpoint unter /etc/fstab mit Option „user“ und die benötigten Rechte auf das Zielverzeichnis setzen, z.B.:

chmod 777 /mnt/external

Fertig! Wird eine externe USB Platte mit NTFS Dateisystem angeschlossen, so öffnet sich automatisch Nautilus.

XRDP Suse 11.0 – sesman: pam_warn(gdm:auth): function=[pam_sm_authenticate] service=[gdm]

Da das derzeit erhaeltliche xrdp 0.4.1-29.1 Paket aus dem Opensuse Build Service einen Bug enthaelt, kann sich ein User nicht via Terminal Client einloggen. Es reicht in diesem Fall das Erstellen der entsprechenden pam Regel. Dazu unter /etc/pam.d/ das File sesman anlegen und dort die Zeilen:

#%PAM-1.0
auth       required     pam_unix.so shadow nullok
account    required     pam_unix.so

Eigentlich ist das File im SRC Paket von xrdp enthalten, wurde jedoch beim Erstellen des RPM Specfile nicht inkludiert, so dass es beim Installieren von xrdp nicht automatisch nach pam.d kopiert wird.

DMRAID erase multiple metadata – metadata format auswaehlen beim booten

Nach einem Upgrade auf neue Hardwarekomponenten stand ich vor dem Problem, dass dmraid nun mehrere Raid Metadaten auf meinem Raid1 erkannte. Mein Raid1, dass nun an einem SIL Raid Controller angeschlossen war, enthielt noch NVIDIA Metadaten von dem zuvor erstellten Softraid am NFORCE4 Controller.

Ungluecklicherweise initialisierte dmraid das Raid nun standardig mit dem alten  NVIDIA format handler. In der dmraid man Page findet man nun den Hinweis, dass man Metadaten loeschen kann bzw den format handler spezifizieren kann.

Nach kurzer Suche im sysconfig Directory meiner Suse fand ich die Moeglichkeit den Formathandler fuer dmraid vorzugeben, was die einfachste Moeglichkeit darstellte das Problem zu umgehen.

Ueber Yast laesst sich die Option wie folgt einstellen: System->Editor fuer Sysconfig Dateien, dort unter System->File Systems->dmraid->DMRAID_START_OPTIONS -f sil eintragen

Ab sofort nutzt dmraid damit waehrend der Iinitialisierungsphase den SIL Formathandler, was aber nur Sinn macht, wenn man kein weiteres Raid mit Nvidia Format Handler benutzt.

Rollback auf ältere Revision mit Tortoise

Möchte man Änderungen ab einer bestimmten Revision (Beispiel rev100) verwerfen und dabei die komplette History erhalten, so kann man dies mit Hilfe eines Merges durchführen. Hierzu ein kleines Beispiel, wie man z.B. den aktuellen Stand(Head) auf den Stand von rev100 bringt.

Dazu im ausgecheckten Repository einen Rechtsklick ausführen und Merge wählen, nun im Feld FROM HEAD auswählen im Feld TO die Revision 100 angeben. Nach einem Merge muss nun ein Commit erfolgen, die Revisionsnummer wird um +1 gegenüber der bisherigen (Head) Rev Nummer erhöht und der Stand zum Zeitpunkt rev100 wiederhergestellt.

Opensuse 11.0 – /usr/bin/system-config-httpd.sh: line 4: sux: command not found

Heute bin ich doch mal auf einen netten Typo gestoßen, nämlich im Script des Apache Config Tools von Opensuse 11.0.

Statt su stand doch im Startscript /usr/bin/system-config-httpd.sh das Wort/Befehl sux , vielleicht hatte der Entwickler des Scripts gerade eine schlechte Phase und dachte an sucks (beschissen). Jedenfalls war das Problem schnell gelöst. Anschließend tat sich noch ein kleiner Fehler auf:

 File „/usr/share/system-config-httpd/ApacheBase.py“, line 9, in <module>
import libxml2

Offensichtlich wurden die Abhängigkeiten im RPM nicht angepasst, so dass das libxml2 Modul für Python nicht automatisch installiert wurde. Nach Installation von libxml2-python konnte ich das Apache Config Tool nun starten.

Canon IP2500 unter Suse 11.0

Um den IP2500 unter Suse 11.0 zu betreiben, ist es notwendig zwei Pakete nachzuinstallieren. Die Firma Canon stellt für diesen Drucker, sowie für weitere IP Modelle, binäre Treiber zur Verfügung. Über die Canon Supportseite können derzeit die Pakete cnijfilter-common-2.70-2.src.rpm und cnijfilter-ip2500series-2.70-1.i386.rpm heruntergeladen werden.

In der dort ebenfalls erhältlichen Anleitung guideip2500series-pd-2.70-1.tar.gz ist die Rede von einem cnijfilter-common-2.70-2.rpm, welches sich aber erst auf einer anderen Download Location findet.

Aufgrund dieser Konfusion habe ich mich entschieden meine Pakete direkt aus dem cnijfilter-common-2.70-2.src.rpm zu erstellen, um evtl. Problemen aus dem Weg zu gehen (wer weis mit welchen libs diese Pakete gebaut wurden). Read More …

Trac 0.11 – nur owner bzw. TRAC_ADMINs sollen tickets schließen (close)

In der aktuellen Trac Version 0.11 werden Aktionen wie assign, close mit Hilfe workflows definiert. So kann Trac Usern hier das Recht gegeben werden Tickets zu modifizieren (TICKET_MODIFY) oder zu verwalten(TICKET_ADMIN) etc. . Leider ist es derzeit nicht möglich Rechte zu definieren, die nur für „Ticketbezogene“ User gelten. Ist z.B. die permission = TICKET_ADMIN bei einem close workflow gesetzt, so können nur noch User mit TICKET_ADMIN Berechtigung Tickets schließen. Hat aber jemand TICKET_ADMIN Berechtigung, so kann er diese Aktion für jedes Ticket durchführen, was wohl nicht immer erwünscht ist.

In meinem konkreten Fall sollte nur der Owner, bzw ein TICKET_ADMIN ein Ticket schließen können. Durch eine Anpassung im File default_workflow.py wurde das gewünschte Verhalten ermöglicht. Folgende Zeile ist zu ändern:

@@ -184,7 +184,7 @@
required_perms = action_info[‚permissions‘]
if required_perms:
for permission in required_perms:
–                        if permission in req.perm(ticket.resource):
+                        if permission in req.perm(ticket.resource) or ticket[‚owner‘] == req.authname:
allowed = 1
break
else:

Danach reicht es im Konfigurationsfile (trac.ini) des jeweiligen Projektes  z.B. bei einer close Aktion:

pass = * -> closed
pass.name = Close ticket
pass.permissions = TRAC_ADMIN

den TRAC_ADMIN unter permissions einzutragen. Ab sofort können nur noch owner und TICKET_ADMINs ein Ticket schließen.

Das Ganze lässt natürlich Spielraum für weitere Optimierungen, z.B. das Verwalten dieser speziellen Berechtigung via Admin Template.

Performance Tuning WD6400AAKS – AAM deaktivieren für geringere Zugriffszeit (Access Time)

Viele aktuelle Festplatten, darunter die Western Digital AAKS, sind mit einem sogenannten Automatic Acoustic Management kurz AAM ausgestattet. Dieses Feature sorgt für eine Reduzierung des Betriebsgeräusches, was gerade im Desktopbereich wünschenswert ist. AAM wirkt sich jedoch nachteilig auf die Festplattenzugriffszeit aus. In diesem Kurztipp möchte ich die Möglichkeit beschreiben, wie man AAM bei dem Modell AAKS deaktiviert und somit eine Verbesserung der Zugriffszeit um ca 3ms erreicht.

Western Digital bietet derzeit kein eigenes Tool zur Deaktivierung von AAM an. Somit ist es nötig auf ein anderes Tool, z.B. der Firma Hitachi, zurückzugreifen. Hitachis Feature Tool erlaubt,  neben der Modifikation von Hitachi Platten, eine Anpassung von AAM bei Western Digital Platten.

Startet man das Hitachi Feature Tool erhält man eine Übersicht aller erkannten Festplatten, man wählt nun die zu modifizierende Platte aus. Anschließend kann über das Menü Features -> AAM das Acoustic Management angepasst werden.

Im Falle der WD AAKS ist es nun wichtig, dass man auf keinen Fall die Option Disable wählt, da dies keinen Einfluss auf das AAM der WD Platte hat. Um die Zugriffszeit zu verbessern und damit die Performance der Platte zu steigern, wählt man die Option Enable User defined value. Ein Wert von 255 reduzierte die Zugriffszeit in meinem Test um ca 3ms. Je nach Controller ist hier mit einer Abweichung zu rechnen.

Anmerkung: Da die AAKS eine SATA Platte ist, funktionierten die von mir getesteten Windows Tools zur Konfiguration von AAM nicht.

WD6400AAKS HDTune Benchmark

ArrayList serialisieren – eigene Typen

Um zum Beispiel Einstellungen etc. zu sichern ist es oftmals sehr hilfreich den Zustand von Objekten zu sichern. Will man eine ArrayList serialisieren kann man dazu Beispielsweise einen XMLSerializer verwenden. Befinden sich in der ArrayList Objekte von eigens definierten Klassen, so ist es nötig dem Compiler mitzuteilen um welche Typen es sich handelt, ansonsten erhält man zur Laufzeit die Meldung:

Der Typ xyz wurde nicht erwartet. Verwenden Sie das XMLInclude- oder das Soapinclude-Attribut, um Typen anzugeben, die nicht statisch sind.

Beispielcode:

Type[] extraTypes = new Type[1];
extraTypes[0] = typeof(MyType);

Read More …

Starten von Anwendungen durch Internetexplorer schlägt fehl – fehlende Datei

Diese Woche stieß ich auf ein Problem in Verbindung mit dem IE6 und dem automatischen Start einer Anwendung. Folgendes Szenario war dabei gegeben:

Eine Desktop Anwendung ist für einen bestimmten Dateityp registriert z.B. *.xxx. Über ein Webinterface (PHP) kann man eine Zusammenstellung von Dateien erzeugen, durch Klick auf einen Download Button wird eine Datei (xyz.xxx) erzeugt und an den Browser gesendet. Sobald der Internetexplorer diese Datei entgegennimmt, startet er die Desktop Anwendung. Dabei übergibt er der Anwendung  den Dateinamen der heruntergeladenen Datei (im Temp Ordner des IE)  in Form eines Parameters.

Read More …