DOSBox vs. DOS-EMU

Seit meinem Umstieg auf Ubuntu 8.04 (Hardy Heron) macht das Spielen mit DOSBox auch nicht mehr so recht Spaß. Denn irgendwie lassen sich die Cursortasten nicht richtig ansprechen. Jeder Versuch das Tastenlayout im DOSBox eigenem Keymapper neu zu gestalten bringt keine Besserung. Der Keymapper interpretiert weiterhin die Pfeil-nach-links-Taste mit der Funktion der ‚Alt-Gr‘-Taste und diese wiederum mit der ‚Return‘-Taste. An der dem Tastaturlayout von Ubuntu und dem DOS-Treiber für eine deutsche Tastatur innerhalb von DOSBox liegt es auch nicht. Einzige Abhilfe, damit es nicht langweilig wird, schafft die Installation von DOS-EMU, auch wenn dieser Emulator durch das Fehlen einiger Features bei den Spielen nicht so rockt wie DOSBox. Ein solches Verhalten hat aber bisher auch noch niemand in einem Forum geschildert.
Damit man aber dennoch seine DOS-Programme benutzen kann, hier mal eine kleine Anleitung wie beide Emulatoren auf die selben Daten zugreifen können. In meinem Beispiel habe ich sämtliche Ordner, Programme und Daten, auf die ausschließlich beide Emulatoren zugegriffen werden soll, in ein eigenes Verzeichnis mit dem Namen DOS im ~/.dosbox -Verzeichnis gelegt. Dieses wiederum wird sowohl durch das entsprechende editieren der dosbox.conf unter DOSBox als und durch dem im Beispiel angegebenen Link im ~/.dosemu -Verzeichnis direkt in beiden Emulatoren als DOS-Laufwerk C: gemountet.

~$ cd .dosemu/drive_c
~$ cp autoexec.bat config.sys ~/.dosbox/DOS
~$ cd.. && mv drive_c drive_bak
~$ ln -s ~/.dosbox/DOS/ drive_c

Liferea sucks!

Habe ich eigentlich schon erwähnt, dass Liferea ein richtiges Stück an scheiße Software geworden ist? Einmal gestartet muss man nämlich jede Minute damit rechnen dass das Programm sich die ganzen 100% CPU-Zeit einverleibt. Dann es zu beenden ist unmöglich, denn es frisst sich in dem Arbeitsspeicher fest und man muss den Prozess explizit über dem Prozess-Manager abwürgen. Aber als ob das nicht schon lästig genug ist. Seit Version 1.4.xx ist es nicht mehr möglich einen Artikel wieder als ungelesen zu markieren. Hat man nämlich mal einen Artikel (ausversehen) als gelesen markiert, obwohl man dies warum auch immer nicht tat, will man ihn nicht gleich als wichtig markieren, was bei stetigen hinzukommen neuer Artikel dazu führt dass man ihn schneller aus den Augen verliert. Ungelesene Artikel werden schließlich mit einer dicken Zahl hinter dem Abonnement-Name angezeigt. Und als ob das nicht auch noch schon schlimm genug währe. Das übelste an dem Programm ist, dass es bei einem Wechsel von einer aktuelleren Version auf eine nur etwas ältere nicht in der Lage ist, die Preferences zu übernehmen. Zum Beispiel bei einem Linux-Distributionswechsel. Folglich gehen also alle Abonnements mit allen alten und wichtig markierten Artikel verloren und man muss alles wieder händisch erneut konfigurieren. Dabei fing doch alles so toll an und Liferea war ein so schönes Programm.

Veröffentlicht unter Linux

Angepasster NetBSD-Kernel für das ALIX.1C

Anbei gebe ich mal eine erste Version für eine individuell angepasste Kernelkonfiguration von NetBSD 4.0 für das ALIX.1C Board an. Auch wenn NetBSD als solches als ein Betriebssystem angesehen wird, welches auf möglichst vielen Hardwareplattformen (z.B.: Embedded-Systeme, alte UNIX-Workstations) zum Einsatz kommen soll, macht diese Vorgehensweise auf einer Single-Board-Lösung wie dem ALIX besonders viel Sinn. Zum einem handelt es sich dabei um Hardware, die aufgrund ihrer Konzeption nur sehr geringe Leistung erbringen kann und diese auch nicht ausbaufähig ist, zum anderen basiert diese gleichzeitig auch auf der gewöhnlichen und handelsüblichen i386-Architektur, die aus historischer Sicht und aufgrund ihrer sehr umfangreichen technischen Weiterentwicklung unter den frei verfügbaren Unix-Entwicklungen sehr viel Unterstützung in Form von Treibern vieler zusätzlich erhältlichen Hardware-Komponenten gefunden hat. Konkret heißt das für mich, dass ich durch das Weglassen vieler (alten) verfügbaren Bustechnologien (z.B. MCA, EISA oder Bluetooth) und der dafür verfügbaren Hardwarekomponenten den Kernel um ein wesentlichen Anteil verkleinern konnte. Zusätzlich habe ich noch bewusst auf die Unterstützung einiger Schnittstellen, die das ALIX-Board anbietet, verzichtet. Dies währe zum einem der verbaute Sound-Chip, da er für einen Serverbetrieb nicht benötigt wird. Zum anderen kann man auch auf die Funktionalität einer Parallelen Schnittstelle verzichten, wenn man wie ich das Board in das kleinste verfügbare Gehäuse verbaut, wo es keine Möglichkeit gibt, sie von dem internen Pfostenstecker heraus zu leiten. Auf diese Weise konnte ich also nun wie gesagt die Größe des generischen Standartkernel um mehr als die Hälfte senken. Aber sicherlich ist an der Konfiguration noch einiges an Optimierung möglich.

Alix.1c-Kernelkonfiguration

Das ALIX

Neues Spielzeug hat am Dienstag den Weg in meine Stube gefunden. Es handelt sich um ein Alix.1C Board nebst Zubehör des schweizerischen Unternehmen PC Engines. Neben den anderen des selben Herstellers angebotenen Boards, welche auch für eine Vielzahl von Lösungen geeignet ist, besitzt dieses durch einige zusätzliche Features die Möglichkeit als Thin Client genutzt zu werden. Heraus zu heben sind zwei Eigenschaften, die diese Dinger haben: Erstens – obwohl die CPU nur mit maximal 500 MHz getaktet ist, ist sie so designed, dass sie weder mit einem Kühlkörper bestückt ist, geschweige denn ein Lüfter die ganze Zeit herum surrt um die Abwärme ab zu führen. Und zweitens verbraucht das Alix durch das Single-Board-Design ohne angeschlossener Erweiterungskarte oder einem Datenträger nur 5 Watt Strom. Das macht das gute Stück, egal ob mit Festplatte in einem größerem Gehäuse oder auch nicht, zu einem kleinen Homeserver den man einfach in eine Ecke verfrachten und tun lassen kann ohne das er einem in irgendeiner Form weh tut. Es produziert weder Wärme noch Lärme durch irgendwelche Lüfter und verbraucht sehr sehr wenig Strom.
Ich habe mir das Board mal mit folgendem Zubehör zukommen lassen: einem schwarzen verzinktem Stahlgehäuse, 2 GB CompactFlash-Karte, 12V Netzteil und einem 3 Meter Nullmodemkabel.

ALIX1C-Frontansicht

Im folgendem erst auch noch ein paar technische Daten:

Technische Daten:

– Prozessor: AMD Geode LX800 (500 MHz, 64 + 64 KByte L1 Cache, 128 KByte L2 Cache)
– 256 MByte SD-RAM Speicher (fest installiert)
– 512 KByte Flash-Speicher (Award-BIOS)
– 1 x Batterie für Real Time Clock
– 1 x Summer für einfache akustische Rückmeldungen
– Spannungsversorgung: 12V Gleichstrom über 5,5mm Hohlstecker
– Leistungsaufnahme: ca. 4-5W (ohne Erweiterungskarten und ohne Festplatte)
– Abmessungen: 170 x 170 mm, Mini-ITX

Externe Anschlüsse:

– 1 x 10/100 MBit/s (VIA VT6105M) Netzwerkinterface
– 1 x serielle Schnittstelle (1 x DB9 Stecker)
– 1 x kombinierter PS/2 Tastatur- und Mausanschluss
– 2 x USB 2.0 Ports (2 x USB-A Buchsen)
– 1 x 15-poliger VGA Anschluss
– 1 x AC97 Audio Codec (Line In, Line out, Kopfhörer, Mikrofon)

Interne Anschlüsse:

– 1 x CompactFlash-Anschluss (Master/Slave konfigurierbar, ohne Hot Swap)
– 1 x 44-poliger IDE-Anschluss für 2″ Notebookfestplatten
– 1 x serielle Schnittstelle (1 x 10-poliger Pfostenstecker)
– 1 x Parallelport (26-poliger Pfostenstecker)
– 2 x USB 2.0 Ports (2 x 10-poliger Pfostenstecker)
– 1 x GPIO Anschluss (26-poliger Pfostenstecker)
– 1 x LPC Anschluss (20-poliger Pfostenstecker)
– 1 x I2C Anschluss (4-poliger Pfostenstecker)
– 1 x Front Panel Anschluss (Power Switch, Reset Switch, Hard Disk LED, Power LED)
– 1 x miniPCI (z.B. für Wireless LAN und VPN miniPCI Karten)
– 1 x PCI Steckplatz (3,3 Volt)

ALIX1C-Rückansicht

ALIX1C-Innenansicht

Wie bereits angedeutet, habe ich mich als festen Datenträger gegen eine Notebookfestplatte und stattdessen für eine nur 2 GB große CompactFlash-Karte entschieden. Da ich das System erst einmal nur für ein paar IRC-Instanzen nutzen will und eventuell noch einem Anonymisierungsdienst anbieten möchte, reicht dies als Festplattenplatz erst einmal völlig aus. Ein entscheidender Vorteil dieses Board’s für mich ist, das es als einziges Modell in dem Portfolio sowohl einen VGA-Anschluss als auch einen PS/2 Anschluss für eine Tastatur bietet. Da ich nämlich bereits bisher noch keine Erfahrung mit einer seriellen Konsole über das Nullmodem habe, bietet es mir so erst einmal einen sicheren Anfang in das Aufsetzen eines Servers ohne grafische Benutzeroberfläche. Als Betriebssystem habe ich mich für ein NetBSD 4.0 entschieden, welches ich aufgrund dem Fehlen einer Diskettenschnittstelle oder eines CD-ROM Laufwerkes mittels eines extra mit NetBSD formatierten und bootbaren USB-Stick auf die CompactFlash-Karte installiert habe. Während der Installation des Betriebssystem habe ich bewusst auf folgende Sets verzichtet: Als erstes die Spiele aus reinem Desinteresse. Zweitens dem Compiler, da ein angepasster Kernel aus Zeitgründen auf einem schnelleren 2,8 GHz PC erstellt wird und alle weiteren Programme lediglich direkt als Binärprogramm installiert werden. Und drittens dem kompletten X11 Sets, da dies System nicht als grafische Workstation dienen soll. Folgende weitere Programme wurden also darauf folgend zusätzlich installiert (welche zum Teil noch weitere Pakete in Abhängigkeit mit sich ziehen und auch installieren):

nload-0.7.0 = Netzwerkmonitoring für Traffic und Bandbreitenverbrauch
irssi-0.8.12nb1 = Sicherer und modularer IRC-Client auf Kommandozeilenbasis
screen-4.0.3nb2 = Multi-screen Windowmanager
wget-1.11.4 = Downloaden von Ressourcen über ein Netzwerk über HTTP oder FTP
w3m-0.5.2nb2 = Textbasierter Webbrowser
tor-0.2.0.31 = Netzwerk zur Anonymisierung der Verbindungsdaten über TCP

Mal sehen, was ich mir demnächst noch so für Dinge mit dem ALIX erschließe. Der miniPCI Slot lacht mich schon ein wenig nach einer WLAN-Karte an. Abwarten und mal schauen was die Zukunft bringt.

Veröffentlicht unter Alix

Anleitung zum Erstellen eines bootbaren USB-Stick unter NetBSD

Hier habe ich mal eine kleine Anleitung zum Erstellen eines bootbaren USB-Stick’s erstellt, von dem aus NetBSD auf die lokale Festplatte installiert werden kann. Dabei wird ausgegangen, dass es sich um einen FAT-formatierten Stick mit 1 GB Speicher handelt. Er wird standardmäßig unter NetBSD als Gerät /dev/sd0e gemountet. Im Prinzip gleicht sie der aus dem Wiki von den BSD-Foren. Nur dass ich die entsprechenden Laufwerksbezeichnungen und Verzeichnisse meines eingesetzten System angepasst habe.

1. Den USB-Stick bootbar machen

Das Einrichten des USB-Sticks erfolgt auf einem NetBSD-System. Neben einem neuen oder bereits gebrauchten USB-Stick mit mindestens 256MB Speicherkapazität wird ein CD-Image der gewünschten NetBSD-Version benötigt. Das ca. 200MB grosse CD-Image ist im Internet auf vielen FTP-Servern verfügbar.

Generell empfiehlt es sich, als ersten Schritt den Master Boot Record (MBR) neu zu installieren. Dies ist zwar nicht unbedingt notwendig, stellt aber sicher, dass der USB-Stick booten wird:

$ su
# fdisk -i /dev/sd0d
Update the bootcode from /usr/mdec/mbr? [n] y

Ausserdem ist es empfehlenswert, zunächst unter fdisk(8) eine NetBSD-Partition einzurichten:

# fdisk -u /dev/sd0d
Disk: /dev/sd0d
NetBSD disklabel disk geometry:
cylinders: 996, heads: 64, sectors/track: 32 (2048 sectors/cylinder)
total sectors: 2040832
BIOS disk geometry:
cylinders: 1012, heads: 32, sectors/track: 63 (2016 sectors/cylinder)
total sectors: 2040832
Do you want to change our idea of what BIOS thinks? [n]
Partition table:
0: Primary DOS with 32 bit FAT (sysid 11)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Which partition do you want to change?: [none] 0
The data for partition 0 is:
Primary DOS with 32 bit FAT (sysid 11)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
sysid: [0..255 default: 11] 169
start: [0..1012cyl default: 63, 0cyl, 0MB]
size: [0..1012cyl default: 2040759, 1012cyl, 996MB]
bootmenu: []
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Which partition do you want to change?: [none]
We haven't written the MBR back to disk yet. This is your last chance.
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Should we write new partition table? [n] y

Zusätzlich sollte die NetBSD-Partition unter fdisk noch auf „Active“ gesetzt werden:

# fdisk -a sd0
Disk: /dev/rsd0d
NetBSD disklabel disk geometry:
cylinders: 996, heads: 64, sectors/track: 32 (2048 sectors/cylinder)
total sectors: 2040832
BIOS disk geometry:
cylinders: 1012, heads: 32, sectors/track: 63 (2016 sectors/cylinder)
total sectors: 2040832
Partition table:
0: NetBSD (sysid 169)
start 63, size 2040759 (996 MB, Cyls 0-1012/9/63)
1: UNUSED
2: UNUSED
3: UNUSED
Bootselector disabled.
Do you want to change the active partition? [n] y
Choosing 4 will make no partition active.
active partition: [0..4 default: 4] 0
Are you happy with this choice? [n] y
We haven't written the MBR back to disk yet. This is your last chance.
Should we write new partition table? [n] y

NetBSD nutzt eine eigene Partitionstabelle, nicht die von fdisk. Diese wird mit disklabel angelegt:

# disklabel -i -I /dev/sd0e
partition> a
Filesystem type [?] [unused]: ?
Supported file system types:
4.1BSD Eighth Edition MSDOS unknown
4.2BSD FILECORE NTFS unused
4.4LFS HFS RAID Version 6
ADOS HPFS swap Version 7
Apple UFS ISO9660 System V vinum
boot jfs SysVBFS
ccd Linux Ext2 UDF
Filesystem type [?] [unused]: 4.2BSD
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]:
Partition size ('$' for all remaining) [0c, 0s, 0M]: $
a: 2040832 0 4.2BSD 0 0 0 # (Cyl. 0 - 996*)
partition> d
Filesystem type [?] [unused]:
Start offset ('x' to start after partition 'x') [0c, 0s, 0M]:
Partition size ('$' for all remaining) [996.5c, 2040832s, 996.5M]:
partition> W
Label disk [n]? y
disklabel: partitions a and e overlap
Label written
partition> q
Unknown command q
partition> Q

Die Partitionen stehen nun fest. Es fehlt noch das Dateisystem auf der Partition sd0e, das mit newfs angelegt wird:

# newfs /dev/sd0e

Allerdings kann die Partition noch nicht gebootet werden. Die folgenden Schritte sind abschließend notwendig:

# mount /dev/sd0e /mnt
# cp /usr/mdec/boot /mnt
# installboot -v -o timeout=5 /dev/rsd0e /usr/mdec/bootxx_ffsv1
File system: /dev/rsd0e
Primary bootstrap: /usr/mdec/bootxx_ffsv1
Ignoring MBR with invalid magic in sector 0 of `/dev/rsd0e'
Preserving 51 (0x33) bytes of the BPB
Boot options: timeout 5, flags 0, speed 9600, ioaddr 0, console pc

2.Die Installations-Kernel und -Sets auf den USB-Stick kopieren

Der USB-Stick ist nun bootfähig, aber ihm fehlt noch das, was eigentlich gebootet werden soll: das Betriebssystem oder wie in userem Fall das NetBSD-Installations-System mit dem Installations-Kernel. Das spätere Betriebssystem steckt in den Installations-Sets, die während der Installation entpackt und auf die Festplatte kopiert werden. Auch diese Installations-Sets werden auf dem USB-Stick benötigt.

Am einfachsten ist es, die komplette Installations-CD herunterzuladen, die als CD-Image auf vielen FTP-Servern liegt:

$ cd /home/sommteck/
$ ftp -a ftp://ftp3.de.netbsd.org/pub/NetBSD/NetBSD-4.0/iso/i386cd-4.0.iso

Um die benötigten Dateien aus dem CD-Image auf den USB-Stick kopiern zu können, muss die Image-Datei ins Dateisystem eingebunden werden:

$ su
# mkdir /image
# vnconfig -c vnd0 /home/sommteck/i386cd-4.0.iso
# mount -t cd9660 /dev/vnd0d /image/

Der Installations-Kernel und die Sets werden dann auf den gemounteten USB-Stick kopiert:

# cp /image/i386/binary/kernel/netbsd-INSTALL.gz /mnt/netbsd.gz
# cp -R /image/i386/binary/sets/ /mnt/sets/

Danach ist der USB-Stick fertig eingerichtet. Nach dem Runterfahren des Computers, muss der USB-Stick im BIOS als das zu bootende Laufwerk eingestellt werden. NetBSD sollte im Anschluss daran einwandfrei booten und mit einem blauen Installations-Menü grüssen.

3.Anmerkungen zur Installation

Eigentlich läuft die Installation nun problemlos und nach dem vertrauten Muster ab. Der folgende Schritt könnte jedoch Probleme bereiten:

Ihre Festplatte ist nun bereit für die Installation der Kernel- und
Distributionspakete. [...]

Hier muss das richtige Medium ausgewählt werden, und zwar:

>f: Ungemountetes Dateisystem

Mit RETURN bestätigen und es erscheint der folgende Screen:

Geben Sie das noch nicht gemountete lokale Gerät und dessen entsprechendes
Verzeichnis an, im dem die Distribution zu finden ist. (Das Verzeichnis muss
.tgz Dateien enthalten)

Hier sind die Optionen wie folgt zu setzen (aber dies ist nur ein Beispiel, bitte gegebenenfalls anpassen!!):

a: Gerät sd0e
b: Dateisystem ffs
c: Basispfad
d: Verzeichnis /sets

Veröffentlicht unter BSD