SCSI 子系统文档

Linux 文档项目 (LDP) 维护着一份描述 Linux 内核 (lk) 2.4 系列中 SCSI 子系统的文档。请参阅:https://www.tldp.org/HOWTO/SCSI-2.4-HOWTO 。LDP 提供了单页和多页 HTML 渲染,以及 Postscript 和 PDF 格式。

关于在 SCSI 子系统中使用模块的说明

Linux 内核中的 SCSI 支持可以根据最终用户的需求以多种不同的方式模块化。为了理解您的选择,我们应该首先定义一些术语。

scsi-core(也称为“中间层”)包含 SCSI 支持的核心。没有它,您将无法使用任何其他 SCSI 驱动程序。SCSI 核心支持可以是一个模块 (scsi_mod.o),也可以构建到内核中。如果核心是一个模块,它必须是加载的第一个 SCSI 模块,如果您卸载模块,它将必须是最后一个卸载的模块。在实践中,modprobe 和 rmmod 命令将强制执行 SCSI 子系统中加载和卸载模块的正确顺序。

一旦 SCSI 核心存在于内核中(无论是编译到内核中还是作为模块加载),就可以以任何顺序加载各个上层和下层驱动程序。磁盘驱动程序 (sd_mod.o)、CD-ROM 驱动程序 (sr_mod.o)、磁带驱动程序[1] (st.o) 和 SCSI 通用驱动程序 (sg.o) 代表上层驱动程序,以支持可以控制的各种设备。例如,您可以加载磁带驱动程序以使用磁带驱动器,然后在您不再需要该驱动程序时将其卸载(并释放关联的内存)。

下层驱动程序是支持您正在运行的硬件平台的各个卡的驱动程序。这些单独的卡通常称为主机总线适配器 (HBA)。例如,aic7xxx.o 驱动程序用于控制 Adaptec 的所有最新 SCSI 控制器卡。几乎所有下层驱动程序都可以构建为模块或构建到内核中。