Тип | Версия / Название
--- | ---
Название дистрибутива | 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*
Дубликат № 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.
Убедитесь, что вы запускаете ядро, для которого хотите собрать модуль:
uname -srm
Linux 4.20.7-100.fc28.x86_64 x86_64
Переустановите пакеты zfs и spl, чтобы получить чистую среду:
dnf reinstall zfs-dkms spl-dkms zfs
Загрузите tar-архив zfs-linux ubuntu: https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0.7.12-1ubuntu5.debian.tar.xz
Распаковать архив
tar xjf zfs-linux_0.7.12-1ubuntu5.debian.tar.xz
Введите каталог патчей: cd debian/patches
Примените патч к исходнику 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
Удалите модули, которые dnf построил при установке пакета:
sudo dkms remove spl/0.7.12 --all;
sudo dkms remove zfs/0.7.12 --all;
Соберите модули заново из исправленного исходного кода:
sudo dkms --force install spl/0.7.12
sudo dkms --force install zfs/0.7.12
Загрузите модуль: modprobe zfs
Теперь у вас должна быть возможность перезапустить zfs-services и смонтировать пул (ы) или просто перезагрузить компьютер, чтобы изменения вступили в силу.
Самый полезный комментарий
Я сосредоточил информацию в этом выпуске также из # 8394, чтобы помочь другим с помощью руководства со всеми шагами, если это кому-то понадобится.
Это относится к Fedora 29.
Убедитесь, что вы запускаете ядро, для которого хотите собрать модуль:
uname -srm Linux 4.20.7-100.fc28.x86_64 x86_64
Переустановите пакеты zfs и spl, чтобы получить чистую среду:
dnf reinstall zfs-dkms spl-dkms zfs
Загрузите tar-архив zfs-linux ubuntu: https://mirrors.edge.kernel.org/ubuntu/pool/main/z/zfs-linux/zfs-linux_0.7.12-1ubuntu5.debian.tar.xz
Распаковать архив
tar xjf zfs-linux_0.7.12-1ubuntu5.debian.tar.xz
Введите каталог патчей:
cd debian/patches
Примените патч к исходнику 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
Удалите модули, которые dnf построил при установке пакета:
sudo dkms remove spl/0.7.12 --all; sudo dkms remove zfs/0.7.12 --all;
Соберите модули заново из исправленного исходного кода:
sudo dkms --force install spl/0.7.12 sudo dkms --force install zfs/0.7.12
Загрузите модуль:
modprobe zfs
Теперь у вас должна быть возможность перезапустить zfs-services и смонтировать пул (ы) или просто перезагрузить компьютер, чтобы изменения вступили в силу.