* add ntfs-3g

This commit is contained in:
Alexander Baldeck 2019-03-26 23:50:01 +00:00
parent 58408e2656
commit 6eb442d305
2 changed files with 99 additions and 0 deletions

52
ntfs-3g/PKGBUILD Normal file
View File

@ -0,0 +1,52 @@
# POWER Maintainer: Alexander Baldeck <alex.bldck@gmail.com>
# Maintainer: Gaetan Bisson <bisson@archlinux.org>
# Contributor: Tom Gundersen <teg@jklm.no>
# Contributor: Ronald van Haren <ronald.archlinux.org>
# Contributor: Thomas Bächler <thomas.archlinux.org>
pkgname=ntfs-3g
_pkgname=ntfs-3g_ntfsprogs
pkgver=2017.3.23
pkgrel=3
pkgdesc='NTFS filesystem driver and utilities'
url='https://www.tuxera.com/community/open-source-ntfs-3g/'
arch=(x86_64 powerpc64le)
license=('GPL2')
depends=('util-linux' 'fuse2')
source=("https://tuxera.com/opensource/${_pkgname}-${pkgver}.tgz"
'mftmirr.patch')
sha256sums=('3e5a021d7b761261836dcb305370af299793eedbded731df3d6943802e1262d5'
'4166ff3021921d7a7ffac8f5de64b5735b1d5e365a024744bebc7260cf1ce726')
conflicts=('ntfsprogs')
provides=('ntfsprogs')
replaces=('ntfsprogs')
prepare() {
cd "${srcdir}/${_pkgname}-${pkgver}"
sed 's|$(DESTDIR)/sbin|$(DESTDIR)/usr/bin|' -i {ntfsprogs,src}/Makefile.in
patch -p1 -i ../mftmirr.patch
}
build() {
cd "${srcdir}/${_pkgname}-${pkgver}"
./configure \
--prefix=/usr \
--sbin=/usr/bin \
--mandir=/usr/share/man \
--disable-ldconfig \
--disable-static \
--with-fuse=external \
--enable-xattr-mappings \
--enable-posix-acls \
--enable-extras \
make
}
package_ntfs-3g() {
cd "${srcdir}/${_pkgname}-${pkgver}"
make DESTDIR="${pkgdir}" rootbindir=/usr/bin rootsbindir=/usr/bin rootlibdir=/usr/lib install
rm "${pkgdir}"/usr/share/man/man8/ntfsfallocate.8 # uninstalled binary
ln -s /usr/bin/ntfs-3g "${pkgdir}/usr/bin/mount.ntfs"
}

47
ntfs-3g/mftmirr.patch Normal file
View File

@ -0,0 +1,47 @@
From 85e208176ffd16ce9a51a9f534b194f0ebbde6e3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Jean-Pierre=20Andr=C3=A9?= <jpandre@users.sourceforge.net>
Date: Fri, 22 Dec 2017 11:29:00 +0100
Subject: [PATCH] Stopped checking matches of MFTMirr against MFT at record 16
Since its 2017 edition, Windows 10 has stopped mirroring $MFT to the
full size of $MFTMirr leading to mounts of partitions with big clusters
to be rejected because of mismatches. With this patch, only 16 records
are checked, though mirroring is still done for all records in $MFTMirr.
---
libntfs-3g/volume.c | 3 ++-
ntfsprogs/ntfsfix.c | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/libntfs-3g/volume.c b/libntfs-3g/volume.c
index 68b8ee1d..d36c7d55 100644
--- a/libntfs-3g/volume.c
+++ b/libntfs-3g/volume.c
@@ -959,7 +959,8 @@ ntfs_volume *ntfs_device_mount(struct ntfs_device *dev, ntfs_mount_flags flags)
vol->mftmirr_size = l;
}
ntfs_log_debug("Comparing $MFTMirr to $MFT...\n");
- for (i = 0; i < vol->mftmirr_size; ++i) {
+ /* Windows 10 does not update the full $MFTMirr any more */
+ for (i = 0; (i < vol->mftmirr_size) && (i < FILE_first_user); ++i) {
MFT_RECORD *mrec, *mrec2;
const char *ESTR[12] = { "$MFT", "$MFTMirr", "$LogFile",
"$Volume", "$AttrDef", "root directory", "$Bitmap",
diff --git a/ntfsprogs/ntfsfix.c b/ntfsprogs/ntfsfix.c
index 2a624023..6801e70e 100644
--- a/ntfsprogs/ntfsfix.c
+++ b/ntfsprogs/ntfsfix.c
@@ -506,6 +506,11 @@ static int fix_mftmirr(ntfs_volume *vol)
ntfs_log_info("Comparing $MFTMirr to $MFT... ");
done = FALSE;
+ /*
+ * Since 2017, Windows 10 does not mirror to full $MFTMirr when
+ * using big clusters, and some records may be found different.
+ * Nevertheless chkdsk.exe mirrors it fully, so we do similarly.
+ */
for (i = 0; i < vol->mftmirr_size; ++i) {
MFT_RECORD *mrec, *mrec2;
const char *ESTR[12] = { "$MFT", "$MFTMirr", "$LogFile",
--
2.19.0