在Ubuntu挂载apfs文件系统的硬盘 在我将mac的代码硬盘迁移到服务器时,发现ubuntu不支持apfs格式的硬盘,于是在搜索中得知apfs-fuse的应用可以解决,但过程踩坑较多,相关文章也少,在此记录以备后用
1 首先安装需要的文件 请确保指令库中包含main或universe仓库,防止文件缺失
1 2 3 4 sudo apt update sudo apt upgrade sudo apt install build-essential git cmake libfuse-dev libattr1-dev
2 下载apfs-fuse, 并初始化 1 2 3 4 5 6 7 8 9 10 11 git clone git@github.com:sgan81/apfs-fuse.git cd apfs-fusemkdir buildcd buildcmake .. make sudo make install
cmake可能出现的错误
1 2 3 CMake Error: Cannot determine link language for target "lzfse" . CMake Error: CMake can not determine linker language for target: lzfse
解决
1 2 3 4 5 6 7 8 9 10 11 12 cd /apfs-fusegit submodule init git submodule update cd buildcmake .. make sudo make install
make可能出现的问题 1
1 2 3 4 5 6 7 CMakeFiles/apfs.dir/build.make:566: recipe for target 'CMakeFiles/apfs.dir/ApfsLib/Util.cpp.o' failed make[2]: *** [CMakeFiles/apfs.dir/ApfsLib/Util.cpp.o] Error 1 CMakeFiles/Makefile2:181: recipe for target 'CMakeFiles/apfs.dir/all' failed make[1]: *** [CMakeFiles/apfs.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2
解决
1 2 3 4 5 6 7 8 9 sudo apt install libbz2-dev cd /apfs-fuse/buildmake sudo make install
make可能出现的问题 2
1 2 3 4 5 6 7 CMakeFiles/apfs-fuse.dir/build.make:62: recipe for target 'CMakeFiles/apfs-fuse.dir/apfsfuse/ApfsFuse.cpp.o' failed make[2]: *** [CMakeFiles/apfs-fuse.dir/apfsfuse/ApfsFuse.cpp.o] Error 1 CMakeFiles/Makefile2:259: recipe for target 'CMakeFiles/apfs-fuse.dir/all' failed make[1]: *** [CMakeFiles/apfs-fuse.dir/all] Error 2 Makefile:129: recipe for target 'all' failed make: *** [all] Error 2
解决
1 2 3 4 5 6 7 8 9 sudo apt install libfuse3-dev cd /apfs-fuse/build make sudo make install
3 挂载apfs格式的硬盘 扫描出盘符
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 fdisk -l 或 lsblk 如 Disk /dev/sdb:465.8 GiB,500107862016 字节,976773168 个扇区 单元:扇区 / 1 * 512 = 512 字节 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标签类型:gpt 磁盘标识符:956A8929-D89C-4268-BE1D-F2FB36B1F32A 设备 起点 末尾 扇区 大小 类型 /dev/sdb1 34 32767 32734 16M Microsoft 保留 /dev/sdb2 32768 976773127 976740360 465.8G 未知 或 sdb 8:16 0 465.8G 0 disk ├─sdb1 8:17 0 16M 0 part └─sdb2 8:18 0 465.8G 0 part
则 dev/sdb 为该硬盘位 可以看到 dev/sdb2
如果直接挂载
1 2 3 4 sudo apfs-fuse /dev/sdb2 ~/RenCCCP Unable to get volume!
需要指定vol参数后再挂载
1 2 3 4 apfs-fuse -o vol=1 /dev/sdb2 ~/RenCCCP cd ~/RenCCCP/ls private-dir root
则此时挂载成功