Background

New NTFS Driver Misses Out On Linux 5.12 But Revved A 22nd Time
NTFS read-write driver GPL implementation by Paragon Software

Get kernel source rpm

Enable the rawhide repo.

~]# dnf se rawhide
...
======================= Name & Summary Matched: rawhide ========================
fedora-repos-rawhide.noarch : Rawhide repo definitions
fedora-repos-rawhide-modular.noarch : Rawhide modular repo definitions
rpmfusion-free-release-rawhide.noarch : RPM Fusion Rawhide free repo definitions

~]# dnf in fedora-repos-rawhide fedora-repos-rawhide-modular
~]# dnf repolist --all
repo id                                   repo name                     status
fedora                                    Fedora 33 - x86_64            enabled
...
rawhide                                   Fedora - Rawhide - Developmen disabled
rawhide-debuginfo                         Fedora - Rawhide - Debug      disabled
rawhide-modular                           Fedora - Modular Rawhide - De disabled
rawhide-modular-debuginfo                 Fedora - Modular Rawhide - De disabled
rawhide-modular-source                    Fedora - Modular Rawhide - So disabled
rawhide-source                            Fedora - Rawhide - Source     disabled
...

~]# dnf list --disablerepo=\* --enablerepo=rawhide-source kernel\*
...
Available Packages
kernel.src                5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.fc35 rawhide-source
kernel-headers.src        5.11.0-1.fc35                                 rawhide-source
kernel-srpm-macros.src    1.0-4.fc34                                    rawhide-source
kernel-tools.src          5.11.0-1.fc35                                 rawhide-source
kernelshark.src           1:1.2-3.fc34                                  rawhide-source

Download SRPM and install it.

~]# dnf download --source --disablerepo=\* --enablerepo=rawhide-source kernel

~]# rpm -ivh kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.fc35.src.rpm
warning: kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.fc35.src.rpm: Header V4 RSA/SHA256 Signature, key ID 9867c58f: NOKEY
Updating / installing...
   1:kernel-5.12.0-0.rc0.20210225gitc0warning: user mockbuild does not exist - using root
...

Modify kernel.spec.

~]# diff ~/rpmbuild/SPECS/kernel.spec kernel.spec
99c99
<
---
> %define buildid .ntfs3
762a763,772
> Patch999901: 0001-ntfs3-01.patch
> Patch999902: 0001-ntfs3-02.patch
> Patch999903: 0001-ntfs3-03.patch
> Patch999904: 0001-ntfs3-04.patch
> Patch999905: 0001-ntfs3-05.patch
> Patch999906: 0001-ntfs3-06.patch
> Patch999907: 0001-ntfs3-07.patch
> Patch999908: 0001-ntfs3-08.patch
> Patch999909: 0001-ntfs3-09.patch
> Patch999910: 0001-ntfs3-10.patch
1264a1275,1284
> ApplyOptionalPatch 0001-ntfs3-01.patch
> ApplyOptionalPatch 0001-ntfs3-02.patch
> ApplyOptionalPatch 0001-ntfs3-03.patch
> ApplyOptionalPatch 0001-ntfs3-04.patch
> ApplyOptionalPatch 0001-ntfs3-05.patch
> ApplyOptionalPatch 0001-ntfs3-06.patch
> ApplyOptionalPatch 0001-ntfs3-07.patch
> ApplyOptionalPatch 0001-ntfs3-08.patch
> ApplyOptionalPatch 0001-ntfs3-09.patch
> ApplyOptionalPatch 0001-ntfs3-10.patch
1304c1324
< cp $RPM_SOURCE_DIR/kernel-*.config .
---
> cp $RPM_SOURCE_DIR/kernel-x86_64*.config .

Modify kernel-local.

~]# cat kernel-local
# This file is intentionally left empty in the stock kernel. Its a nicety
# added for those wanting to do custom rebuilds with altered config opts.
CONFIG_NTFS3_FS=m
# CONFIG_NTFS3_64BIT_CLUSTER is not set
# CONFIG_NTFS3_LZX_XPRESS is not set
# CONFIG_NTFS3_FS_POSIX_ACL is not set

Generate new SRPM.

~]# cp *.patch kernel-local ~/rpmbuild/SOURCES/
~]# cp kernel.spec ~/rpmbuild/SPECS/

~]# rpmbuild -bs ~/rpmbuild/SPECS/kernel.spec

Build with copr and install it.

~]# copr build kernel-macbook ~/rpmbuild/SRPMS/kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.src.rpm

~]# dnf copr enable pany/kernel-macbook
~]# dnf up kernel

Or build with better perfomance server.

~]# mock -r fedora-33-x86_64 --rebuild kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.src.rpm

Or build with current fedora.

~]# dnf in bison dwarves elfutils-devel gcc-c++ gcc-plugin-devel net-tools nss-tools perl-devel perl-generators pesign -y
~]# rpmbuild -bb ~/rpmbuild/SPECS/kernel.spec

Without copr, install the RPM.

~]# dnf in ./kernel-{,core-,modules-}5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.x86_64.rpm

Try NTFS3 driver

Reboot to new kernel.

~]# modprobe ntfs3
~]# lsmod | grep ntfs3
ntfs3                 245760  1

~]# lsblk /dev/sdc
NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sdc      8:32   0 931.5G  0 disk
├─sdc1   8:33   0    16M  0 part
└─sdc2   8:34   0 931.5G  0 part
~]# mount -t ntfs3 /dev/sdc2 /media/
~]# mount | grep sdc2
/dev/sdc2 on /media type ntfs3 (rw,relatime,nls=utf8)

~]# cp kernel-{,core-,modules-}5.12.* /media/
~]# ls /media/
'$RECYCLE.BIN'/
 kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.fc35.src.rpm
 kernel-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.x86_64.rpm
 kernel-core-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.x86_64.rpm
 kernel-modules-5.12.0-0.rc0.20210225gitc03c21ba6f4e.160.ntfs3.fc33.x86_64.rpm
'System Volume Information'/

So far so good.