安装 macFUSE + NTFS-3G (免费)

jsx
1
2
brew install macfuse
brew install gromgit/fuse/ntfs-3g

查看磁盘

jsx
1
diskutil list

安装完成后会在“隐私与安全性”中提示需要启动系统扩展

启用内核扩展

{D7891A43-971F-48D4-B847-49F1A48B0139}

点击启动系统扩展时候会触发重启

image-20260401222722788

重启后开机一直按住开机键直到页面提示“正在载入启动选项”

image-20260401222749167

输入密码后进入,之后在顶部菜单栏选择“工具” → “启东安全性实用工具”,选择磁盘,安全策略

image-20260401222818676

选择降低安全性

image-20260401222849237

重启后再回到“隐私与安全性”点允许

完成之后插上你的NTFS移动硬盘,macOS识别后在终端使用以下命令查找硬盘分区的名称,如diskXsY,X表示磁盘,Y表示分区

  • disk4 整个物理磁盘
  • disk4s1 第1个分区
jsx
1
diskutil list 

找到你的硬盘例如,第几个分区就选择几

jsx
1
/dev/disk4s1

执行挂载

jsx
1
sudo ntfs-3g /dev/disk4s1 /Volumes/NTFS

拷贝数据

在拷贝数据时候,cp 有时候不能用,例如

jsx
1
2
3
 % sudo cp ~/Downloads/Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab /Volumes/NTFS/
cp: /Volumes/NTFS/Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab: fcopyfile failed: Operation not supported on socket
cp: /Users/goldstains/Downloads/Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab: could not copy extended attributes to /Volumes/NTFS/Microsoft-Windows-LanguageFeatures-Basic-en-us-Package-amd64.cab: Operation not supported on socket

macOS 的 cp 默认会复制:

  • xattr
  • ACL
  • Finder metadata

NTFS-3G 挂载的 NTFS 分区不支持这些 macOS metadata,所以复制失败。

直接使用 rsync 就可以

jsx
1
sudo rsync -r --size-only ~/Downloads/WIN /Volumes/NTFS/

用完的话要 umount 卸载掉,我看硬盘盒一直在唤醒状态,不会动态休眠

jsx
1
sudo umount /Volumes/NTFS

解锁 bitlocker

macos 上安装 anylinuxfs

jsx
1
2
brew tap nohajc/anylinuxfs
brew install anylinuxfs

如下

jsx
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
$ ~ % sudo rsync -r --size-only ~/Downloads/WIN /Volumes/NTFS/
$ ~ % brew tap nohajc/anylinuxfs                              
brew install anylinuxfs
==> Auto-updating Homebrew...
Adjust how often this is run with `$HOMEBREW_AUTO_UPDATE_SECS` or disable with
`$HOMEBREW_NO_AUTO_UPDATE=1`. Hide these hints with `$HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).
==> Auto-updated Homebrew!
Updated 1 tap (homebrew/cask).
==> New Casks
fidelity-trader+: Trading platform
gram: Code editor focused on stability, without AI, subscsriptions, or telemetry
spectra-app: OpenSpec document management desktop app
supasidebar: Arc-like sidebar to save links, files and folders from any browser
tencent-ugit: Tencent Git GUI Client
ulaa: Privacy-centric browser with advanced tracking protection

You have 8 outdated formulae installed.

==> Tapping nohajc/anylinuxfs
Cloning into '/opt/homebrew/Library/Taps/nohajc/homebrew-anylinuxfs'...
remote: Enumerating objects: 422, done.
remote: Counting objects: 100% (129/129), done.
remote: Compressing objects: 100% (55/55), done.
remote: Total 422 (delta 73), reused 102 (delta 47), pack-reused 293 (from 1)
Receiving objects: 100% (422/422), 56.39 KiB | 345.00 KiB/s, done.
Resolving deltas: 100% (195/195), done.
Tapped 1 formula (19 files, 123.8KB).
==> Fetching downloads for: anylinuxfs
==> Tapping slp/krun
Cloning into '/opt/homebrew/Library/Taps/slp/homebrew-krun'...
remote: Enumerating objects: 533, done.
remote: Counting objects: 100% (138/138), done.
remote: Compressing objects: 100% (58/58), done.
remote: Total 533 (delta 97), reused 87 (delta 80), pack-reused 395 (from 1)
Receiving objects: 100% (533/533), 347.54 MiB | 27.72 MiB/s, done.
Resolving deltas: 100% (204/204), done.
Tapped 7 formulae (34 files, 439.8MB).
✔︎ Bottle Manifest dtc (1.7.2)                                                                                                                 Downloaded   10.3KB/ 10.3KB
✔︎ Bottle dtc (1.7.2)                                                                                                                          Downloaded  135.1KB/135.1KB
✔︎ Bottle Manifest sqlite (3.52.0)                                                                                                             Downloaded   11.4KB/ 11.4KB
✔︎ Bottle sqlite (3.52.0)                                                                                                                      Downloaded    2.4MB/  2.4MB
✔︎ Bottle Manifest z3 (4.15.4)                                                                                                                 Downloaded    7.6KB/  7.6KB
✔︎ Bottle z3 (4.15.4)                                                                                                                          Downloaded   13.1MB/ 13.1MB
✔︎ Bottle Manifest llvm (22.1.1)                                                                                                               Downloaded   37.8KB/ 37.8KB
✔︎ Bottle Manifest lld (22.1.1)                                                                                                                Downloaded   19.9KB/ 19.9KB
✔︎ Bottle lld (22.1.1)                                                                                                                         Downloaded    1.9MB/  1.9MB
✔︎ Bottle libkrunfw (5.2.0)                                                                                                                    Downloaded   12.3MB/ 12.3MB
✔︎ Bottle Manifest libepoxy (1.5.10)                                                                                                           Downloaded   24.5KB/ 24.5KB
✔︎ Bottle libepoxy (1.5.10)                                                                                                                    Downloaded  393.3KB/393.3KB
✔︎ Bottle Manifest molten-vk (1.4.1)                                                                                                           Downloaded    5.3KB/  5.3KB
✔︎ Bottle virglrenderer (0.10.4e)                                                                                                              Downloaded  510.7KB/510.7KB
✔︎ Bottle libkrun (1.17.4)                                                                                                                     Downloaded    2.0MB/  2.0MB
✔︎ Bottle Manifest util-linux (2.41.3_1)                                                                                                       Downloaded   16.4KB/ 16.4KB
✔︎ Bottle util-linux (2.41.3_1)                                                                                                                Downloaded    5.5MB/  5.5MB
✔︎ Bottle molten-vk (1.4.1)                                                                                                                    Downloaded   18.0MB/ 18.0MB
✔︎ Bottle anylinuxfs (0.12.2)                                                                                                                  Downloaded   53.2MB/ 53.2MB
✔︎ Bottle llvm (22.1.1)                                                                                                                        Downloaded  451.0MB/451.0MB
==> Installing anylinuxfs from nohajc/anylinuxfs
==> Installing dependencies for nohajc/anylinuxfs/anylinuxfs: dtc, sqlite, z3, llvm, lld, slp/krun/libkrunfw, libepoxy, molten-vk, slp/krun/virglrenderer, slp/krun/libkrun and util-linux
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: dtc
==> Pouring dtc--1.7.2.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/dtc/1.7.2: 19 files, 640.1KB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: sqlite
==> Pouring sqlite--3.52.0.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/sqlite/3.52.0: 13 files, 5.3MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: z3
==> Pouring z3--4.15.4.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/z3/4.15.4: 120 files, 33.6MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: llvm
==> Pouring llvm--22.1.1.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/llvm/22.1.1: 9,686 files, 1.9GB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: lld
==> Pouring lld--22.1.1.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/lld/22.1.1: 36 files, 6.0MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: slp/krun/libkrunfw
==> Pouring libkrunfw-5.2.0.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libkrunfw/5.2.0: 7 files, 22.8MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: libepoxy
==> Pouring libepoxy--1.5.10.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libepoxy/1.5.10: 11 files, 2.7MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: molten-vk
==> Pouring molten-vk--1.4.1.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/molten-vk/1.4.1: 83 files, 82.2MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: slp/krun/virglrenderer
==> Pouring virglrenderer-0.10.4e.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/virglrenderer/0.10.4e: 10 files, 1.8MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: slp/krun/libkrun
==> Pouring libkrun-1.17.4.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/libkrun/1.17.4: 13 files, 4.6MB
==> Installing nohajc/anylinuxfs/anylinuxfs dependency: util-linux
==> Pouring util-linux--2.41.3_1.arm64_tahoe.bottle.tar.gz
🍺  /opt/homebrew/Cellar/util-linux/2.41.3_1: 193 files, 18.3MB
==> Installing nohajc/anylinuxfs/anylinuxfs
==> Pouring anylinuxfs-0.12.2.arm64_tahoe.bottle.tar.gz
==> /opt/homebrew/Cellar/anylinuxfs/0.12.2/bin/anylinuxfs upgrade-config /opt/homebrew/etc/anylinuxfs.toml -o /opt/homebrew/etc/anylinuxfs.toml
🍺  /opt/homebrew/Cellar/anylinuxfs/0.12.2: 18 files, 116.8MB
==> Running `brew cleanup anylinuxfs`...
Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.
Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).

查询设备

jsx
1
anylinuxfs list -m

这个命令将列出所有 microsoft 的分区,还有-l 是linux

例如我这里可以看到

jsx
1
2
3
4
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk4
   1:       Microsoft Basic Data                         2.0 TB     disk4s1

使用 sudo 可以看到加密状态

jsx
1
sudo anylinuxfs list -m

我这里看到的

jsx
1
2
3
4
/dev/disk4 (external, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *2.0 TB     disk4
   1:                  BitLocker DESKTOP-xxxxx F: 2... 2.0 TB     disk4s1

挂载设备(解密和挂载需要加sudo)

jsx
1
2
% sudo anylinuxfs /dev/disk4s1
Enter passphrase for /dev/disk4s1: 

挂载设备时,首次会需要输入两次密码,第一次是 mac 当前用户管理员密码,第二次才是 bitlocker 的磁盘密码。如下所示

jsx
1
2
3
% sudo anylinuxfs /dev/disk4s1
Password: # 注意看英文这里是本机
Enter passphrase for /dev/disk4s1:  # 这里是 bitlocker 磁盘

挂载完成后默认在 /Volumes/DESKTOP-xxx (加密的设备名) 下面,也会弹出 UI 的浏览器

image-20260401223152596

卸载磁盘

可以用 unmout 也可以在 UI 上弹出

jsx
1
sudo umount /Volumes/DESKTOP-7EP4D9Q_C__7-15-2025/

Reference

How to mount BitLocker-encrypted drives on macOS

Apple 矽晶 Mac Bitlocker