如何防止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上的
chkdsk
和testdisk
。 - 我删除了扩展分区,让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_csum
function被启用。 我重新安装了Ubuntu 16.10,但在安装之前,我开始进入USB实时会话,并从/etc/mke2fs.conf
删除了ext4的64位和metadata_csum
function。 在此之后,我将安装程序从此实时会话中运出,现在我可以启动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分区上的超级块。 通过控制面板禁用。