mirror of
https://github.com/akuker/RASCSI.git
synced 2024-11-22 01:31:25 +00:00
ddeede2beb
Summary ov most important changes triggered by the SASI code removal: - Removed the SASI controller code - New controller management. There is a new controller base class AbstractController and a class ControllerManager managing the controller lifecycle. The lifecycle management was removed from rasci.cpp and is covered by unit tests. - New device management. The DeviceFactory manages the device lifecycle instead of rascsi.cpp. The new code is covered by unit tests. - The lifecycle managment uses C++ collections with variable size instead of arrays with hard-coded sizes. - The ScsiController method contains most of what was previously contained in scsidev_ctrl.cpp plus the code from sasidev_ctrl.cpp that was relevant for SCSI. - scsi_command_util contains helper methods used for identical SCSI command implementations of more than one device - Devices know their controllers, so that the controller instance does not need to be passed to each SCSI command. This change helps to decouple the devices from the controller. The phase_handler interface is also part of this decoupling. - Use scsi_command_exception for propagating SCSI command execution errors, This resolves issues with the previous error handling, which was based on return values and often on magic numbers. - Removed legacy SCSI error codes, all errors are now encoded by sense_key::, asc:: and status::. - Fixed various warnings reported with -Wextra, -Weffc++ and -Wpedantic. - Use constructor member initialization lists (recommended for ISO C++) - Consistently use new/delete instead of malloc/free (recommended for ISO C++), resulting in better type safety and error handling - Replaced variable sized arrays on the stack (violates ISO C++ and can cause a stack overflow) - Replaced NULL by nullptr (recommended for C++), resulting in better type safety - Use more const member functions in order to avoid side effects - The format device page can now also be changed for hard disk drives (Fujitsu M2624S supports this, for instance), not just for MOs. - Better encapsulation, updated access specifiers in many places - Removed unused methods and method arguments - Fixed a number of TODOs - Added/updated unit tests for a lot of non-legacy classes - Makefile support for creating HTML coverage reports with lcov/genhtml
144 lines
6.5 KiB
Plaintext
144 lines
6.5 KiB
Plaintext
!! ------ THIS FILE IS AUTO_GENERATED! DO NOT MANUALLY UPDATE!!!
|
||
!! ------ The native file is rascsi.1. Re-run 'make docs' after updating\n\n
|
||
rascsi(1) General Commands Manual rascsi(1)
|
||
|
||
NAME
|
||
rascsi - Emulates SCSI devices using the Raspberry Pi GPIO pins
|
||
|
||
SYNOPSIS
|
||
rascsi [-F[u00AE] FOLDER] [-L[u00AE] LOG_LEVEL] [-P[u00AE] ACCESS_TO‐
|
||
KEN_FILE] [-R SCAN_DEPTH] [-h] [-n VENDOR:PRODUCT:REVISION] [-p[u00AE]
|
||
PORT] [-r RESERVED_IDS] [-n TYPE] [-v] [-z LOCALE] [-IDn:[u] FILE]
|
||
[-HDn[:u] FILE]...
|
||
|
||
DESCRIPTION
|
||
rascsi Emulates SCSI devices using the Raspberry Pi GPIO pins.
|
||
|
||
In the arguments to RaSCSI, one or more SCSI (-IDn[:u]) devices can be
|
||
specified. The number (n) after the ID or HD identifier specifies the
|
||
ID number for that device. The optional number (u) specifies the LUN
|
||
(logical unit) for that device. The default LUN is 0. For SCSI: The ID
|
||
is limited from 0-7. However, typically SCSI ID 7 is reserved for the
|
||
"initiator" (the host computer). The LUN is limited from 0-31.
|
||
|
||
RaSCSI will determine the type of device based upon the file extension
|
||
of the FILE argument.
|
||
hds: SCSI Hard Disk image (generic, non-removable)
|
||
hdr: SCSI Hard Disk image (generic, removable)
|
||
hdn: SCSI Hard Disk image (NEC GENUINE)
|
||
hdi: SCSI Hard Disk image (Anex86 HD image)
|
||
nhd: SCSI Hard Disk image (T98Next HD image)
|
||
hda: SCSI Hard Disk image (APPLE GENUINE - typically used with Mac
|
||
SCSI emulation)
|
||
mos: SCSI Magneto-optical image (XM6 SCSI MO image - typically only
|
||
used with X68000)
|
||
iso: SCSI CD-ROM image (ISO 9660 image)
|
||
|
||
For example, if you want to specify an Apple-compatible HD image on ID
|
||
0, you can use the following command:
|
||
sudo rascsi -ID0 /path/to/drive/hdimage.hda
|
||
|
||
Once RaSCSI starts, it will open a socket (default port is 6868) to al‐
|
||
low external management commands. If another process is using the
|
||
rascsi port, RaSCSI will terminate, since it is likely another instance
|
||
of RaSCSI. Once RaSCSI has initialized, the rasctl utility can be used
|
||
to send commands.
|
||
|
||
To quit RaSCSI, press Control + C. If it is running in the background,
|
||
you can kill it using an INT signal.
|
||
|
||
OPTIONS
|
||
-b BLOCK_SIZE
|
||
The optional block size, either 512, 1024, 2048 or 4096 bytes.
|
||
Default size is 512 bytes.
|
||
|
||
-F FOLDER
|
||
The default folder for image files. For files in this folder no
|
||
absolute path needs to be specified. The initial default folder
|
||
is '~/images'.
|
||
|
||
-L LOG_LEVEL
|
||
The rascsi log level (trace, debug, info, warn, err, critical,
|
||
off). The default log level is 'info'.
|
||
|
||
-P ACCESS_TOKEN_FILE
|
||
Enable authentication and read the access token from the speci‐
|
||
fied file. The access token file must be owned by root and must
|
||
be readable by root only.
|
||
|
||
-R SCAN_DEPTH
|
||
Scan for image files recursively, up to a depth of SCAN_DEPTH.
|
||
Depth 0 means to ignore any folders within the default image
|
||
filder. Be careful when using this option with many sub-folders
|
||
in the default image folder. The default depth is 1.
|
||
|
||
-h Show a help page.
|
||
|
||
-n VENDOR:PRODUCT:REVISION
|
||
Set the vendor, product and revision for the device, to be re‐
|
||
turned with the INQUIRY data. A complete set of name components
|
||
must be provided. VENDOR may have up to 8, PRODUCT up to 16, RE‐
|
||
VISION up to 4 characters. Padding with blanks to the maxium
|
||
length is automatically applied. Once set the name of a device
|
||
cannot be changed.
|
||
|
||
-p PORT
|
||
The rascsi server port, default is 6868.
|
||
|
||
-r RESERVED_IDS
|
||
Comma-separated list of IDs to reserve. Pass an empty list in
|
||
order to not reserve anything. -p TYPE The optional case-insen‐
|
||
sitive device type (SAHD, SCHD, SCRM, SCCD, SCMO, SCBR, SCDP,
|
||
SCLP, SCHS). If no type is specified for devices that support an
|
||
image file, rascsi tries to derive the type from the file exten‐
|
||
sion.
|
||
|
||
-v Display the rascsi version.
|
||
|
||
-z LOCALE
|
||
Overrides the default locale for client-faces error messages.
|
||
The client can override the locale.
|
||
|
||
-IDn[:u] FILE
|
||
n is the SCSI ID number (0-7). u (0-31) is the optional LUN
|
||
(logical unit). The default LUN is 0.
|
||
|
||
FILE is the name of the image file to use for the SCSI device.
|
||
For devices that do not support an image file (SCBR, SCDP, SCLP,
|
||
SCHS) the filename may have a special meaning or a dummy name
|
||
can be provided. For SCBR and SCDP it is an optioinal priori‐
|
||
tized list of network interfaces, an optional IP address and
|
||
netmask, e.g. "interfaces=eth0,eth1,wlan0:inet=10.10.20.1/24".
|
||
For SCLP it is the print command to be used and a reservation
|
||
timeout in seconds, e.g. "cmd=lp -oraw %f:timeout=60".
|
||
|
||
FILE is the name of the image file to use for the SCSI device.
|
||
|
||
EXAMPLES
|
||
Launch RaSCSI with no emulated drives attached:
|
||
rascsi
|
||
|
||
Launch RaSCSI with an Apple hard drive image as ID 0 and a CD-ROM as ID
|
||
2
|
||
rascsi -ID0 /path/to/harddrive.hda -ID2 /path/to/cdimage.iso
|
||
|
||
Launch RaSCSI with a removable SCSI drive image as ID 0 and the raw de‐
|
||
vice file /dev/hdb (e.g. a USB stick) and a DaynaPort network adapter
|
||
as ID 6:
|
||
rascsi -ID0 -t scrm /dev/hdb -ID6 -t scdp daynaport
|
||
|
||
To create an empty, 100MB HD image, use the following command:
|
||
dd if=/dev/zero of=/path/to/newimage.hda bs=512 count=204800
|
||
|
||
In case the fallocate command is available a much faster alternative to
|
||
the dd command is:
|
||
fallocate -l 104857600 /path/to/newimage.hda
|
||
|
||
SEE ALSO
|
||
rasctl(1), scsimon(1), rasdump(1), sasidump(1)
|
||
|
||
Full documentation is available at:
|
||
<https://www.github.com/akuker/RASCSI/wiki/>
|
||
|
||
rascsi(1)
|