我正在寻找基本的内核驱动程序来启用 SATA 支持。
我有一个 Braswell(英特尔 SoC)设置,我想将内核驱动程序的数量减少到最少。 SATA 支持是否需要 ATA 驱动程序? SCSI 驱动程序怎么样?或者设备映射器支持(从 RAID 菜单)?除了制造商的驱动程序之外,似乎还需要 10 多种不同的通用驱动程序来支持 SATA。
我使用的是 linux 内核 4.4,我在文档中找不到太多信息。 ATA、SATA 和 SCSI 菜单配置选项似乎分散在多个部分。
我想最重要的是驱动libata
程序,但我不清楚他们是否需要 ATA 或 SCSI 驱动程序
Device Drivers --->
Serial ATA and Parallel ATA drivers (libata) --->
我搜索了该主题,但没有找到明确的答案。我喜欢这个关于 ATA 和 SCSI 的历史观点以及它们如何能够搭腔。
此外,除了供应商特定的驱动程序之外,为另一个 SoC(例如 ARM SoC)启用 SATA 时是否会有任何重大差异?理想的答案是参考 menuconfig 中的特定选项!
谢谢 !
答案1
部分答案:
内核层有点复杂,我无法给你一个完整的图片。如今,几乎所有存储设备都使用某种 SCSI 命令(这就是它们显示为/dev/sdX
而不是 的原因/dev/hdX
),尽管这些命令可以通过不同的机制(ATA 数据包、USB 或其他)进行传输。所以你至少需要:
- 适用于您的特定硬件的 SATA 驱动程序(可能是多个模块,例如
libahci
) - 通用 ATA 层(可能有多个模块,包括
libata
) - 通用 SCSI 层,至少对于您使用的存储设备类型(肯定是多个模块,包括
scsi_mod
)。
我思考内核应该能够找出最小的依赖关系本身menuconfig
:如果您首先禁用所有内容,然后仅启用底部驱动程序(特定于硬件)和顶部驱动程序(SCSI 磁盘、CONFIG_BLK_DEV_SD
模块sd_mod
),您将可能最终得到一个相当最小的可行配置。