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 控制器卡。 几乎所有下层驱动程序都可以构建为模块或构建到内核中。