分区格式

首先,Linux和Windows采用的分区格式不同,Linux采用ext4,而Windows采用ntfs。

Windows不支持访问ext4,尽管有些软件可以使用,但是效果不佳,目前可以用WSL挂载ext4格式的分区。Linux也不能直接访问ntfs格式的分区,但是见ArchWiki

ntfs3驱动自内核版本5,15起提供此文件系统的读写支持

所有在内核版本5.15后构建的公开内核均在选择CONFIG_NTFS3_FS=m 后支持此驱动。

对内核版本<5.15,NTFS的读写支持由NTFS-3G NTFS-3GFUSE文件系统提供. 或使用向后支持的NTFS3经由ntfs3-dkmsAUR.

所以,只要安装了对应的驱动,Linux读写ntfs完全没有问题。

BitLocker

在之前,使用Linux访问Windows几乎没有问题,直到拥有了自己的笔记本,发现无法挂载,准确的说是

Authentication Required

A passphrase is needed to access encrypted data on “XXXXX”

然后要输入一个密码,可是我从来没有设置过硬盘的密码。

后来发现是WIndows启动了BitLocker加密了分区,可以用密码、恢复密码和PIN码(?我没尝试,大家可以先试试)打开。

反正我的笔记本上也没有加密数据的需求,所以干脆把BitLocker关掉了。

打开Windows的终端(Windows Terminal 或 PowerShell 或 命令提示符cmd),注意以管理员模式打开。manage-bde -?查看命令提示,manage-bde -off C:关闭对应盘的BitLocker加密,打开任务管理器 ,发现磁盘一直在100% 使用, 当过几分钟后 磁盘恢复正常, 就表示bitlock已经关闭了 。


然后,你以为就能正常挂载WIndows分区了……….

sudo mount /dev/XXX /tmp/XXX

Windows快速启动

如果你运行以上命令没有任何问题,那么恭喜你成功挂载,如果有提示如下:

Windows is hibernated, refused to mount.
The disk contains an unclean file system (0, 0).
Metadata kept in Windows cache, refused to mount.
Falling back to read-only mount because the NTFS partition is in an
unsafe state. Please resume and shutdown Windows fully (no hibernation
or fast restarting.)

那么你也应该看懂了,由于Windows休眠或者启用了快速启动而把数据写入了磁盘,使硬盘处于不安全的状态,所以只能以只读模式挂载。

一般我们都关机了才会用Linux去访问Windows的分区,不会处于休眠状况,所以快速启动又是啥?

从Windows8开始,Windows的开机速度有了极大的提高,这得益于一项新的功能:快速启动。

其实快速启动和休眠一样,只不过休眠将所有进程写入硬盘,而快速启动只将内核、驱动等写入,开机时再读取到内存。

所以,其实我们的Windows只有在重启是才真正关机,其他关机不过是一次rest。这也导致Windows内核积累了许多bug,只有在内核真正重启时才能得到更正(怪不得说重启大法好)。

快速启动在Windows10中默认启用,需要关闭:

打开设置-系统-电源和睡眠-其他电源设置-选择电源按钮的功能,选择更改当前不可用的设置,取消掉快速启动就好了。

不得不说,取消掉后,不仅Linux挂载Windows分区没问题了,而且Win11的许多bug都不见了!