Я пытаюсь скомпилировать ядро с поддержкой SATA_AHCI и MARVELL для Ubuntu 20.04lts для работы на вычислительном модуле Raspberry Pi 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 и начать работу, не беспокоясь о попытках скомпилировать ядра!
У меня была такая же проблема, и после долгих проб и ошибок я думаю, что знаю, что помогло мне ее решить. Я следовал ubuntu Build Your Own Kernel wiki, в которой использовалась команда fakeroot debian/rules editconfigs
, вызывающая графический интерфейс для редактирования конфигурации. Я использовал его для включения CONFIG_SATA_AHCI
, но я не знал, что существуют различные методы его "включения". Сначала я выбрал Y
, чтобы "включить" модуль, и во время компиляции у меня возникла та же ошибка: MISS: libahci
.
Когда я сравнил свои изменения в конфигурации с PR, который включил SATA в ядро raspberry pi, я заметил, что они использовали M
для "модульного" включения. Я начал сначала и выбрал M
в графическом интерфейсе, после чего мое ядро скомпилировалось без ошибок.
Я считаю, что можно редактировать конфиги без использования editconfigs
GUI, и если это так, просто убедитесь, что вы используете m
вместо y
.
Я заметил, что ОП не упомянул, какое значение они выбрали для своих конфигураций, только то, что они "включили ... CONFIG_SATA_AHCI ... в конфигурации", так что, возможно, проблема была и в этом.