Raspberry Pi als C64-Emulator

Der Raspberry Pi ist ein vielseitiges Gerät. Während mein erster Raspberry Pi seine Arbeit als NTP-Server mit GPS verrichtet, habe ich versucht auf dem zweiten einen C64-Emulator zum laufen zu bringen. Der Anfang war ein wenig holprig, aber zum Schluß habe ich es geschafft.

Mein erster Versuch war einfach mit dem Standalone VICE, wie in „how to install/run C64 emulator VICE on your PiMAME“. Der Emulator funktionierte bestens, ich konnte ihm jedoch keinen Ton entlocken. Bei der Suche nach einer Lösung stieß ich auf ChameleonPI, ein fertiges Disk-Image mit einem Haufen an Emulatoren und einer hübschen grafischen Oberfläche. Die Installation ist denkbar einfach. Auf dem Mac beschränkte es sich im Grunde auf:

diskutil list  # Devicenamen der SD-Karte rausfinden (bei mir /dev/disk3)
diskutil unmountDisk /dev/disk3  # SD-Karte unmounten
sudo dd bs=1m if=chameleon.v032.img of=/dev/rdisk3  # Achtung, raw disk verwenden!
diskutil unmountDisk /dev/disk3  # Nochmal auswerfen, weil OS X sie automatisch gemountet hat

Nach dem Start wurde ich von einem netten Menü zur Auswahl des Emulators begrüßt. Der USB-Joystick funktionierte auch und sogar der Ton schien zu funktionieren. (Zumindest im Menü). Ich habe zum Test ein Disketten-Image auf den Pi kopiert und wurde erneut enttäuscht. Kein Ton. Obwohl ich ALSA als Sound-System eingestellt habe, bliebt der Emulator stumm. Erst ein Post im Raspberry-Pi-Forum von Frank Buß brachte mich auf die Lösung. Die Firmware des Pi mußte aktualisiert werden. Zum Glück war das nicht weiter schwer:

sudo apt-get install rpi-update
sudo rpi-update

Nach dem Reboot funktionierte dann der Sound auch im C64-Emulator.

Bei meinen Versuchen mit diversen Spielen mußte ich dann noch feststellen, daß es gelegentlich etwas ruckelte. Ich habe meinen Pi aus diesem Grunde auf 900 MHz übertaktet, was das Problem bei mir behob.

flattr this!

FusionDrive ist keine Zauberei

Wie in „Fusion drive on older machines? YES!“ beschrieben, läßt sich ein FusionDrive aus beliebigen Datenträgern zusammenbauen. Mir ist noch unklar, wie FusionDrive bestimmt, welche Platte für die häufig benötigten Dateien verwendet werden soll. Scheint sich wohl um irgendeinen Automatismus zu handeln.

Eines ist damit klar. Ein Mac mit einem FusionDrive hat keine Hybrid-Festplatte wie bei ReadyDrive unter Windows. Es sind einfach eine Festplatte und eine getrennte SSD. Alles weitere wird vom Betriebssystem erledigt.

flattr this!

SSH via Back to My Mac

„Back to My Mac“ ist eine nette Sache, um mal schnell auf den Mac Zuhause zu kommen. Doch die Bildschirmfreigabe kann recht bandbreitenhungrig sein oder die Bedienung wird recht schnell zum Geduldsspiel. Eher unbekannt ist die Möglichkeit, Back to My Mac mit SSH zu verwenden.

Normalerweise funktioniert Back to My Mac, indem es im Hintergrund automagisch ein VPN zwischen den Rechnern aufbaut und dann einfach die Bildschirmfreigabe darüber tunnelt. Da es sich bei dem VPN wirklich um ein normales IPSec-VPN handelt, ist man nicht auf die Bildschirmfreigabe beschränkt. Man kann genausogut auch FTP oder HTTP durch dieses VPN schieben. Oder wie im Folgenden beschrieben: SSH.

Hierzu braucht man seine Back-to-My-Mac-Domain. Diese kann man sich mit mDNS -E ausgeben lassen. Die Domain sollte so aussehen: 12345678.members.btmm.icloud.com. (Die Nummer wird selbverständlich anders sein) Damit kann man sich nun mit Macs verbinden, die zu diesem iCloud-Konto gehören, man muß nur deren Hostnamen kennen. Möchte ich mich nun mit meinem iMac („Jupiter“) verbinden, muß ich einfach nur ssh jupiter.12345678.members.btmm.icloud.com. eingeben. Und weil ich nicht jedesmal diesen langen Hostnamen eintippen will, habe ich in der ssh_config(5) einen Alias angelegt.

Falls die Verbindung nicht funktioniert, sollte man zuerst sicherstellen, daß Back to My Mac auch wirklich funktioniert. Hierzu sollte man einmal eine Verbindung via Bildschirmfreigabe versuchen. Auch sollte man SSH („Entfernte Anmeldung“) auf dem Ziel-Mac aktiviert haben. (duh!)

Edit: Titel korrigiert

Edit 2: Auf Mountain Lion gibt es mDNS nicht mehr. Stattdessen kann man dns-sd -E verwenden.

flattr this!

Felder für Sortierung in iTunes

Sortieren, aber richtig


Eine kaum beachtete Funktionalität in iTunes ermöglicht es, die Sortierung von Songs/Alben anzupassen. Als Beispiel habe ich mal die „Café del Mar“-Alben hier genommen. Hätte ich iTunes alleine die Sortierung überlassen, wären die Alben einfach alphabetisch sortiert worden. Ich hätte also Catorce (14) vor Cinco (5) vor Cuatro (4) usw.

Das ist natürlich totaler Quatsch. Glücklicherweise kann man in iTunes den Songs zusätzliche Metadaten mit auf den Weg geben, die nur zur Sortierung verwendet werden. Diese finden sich bei den Song-Informationen auf der Registerkarte „Sortierung“. Ich habe dort im Feld für „Album für Sortierung“ den Album-Titel nochmal eingetragen, jedoch die Nummer einfach als Zahl angegeben. Während also im Feld für das Album weiterhin „Volumen Cuatro“ steht, habe ich im entsprechenden Feld für die Sortierung „Volumen 4“ eingetragen. Nachdem ich diese Felder bei allen „Café del Mar“-Alben ergänzt habe, erschienen diese, wie im Bild am Anfang dieses Artikels.

flattr this!

pfSense auf der Soekris net4801

Dies ist eigentlich nur eine Notiz an mich, für den Fall, daß ich es mal wieder brauchen sollte.

Wenn die pfSense nach der Installation auf der CF-Karte auf der Soekris nur noch Meldungen wie READ_DMA timed out ausspuckt, muß man DMA deaktivieren. Einfach in der /boot/loader.conf folgende Zeile einfügen:

hw.ata.ata_dma="0"

 


Danach bootet die pfSense auch wieder.

 

flattr this!

Retrofieber mal wieder

Das Retrofieber hat mich wieder gepackt. Ich habe meinen Commodore 128 D(CR) wieder aus dem Keller geholt. Das Netzteil ist immer noch kaputt. Es gibt nur ein lautes Brummen von sich und der Rechner macht nix. Ich habe das Netzteil erstmal ausgebaut. Alles scheint noch am rechten Ort zu sein. Muß ich mal in Ruhe durchchecken (lassen).

Gleichzeitig habe ich mir auch noch eine ZoomFloppy gekauft, in der Hoffnung, meine alten C64-Disketten mal auszulesen. Ich habe meine standalone 1571 daran angeschlossen und konnte zu meiner Verwunderung fast alle Disketten problemlos am Mac auslesen.

Jetzt checke ich regelmäßig eBay nach interessanter alter Commodore-Hardware. Wenn einer meiner Leser noch irgendwas loswerden möchte, kann er sich bei mir melden.

flattr this!

Dropbox

Must-have Webdienst


Ohne Dropbox könnte ich nicht mehr leben. Ich kann damit nicht nur einen Ordner zwischen verschiedenen meiner Rechner synchronisieren

sondern auch Ordner mit anderen Dropbox-Usern teilen. Und das ganze funktioniert sogar zwischen Windows, Mac und Linux.

Und dank des Public-Ordners kann ich auch mal eben eine Datei per http zugänglich machen, ohne diese mit (s)ftp/scp/… irgendwo heraufladen zu müssen. Auch von nicht-Nerds zu bewerkstelligen.

Wen ich jetzt von Dropbox überzeugen konnte, der möge sich über meinen Referral-Link anmelden. Für jeden User, der sich darüber anmeldet, bekomme ich zusätzlichen Speicherplatz.

flattr this!

Ein echtes ZFS-only FreeBSD-System

Als ich meinen neuen FreeBSD-Server installieren sollte, wollte ich ihn nun komplett mit ZFS einrichten. Im Internet existieren genügend Anleitungen, die beschreiben, wie man dies bewerkstelligt. Doch sie gingen alle nicht den allerletzten Schritt, um auch das Swap ins ZFS zu legen. Hier also die Anleitung, wie man ein echtes ZFS-only System einrichtet.

Zunächst einmal ein paar Daten. Ich habe 5 SATA-Festplatten im Rechner, die nach dem Booten von FreeBSD 8.1-RELEASE als ad4, ad6, ad8, ad10 und ad12 erkannt wurden. Die Installation ist nichts für schwache Nerven. Es gibt keine Menüs, alles wird von der Kommandozeile erledigt und Tippfehler werden mit einem kaputten System bestraft.

Ich habe den Rechner mit der Installations-DVD gestartet. Anstatt die übliche Installation zu starten, bin ich jedoch gleich in die Rettungskonsole (Fixit) gegangen. Hier habe ich nochmal mit dmesg nachgeprüft, daß auch wirklich alle Platten korrekt erkannt wurden und mir die Gerätenamen notiert.

Als erstes habe ich die Festplatten mit GPT partitioniert.

gpart create -s gpt ad4
gpart create -s gpt ad6
gpart create -s gpt ad8
gpart create -s gpt ad10
gpart create -s gpt ad12

So vorbereitet habe ich dann die Partitionen auf den Festplatten angelegt. Zuerst die Bootpartition.

gpart add -b 34 -s 128 -t freebsd-boot ad4
gpart add -b 34 -s 128 -t freebsd-boot ad6
gpart add -b 34 -s 128 -t freebsd-boot ad8
gpart add -b 34 -s 128 -t freebsd-boot ad10
gpart add -b 34 -s 128 -t freebsd-boot ad12

Anders als in den oben erwähnten Anleitungen, habe ich keine separate Swap-Partition angelegt. Den verbliebenen Platz auf den Platten habe ich vollständig für das ZFS verwendet.

gpart add -t freebsd-zfs -l disk0 ad4
gpart add -t freebsd-zfs -l disk1 ad6
gpart add -t freebsd-zfs -l disk2 ad8
gpart add -t freebsd-zfs -l disk3 ad10
gpart add -t freebsd-zfs -l disk4 ad12

Natürlich gehört der Boot-Code auf alle Festplatten. Man weiß ja nie, welche Festplatte ausfällt, in dem Fall möchte ich natürlich auch von den verbliebenen Platten booten können.

gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad4
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad6
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad8
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad10
gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad12

Um das ZFS anzulegen, habe ich die ZFS-Kernelmodule geladen.

kldload /mnt2/boot/kernel/opensolaris.ko
kldload /mnt2/boot/kernel/zfs.ko

Das Dateisystem habe ich dann mit diesen Befehlen angelegt. (Die ersten beiden Zeilen gehören zusammen und sind hier nur wegen der Breite umgebrochen)

zpool create zroot raidz2 /dev/gpt/disk0 /dev/gpt/disk1 /dev/gpt/disk2 \
/dev/gpt/disk3 /dev/gpt/disk4
zpool set bootfs=zroot zroot

An dieser Stelle mußte ich dann nochmal von den Anleitungen abweichen, um Swap einzurichten. Die Idee dazu stammt von hier.

zfs create -V 2G zroot/swap
zfs set org.freebsd:swap=on zroot/swap
zfs set checksum=off zroot/swap

Hier kehrte ich dann zu den vorhandenen Anleitungen zurück. Es ist nicht zwingend notwendig, all diese Dateisysteme anzulegen, aber wenn man schon ein Dateisystem wie ZFS hat, sollte man seine Stärken richtig ausspielen.

zfs set checksum=fletcher4 zroot
zfs create -o compression=on -o exec=on -o setuid=on zroot/tmp
chmod 1777 /zroot/tmp
zfs create zroot/usr
zfs create zroot/usr/home
cd /zroot ; ln -s /usr/home home
zfs create -o compression=lzjb -o setuid=off zroot/usr/ports
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/distfiles
zfs create -o compression=off -o exec=off -o setuid=off zroot/usr/ports/packages
zfs create zroot/var
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/crash
zfs create -o exec=off -o setuid=off zroot/var/db
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/db/pkg
zfs create -o exec=off -o setuid=off zroot/var/empty
zfs create -o compression=lzjb -o exec=off -o setuid=off zroot/var/log
zfs create -o compression=gzip -o exec=off -o setuid=off zroot/var/mail
zfs create -o exec=off -o setuid=off zroot/var/run
zfs create -o compression=lzjb -o exec=on -o setuid=off zroot/var/tmp
chmod 1777 /zroot/var/tmp

Damit habe ich alle Dateisysteme angelegt und kann mit der eigentlichen Installation beginnen. Auch das muß von der Kommandozeile geschehen.

cd /dist/8.1-RELEASE
export DESTDIR=/zroot
for dir in base manpages ports ; do (cd $dir ; ./install.sh) ; done
cd src ; ./install.sh all
cd ../kernels ; ./install.sh generic
cd /zroot/boot ; cp -Rlp GENERIC/* /zroot/boot/kernel/

Nachdem alle Dateien installiert sind, kann /var/empty read-only geschaltet werden.

zfs set readonly=on zroot/var/empty

Nun konnte ich in das frisch installierte System chrooten, um noch wichtige Einstellungen am System vorzunehmen.

chroot /zroot

Damit alle ZFS-Dateisysteme beim booten gemountet werden.

echo 'zfs_enable="YES"' > /etc/rc.conf

Der Bootloader soll natürlich auch wissen, wovon er booten soll.

echo 'vfs.root.mountfrom="zfs:zroot"' > /boot/loader.conf
echo 'zfs_load="YES"' >> /boot/loader.conf

Folgende Zeile ist nur bei Systemen mit 1GB RAM oder weniger nötig.

echo 'vfs.zfs.prefetch_disable="1"' >> /boot/loader.conf

Sollte ich je auf die Idee kommen, mit make buildworld mein System upzudaten, will ich auch wieder einen Bootloader mit ZFS-Support haben. Dies ist nicht notwendig, um das System zum laufen zubekommen. Es verhindert nur, daß ich mir zukünftig ins Knie schieße.

echo 'LOADER_ZFS_SUPPORT=YES' > /etc/src.conf

Damit das System nach dem Booten auch lauffähig und benutzbar ist, fehlen noch einige Einstellungen wie root-Passwort, Zeitzone und Mail-Aliase für Sendmail.

passwd root
tzsetup
cd /etc/mail ; make aliases

Das System wird am Ende komplett aus dem ZFS laufen und benötigt eigentlich keine /etc/fstab mehr. Allerdings geht FreeBSD beim Booten davon aus, daß diese Datei existiert. Es fährt zwar auch ohne hoch, spuckt jedoch beim Hochfahren unschöne Fehlermeldungen aus. Um dem vorzubeugen, habe ich eine leere /etc/fstab angelegt.

touch /etc/fstab

Dies war nur das allernötigste. Die restlichen Einstellungen wie Netzwerk, Dienste, Tastaturlayout kann ich nach dem ersten Booten mit sysinstall vornehmen. Ich war an dieser Stelle fertig und konnte die chroot-Umgebung verlassen.

exit

Damit das System beim Booten die Dateisysteme wiederfindet, braucht es den zpool.cache. Dieser wird erst beim Exportieren des ZFS erzeugt. Ich habe also kurz das Dateisystem exportiert und gleich wieder importiert, um die Cache-Datei zu erzeugen und dann ins System zu kopieren.

mkdir /boot/zfs
cd /boot/zfs
zpool export zroot && zpool import zroot
cp /boot/zfs/zpool.cache /zroot/boot/zfs/zpool.cache

Und zuletzt habe ich die Mountpunkte den einzelnen Dateisystemen zugewiesen.

export LD_LIBRARY_PATH=/mnt2/lib
zfs unmount -a
zfs set mountpoint=legacy zroot
zfs set mountpoint=/tmp zroot/tmp
zfs set mountpoint=/usr zroot/usr
zfs set mountpoint=/var zroot/var

Damit war die Installation abgeschlossen. Ich habe die Rettungskonsole verlassen. Der FreeBSD-Installer erschien wieder und ich wählte unten den Punkt zum Beenden des Installers. Der Rechner startete neu und startete danach das frisch installierte System vom ZFS.

Wie vorhin erwähnt mußte ich nach dem ersten Login noch das Netzwerk, SSH und Tastatur einrichten. Danach war das System voll betriebsbereit.

flattr this!

Axel E. Fischer fordert…

Wenn Politiker ihre Ahnungslosigkeit über das Internet demonstrieren, dürfen sie sich nicht wundern, wenn sie zum Spott im Internet werden. Axel E. Fischer, CDU, forderte ein Vermummungsverbot im Internet und erschuf ein neues Meme. Twitter ist voll von Axel E. Fischer fordert-Parodien. Hier sind meine Favoriten:

  • Axel E. Fischer fordert Zahnersatz für Bluetooth-Geräte.
  • Axel E. Fischer fordert Buchpreisbindung für Facebooks.
  • Axel E. Fischer fordert Homoehe in heterogenen Netzwerken.
  • Axel E. Fischer fordert Verdummungsverbot für CDU-Politiker.
  • Axel E. Fischer fordert Strafgebühr für nicht zurückgespulte Youtube-Videos.
  • Axel E. Fischer fordert Tierheime für LOLcats.
  • Axel E. Fischer fordert Fangquoten für Fail-Whales.
  • Axel E. Fischer fordert Pflaster für Schnittstellen.
  • Axel E. Fischer fordert Hafensteuer für Ports.
  • Axel E. Fischer fordert Überrollbügel für Rickrolls.

Hier noch mehr Forderungen.

flattr this!

Einblicke in die andere Dimension