为支持 SATA 的 Raspberry Pi Compute Module 4 构建内核失败

为支持 SATA 的 Raspberry Pi Compute Module 4 构建内核失败

我正在尝试为 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“模块化”过它。我重新开始,选择MGUI,然后我的内核编译时没有错误。

我相信无需使用 GUI 即可编辑配置editconfigs,如果是这样的话,请确保使用m而不是y

我注意到 OP 没有提到他们为配置选择了什么值,只是说他们“在配置中启用了... CONFIG_SATA_AHCI...”,所以这也许也是问题所在。

相关内容