Archiv für Kategorie Linux

Howto: Ein Git-Repository auf sourceforge.net resetten

Hin und wieder führt man einen Commit durch, von dem man im Nachhinein denkt: “Verdammte Axt”. So geschehen bei einem meiner sourceforge.net-Projekte, die ich seit längerer Zeit von unserem internen Subversion-System auf das öffentliche Git-Repository bei Sourceforge umstellen wollte.
Mein initialer Commit enthielt vertrauliche Informationen, die blöderweise nicht hätten auftauchen sollen, da ich in meiner .gitignore einen Typo hatte.
In solch einem Fall besteht nun die Möglichkeit, mit Hilfe von diversen Git-Kommandos die Datei zu entfernen oder aber man setzt das Repository komplett neu auf.
Um bei sourceforge.net das Repository per Hand neu zu erstellen, muss man Administrator-Rechte im Projekt besitzen und sich mit

ssh -t USER,PROJECT@shell.sourceforge.net create
# bzw.
ssh USER@shell.sourceforge.net

auf dem sf.net-Server einloggen.

Mit den folgenden Kommandos werden nun alle Git-Dateien des Projekt-Verzeichnisses gelöscht und das Repository neu initalisiert.

cd /home/scm_git/P/PR/PROJECT
rm -Rf PROJECT/*
mkdir PROJECT
git --git-dir=PROJECT/ init --shared=all
vim PROJECT/description

, , , ,

Keine Kommentare

Debugging von C-Applikationen unter Linux

Da ich gegenwärtig an libopenranked von etqw-openranked arbeite und ich vermute, dass ich meine Erkenntnisse nach einiger Zeit wieder vergesse, gibt es hier die Kurzfassung.

Damit bei einem Segmentation Fault eine Core-Dump erzeugt wird, muss

ulimit -c unlimited

aufgerufen. Damit wird festgelegt, dass der Core-Dump beliebig groß sein darf.

Mit

gdb a.out core
backtrace

lassen sich die letzten Ausführungsschritte der Applikation anzeigen.

Mit

apt-get install valgrind
valgrind --tool=memcheck --leak-check=yes ./a.out

lässt sich überprüfen, welche Funktionen potenzielle Memory Leaks erzeugen, die wiederum zu einem Segmentation Fault führen können.

, , , , , , , , ,

Keine Kommentare

Fix black screen after installation of nvidia-current on Ubuntu 10.04 Lucid Lynx / Aspire 5935G

Today afternoon I installed nvidia-current on my Aspire 54935G because I had the intend to dive into CUDA. After the installation via apt-get nvidia-current – I use Ubuntu 10.04 – and a reboot the display only showed the kernel messages. While starting X the screen turned to black and I could not do anything. Strg+Alt+F1 for switching to command line did not work and I was not able to disable the X-Server by using nomodeset or xforcevesa as kernel boot parameter.

After a hard waste formation of cursing I remembered that the Aspire 5935G has a second graphic chip from Intel. I assumed that my problem cohered with the dual use of NVidia and Intel chip.

I switched the Display Adapter BIOS setting to Discrete Graphic, did another reboot and got the default Ubuntu GDM.

, , , , , , , , , , , , , , , ,

Keine Kommentare

Windows 2003 als zentraler Event Log-Server / Freigeben von Event Logs an bestimmte Benutzer

Florian hatte vor einigen Wochen das Tool eventcreatef vorgestellt.  Es dient dazu, dass komplette Log-Dateien und nicht nur einzelne Log-Nachrichten in die Ereignisanzeige von Windows geschrieben werden können. eventcreatef delegiert die Aufrufe an das Microsoft-Tool eventcreate, dass die übergebenen Daten in kleinere Teile an den jeweiligen Server sendet.

Somit kann man mit Hilfe von eventcreatef einen zentralen Log-Server auf Basis von Windows Server 2003 o.ä. aufsetzen, der alle Log-Dateien sammelt, z.B. die, die während eines nächtlichen Backups auftreten.

Leider gibt es für Linux kein Tool, dass direkt in die Ereignisanzeige von Windows Server 2003 schreiben kann. Für unsere heterogene Umgebung war dies ein ungünstiger Sachverhalt. Ich musste also einen generischen Service schreiben, der per SOAP die Log-Daten entgegen nehmen konnte und dann dementsprechend an eventcreatef weiterdelegiert.

Dabei ist das unten angehängte Script namens eventcreateservice.php (ECS)heraus gekommen: Es stellt über das Zend Framework eine SOAP-Schnittstelle bereit, die die einfache Methode create besitzt. Wird das Script über eventcreateservice.php?wsdl aufgerufen, wird die WSDL-Datei ausgegeben, über eventcreateservice.php?bash lässt sich ein Bash-Script downloaden, dass mit Hilfe von curl eine Verbindung mit dem SOAP-Service herstellt. An dem Bash-Script muss nichts weiter angepasst werden, da die URLs automatisch generiert werden. Somit lassen sich nativ auf Linux-Maschinen Einträge in die (native) Ereignisanzeige von Windows-basierten Maschinen schreiben.
Ein Syslog-Server ist also nicht mehr nötig. Das Konzept ist besonders für kleinere Unternehmen interessant, die mehr Windows-Maschinen als Linux-Maschinen besitzen und für die ein zentraler Syslog-Server oversized ist.

Nachdem ich ECS fertig entwickelt hatte, ging es nun darum, dass ich die von mir erstellten Log-Einträge nicht in den Standard-Log-Dateien Applikation, System und Sicherheit schreiben wollte, sondern in eine Extra-Logdatei namens Backups.
Florian stellt in der oben bereits genannten URL ein kleines Tool namens CreateEventLog2 bereit. Über die Aufmachung und Fehlerbehandlung der GUI lässt sich streiten, mir ging es um den Funktionsumfang: CreateEventLog2 erzeugt eine neue Log-Datei, die dann in der Ereignsanzeige der MMC angezeigt werden kann.
Damit hatte ich schon ein Großteil erreicht: Ich konnte nun von Windows-Systemen aus Log-Nachrichten auf unserem Log-Server speichern, die Linux-Systeme konnten über das Bash-Script und den SOAP-Service ebenfalls in die Windows-Ereignisanzeige schreiben und schließlich hatte ich ein weiteres Log neben den Standard-Windows-Logs.

Im letzten Schritt ging es nun darum, das von mir definierte Log einem dedizierten Benutzer zugänglich zu machen. Ich wollte in der Konfigurationsdatei von ECS (logischerschweise) keinen Domänen-Administratoraccount eintragen, sondern einen Benutzer mit beschränkten Rechten. Für dieses Vorhaben muss man zuerst einmal ein paar Sachen wissen: Der Zugriff auf die Log-Dateien eines Systems werden über Registry-Einträge geregelt. Es gibt unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog zu jeder Log-Datei einen Schlüssel, der wiederum diverse Attribute enthält. Wichtig ist das Attribut CustomSD: dieses beschreibt anhand eines SDDLs, ob und wer auf dieses Objekt zugreifen darf. Standardmäßig steht in der CustomSD (in meinem Fall zu finden unter HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Backups\CustomSD) ein String der folgenden Art: O:BAG:SYD:(D;;0xf0007;;;AN)(D;;0xf0007;;;BG)(A;;0xf0007;;;SY)(A;;0×7;;;BA)(A;;0×7;;;SO)(A;;0×3;;;IU)(A;;0×3;;;SU)(A;;0×3;;;S-1-5-3). Sieht kryptisch aus, ist es aber eigentlich nicht – wenn man weiß, wie die SDDLs aufgebaut sind.
Kurz dazu: Jeder eingeklammerte Eintrag, z.B. (D;;0xf0007;;;AN) definiert eine Zugriffsregel (ACE). Die erste Regel, die vom System gefunden wird und zutrifft, wird benutzt.

Wie dem auch sei: Es gibt glücklicherweise ein Tool namens sddlparse, das die zugegebenermaßen etwas kryptisch anmutende Zeichenkette analysiert und dann wieder in lesbarer Form ausspuckt.
Nachdem ich damit die benötigten Rechte für einen schreibenden Zugriff auf die Ereignisanzeige auslesen konnte (ADS_RIGHT_DELETE, ADS_RIGHT_READ_CONTROL, ADS_RIGHT_WRITE_DAC, ADS_RIGHT_WRITE_OWNER, ADS_RIGHT_DS_CREATE_CHILD, ADS_RIGHT_DS_DELETE_CHILD und ADS_RIGHT_ACTRL_DS_LIST), erstellte ich einen neuen ACE mit eben diesen Rechten. Die ACE muss an erster Stelle eingefügt werden, so dass der Registry Key wie folgt aussieht: O:BAG:SYD:(A;;LCDCCCWOWDSDRC;;;S-1-5-21-xxx-xxx-xxx-xxx)(nächste ACE…). Der Registry Key wird übrigens bei jedem Aufruf der Ereignisanzeige ausgelesen, somit tritt die Änderung sofort in Kraft.
Ich fügte die SID unseres dedizierten Ereignisanzeigen-Benutzer mit Hilfe der obigen ACE hinzu und war in der Lage mit diesem in die Ereignisanzeige zu schreiben.

Während ich mich in SDDLs und ACEs einarbeitete, fiel auch ein kleineres Tool namens ACECreator ab. Es verbindet sich mit dem Active Directory und sucht mit Hilfe von Ambigious Name Resolution (ANR) Objekte heraus. Diesen Objekten lassen sich dann die Einstellungen verpassen, die man braucht, das passende ACE wird automatisch erzeugt.

Alles in allem war dieses Projekt äußerst spannend. Zwar klingt die Durchführung relativ einfach, allerdings gab einige Probleme mit den Rechten bzw. Benutzeraccount, unter dem eventcreatef lief u.s.w.
Lesenswert sind folgende Links, die ich u.a. für den ACECreator als Referenz herangezogen habe:

Angehängte Downloads

  eventcreateservice-1.0.zip (3.6 KiB, 48 hits)


  ACEGenerator-1.0 (12.2 KiB, 43 hits)

, , , , , , , , , , , , , , , , , , ,

1 Kommentar

BWL1 / Präsenztag / Neuzugänge

Die letzten paar Wochen waren echt hart. Meine Vorbereitungen für BWL1 haben viel Zeit in Anspruch genommen, eben so die Korrektur der Test-Prüfungen meiner Azubis. Am Donnerstag Abend ging es dann nach Dortmund. Marc und ich übernachteten – wie bereits beim vorletzten Präsenztag – wieder im Tryp-Hotel. Donnerstag ging es für uns beide relativ früh ins Bett.
Am Freitag schrieb ich dann um 13 Uhr (endlich) BWL1 und ich empfand es als ganz schön schweren Brocken. Ich konnte die insgesamt 14 Aufgaben zwar in der vorgegebenen Zeit lösen. Allerdings reichte die Zeit nicht mehr, um die Aufgaben nocheinmal zu überprüfen. Inhalt der Klausur war:

  • Buchungssätze und deren Auswirkung auf die Bilanz
  • Buchungssätze einer Gehaltsabrechnung – die Sätze ließen sich aus dem Buch abschreiben; nachrechnen musste man selber
  • Definition von einem oder zwei HGB-Einträgen
  • Skontrationsmethode – da habe ich nicht verstanden, warum man für diese billige Aufgabe 15 Punkte bekam und zwei ganze Seiten als Schreibfläche bekam. Die Aufgabe ließ sich in 30 Sekunden lösen. Oder habe ich da eventuell etwas falsch gemacht?
  • Aufstellen einer Nachkalkulation und Unterdeckung/Überdeckung – nahm ziemlich viel Zeit in Anspruch
  • Buchung von Vorsteuer/Umsatzsteuer und deren Abschluss – eine sehr ähnliche Aufgabe wurde in den Online-Aufgaben gestellt

Ich war echt froh, dass ich meine erledigten Aufgaben ausgedruckt zur Hand hatte. Ansonsten wäre ich komplett untergegangen. Ob ich die Prüfung bestanden habe, weiß ich nicht – die Klausur kann ich absolut nicht abschätzen. Positiv zu werten ist, dass ich in der Online-Abschlussklausur 92% im externen Rechnungswesen und 96% im internen Rechnungswesen erreicht habe; im Abschlusstest Extern habe ich 97% und im Internen 100% – somit fällt die Klausur (wenn ich denn bestanden habe) nicht ganz so schlecht aus.

Nach der Klausur verkrümelte ich mich wieder ins Hotel und schlief sofort ein. Gegen 18.30 Uhr ging es dann mit den Mit-Studenten ins HiccUp, wo Martin, Marc und ich sofort den Kicker in Beschlag nahmen. Im Gegensatz zur letzten Präsenzveranstaltung trank ich nur ein paar Alster – ich setzte mich dann gegen Mitternacht auch ab und setzte im Hotel meinen Schlaf fort.

Der Samstag der Präsenzveranstaltung war relativ schnell vorbei. Eröffnet wurde die Veranstaltung mit der Vorstellung neuer Module, danach holten wir unsere Semester-Zeugnisse ab (bin jetzt offiziell im zweiten Fach-Semester) und hörten einen Vortrag über Petri-Netze. Mittagessen gab es im Sonnendeck, einem kleinen Bistro auf dem Campus. Danach folgte eine Vorlesung über Web Usability und ein Vortrag über die Bachelor- und Projektarbeit. Um 16 Uhr machten wir uns wieder auf den Weg nach Wolfsburg.
Alles in allem war es unspektakulär – hat aber Spaß gemacht, die anderen Kommilitonen zu treffen.

Ansonsten schaut es bei mir so aus, dass ich endlich ein neues Notebook besitze – ein schnuckeliges Acer Aspire 5935G-9A4G50BN. Ubuntu 10.04 läuft darauf wunderbar, WLAN, Ethernet und Soundkarte werden unterstützt, die Funktionstasten funktionieren korrekt (war bei meinem alten Acer nicht der Fall), die LEDs blinken so, wie sie es sollen. Einziger Wermutstropfen: Die Installation der nvidia-Treiber für die 3D-Beschleunigung sorgt dafür, dass X überhaupt nichts mehr anzeigt. Habe da auch keinen wirklichen Ansatz, woran es denn liegen könnte.

Außerdem habe ich mir bereits im Vorfeld der BWL1-Klausur einen neuen Verstärker bestellt. Im Nachhinein hätte ich damit wohl besser warten sollen – aber egal. Ich bin nun stolzer Besitzer eines Peavey Valve King 100. Angespielt habe ich ihn noch nicht, da dafür in der letzten Woche zu wenig Zeit blieb. Nächste Woche wird dann aber gerockt ;)

, , , , , , ,

2 Kommentare

openSUSE 10.3 und Ghostscript

Gestern ging mir der Hintern geringfügig auf Grundeis: am morgigen Freitag ist Rollout unseres ZABOS-Systems, die letzten Bugs sind soweit gefixt gewesen. Nach Ende einer Alarmierung (Details zu ZABOS gibt es unter http://www.zabos.info) sollte automatisch ein Abschluss-Report gedruckt werden. An sich auch gar kein Problem, da die mit BIRT erzeugten Reporte per lpr gedruckt werden sollten.

Allerdings lief auf dem Server noch Ghostscript in der Version 8.1.x, die bei der pdf2ps-Konvertierung den Fehler

   **** Warning:  An error occurred while reading an XREF table.
   **** The file has been damaged.  This may have been caused
   **** by a problem while converting or transferring the file.
   **** Ghostscript will attempt to recover the data.

schmiss. Grund dafür war, dass die installierte Ghostscript-Version noch nicht mit dem PDF-Format 1.5 klar kommt. BIRT erzeugt aber die PDFs in diesem Versions-Format. Eine Möglichkeit, eine ältere PDF-Formatsversion zu benutzen, habe ich nicht gefunden.

Ich hatte also nun die Option, das komplette, auf openSuSE basierende System, von 10.3 auf 11.2 zu upgraden oder aber die aktuelle Ghostscript-Version 8.70 zu kompilieren, in der der Fehler gefixt war.
Das Upgrade von 10.3 auf 11.2 mit Hilfe von zypper schlug fehl, da mir zypper ein std::bad_alloc() lieferte. Im Internet wurde ich nicht fündig, und die Zeit für das Debuggen hatte ich nicht.
Somit wurde die Option ersetzt durch “Server frisch aufsetzen und die komplette Umgebung anpassen”.
Da ich eher der Debian/Ubuntu-Mensch bin, hatte ich da so meine Abneigung gegen. Deshalb versuchte ich, Ghostscript manuell zu kompilieren. Als Paketabhängigkeiten müssen tiff-*-devel und cups-*-devel per YaST installiert werden, ein make && make install führte dann auch zum Erfolg.

, , , , , ,

Keine Kommentare

Perle IOLAN und RXTXcomm (Java) unter Linux

Für unser aktuelles Projekt verwenden wir eine Perle IOLAN-Box. Die Box stellt serielle Ports – in unserem Fall sind das zwei Stück – über Ethernet zur Verfügung.
Der Einsatzbereich ist z.B. nötig, wenn man GSM-Modems in abgeschirmten Räumen (Rechenzentren, Bunkern) betreiben will. Die IOLAN-Box bildet eine Bridge zwischen Seriell- und Ethernet ab. So lässt sich das GSM-Modem (Seriell) an die IOLAN-Box (Seriell) anschließen, die wiederum über Ethernet an das Netzwerk angebunden ist. Für Linux und Windows existieren passende Programme, die nun lokal wiederum die Verbindung über das Netzwerk als serielles Interface abbilden.

Gestern stieß ich bei der Einrichtung der lokalen Schnittstellen auf ein Problem: RXTXComm – das Java-Framework zur Kommunikation mit seriellen/parallelen Schnittstellen – listete beim Start die /dev/tx00*-Devices nicht auf. Die FAQ von RXTX weist daraufhin, dass man per
System.setProperty(“gnu.io.rxtx.SerialPorts”, portFileNames) zusätzliche Ports definieren kann. Der Lösungsansatz brachte kein Erfolg.
Zweite Idee war dann, dass ich – wie in der FAQ beschrieben – die tx*-Devices manuell in die RXTXCommDriver.java eintrage. Auch das war nicht von Erfolg gekrönt.

Der ausschlaggebende Punkt war schließlich, dass die /dev/tx00*-Devices die falschen Berechtigungen besaßen: RXTXComm erkennt die seriellen Schnittstellen nur wenn /dev/tx00* der Gruppe uucp angehört (chown uucp /dev/tx*) und die Gruppe Schreib- und Leserechte besitzt (chmod g+rw /dev/tx*).

, , , , , , , , , , , ,

1 Kommentar

Konvertieren von virtuellen Linux-VMware-Maschinen nach Citrix XEN Server

Wegen der Migration unserer virtuellen Server-Infrastruktur von VMware Server nach Citrix XEN Server 5.5 stieß ich auf ein Problem. Einer unser virtuellen Maschinen dient als Backup-Server und läuft unter Linux, in dem Fall unter Ubuntu 6.10 Server.

Zur Konvertierung der Maschinen dient das Tool XenConverter, das von Citrix kostenlos bereit gestellt wird.

Ich führte also die Konvertierung der VMDK-Datei aus, dies funktionierte soweit auch ohne Probleme, eben so klappte der Import in den Citrix XEN Server einwandfrei.

Beim Starten des Systems hing Linux allerdings mit der Meldung

Waiting for root file system...

VMware beschreibt in der Dokumentation, dass standardmäßig die Festplatten als SCSI-Devices gemountet werden sollen. Dies würde zu einer besseren Performance führen. Diesen Hinweis haben wir beim Einrichten aller virtuellen Maschinen unter VMware auch durchgeführt.
Allerdings bindet Citrix XEN Server nach dem Import die virtuellen Festplatten als normale IDE-Devices ein. Mir fiel das auch erst nach ein paar Minuten auf, nachdem ich über die vorher eingetragenen Boot-Meldungen schaute.

Die Lösung des Problems war dann relativ einfach umzusetzen:

  • Virtuelle Maschine neu starten
  • Während Grub lädt, ESC drücken
  • Aktuellen Kernel auswählen
  • /dev/sda1 durch /dev/hda1 ersetzen
  • System booten und als root anmelden
  • in der /boot/grub/menu.lst /dev/sda1 durch /dev/hda1 ersetzen, so dass die Änderungen permanent sind

, , ,

Keine Kommentare

Rautiges 2009-07-14

Momentan vertreibe ich mir die Zeit mit der Konfiguration des Zotac ION Boards, deshalb hier eine kurze Übersicht über die letzte Woche

  • Empfehlenswerte Websites sind www.faql.de (behandelt Themen zur deutschen Sprache, unter anderem wird erklärt, dass es das Wort “Stati” als Plural von “Status” nicht existiert) und www.encyclopediadramatica.com (über Alltags-Internetsprache).
  • Florian kämpft momentan mit der Konfiguration von MPD und Icecast2. Wir (und andere) haben das Problem, dass mit WinAMP und VLC der OGG-Stream nach Ende eines Tracks oder Wechsel während des Abspielens eines Tracks der komplette Stream abbricht. Sehr ominöses Problem, Foren-Threads deuten darauf hin, dass mit dem Wechsel der OGG-Header zu tun hat.
  • Ich habe die Woche einen Patch für vboxtool eingereicht, so dass die richtigen Maschinen gestartet werden, falls der Benutzer, der vboxtool aufruft, nicht identisch ist, mit dem ggw. Benutzer. Mehr Infos dazu gibt es im Firmen-Entwickler-Blog.
  • Im Trac von VirtualBox habe ich außerdem einen Bug-Eintrag hinterlassen, da bei mir hin und wieder die  SSH-Netzwerkverbindung abbricht.
  • Auf ganzer Linie kämpfe ich mit dem Zotac ION-Board:
    • Die Auflösung auf meinem Fernseher wird falsch dargestellt. Es gibt unsichtbare Bereiche oberhalb und unterhalb des sichtbaren Bereichs. Das Panning funktioniert nicht, ebenso diverse X-Konfigurationseinstellungen. Meine Vermutung ist, dass das DVI-Signal vom HDMI-Eingang des Fernsehers falsch interpretiert wird.
    • Bei Windows Server 2003, das in einer VirtualBox-VM ist,  lassen sich keine Rollen mehr hinzufügen. Gestern wollte ich WINS und DHCP nachinstallieren – dies schlug aber aus unerfindlichen Gründen fehl. Ich habe mir die Install-Logs unter c:\windows\debug\ angeschaut, konnte aber nicht wirklich die Fehlerursache zu identifizieren. Es läuft wohl darauf hinaus, dass ich Windows Server 2003 neu installieren muss.
    • Winbind und Samba laufen noch nicht rund. Die Authentifizierung von Winbind am Active Directory über Kerberos funktioniert hingegen schon.
    • Audio-Ausgabe über HDMI, Video-Beschleunigung etc. konnte ich noch nicht testen, da o.g. Punkte erst einmal zu fixen sind.

, , , , ,

2 Kommentare

Bluetooth-Tastatur ACK-340BT und Ubuntu 9.04

Um die Bluetooth-Tastatur ACK-340BT von Keysonic unter Ubuntu 9.04 zum Laufen zu bringen, sind folgende Schritte nötig:


su

echo "deb http://ppa.launchpad.net/blueman/ppa/ubuntu jaunty main" >> /etc/apt/sources.list

apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 947c4f7371932c794b153f0f6b15ab91951dc1e2

apt-get update

apt-get install blueman

exit

blueman-manager

Nun muss die Tastatur in den Pairing-Modus versetzt werden (Knopf auf der rechten Unterseite). Nach einem Klick auf “Search” erscheint nach einigen Sekunden die Tastatur. Diese muss ausgewählt und danach der Button “Bond” gewählt werden. Als Pin muss “0000″ am Rechner eingegeben werden. Die gleiche Pin muss danach ebenfalls auf der Tastatur eingegeben und mit Enter bestätigt werden.

Tastatur und Bluetooth-Adapter sind nun gepaart. Im Menü muss unter Device > Connect Input Service gewählt werden. Mit der Tastatur lässt sich nun schreiben, eben so funktioniert das Touchpad.

, , , , ,

Keine Kommentare