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


21

我已经有超过5年的双引导Ubuntu / Windows电脑了。最后的工作配置是: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之后,同样的问题再次出现。

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

  • chkdsktestdisk在Windows上。
  • 我删除扩展分区,然后让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分区扩展到整个磁盘
  • chkdsk /F /R在这个新的Windows分区上启动了一个→几个小时后一切都很好
  • 我重新安装了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中登录时:使用命令diskpart,当设置了Linux卷offline 时,启动Linux时不再有问题。

我现在必须找到如何自动将卷设置为脱机状态(regedit?)


Windows和Linux是否以UEFI BIOS或旧版BIOS模式安装?在Windows和Ubuntu之间切换时,是否更改任何BIOS设置?您是否使用某种RAID进行存储设置?您是否使用诸如Ext2fsd之类的文件系统驱动程序从Windows访问ext文件系统?
David Foerster,2016年

UEFI BIOS:否,BIOS更改:否,RAID否(这是MSI u270),从Windows访问linux分区:否。只需启动Windows(不登录)并使用ubuntu重新启动,即可出现问题。感谢关注我的问题
f35

什么是超级块错误?这不是时钟问题吗?如果存储在超级块中的时间少于hardawre时钟报告的时间,则可能存在此问题。尝试在Linux和Windows上的硬件时钟中以UTC存储时间。
solsTiCe

@solsTiCe:在初始帖子中检查我的更新以获取确切的超级块错误。BIOS中的时钟为UTC,Windows中的时钟为UTC与当地时间,Ubuntu中的时钟为:sudo dpkg-reconfigure tzdata当前默认时区:'Europe / Paris'现在的本地时间为:Sun Nov 20 21:55:16 CET 2016年。现在是世界标准时间:2016
。– f35

@ f35我有同样的问题。使用带有SSD驱动器的Dell XPS 13 9350进行双重引导。使用fsck恢复超级块后将引导进入Ubuntu 16.10,并且从Ubuntu重新引导没有问题。将从Ubuntu启动到Windows 10并重新启动没有问题。但是,在重启进入Ubuntu时,同样的超级块错误需要如上所述的修复。尝试以下答案(禁用块级备份服务),但未解决。还要确认时钟与您上面的评论相同。有人知道为什么会这样吗?
samleighton87

Answers:


12

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

问题与ext2fsd有关,后者显然不支持64位功能和/或meta_csum功能。安装ext2fsd足以破坏ext4分区就足够了。无需将它们安装在Windows中。

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

sudo tune2fs -l /dev/[sdXX]

其中[sdXX]代表所讨论的ext4分区。


4
谢谢,它也可以启动,我认为这是一个更好的解决方案。我们无需重新安装linux系统即可完成操作:从实时CD:sudo tune2fs -O ^ metadata_csum,^ 64bit / dev / sdXX
f35

@ f35:请注意,实时CD / USB必须是Ubuntu 16.10,因为早期版本的Ubuntu对元数据校验和一无所知。
krumpelstiltskin

如果您有另一个带有fat32分区的USB驱动器,并且您在上面放置了e2fslibs 1.43和e2fsprogs 1.43 debian软件包,dpkg或者udpkg也可以通过它们进行安装,则可以使用早期的liveCD / DVD或其他任何东西。
Wyatt8740

多么可怕的程序。
最大清除程序

“无需将它们安装在Windows中。” 为什么每次启动Windows都会出现此问题?
quietContest

10

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


2
谢谢!从Windows卸载
ext2fsd

2

我有一个适合我的解决方案(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计划程序编写一个在启动时启动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)

1
我的linux根分区未显示在diskpart中。知道为什么吗?
Darksworm

2

在我的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

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


1
不支持Ubuntu 16.10,因此您应该升级!
Zanna

在Ubuntu 18.04上使用0.69的情况相同。显然,ext2fs在当前版本的Ubuntu中仍然存在问题。
乔纳斯(Jonas)'18年

-1

Windows 10块级备份服务已损坏Ubuntu分区上的Superblock。通过控制面板禁用。


这不起作用
samleighton87 '16

我可以确认:禁用wbengine后,我仍然
遇到
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.