如何防止Windows 10每次都破坏ext4超级块?

我有一台带双启动Ubuntu / Windows的电脑超过5年。 最后一个工作配置是:Windows 10和Ubuntu 16.04 LTS。

我在Linux分区上安装Ubuntu 16.10并遇到一些问题:

  • 如果我只在Linux上启动,没有问题,它工作正常。
  • 如果我启动Windows,没问题,Windows工作正常。
  • 如果我在Windows之后启动Linux,我有一个超级块错误并且放到busybox。

如果我恢复超级块

fsck.ext4 -p -b 884736 -B 4096 /dev/sda5 

我可以启动Linux,但在另一次启动到Windows后,同样的问题再次发生。

当然我尝试过找到的解决方案:

  • 在Windows上的chkdsktestdisk
  • 我删除了扩展分区,让Linux安装程序重新创建它们。
  • 通过和创建扩展分区+ ext4并在安装过程中交换并选择这些分区。

分区表( fdisk -lu ):

 Disk /dev/sda: 298,1 GiB, 320072933376 bytes, 625142448 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x6bb7527c Device Boot Start End Sectors Size Id Type /dev/sda1 2048 22783999 22781952 10,9G 7 HPFS/NTFS/exFAT /dev/sda2 * 22784000 22988799 204800 100M 7 HPFS/NTFS/exFAT /dev/sda3 22988800 375246847 352258048 168G 7 HPFS/NTFS/exFAT /dev/sda4 375246848 625141759 249894912 119,2G f W95 Ext'd (LBA) /dev/sda5 383440896 617844735 234403840 111,8G 83 Linux /dev/sda6 617846784 625141759 7294976 3,5G 82 Linux swap / Solaris 

我做了一些没有成功的测试:

  • 我删除了Linux扩展分区
  • 我将Windows分区扩展到完整磁盘
  • 我在这个新的Windows分区上启动了一个chkdsk /F /R →几个小时后一切都很好
  • 我重新安装了Ubuntu 16.10并让安装程序调整磁盘大小并创建ext4和swap部分。
  • 我启动Linux→没问题
  • 我启动Windows→没问题(我到达Windows菜单,让我在Windows和Linux之间选择,我选择Windows)
  • 我启动Linux:同样的问题(超级块错误)

更新:确切的超级块错误:

 fsck.ext4: Superblock checksum does not match superblock while trying to open /dev/sda5 

要修复它:

 fsck.ext4 -p -b 884736 -B 4096 /dev/sda5 

工作正常,但在Windows启动后,问题又出现了……

更新2:从W10开始,我可以使用W10 ext2工具安装linux ext4分区。 它工作正常,我可以看到文件。 但在那之后,同样的问题,当我在Linux上启动时:超级块错误。

当然,如果我只是启动W10(没有登录)并重新启动linux,那么问题也存在。

问题出现在W10 1511上,我升级到W10 1607:同样的问题

我看到我在这个问题上并不孤单,但我没有看到任何解决方案。

update2:我删除了linux和swap分区并从windows创建了一个新分区。 然后我再次重新安装Ubuntu 16.10 =>同样的问题

更新3:解决方案的开始我或许找到了解决方案。 在windows中进行loggued时:使用命令diskpart ,当linux卷设置为offline时,启动linux时没有问题。

我现在必须找到如何自动设置音量离线(regedit?)

我做了一些研究,似乎从ext2fsprogs 1.43(Ubuntu 16.10)开始,当创建一个新的ext4文件系统时,64位和metadata_csumfunction被启用。 我重新安装了Ubuntu 16.10,但在安装之前,我开始进入USB实时会话,并从/etc/mke2fs.conf删除了ext4的64位和metadata_csumfunction。 在此之后,我将安装程序从此实时会话中运出,现在我可以启动Windows 10而不会破坏我的ext4分区(在安装Ubuntu 16.10期间必须重新格式化ext4分区)。

该问题与ext2fsd有关,后者显然不支持64位function和/或metadata_csumfunction。 安装ext2fsd就足以破坏你的ext4分区。 无需将它们安装在Windows中。

您可以使用以下命令检查是否启用了这些function:

 sudo tune2fs -l /dev/[sdXX] 

其中[sdXX]代表有问题的ext4分区。

我有同样的问题,对我来说它似乎是Windows 10 ext2fsd文件系统驱动程序。 也许也适合你? 当我卸载ext2fsd(版本0.68)时,我可以根据需要随时启动Windows 10,并且ext4分区保持干净。 安装了ext2fsd后,无论是否安装,所有ext4分区都会被破坏。

我有一个适合我的解决方案(diskpart是我的朋友)

1)在cmd管理窗口中识别linux分区:

 diskpart list volume 

你可以看到你的linux分区

  N° volume Ltr Nom Fs Type Taille Statut Info ---------- --- ----------- ----- ---------- ------- --------- -------- Volume 0 D BIOS_RVY NTFS Partition 10 G Sain Volume 1 E System NTFS Partition 100 M Sain Système Volume 2 C OS_Install NTFS Partition 131 G Sain Démarrag Volume 3 L Partition 18 G Sain DISKPART> 

就我而言:第3卷

2)用记事本创建一个diskpart脚本创建文件volume3offline.txt

 select volume 3 offline volume exit 

3)用记事本创建一个bat文件,在同一目录下创建govolume3offline.bat文件

 cd \users\f35\documents diskpart /s volume3offline.txt 

4)创建计划任务打开windows tash scheduler编程在启动时启动govolume3offline.bat的任务

5)在Windows中重启后检查一切是否正常

 diskpart list volume 

你的linux卷应该是离线的

在linux中重启

 If no errors => it's good if you have errors, correct them reboot in windows reboot in linux If no errors => it's good if you have errors, goto 1) 

在我的GPT硬盘驱动器上,Ubuntu 16.10与Windows 7并行运行。

我遇到了这里记录的超级块损坏问题,因为我忘记过去安装了ext2fs,它仍然在后台作为Windows服务运行。

新的ext2fs v0.69说它修复了超级块损坏错误,我从http://www.ext2fsd.com/安装了它。 但是,“ext2fs Manager”将我的ext4格式化驱动器显示为ext3,并且在Windows下安装后无法访问。

所以,我完全卸载了ext2fs并且完成了

 fsck.ext4 -p -b 884736 -B 4096 /dev/sdxyz 

这解决了超级块问题,我恢复了正常。

Windows 10 Block Level Backup服务正在破坏Ubuntu分区上的超级块。 通过控制面板禁用。