Рейтинг:0

Ошибка сборки ядра для Raspberry Pi Compute Module 4 с поддержкой SATA

флаг cn

Я пытаюсь скомпилировать ядро ​​​​с поддержкой SATA_AHCI и MARVELL для Ubuntu 20.04lts для работы на вычислительном модуле Raspberry Pi 4. Мне удалось сделать это с помощью RaspiOS. Моя карта SATA PCI с 4-дисковым пулом ZFS RaidZ2 работает нормально.

**lsblk**
НАИМЕНОВАНИЕ MAJ:MIN RM РАЗМЕР RO ТИП ТОЧКА КРЕПЛЕНИЯ
sda 8:0 1 1.8T 0 диск 
ââsda1 8:1 1 1.8T 0 часть 
ââsda9 8:9 1 8M 0 часть 
sdb 8:16 1 1.8T 0 диск 
ââsdb1 8:17 1 1.8T 0 часть 
ââsdb9 8:25 1 8M 0 часть 
sdc 8:32 1 1.8T 0 диск 
ââsdc1 8:33 1 1.8T 0 часть 
ââsdc9 8:41 1 8M 0 часть 
sdd 8:48 1 1.8T 0 диск 
ââsdd1 8:49 1 1.8T 0 часть 
ââsdd9 8:57 1 8M 0 часть 
mmcblk0 179:0 0 29G 0 диск 
ââmmcblk0p1 179:1 0 256M 0 часть /boot
ââmmcblk0p2 179:2 0 28.7G 0 часть /

Я использую Gentoo уже добрых 20 лет, поэтому хорошо знаком с созданием ядер. Я последовал за это отличный план. Я включил CONFIG_ATA_GENERIC, CONFIG_SATA_AHCI, CONFIG_SATA_MV в конфигурации. Сборка завершается сбоем из-за отсутствующего модуля libahci:

Отладка: модуль-проверка-распи
II: Проверка модулей на rasp...
   чтение новых модулей... чтение 4271 модуля.
   чтение старых модулей...
      МИСС: либахчи
      прочитать 4272 модуля: новые (0) отсутствуют (1)
EE: Отсутствующие модули (начинайте просить пощады)
make: *** [debian/rules.d/4-checks.mk:10: module-check-raspi] Ошибка 1

Я не могу найти, почему это не удалось. Драйверы, кажется, есть, как показано на этом:

**найти ~/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 и приступить к работе, не пытаясь компилировать ядра!

Рейтинг:0
флаг cn

I had this same problem and after a lot of trial and error I think I know what fixed it for me. I was following the ubuntu Build Your Own Kernel wiki that made use of the fakeroot debian/rules editconfigs command which brings up a GUI for editing the config. I used this to enable CONFIG_SATA_AHCI but what I didn't know was that there are different methods for "enabling" it. I initially picked Y to "include" the module and during compile I had the same error: MISS: libahci.

When I compared my config changes to the PR that enabled SATA in the raspberry pi kernel I noticed that they used M to "modularize" include it. I started over and picked M in the GUI and then my kernel compiled without errors.

I believe it's possible to edit the configs without using the editconfigs GUI and if that's the case just make sure you use m instead of y.

I noticed the OP didn't mention what value they picked for their configs, just that they "have enabled ... CONFIG_SATA_AHCI ... in the config" so maybe this was also the issue.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.