SCSI 通用 (sg) 驱动程序

20020126

简介

SCSI 通用驱动程序 (sg) 是四个“高层” SCSI 设备驱动程序之一,另外三个分别是 sd、st 和 sr(分别是磁盘、磁带和 CD-ROM)。sg 比其兄弟驱动程序更通用(但层次更低),并且倾向于用于不属于已服务类别的 SCSI 设备。因此,sg 用于扫描仪、CD 刻录机和以数字方式读取音频 CD 等。

此处不介绍驱动程序的接口,而是提供版本信息以及指向文档和示例的指针(即 URL)。

sg 驱动程序的主要版本

Linux 内核 (lk) 中有三个主要的 sg 版本:
  • sg 版本 1(原始版本),从 1992 年到 1999 年初 (lk 2.2.5)。它基于 sg_header 接口结构。

  • sg 版本 2,从 2.2 系列的 lk 2.2.6 开始。它基于 sg_header 接口结构的扩展版本。

  • sg 版本 3,在 lk 2.4 系列(和 lk 2.5 系列)中找到。它添加了 sg_io_hdr 接口结构。

Sg 驱动程序文档

sg 驱动程序的最新文档保存在:

这描述了 lk 2.4 系列中找到的 sg 版本 3 驱动程序。

lk 2.2 系列中找到的 sg 版本 2 驱动程序的文档(大型版本)可以在以下位置找到:

sg 驱动程序的原始文档(在 lk 2.2.6 之前)可以在 LDP 存档中找到:

关于 Linux SCSI 子系统(sg 是其中的一部分)的更一般描述可以在 https://www.tldp.org/HOWTO/SCSI-2.4-HOWTO 中找到。

示例代码和实用程序

有两个 sg 实用程序包:

sg3_utils

用于 lk 2.4 中找到的 sg 版本 3 驱动程序

sg_utils

用于 lk 2.2 及更早版本中找到的 sg 版本 2(和原始)驱动程序

这两个包都可以在 lk 2.4 系列中使用。但是,sg3_utils 提供了更多的功能。它们可以在以下位置找到:https://sg.danny.cz/sg/sg3_utils.html 和 freecode.com

另一种方法是查看使用 sg 驱动程序的应用程序。这些包括 cdrecord、cdparanoia、SANE 和 cdrdao。

Linux 内核版本到 sg 驱动程序版本的映射

以下是 2.4 系列中具有新版本 sg 驱动程序的 Linux 内核列表:

  • lk 2.4.0:sg 版本 3.1.17

  • lk 2.4.7:sg 版本 3.1.19

  • lk 2.4.10:sg 版本 3.1.20 [1]

  • lk 2.4.17:sg 版本 3.1.22

作为参考,以下是 2.2 系列中具有新版本 sg 驱动程序的 Linux 内核列表:

  • lk 2.2.0:原始 sg 版本[无版本号]

  • lk 2.2.6:sg 版本 2.1.31

  • lk 2.2.8:sg 版本 2.1.32

  • lk 2.2.10:sg 版本 2.1.34 [首次出现 SG_GET_VERSION_NUM ioctl]

  • lk 2.2.14:sg 版本 2.1.36

  • lk 2.2.16:sg 版本 2.1.38

  • lk 2.2.17:sg 版本 2.1.39

  • lk 2.2.20:sg 版本 2.1.40

lk 2.5 开发系列目前包含 sg 版本 3.5.23,其功能与 lk 2.4.17 中找到的 sg 版本 3.1.22 相同。

Douglas Gilbert

2002 年 1 月 26 日

dgilbert@interlog.com