| 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 |