我正在尝试为 Ubuntu 20.04lts 编译一个支持 SATA_AHCI 和 MARVELL 的内核,以便在 Raspberry Pi Compute Module 4 上运行。我已成功使用 RaspiOS 完成此操作。我的 SATA PCI 卡带有 4 磁盘 ZFS RaidZ2 池,运行良好。
**lsblk**
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 1 1.8T 0 disk
├─sda1 8:1 1 1.8T 0 part
└─sda9 8:9 1 8M 0 part
sdb 8:16 1 1.8T 0 disk
├─sdb1 8:17 1 1.8T 0 part
└─sdb9 8:25 1 8M 0 part
sdc 8:32 1 1.8T 0 disk
├─sdc1 8:33 1 1.8T 0 part
└─sdc9 8:41 1 8M 0 part
sdd 8:48 1 1.8T 0 disk
├─sdd1 8:49 1 1.8T 0 part
└─sdd9 8:57 1 8M 0 part
mmcblk0 179:0 0 29G 0 disk
├─mmcblk0p1 179:1 0 256M 0 part /boot
└─mmcblk0p2 179:2 0 28.7G 0 part /
我使用 Gentoo 已有 20 年了,因此非常熟悉如何构建内核。我遵循这非常好的计划。我在配置中启用了 CONFIG_ATA_GENERIC、CONFIG_SATA_AHCI、CONFIG_SATA_MV。构建失败,缺少 libahci 模块:
Debug: module-check-raspi
II: Checking modules for raspi...
reading new modules...read 4271 modules.
reading old modules...
MISS: libahci
read 4272 modules : new(0) missing(1)
EE: Missing modules (start begging for mercy)
make: *** [debian/rules.d/4-checks.mk:10: module-check-raspi] Error 1
我找不到失败的原因。驱动程序似乎在那里,如下所示:
**find ~/kbuild/ -iname libahci***
/root/kbuild/focal/debian/linux-modules-5.4.0-1041-raspi/lib/modules/5.4.0-1041-raspi/kernel/drivers/ata/libahci_platform.ko
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci_platform.mod
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci_platform.ko
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci_platform.mod.c
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci_platform.o
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci_platform.mod.o
/root/kbuild/focal/debian/build/build-raspi/drivers/ata/libahci.o
/root/kbuild/focal/drivers/ata/libahci_platform.c
/root/kbuild/focal/drivers/ata/libahci.c
任何想法都值得感激。
- - - - - - - - - - - - - - - 编辑 - - - - - - - - - - - - - - - - -
偶然间我发现最新的 64 位 RaspiOS 内置了 SATA 支持。这是 2021-05-07-raspios-buster-arm64-lite 映像。因此,我可以拯救我的 ZFS 池并开始工作,而不必费心尝试编译内核!
答案1
我遇到了同样的问题,经过多次尝试和错误,我想我知道该如何解决这个问题。我遵循了 ubuntu构建你自己的内核wiki 使用了fakeroot debian/rules editconfigs
命令来打开 GUI 来编辑配置。我使用它来启用它CONFIG_SATA_AHCI
,但我不知道有不同的方法可以“启用”它。我最初选择Y
“包含”模块,但在编译过程中我遇到了同样的错误:MISS: libahci
。
当我将我的配置更改与在 Raspberry Pi 内核中启用 SATA 的 PR我注意到他们曾经M
“模块化”过它。我重新开始,选择M
GUI,然后我的内核编译时没有错误。
我相信无需使用 GUI 即可编辑配置editconfigs
,如果是这样的话,请确保使用m
而不是y
。
我注意到 OP 没有提到他们为配置选择了什么值,只是说他们“在配置中启用了... CONFIG_SATA_AHCI...”,所以这也许也是问题所在。