Aus Linux-Magazin 02/2010

PS3 als I-SCSI-Target

©B B, 123RF.com

Sonys Playstation 3 hat Gigabit-LAN und ein Blu-ray-Laufwerk. Wer den Power-PC-Prozessor mit Linux startet und ein I-SCSI-Target darauf installiert, macht aus der Konsole einen schnellen Fileserver, mit dem sich sogar HD-Filme übers Netz betrachten lassen.

Spielerisch treffen sich zwei Welten: I-SCSI verwenden Admins normalerweise in schnellen Netzen, um Daten zwischen Servern und Storage zu übertragen, die PS3 dient allenfalls der Entspannung nach getaner Arbeit. Aber wer Linux auf der Spielekonsole installiert, kommt bisweilen auch in den Genuss ganz anderer Fähigkeiten, zum Beispiel eines I-SCSI-Servers.

Linux und I-SCSI

Das Kürzel I-SCSI [1] steht für Internet Small Computer Systems Interface und findet vorwiegend in Umgebungen vom Gigabit-Ethernet aufwärts Verwendung. Der Standard [2] für Storage Anbindung über LAN-, aber auch WAN- oder Internet-Verbindungen hat sich mittlerweile als günstige Alternative zu Fibre Channel etabliert. Die Clients, so genannte Initiatoren finden sich in Linux-Distributionen, Yast-Modulen für Server (Abbildung 1) und Client, aber auch in Hardware wie Host-Bus-Adaptern. Die Server, so genannte Targets akzeptieren Kommandos als Command Descriptor Block (CDB), für die Benutzer am Client entsteht so die Illusion lokaler Laufwerke.

Abbildung 1: I-SCSI ist als Standard für schnelle Storage-Anbindung als Server (Target) und Client (Initiator) auch in Yast integriert.

Abbildung 1: I-SCSI ist als Standard für schnelle Storage-Anbindung als Server (Target) und Client (Initiator) auch in Yast integriert.

Lio, (Linux-iscsi.org) [3] steht für die Linux-Implementierung der I-SCSI-Technologie von Rising Tide Systems [4]. Unter allen gängigen Varianten wie dem Initiator Open-I-SCSI [5] oder dem Server Iscsitarget [6] scheint Lio derzeit die meisten Plattformen und Features anzubieten. Rising Tides I-SCSI- Variante besteht aus Client und Server, ist bereits seit 2004 Open-Source, bringt Enterprise-Support und laut Hersteller im 10-GBit-LAN bessere Ergebnisse als vergleichbare, aber wesentlich teuerere Fiber-Channel-Infrastrukturen.

Als Beispiel ist auf der DELUG-DVD ein angepasstes Linux-Image enthalten, mit dem Besitzer einer PS3 auf Sonys Gerät Ubuntu booten und es so in einen schnellen Fileserver mit I-SCSI-Anschluss verwandeln, ohne die PS3 partitionieren oder etwas installieren zu müssen.

In der Abbild-Datei »lio-ps3-ubuntu-9.04-live.img« findet sich eine 20 MByte große Boot-Partition mit dem PS3-Boot-Loader Petit Boot [7] in »/ps3/otheros.bld«. Die zweite Partition im Image umfasst als Ext3-Root-Partition eine Ubuntu-9.04-Installation für Power-PC. Darüber hinaus sind die Kernelmodule für die Lio-Target-Konfiguration, die Lio-Utils und ein einfaches Skript für die automatische Konfiguration der Spielekonsole enthalten.

Wer das mit seiner PS3 testen will, schreibt zunächst das Image mit Dd auf einen bootfähigen USB-Stick. Unter Windows gibt es das für Anwender von Ubuntu-Netbook-Distributionen entwickelten Open-Source-Tool Win32-Disk-Imager [8] von Tobin Davis.

Booten

Ist der fertige USB-Stick auf der Playstation eingesteckt, dann funktioniert der Systemstart mit dem kleinen Bootloader Petit Boot recht einfach: Aus dem Menü des PS3-XMB-Game-OS wählt der Anwender den Eintrag »System Settings | Install Other OS« und sucht nach »otheros.bld«. Einmal mit »Ok« bestätigen, dann im Menü »System Settings | Set Default System | OtherOS« auswählen und nach dem nächsten »Ok« bootet die Playstation mit Petit Boot. Der kleine Bootloader sucht zunächst nach vorhandenen Dateisystemen auf allen Speichermedien und zeigt erkannte, bootbare Systeme in einer Liste an.

Wenn beim Kopieren alles richtig gelaufen ist, sollte hier ein Eintrag mit der Root-Partition »lio-ubuntu-ps3-live« erscheinen. Den wählt der Benutzer aus und betätigt [Return]. Jetzt bootet das Ubuntu-System mit dem Power-PC-Kernel und sucht nach einer bestehenden Lio-Target-Konfiguration. Existiert diese nicht, was bei dem Live-System der Default ist, dann startet automatisch das Skript »/root/lio-ps3-setup.sh« aus Listing 1, das eine Demo-Konfiguration für die PS3 als I-SCSI-Target beinhaltet.

Listing 1:
»lio-ps3-setup.sh«

#!/bin/sh
PS3_IQN=`iscsi-name`
IPV4_ADDR=`ifconfig eth0 | grep "inet addr" | awk '{ print $2 }' | awk 'BEGIN { FS=":" } { print $2 }'`
HOST_ID=`ls /sys/block/sr0/device/scsi_device/ | awk -F':' '{ print $1 }'`
CHANNEL_ID=`ls /sys/block/sr0/device/scsi_device/ | awk -F':' '{ print $2 }'`
TARGET_ID=`ls /sys/block/sr0/device/scsi_device/ | awk -F':' '{ print $3 }'`
LUN_ID=`ls /sys/block/sr0/device/scsi_device/ | awk -F':' '{ print $4 }'`
tcm_node --pscsi pscsi_$HOST_ID/bdrom $CHANNEL_ID:$TARGET_ID:$LUN_ID
lio_node --addtpg $PS3_IQN 1
lio_node --addlun $PS3_IQN 1 0 lio_bdrom pscsi_$HOST_ID/bdrom
lio_node --addnp $PS3_IQN 1 $IPV4_ADDR
lio_node --demomode $PS3_IQN 1
lio_node --disableauth $PS3_IQN 1
lio_node --enabletpg $PS3_IQN 1
/etc/init.d/target status
tcm_dump --o

Das Skript definiert einen eindeutigen Namen »iscsi-name« für die PS3 und extrahiert die IPv4-Adresse aus der Ausgabe des Ifconfig-Befehls. Standardmäßig aktiviert das Ubuntu- Image DHCP auf »eth0«, was der Gbit- Ethernet-Karte der Playstation entspricht. Host-, Channel-, Target- und Lun-IDs be- zieht es aus der Konfiguration der lokalen Geräte im Sys-FS .

Lio-Utils

Mit den in [9] detailliert erklärten Kom- mandos »tcm_node« und »lio_node« aus den Lio-Utils fügt es daraufhin das Blu-ray-Laufwerk »bdrom« als I-SCSI-Target-Endpunkt hinzu, erzeugt die Konfiguration für Targets und LUNs, erstellt das Netzwerkportal, aktiviert den Demomodus und schaltet die Authentifizierung aus. Der Befehl in Zeile 14 aktiviert das Target, ab sofort können sich Clients verbinden.

Sicherheitshalber fragt das Skript den Anwender bei der Einrichtung, ob er alle bisherigen Konfigurationen löschen möchte, bevor es die Einstellungen schreibt und die Logical Unit Numbers (Lun) vergibt. Jetzt braucht es noch einen I-SCSI-Client und auf diesem die IP-Adresse der PS3. Richtig konfiguriert, sollte der Zugriff auf deren Blu-ray-Laufwerk bereits funktionieren. Über automatische »Target Dis- covery« zeigen die Clients alle von Sonys Gerät freigegebenen Luns und richten quasi-lokale Laufwerke dafür ein. Auch SSH-Zugriff auf die PS3 ist mit dem USB-Image möglich. Wer seine I-SCSI-Konfiguration anpassen möchte, loggt sich als Root mit dem Passwort »lio« ein.

Mit Mplayer

Wer jetzt auf dem Client Mplayer startet, sollte für HD-Filme noch die Option »lavdopts=threads=2« aktivieren, und kann dann versuchen, die ».m2ts«-Dateien aus dem »BDMV«-Verzeichnis zu öffnen. Leider blockt BD+ im Hypervisor der PS3 die für CSS-geschützte Inhalte notwendigen MMC-SCSI-CDBs, sodass zumindest theoretisch nur Clients mit lizenzierter Software kopiergeschützte Inhalte übers Netz betrachten können. Unter Linux wird da die Blu-ray-Verschlüsselung Probleme bereiten, aber unter Windows funktioniert Mplayer bereits genauso wie Power DVD, zumindest wenn Any DVD HD vorher das virtuelle Blu-ray-Device unlocked hat. Allerdings braucht es dazu eine aktuelle Version des Mplayers, am besten direkt von Source-forge [10].

Die Module von Rising Tide laufen auf jedem unmodifizierten Linux-PS3-64-Bit-Kernel ab 2.6.24, frühere Versionen brauchen einen kleinen Patch an der Datei »ps3rom.c«, der die »MAX_SECTORS« auf 128 statt der vorgesehenen 32 Sektoren setzt. Die Datenübertragung von der PS3 ist dank Gigabit-Ethernet schnell genug für mehrere Clients, ebenso die restliche Hardware. Allerdings stößt hier das Blu-ray-Laufwerk schnell an seine Grenzen, vor allem wenn mehrere Clients gleichzeitig unterschiedliche Teile eines Films anfordern.

Zurück zur Konsole

Nach erfolgreichem Testen führt die Einstellung »Boot GameOS« im Menü von Petit Boot wieder zurück in die gewohnte PS3-Umgebung. Wer faul ist, aber genug Geduld hat, drückt einfach den Power-Button für mehr als 15 Sekunden.

Neben normalen PCs und der Playstation stehen Lio-Initiatoren auch für zahlreiche andere Plattformen bereit, auf [4] findet sich eine lange Liste, darunter auch mobile Geräte wie das Openmoko oder Nokias Internet Tablets. Mehr über Linux auf der PS3 bietet das Swiss Army Knife (SAK, [11]), das speziell für die Konsole zugeschnitten ist.

Infos

[1] ISCSI: [http://en.wikipedia.org/wiki/ISCSI]

[2] I-SCSI-RFC: [http://tools.ietf.org/rfc/rfc3720.txt]

[3] Lio-Howto: [http://linux-iscsi.org]

[4] Rising Tide Systems: [http://risingtidesystems.com]

[5] Open I-SCSI: [http://www.open-iscsi.org]

[6] I-SCSI Enterprise Target: [http://iscsitarget.sourceforge.net/]

[7] Petit Boot: [http://ozlabs.org/~jk/projects/petitboot/]

[8] Win32-Disk-Imager: [https://wiki.ubuntu.com/Win32DiskImager]

[9] Lio-Utils: [http://www.linux-iscsi.org/index.php/Lio-utils]

[10] Mplayer für Windows: [http://sourceforge.net/projects/mplayer-win32]

[11] Swiss Army Knife: [http://ps3mods.blogspot.com/2007/02/ps3-swiss-army-knife-sak-v10-released.html]

DIESEN ARTIKEL ALS PDF KAUFEN
EXPRESS-KAUF ALS PDFUmfang: 2 HeftseitenPreis €0,99
(inkl. 19% MwSt.)
LINUX-MAGAZIN KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS Readly Logo
E-Mail Benachrichtigung
Benachrichtige mich zu:
0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben