SCSI2Pi ist die fortgeschrittene Alternative zur PiSCSI-Software. SCSI2Pi verbessert die Emulation und die Performance und benötigt weniger Hauptspeicher. Außerdem bietet SCSI2Pi zusätzliche und verbesserte Tools und ist kompatibel zur PiSCSI-Web-Oberfläche. Für die Installation werden Pakete mit den Binaries bereitgestellt. Daher ist keine zeitaufwändige Compilierung erforderlich.
SCSI2Pi emuliert mehrere Geräte wie Festplatten, CD-ROM-Laufwerke, Streamer, Drucker, DaynaPort-Netzwerkadapter oder eine Echtzeituhr gleichzeitig. So kann mann Computer wie 68k-Macs, Atari ST/TT/Falcon, Amigas, alte PCs, Unix-Workstations und Sampler leicht mit Geräten versehen. SCSI2Pi bietet zahlreiche Erweiterungen, neue Geräte-Emulationen und Fehlerkorrekturen. Diese kommen zu den weitreichenden Änderungen hinzu, die ich in der Vergangenheit zum PiSCSI-Projekt beigesteuert habe, als ich nahezu die komplette Codebasis neu implementiert und modernisiert habe.
Innerhalb des PiSCSI-Projektes hatte das Ersetzen des alten, oft fehlerhaften und überflüssigen Codes keine Priorität. Außerdem werden viele der seit langer Zeit versprochenen Features nicht angegangen. Daher habe ich mich entschieden, die Software in einem separaten Projekt weiter zu verbessern. Der größte Teil der PiSCSI-Geräteemulation (bis zu Release 24.04.01) stammt ohnehin von mir.
Die SCSI2Pi-Quelltexte sind öffentlich und es stehen Installationspakete mit den Binaries zur Verfügung. Die Installation von SCSI2Pi ist in Sekundenschnelle erledigt.
Der PiSCSI-Vergleich und die SCSI2Pi-News enthalten eine Liste der neuen Features verglichen mit PiSCSI und die Änderungen von einem SCSI2Pi-Release zum nächsten.
Dies sind die wichtigsten meiner Beiträge zu PiSCSI bis Release 24.04.01:
- Client/Server-Architektur mit wohldefiniertem Remote-Interface (basierend auf Google Protocol Buffers)
- Detallierte Informationen zu Eigenschaften des Servers
- Konfigurierbarer Server-Port
- scsictl läuft auch auf einem Intel- oder aarch64-Linux und kann sich mit SCSI2Pi auf dem Pi verbinden
- Lokalisierung der Client-Meldungen
- Optionale Authentifizierung zur Absicherung aller Operationen
- Herunterfahren von SCSI2Pi und Herunterfahren/Neustart des Pi (per Remote-Interface oder SCSI-Kommando)
- Gerätedateien (/dev/*) lassen sich als Image-Dateien verwenden
- Unterstützung für hierarchische Image-Ordner
- Umbenennen, Kopieren und Löschen von Image-Dateien
- Unterstützung von Wechselmedien
- Unterstützung von DVD-Images
- Konfigurierbarer Standard-Ordner für Image-Dateien
- Unterstützung von 32 LUNs pro Gerät (Logische Einheiten)
- Konfigurierbare Gerätekennung (Hersteller, Produkt, Revision)
- Implementierung zahlreicher zusätzlicher SCSI-Kommandos
- Verbesserte Kompatibilität zum aktuellen SCSI-Standard
- Verbesserte Kompatibilität zu zahlreichen PC/Workstation-Plattformen
- ICD-Kompatibilität für Atari-Computer
- Kompatibilitäts-Probleme mit Linux-68k behoben
- Unterstützung für reservierte Geräte-IDs, typischerweise benutzt für die SCSI-Initiator-ID
- Flexiblere Handhabung von Gerätekapazitäten
- Konfigurierbare Sektorgröße pro Gerät (256, 512, 1024, 2048, 4096 Bytes)
- Unterstützung von CD-ROM-Laufwerken mit 512 Bytes pro Sektor
- Verbesserte WLAN-Unterstützung für den Daynaport-Netzwerk-Adapter
- Implementierung eines SCSI-Druckers
- Echtzeit-Uhr für SCSI-Clients
- Verbesserte Kommando-Validierung und Fehleranalyse
- Präzisere und mehrsprachige Fehlermeldungen
- Verbessertes Logging und konfigurierbarer Log-Level
- Unterstützung von Geräte-Statistiken
- Wiederherstellung der Funktionalität des scsidump-Tools zum Laden/Speichern von Laufwerks-Inhalten
- Erweiterung von scsidump um einen Bus-Scan
- Unterstützung für den clang++-Compiler (neben g++)
- Unterstützung für 64-Bit Raspberry Pi OS, Bookworm und Ubuntu
- Umfangreiche Code-Aufräumarbeiten
- Verbesserte Code-Modularität
- Verbesserte Speicherverwaltung
- Robuster moderner C++-Code (C++-20)
- Migration von POSIX-Threads zu C++-Threads
- Einführung von C++-Unit-Tests basierend auf Google Mock
- Implementierung von über 260 C++-Unit-Tests
- Einführung von Test Coverage-Metrics basierend auf gcov/lcov
- Beseitigung von über 1500 durch SonarCloud gemeldeten C++-Code-Problemen