Zfs: Модуль ошибок компиляции в ядре 4.20.3

Созданный на 20 янв. 2019  ·  4Комментарии  ·  Источник: openzfs/zfs

Системная информация


Тип | Версия / Название
--- | ---
Название дистрибутива | Fedora Linux
Версия распространения | 29
Ядро Linux | 4.20.3-200.fc29.x86_64
Архитектура | x86_64
Версия ZFS | 0.7.12
Версия SPL | 0.7.12

Опишите проблему, которую вы наблюдаете

Сборка модуля dkms работает на ядре 4.19. *, но не работает на 4.20:

# dkms autoinstall
...
Building module:
cleaning build area...
make -j8 KERNELRELEASE=4.20.3-200.fc29.x86_64..........(bad exit status: 2)
Error! Bad return status for module build on kernel: 4.20.3-200.fc29.x86_64 (x86_64)
Consult /var/lib/dkms/zfs/0.7.12/build/make.log for more information.

Соответствующая часть журнала /var/lib/dkms/zfs/0.7.12/build/make.log:

  CC [M]  /var/lib/dkms/zfs/0.7.12/build/module/zfs/abd.o                                                                                                                                                      
In file included from /var/lib/dkms/zfs/0.7.12/build/include/zpios-internal.h:39,                                                                                                                              
                 from /var/lib/dkms/zfs/0.7.12/build/module/zpios/pios.c:42:                                                                                                                                   
/var/lib/dkms/zfs/0.7.12/build/include/zpios-ctl.h: In function ‘zpios_timespec_now’:                                                                                                                          
/var/lib/dkms/zfs/0.7.12/build/include/zpios-ctl.h:186:11: error: implicit declaration of function ‘current_kernel_time’; did you mean ‘current_kernel_time64’? [-Werror=implicit-function-declaration]        
  ts_now = current_kernel_time();                                                                                                                                                                              
           ^~~~~~~~~~~~~~~~~~~                                                                                                                                                                                 
           current_kernel_time64                                                                                                                                                                               
/var/lib/dkms/zfs/0.7.12/build/include/zpios-ctl.h:186:9: error: incompatible types when assigning to type ‘struct timespec’ from type ‘int’                                                                   
  ts_now = current_kernel_time();                                                                                                                                                                              
         ^                                                                                                                                                                                                     
cc1: some warnings being treated as errors                                                                                                                                                                     
make[5]: *** [scripts/Makefile.build:292: /var/lib/dkms/zfs/0.7.12/build/module/zpios/pios.o] Error 1                                                                                                          
make[4]: *** [scripts/Makefile.build:516: /var/lib/dkms/zfs/0.7.12/build/module/zpios] Error 2                                                                                                                 
make[4]: *** Waiting for unfinished jobs....

Полный журнал: make.log

Опишите, как воспроизвести проблему

dnf upgrade zfs*

Самый полезный комментарий

Я сосредоточил информацию в этом выпуске также из # 8394, чтобы помочь другим с помощью руководства со всеми шагами, если это кому-то понадобится.
Это относится к Fedora 29.

  1. Убедитесь, что вы запускаете ядро, для которого хотите собрать модуль:
    uname -srm Linux 4.20.7-100.fc28.x86_64 x86_64

  2. Переустановите пакеты zfs и spl, чтобы получить чистую среду:
    dnf reinstall zfs-dkms spl-dkms zfs

  3. Загрузите tar-архив zfs-linux ubuntu: https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0.7.12-1ubuntu5.debian.tar.xz

  4. Распаковать архив
    tar xjf zfs-linux_0.7.12-1ubuntu5.debian.tar.xz

  5. Введите каталог патчей: cd debian/patches

  6. Примените патч к исходнику zfs: sudo patch -p1 /var/lib/dkms/zfs/0.7.12/source/include/zpios-ctl.h <3204-Add-4.20-timespec-compat-fix.cd patch

  7. Удалите модули, которые dnf построил при установке пакета:
    sudo dkms remove spl/0.7.12 --all; sudo dkms remove zfs/0.7.12 --all;

  8. Соберите модули заново из исправленного исходного кода:
    sudo dkms --force install spl/0.7.12 sudo dkms --force install zfs/0.7.12

  9. Загрузите модуль: modprobe zfs
    Теперь у вас должна быть возможность перезапустить zfs-services и смонтировать пул (ы) или просто перезагрузить компьютер, чтобы изменения вступили в силу.

Все 4 Комментарий

Дубликат № 8258
Будет исправлено в # 8305

У меня такая же проблема. Быстрое исправление - debian / patches / 3204-Add-4.20-timespec-compat-fix.patch в https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0. 7.12-1ubuntu4.debian.tar.xz .

У меня такая же проблема. Быстрое исправление - debian / patches / 3204-Add-4.20-timespec-compat-fix.patch в https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0. 7.12-1ubuntu4.debian.tar.xz .

Это сработало для меня с некоторыми настройками - мне пришлось взять https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0.7.12-1ubuntu5.debian.tar. xz (поскольку похоже, что он заменяет 1ubuntu4), извлеките упомянутый файл патча 3204-Add-4.20-timespec-compat-fix.patch из архива и примените его в /var/lib/dkms/zfs/0.7.12/source с помощью patch -p1 <3204-Add-4.20-timespec-compat-fix.patch .

Модули DKMS для ZFS нормально собираются на 4.20.4-200.fc29.x86_64.

Я сосредоточил информацию в этом выпуске также из # 8394, чтобы помочь другим с помощью руководства со всеми шагами, если это кому-то понадобится.
Это относится к Fedora 29.

  1. Убедитесь, что вы запускаете ядро, для которого хотите собрать модуль:
    uname -srm Linux 4.20.7-100.fc28.x86_64 x86_64

  2. Переустановите пакеты zfs и spl, чтобы получить чистую среду:
    dnf reinstall zfs-dkms spl-dkms zfs

  3. Загрузите tar-архив zfs-linux ubuntu: https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0.7.12-1ubuntu5.debian.tar.xz

  4. Распаковать архив
    tar xjf zfs-linux_0.7.12-1ubuntu5.debian.tar.xz

  5. Введите каталог патчей: cd debian/patches

  6. Примените патч к исходнику zfs: sudo patch -p1 /var/lib/dkms/zfs/0.7.12/source/include/zpios-ctl.h <3204-Add-4.20-timespec-compat-fix.cd patch

  7. Удалите модули, которые dnf построил при установке пакета:
    sudo dkms remove spl/0.7.12 --all; sudo dkms remove zfs/0.7.12 --all;

  8. Соберите модули заново из исправленного исходного кода:
    sudo dkms --force install spl/0.7.12 sudo dkms --force install zfs/0.7.12

  9. Загрузите модуль: modprobe zfs
    Теперь у вас должна быть возможность перезапустить zfs-services и смонтировать пул (ы) или просто перезагрузить компьютер, чтобы изменения вступили в силу.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги