Mic*_*ael 2 ntfs hard-drive xbox-one
我读到 Xbox One 将外部硬盘驱动器格式化为 NTFS 格式。我从阅读诸如此类的页面中获得的理解 NTFS 支持应该“开箱即用”。然而,当我将驱动器插入 Linux 机器时,没有安装任何东西。在 dmesg 中,我看到设备已被识别,但 fdisk 声称没有分区表。我读过有关需要(至少在 Windows 上)修改驱动器的 MBR 以在“XBox 模式”和“PC 模式”之间切换的 Windows 实用程序的信息,因此我怀疑需要在Linux - 但我找不到任何关于它到底在做什么的文档。或者,也许 NTFS 根本无法开箱即用 - 例如,我在 /proc/filesystems 下没有看到 ntfs,并且天真的尝试“modprobe ntfs-3g”未能找到任何内容。
我正在运行 (L)Ubuntu 18.04.3 LTS。
我刚刚查看了驱动器上的字节,看来微软故意删除了驱动器上的 MBR,让我们的生活变得更加困难。
选项 1(首选):在 Linux 和 Xbox 之间共享驱动器
如果您不想修改MBR,可以直接访问该分区。这需要一些技巧!
首先找到NTFS分区在驱动器内的字节偏移量:
drive=your.drive.here
offset=`head -c 4k $drive | grep -aobuP '\x00\x00\x00NTFS' | sed 's/\:.*//'`
Run Code Online (Sandbox Code Playgroud)
现在,假设您有一个像这样的挂载文件夹/mnt/xbox
,您可以直接挂载分区,如下所示:
mount $drive -o offset=$offset /mnt/xbox
Run Code Online (Sandbox Code Playgroud)
或者想了解更好的 NTFS 性能选项:
mount $drive -t ntfs -o offset=$offset,windows_names,big_writes,streams_interface=windows,inherit /mnt/xbox
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,这实际上对我有用。继续安装它。确保您首先完全关闭 Xbox,否则它将显示为不干净的文件系统,但 Linux 可以为您修复该问题。
选项 2(有风险):修复 MBR 以使驱动器可由 Linux 读取。
在开始之前,请备份 MBR,以便可以恢复:
dd if=your.drive.here bs=512 count=1 of=xbox.mbr.backup.bin
Run Code Online (Sandbox Code Playgroud)
然后安装lilo来修复MBR
sudo apt install lilo
lilo -M your.drive.here mbr
Run Code Online (Sandbox Code Playgroud)
警告:在您将 MBR 恢复到之前的状态之前,Xbox 将无法读取该驱动器。(使用dd将备份文件复制到驱动器上)
据我所知,这与Windows等效应用程序正在做的事情(修改MBR)是一样的,而且它似乎对他们有用,但是YMMV。