diff options
Diffstat (limited to 'README.solaris')
-rw-r--r-- | README.solaris | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/README.solaris b/README.solaris new file mode 100644 index 00000000..7dca2b7c --- /dev/null +++ b/README.solaris @@ -0,0 +1,168 @@ +Please Note: +>>> Up to and including sg3_utils-1.33 the Solaris code was built +>>> and tested on an OpenSolaris VM run with VirtualBox on Ubuntu +>>> 11.10 . Now with Ubuntu 12.04 those VMs crash immediately when +>>> started with VirtualBox. Further, Oracle (who owns SUN and thus +>>> Solaris) no longer supports OpenSolaris and its package +>>> repository has been withdrawn. The author can find no generic VMs +>>> for Oracle Solaris 11 that run on VirtualBox or VMWare. The author +>>> is also displeased with the withdrawal of the Open Software +>>> OS and is disinclined to build a Solaris 11 system just to +>>> virtualize it. +>>> So as of sg3_utils-1.34 the Solaris port is provided "as-is" without +>>> testing on a Solaris platform. + +Douglas Gilbert +13th October 2012 + + + +Introduction +============ +The Solaris port of sg3_utils contains those utilities that are +_not_ specific to Linux. + +The dd variants from the sg3_utils package (e.g. sg_dd) rely on too many +Linux idiosyncrasies to be easily ported. A new package called 'ddpt' +contains a utility with similar functionality to sg_dd and is available +for Solaris. + +Supported Utilities +=================== +Here is a list of utilities that have been ported: + sg_bg_ctl + sg_compare_and_write + sg_decode_sense + sg_format + sg_get_config + sg_get_elem_status + sg_get_lba_status + sg_ident + sg_inq [dropped ATA IDENTIFY DEVICE capability] + sg_logs + sg_luns + sg_modes + sg_persist + sg_opcodes + sg_prevent + sg_raw + sg_rdac + sg_read_block_limts + sg_read_buffer + sg_read_long + sg_readcap + sg_reassign + sg_referrals + sg_rep_pip + sg_rep_zones + sg_requests + sg_rmsn + sg_rtpg + sg_safte + sg_sanitize + sg_sat_identify + sg_sat_phy_event + sg_sat_set_features + sg_seek + sg_senddiag + sg_ses + sg_start + sg_stpg + sg_stream_ctl + sg_sync + sg_turs + sg_unmap + sg_verify + sg_vpd + sg_wr_mode + sg_write_buffer + sg_write_long + sg_write_same + sg_write_verify + sg_write_x + sg_zone + +Most utility names are indicative of the main SCSI command +that they execute. Some utilities are slightly higher level, for +example sg_ses fetches SCSI Enclosure Services (SES) status pages and +can send control pages. Each utility has a man page (placed in +section 8). An overview of sg3_utils can be found at: +https://sg.danny.cz/sg/sg3_utils.html . +A copy of the "sg3_utils.html" file is in the "doc" subdirectory. + + +The executables and library can be built from the source code in +the tarball and installed with the familiar +"./configure ; make ; make install" sequence. If this fails try +running the "./autogen.sh" script prior to that sequence. There +are generic instruction on configure and friend in the INSTALL file. + +Some man pages have examples which use Linux device names which +hopefully will not confuse the Solaris users. + +Device naming +============= +In Solaris, SCSI device names below the '/dev' directory have a +form like: c5t4d3s2 where the number following "c" is the controller +(HBA) number, the number following "t" is the target number (from +the SCSI parallel interface days) and the number following "d" is +the LUN. Following the "s" is the slice number which is related to +a partition and by convention "s2" is the whole disk. + +OpenSolaris also has a c5t4d3p2 form where the number following +the "p" is the partition number apart from "p0" which is the whole +disk. So a whole disk may be referred to as either: + - c5t4d3 + - c5t4d3s2 + - c5t4d3p0 + +And these device names are duplicated in the /dev/dsk and /dev/rdsk +directories. The former is the block device name and the latter +is for "raw" (or char device) access which is what sg3_utils needs. +So in OpenSolaris something of the form: + sg_inq /dev/rdsk/c5t4d3p0 +should work. If it doesn't add a '-vvv' option. If that is attempted +on the /dev/dsk/c5t4d3p0 variant an inappropriate ioctl for device +error will result. + +The device names within the /dev directory are typically symbolic +links to much longer topological names in the /device directory. + +In Solaris cd/dvd/bd players seem to be treated as disks and so are +found in the /dev/rdsk directory. Tape drives appear in the /dev/rmt +directory. + +There is also a sgen (SCSI generic) driver which by default does not +attach to any device. See the /kernel/drv/sgen.conf file to control +what is attached. Any attached device will have a device name of +the form /dev/scsi/c5t4d3 . + +Listing available SCSI devices in Solaris seems to be a challenge. +"Use the 'format' command" advice works but seems a very dangerous +way to list devices. [It does prompt again before doing any damage.] +'devfsadm -Cv' cleans out the clutter in the /dev/rdsk directory, +only leaving what is "live". The "cfgadm -v" command looks promising. + +Details +======= +The ported utilities listed above, all use SCSI command functions +declared in sg_cmds_basic.h and sg_cmds_extra.h . Those SCSI command +functions are implemented in the corresponding ".c" files. The ".c" +files pass SCSI commands to the host operating system via an interface +declared in sg_pt.h . There are currently five implementations of that +interface depending on the host operating system: + - sg_pt_linux.c + - sg_pt_freebsd.c + - sg_pt_osf1.c [Tru64] + - sg_pt_solaris.c + - sg_pt_win32.c + +The sg_pt_solaris.c file uses the "uscsi" SCSI pass through mechanism. There +seems to be no corresponding ATA pass through and recent SATA disks do not +seem to have a SAT layer in front of them (within Solaris). If SAT is +present (perhaps externally or within a HBA) then that would allow SATA +disks to accept SCSI commands including the SCSI ATA PASS THROUGH commands. + + +Douglas Gilbert +5th June 2020 |