Archive for the ‘Linux’ Category

Linux: Mounting 4096 byte sectors harddisk as 512 byte sectors

Mittwoch, August 20th, 2014

I have a strange external USB3-SATA docking station. It says that any harddisk inside has 4096-byte sectors, which makes it unable to normally access 512-byte-sector harddisks (i.e., any disk below 2TB or so).

My workaround was to setup a loop device and lookup the partitions inside this loop device with kpartx.

losetup /dev/loop1 /dev/sdc
kpartx -av /dev/loop1
mount /dev/mapper/loop1p1 /mnt/temp/

# do work ...

umount /mnt/temp/
kpartx -d /dev/loop1
losetup -d /dev/loop1

NEC Pinwriter P20

Dienstag, März 29th, 2011

Mir wurde ein originalverpackter NEC Pinwriter P20 mit passendem frischem Farbband geschenkt, welcher jahrelang unbenutzt im Keller stand. Wie so ziemlich alle Nadeldrucker ist er für Endlospapier gedacht, was zumindest bei mir nicht einfach zuhause rumliegt. Auch wenn das Farbband anfangs kaputt wirkt, so geht es meist mit erhöhter Andruckkraft (Hebel am Drucker zum Einstellen) nach einigen Seiten wieder problemlos. Nach einigem Probieren fand ich folgendes heraus: (mehr …)

Siemens Nixdorf RM400-252

Dienstag, März 29th, 2011

Auf dem Sperrmüll habe ich einen Siemens Nixdorf RM400-252 Server gefunden. Er war ziemlich verstaubt, deshalb habe ich ihn erstmal gründlich zerlegt und ausgesaugt.

Er hat

  • 133 Mhz MIPS 4600 (IDT Orion) CPU
  • 64 MB Ram, angeblich davon nur 47M nutzbar
  • 2 SCSI Festplatten
  • ganz normales LAN onboard(!)
  • 3 serielle Schnittstellen
  • keine Grafikkarte
  • als Betriebssystem SINIX 5.43

Inbetriebnahme

Nach erstem Suchen bin ich dann auf Wikipedia und bei Fujitsu-Siemens fündig geworden – ähnliche Maschinen haben eine serielle Konsole mit 19200 baud. Schnell ein Nullmodemkabel gebaut, an den PC angeschlossen, mit cutecom ttyS0 als 19200,8N1 geöffnet, eingeschaltet und schon liefen die ersten Bootmeldungen über den Schirm:

Running Power-On Diagnostics...
Hit s key to Skip PON Tests... Not Skipped
Cache Test #1...PASSED
...
Time-of-Day Clock Test...PASSED

Ending Power-On Diagnostics...
Machine is coming up...

soweit so gut, die ersten Selbsttests scheinen OK. Nun bootet der SINIX-Kernel:

Autoboot: Waiting to load dkncr(0,0,10)sash (CTRL-C to abort, RETURN to expedite)
loading
Starting channel 0 unit 0
305280+133696+632592 entry: 0xa0e00000
SNI Standalone Shell Version 4.2004 SNI_R4000 OPT Mon Oct 20 11:37:12 MDT 1997 livsa542
Loading dkncr(0,0,0)unix
4104556+1476624+1825976 entry: 0x80020100
SINIX-N: HAL (a20r) 1.9  97/03/10 14:14:41
Board Type: 5

SNI  RM400
UNIX(R) SINIX-N Release 5.43 Version C4001
Copyright (c) Siemens Nixdorf Informationssysteme AG 1990-1998

Basis:\0x09DC/OSx (R), Copyright (c) Siemens Pyramid Information Systems, Inc. 1984;
\0x09UNIX (R), Copyright (c) The Open Group 1983
All rights reserved
...
CPU 0:\0x09ORION (R4600) Processor Chip Revision: 2.0
FPU 0:\0x09ORION (R4600) Floating Point Unit Revision: 2.0
Memory Map:
\0x09\0x090x00000000 - 0x03ffffff
CPU Freq = 133 MHZ
...
[00000000] md : Streams Debugging Utility installed (c) SNI 1996
Mirror Disk initialization ... completed.

dann fährt das System weiter hoch, aber scheinbar ist die zweite SCSI-Platte kaputt:

...
<status> 02b30200 (hard 1/1) Unit Not Ready - Drive failed to spin up
\0x09  () Extended Sense Bytes 13-17 for lpb at 0xc07f23c0
\0x09  *  00000000 00000000
CMN: NOTICE: sdi 170  Drive Configuration Failed: ios0/sdisk001, Can't Start Unit.
CMN: NOTICE: sdi 102  ios0/sdisk001: Unit Not Ready
vxfs fsck: open of /dev/ios0/rsdisk001s5 failed: I/O error
.... weitere Bootmeldungen und das Starten der Dienste folgen ...
The system is ready.
SNI
Console Login:

Na gut, hochgefahren ist es schon, jedoch brauche ich jetzt das root-Passwort. Alle Versuche scheitern. Also muss eine andere Lösung her.

Rücksetzen des Rootpassworts

 

Nach langem Probieren und Manuals lesen komme ich Stück für Stück auf die Lösung, wie man das root-Passwort zurücksetzt, ohne Bootmedien oder PCs mit SCSI-Controller zu haben. Dieses mal nehme ich gtkterm zur seriellen Verbindung, da cutecom scheinbar etwas verzögert und keine Terminal-Emulation bietet. Ich resette das System (man muss den Resetknopf lange drücken, sonst kommt nur der Kerneldebugger) und drücke STRG-C sobald der Bootloader sich meldet:

 

Autoboot: Waiting to load dkncr(0,0,10)sash (CTRL-C to abort, RETURN to expedite)
CONSOLE ABORT
exit(-1) called
SNI Monitor Version 4.2004 SNI_R4000 OPT Mon Oct 20 11:18:48 MDT 1997 livsa542
Memory size: 64 MBytes (0x4000000 bytes)
Bank #0:  64 MBytes		Bank #1:   0 MBytes
Bank #2:   0 MBytes		Bank #3:   0 MBytes
CPU : R4600  PC, Revision 2.0
I-cache size: 16384 (0x4000) bytes
D-cache size: 16384 (0x4000) bytes
>>

Ich bin nun im PROM-Monitor, einer Art Bios. Nun boote ich in die sash, eine Art Bootloader.

>> boot
Starting channel 0 unit 0
305280+133696+632592 entry: 0xa0e00000
SNI Standalone Shell Version 4.2004 SNI_R4000 OPT Mon Oct 20 11:37:12 MDT 1997 livsa542
sash:

aus der Sash wird nun der Kernel mit dem Kommando boot geladen. Da man laut Systemverwalter-Handbuch durch Anhängen von initarg=-s in single-User kommt, habe ich es zuerst mit initarg=-abcdefghijklmnopqrtuvwxyz versucht, also allem außer -s. Dann kam im Verlauf des Bootens mehrmals folgende Hilfe:

INIT: Usage: init [-l {123456sS}] [-s|-S] [-x #] [-a] [-n] [-v]
INIT:   -l #    for init level
INIT:   -s      for single user level
INIT:   -S      for single user level
INIT:   -x #    for debug level
INIT:   -a      to ask for level
INIT:   -n      give a sh NOW!
INIT:   -v      sets INIT_VERBOSE=1 in global environment for init's children
INIT: will default to state s
INIT: Unrecognized value 'c' ignored

Da war sie nun, die Init-Doku. Nun resettete ich erneut bis zur Eingabe der init-Parameter, wählte aber jetzt -n.

boot -f dkncr(0,0,0)unix initarg=-n

Nun bootete das System bis zu folgender Anzeige:

*** ROOT REMOUNTED ***
link /dev/rroot to /dev/ios0/rsdisk000s0
link /dev/root to /dev/ios0/sdisk000s0
Node: SNI
INIT: STREAM modules (ldterm,ttcompat) were already present!
INIT: Starting a pre-single user /sbin/sh.  The root file system may
INIT: be read-only.  You may need to do a 'fsck -F ufs /dev/rroot'
INIT: and then do a 'uadmin 4 0' to remount it read-write
INIT: See /sbin/bcheckrc for details
#
Endlich, die erhoffte Shell. Nun mountete ich alle Dateisysteme und änderte /etc/shadow mit dem prähistorischen zeilenorientierten Editor "edit":
# mountall
...
# edit /etc/shadow
"/etc/shadow" [Schreibgeschuetzt] 31 Zeilen, 777 Zeichen
:1
root:a2bcdeFGH3/4:13982:0:168:7:::

in der ersten Zeile ist der gewünschte Eintrag. Nun lösche ich mit dem Kommando s den gespeicherten Hash (hier steht natürlich nicht der originale, sondern ein anderer Hash, nicht dass jemand noch das Rootpasswort des unbekannten Vorbesitzers herausfindet). Der enthaltene Schrägstrich musste mit einem Backslash escaped werden.

:s/a2bcdeFGH3\/4//
root::13982:0:168:7:::
:w!
"/etc/shadow" 31 Zeilen, 764 Zeichen
:q
# exit

Nun lief der normale init-Prozess los und ich konnte mich dann als root ohne Passwort anmelden und mit passwd ein neues Passwort setzen.

Ergebnis

Das Sinix-System läuft, der C-Compiler hat aber keine Lizenz. Einen gcc konnte ich bis jetzt nicht auftreiben, also steht das System vorerst ungenutzt im Keller herum. Linux geht scheinbar auf dieser Maschine nicht, auch wenn man angeblich Windows NT zum Laufen bringen kann (darauf kann ich verzichten). Es gibt, wenn ich mich richtig erinnere, uralte apache- und sshd Versionen für SINIX, ich habe aber den Link nicht mehr parat. Dateiübertragung geht per rsh, Shell per rlogin.

Links

Verifying debian squeeze CD images from lenny

Montag, Februar 28th, 2011

If you want to verify your debian squeeze CD images from a debian lenny system, you need to update the keyring because otherwise the following error occurs during verification:

gpg: Signature made Sun Feb 6 01:09:16 2011 CET using RSA key ID 6294BE9B
gpg: Can’t check signature: public key not found

Do the following steps as root:
edit your /etc/apt/sources.list: add the line:

deb http://ftp.de.debian.org/debian wheezy main

then run

apt-get update

If there is an error („too many package descriptions“): comment out some other entries in /etc/apt/sources.list. Go on with

apt-get install debian-keyring/testing

apt will remove debian-maintainers, but I don’t think this package is neccesary.
change your /etc/apt/sources.list back to its original contents.

apt-get update

Change back to your normal user.

Now you can verify the images by first downloading the iso-file and the corresponding SHA512SUMS and SHA512SUMS.sign files from the same directory (for 64bit PC: http://cdimage.debian.org/debian-cd/6.0.0/amd64/iso-cd/).

Then verify the sha512 hash value:

 

 cd /home/your/iso/directory
 gpg --no-default-keyring --keyring /usr/share/keyrings/debian-role-keys.gpg --verify SHA512SUMS.sign

gpg: Signature made Sun Feb 6 01:09:16 2011 CET using RSA key ID 6294BE9B
gpg: Good signature from „Debian CD signing key „
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner.
Primary key fingerprint: DF9B 9C49 EAA9 2984 3258 9D76 DA87 E80D 6294 BE9B

The warning may be safely ignored because apt cryptographically verifies all packages and the keyring file debian-role-keys.gpg was installed by apt.

sha512sum -c SHA512SUMS

debian-6.0.0-amd64-CD-1.iso: FAILED open or read
….
debian-6.0.0-amd64-netinst.iso: OK
….

You can ignore the „FAILED open or read“ lines – sha512sum just looks for all cd images listed in the file. The „OK“ line must be there.

Now you have successfully verified the ISO – have fun installing!

eGroupware: GroupDAV „account is expired“

Mittwoch, Oktober 27th, 2010

I had this error message when using KOrganizer with eGroupware and it did not disappear after re-enabling the user. In fact it even showed additional other error messages when retrying, first „bad user or password“ and finally „blocked, too many attempts“. The problem is that egroupware somehow stores the login error in a php-session. All php-sessions can be deleted by running the following command as root. (This is for Debian/Ubuntu and PHP5, it can be different for others)

 rm /var/lib/php5/sess_*

Please note that this will log out all users on all php applications running on your host! If you can’t do this (e.g. on a shared hosting website), disable your GroupDAV client for a long enough time so that the session will expire. For debian, session.gc_maxlifetime is set to 1440 seconds = 24 minutes, and a cronjob deletes old sessions every 30min. This means you should wait one hour and then re-enable your GroupDAV client.

mingw32-make qmake stuck in infinite loop: The solution

Donnerstag, Oktober 7th, 2010

I had this problem at compiling a project previously created with KDevelop under Linux. This is how I solved it: (mehr …)

Funktionsprototypen aus einer C-Datei erzeugen

Sonntag, September 19th, 2010

Unter Linux geht das ganz schnell:

cat datei.c | sed -n "s/^\([a-z].*(.*)\)[ \\t]*[\{][^;]*\$/\1;/p"

Der vorliegende Befehl geht von folgender Formatierung der ersten Zeile einer Funktion aus:

int beispiel(int a, int b) {

Um „function declaration is not a protoype“-Fehler damit vollständig zu eliminieren, darf man nicht vergessen, bei Funktionen ohne Argumente „void“ in die Klammer zu schreiben, z.B.:

int zufallszahl(void) {... }
cat messung.c | sed -n „s/^\([a-z].*(.*)\)[ \\t]*[\{][^;]*\$/\1;/p“

UMTS mit dem Nokia 5800 und Debian über Bluetooth nutzen

Samstag, Juli 10th, 2010

Da ich nun über simyo einen mobilen Datentarif habe, wollte ich diesen auch mit dem Laptop verwenden. Dies ließ sich mit mäßigem Aufwand zum Funktionieren bringen. (mehr …)