Die SCSI2Pi-Emulations-Tools

Im Target-Modus emuliert SCSI2Pi mehrere SCSI- oder SASI-Geräte.s2p ist das eigentliche Tool für die SCSI/SASI-Emulation. Mit s2pctl, der SCSI-Control-App oder der PiSCSI-Web-UI verwaltet man die emulierten Geräte zur Laufzeit.

s2p

s2p wird typischerweise beim Booten des Pi als Systemservice gestartet, aber es kann auch als Standalone-Programm benutzt werden. Abhängig davon, wie Sie Ihren Pi nutzen, mag es sogar unerwünscht sein, s2p als Service zu starten.
Die s2p-Manpage liefert Details zur Nutzung. Typischerweise gibt man beim Starten von s2p auf der Kommandozeile an, welche SCSI- oder SASI-Geräte emuliert werden sollen. Es ist zu beachten, dass nur entweder SCSI- oder SASI-Geräte emuliert werden können, aber nicht beides gleichzeitig. s2p ist das Gegenstück zum piscsi-Tool des PiSCSI-Projekts, bietet aber zusätzliche Features und höhere Transferraten.

>s2p -id 0 scsi_hd_1.hds -id 0:1 scsi_hd_2.hds -id 2 cdrom.iso -id 4 printer -id 5 daynaport -id 6 services

Mit diesem Kommando teilen Sie s2p mit, zwei SCSI-Laufwerke (mit den zugehörigen Image-Dateien scsi_hd_1.hds und scsi_hd_2.hds) zu emulieren. Eines von ihnen hat die SCSI-ID 0, das andere hat dieselbe SCSI-ID, belegt aber LUN 1. Mit LUNs (Untergeräten) lassen sich bis zu 32 SCSI-Geräte auf dieselbe SCSI-ID abbilden, vorausgesetzt die Gerätetreiber unterstützen dies. ID 2 ist einem CD-ROM-Laufwerk zugeordnet, mit cdrom.iso als Image-Datei. ID 4 ist ein SCSI-Drucker, ID 5 ein emulierter DaynaPort Netzwerk-Adapter, und ID 6 die SCSI2Pi-Host-Services. Das PiSCSI-Wiki und die Manpages liefern weitere Informationen zu allen Gerätetypen.
Nutzer von Atari-Computern sollten auch einen Blick auf die SCSI2Pi-Client-Tools werfen. Mit diesen Tools lässt sich SCSI2Pi beispielsweise als Echtzeit-Uhr verwenden.

So lassen sich SASI-Laufwerke emulieren:

>s2p -hd 0 sasi_hd_1.hds -hd 1 sasi_hd_2.hds

Hier werden zwei Festplatten mit den IDs 0 und 1 emuliert. Es ist zu beachten, dass SASI lediglich 2 LUNs pro ID unterstützt.

s2p unterstützt die BlueSCSI-Namenskonvention für Image-Dateien. Diese Konvention definiert, wie die SCSI ID, LUN und Sektorgröße im Dateinamen codiert werden.

>s2p -B HD02_1024_vendor:product:revision.hds

Das obige Kommando erzeugt eine SCSI-Festplatte mit SCSI-ID 0, LUN 2 und 1024 Bytes pro Sektor. Die Produktdaten für das INQUIRY-Kommando sind "vendor:product:revision". Die Produktdaten mit dem Dateinamen zu setzen ist eine Erweiterung von SCSI2PI, die von BlueSCSI nicht unterstützt wird.

s2p als Systemservice

Für s2p wird bei der Installation automatisch ein Systemservice eingerichtet. Falls der PiSCSI- oder SCSI2Pi-Systemservice vor einer Installation oder einem Update aktiv war, wird der SCSI2Pi-Service automatisch aktiviert.
So aktiviert man den Service manuell:

>sudo systemctl enable s2p
>sudo systemctl start s2p

Falls Sie s2p auf der Kommandozeile starten wollen, muss der Service vorher angehalten werden:

>sudo systemctl stop s2p

Der s2p-Service wird in /etc/s2p.conf mit Properties konfiguriert, z. B.:

# SCSI ID 7 als Initiator-ID reservieren
reserved_ids=7
# SCSI-Festplatte mit ID 0 und DaynaPort mit ID 6 emulieren
device.0.params=harddisk.hds
device.6.params=daynaport
s2pctl

s2pctl ist der Kommandozeilen-Client zum Steuern von s2p. Es ist das Gegenstück zum PiSCSI scsictl-Tool. Besonders dann, wenn Probleme mit der SCSI-Control-App oder der PiSCSI-Weboberfläche auftreten, kann ein Kommandozeilen-Client nützlich sein, der direkt Nachricten an s2p sendet. Im Allgemeinen ist s2pctl ein wertvolles Tool zum Abrufen der aktuellen s2p-Einstellungen und zum Testen der s2p-Funktionalität.

>s2pctl --list-devices
+----+-----+------+-------------------------------------
| ID | LUN | TYPE | IMAGE FILE
+----+-----+------+-------------------------------------
|  0 |   0 | SCHD | /home/pi/images/test.hds
|  0 |  31 | SCHS | Host Services
+----+-----+------+-------------------------------------

Wird s2pctl ohne Parameter gestartet befindet sich das Tool im interaktiven Modus. In diesem Modus lassen sich Kommandos eingeben. Diese Kommandos müssen der Einfachheit halber nicht mit einem Bindestrich beginnen.

>s2pctl
Entering interactive mode, Ctrl-D or "exit" to quit
s2pctl>detach-all
s2pctl>log-level trace
s2pctl>exit
>

Außerdem kann s2pctl Kommando-Sequenzen in Skripten ausführen:

>cat SCRIPT_DATEI | s2pctl