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,从 lk 2.2.6 开始在 2.2 系列中。 它基于 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