Comment puis-je empêcher Windows 10 de corrompre le superbloc ext4 à chaque fois?

21

J'ai un PC avec Ubuntu / Windows à double démarrage depuis plus de 5 ans. La dernière configuration de travail était: Windows 10 et Ubuntu 16.04 LTS.

J'installe Ubuntu 16.10 sur la partition Linux et ai quelques problèmes:

  • Si je démarre uniquement sur Linux, aucun problème, cela fonctionne très bien.
  • Si je démarre Windows, pas de problème, Windows fonctionne très bien.
  • Si je démarre Linux après Windows, j'ai une erreur de superbloc et je tombe sur busybox.

Si je restaure le superbloc avec

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

Je peux démarrer Linux mais après un autre démarrage vers Windows, les mêmes problèmes se reproduisent.

Bien sûr, j'ai essayé des solutions trouvées:

  • chkdsket testdisksur les fenêtres.
  • Je supprime la partition étendue et laisse le programme d'installation Linux les recréer.
  • Créez par et, la partition étendue + ext4 et permutez et sélectionnez ces partitions pendant le processus d'installation.

La table de partition ( 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

J'ai fait plus de tests sans succès:

  • J'ai supprimé la partition étendue Linux
  • J'ai étendu la partition Windows sur le disque complet
  • J'ai lancé un chkdsk /F /Rsur cette nouvelle partition Windows → après quelques heures tout va bien
  • J'ai réinstallé Ubuntu 16.10 et laissé le programme d'installation redimensionner le disque et créer la partie ext4 et swap.
  • Je démarre Linux → pas de problème
  • Je démarre Windows → pas de problème (j'atteins le menu Windows qui me laisse choisir entre Windows et Linux, je choisis Windows)
  • Je démarre Linux: même problème à nouveau (erreur de superbloc)

Mise à jour: l'erreur exacte de superbloc:

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

Pour le réparer:

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

fonctionne bien, mais après un démarrage de Windows, le problème est là encore ...

Mise à jour 2: à partir de W10, je peux monter la partition linux ext4 avec l' ext2outil W10 . Cela fonctionne bien, je peux voir les fichiers. Mais après ça, même problème, quand je démarre sur Linux: erreurs de superbloc.

Bien sûr, si je démarre simplement W10 (pas de connexion) et redémarre Linux, le problème est là aussi.

Le problème était présent avec W10 1511, j'ai mis à niveau vers W10 1607: même problème

J'ai vu que je n'étais pas seul sur terre avec ce problème, mais je n'ai vu aucune solution.

update2: J'ai supprimé la partition linux et swap et créé une nouvelle partition à partir de Windows. Ensuite, j'ai réinstallé Ubuntu 16.10 => même problème

mise à jour 3: le début de la solution J'ai peut-être trouvé une solution. Lorsque connecté dans Windows: Avec la commande diskpart, lorsque le volume linux est défini, offline il n'y a plus de problème lorsque je démarre linux.

Je dois maintenant trouver comment régler automatiquement le volume hors ligne (regedit?)

f35
la source
Windows et Linux sont-ils installés en mode BIOS UEFI ou en mode BIOS hérité? Modifiez-vous les paramètres du BIOS lorsque vous basculez entre Windows et Ubuntu? Utilisez-vous une sorte de RAID pour votre configuration de stockage? Avez-vous accédé au système de fichiers ext depuis Windows avec un pilote de système de fichiers comme Ext2fsd?
David Foerster
Bios UEFI: non, changement dans le BIOS: non, RAID non (c'est un MSI u270), accès à la partition Linux depuis Windows: non. Il suffit de démarrer Windows (pas de connexion) et de redémarrer avec Ubuntu pour faire apparaître le problème. Merci de prêter attention à mon problème
f35
Quelle erreur de super bloc? N'est-ce pas un problème d'horloge? Si le temps stocké dans le super bloc est inférieur à celui signalé par l'horloge matérielle, vous pourriez avoir ce problème. Essayez de stocker l'heure en UTC dans l'horloge matérielle sur Linux et Windows.
solsTiCe
@solsTiCe: Vérifiez ma mise à jour dans le post initial pour l'erreur exacte de superbloc. L'horloge dans le bios est UTC, l'horloge dans Windows est UTC avec l'heure locale, l'horloge dans Ubuntu: sudo dpkg-reconfigure tzdata Fuseau horaire par défaut actuel: 'Europe / Paris' L'heure locale est maintenant: Dim Nov 20 21:55:16 CET 2016. L'heure universelle est maintenant: dim. 20 nov. 20:55:16 UTC 2016.
f35
@ f35 J'ai le même problème. Double démarrage avec Dell XPS 13 9350 avec lecteur ssd. Démarre sous Ubuntu 16.10 après avoir restauré le superbloc avec fsck et aucun problème de redémarrage depuis Ubuntu. Va démarrer sous Windows 10 à partir d'Ubuntu et redémarrer sans problème. Cependant, lors du redémarrage dans Ubuntu, la même erreur de superbloc nécessitant une correction comme ci-dessus. Réponse essayée ci-dessous (désactiver le service de sauvegarde au niveau du bloc) mais pas corrigé. Confirmez également que les horloges sont les mêmes que dans votre commentaire ci-dessus. quelquun sait pourquoi cela se passe?
samleighton87

Réponses:

12

J'ai fait quelques recherches et il semble que depuis ext2fsprogs 1.43 (Ubuntu 16.10), le 64bit et les metadata_csumfonctionnalités sont activés lorsqu'un nouveau système de fichiers ext4 est créé. J'ai fait une nouvelle installation d'Ubuntu 16.10, mais avant l'installation, j'ai commencé la session USB en direct et supprimé le 64 bits et les metadata_csumfonctionnalités d'ext4 de /etc/mke2fs.conf. Après cela, j'ai exécuté le programme d'installation de cette session en direct et maintenant je peux démarrer Windows 10 sans corrompre mes partitions ext4 (vous devez reformater vos partitions ext4 lors de l'installation d'Ubuntu 16.10).

Le problème est lié à ext2fsd qui ne prend évidemment pas en charge la fonctionnalité 64 bits et / ou la fonctionnalité metadata_csum. Il suffit d'installer ext2fsd pour corrompre vos partitions ext4. Pas besoin de les monter sous Windows.

Vous pouvez vérifier si ces fonctionnalités sont activées avec la commande suivante:

sudo tune2fs -l /dev/[sdXX]

où [sdXX] représente la partition ext4 en question.

chanvre
la source
4
Merci, ça marche aussi et c'est une meilleure solution je pense. Nous pouvons le faire sans réinstaller le système linux: à partir d'un CD live: sudo tune2fs -O ^ metadata_csum, ^ 64bit / dev / sdXX
f35
@ f35: notez que le CD / USB live doit être Ubuntu 16.10, car les versions antérieures d'Ubuntu ne savent rien de la somme de contrôle des métadonnées.
krumpelstiltskin
Vous pouvez utiliser des CD / DVD / liveCD antérieurs si vous avez un autre lecteur USB avec une partition fat32 et que vous y mettez des paquets Debian e2fslibs 1.43 et e2fsprogs 1.43 et les installez via dpkgou udpkgbien.
Wyatt8740
quel horrible programme.
pleaner max
"Pas besoin qu'ils soient montés sous Windows." Pourquoi ce problème se produit-il à chaque démarrage de Windows?
quietContest
10

J'ai le même problème et pour moi, il semble que ce soit le pilote du système de fichiers Windows 10 ext2fsd. Peut-être aussi pour toi? Lorsque je désinstalle ext2fsd (version 0.68), je peux démarrer Windows 10 aussi souvent que je le souhaite et les partitions ext4 restent propres. Avec ext2fsd installé, toutes les partitions ext4 sont corrompues, qu'elles soient montées ou non.

chanvre
la source
2
Merci! La désinstallation d'ext2fsd de Windows a résolu mon problème
Yohanes Gultom
2

J'ai une solution qui fonctionne pour moi (diskpart est mon ami)

1) Identifiez la partition Linux dans les fenêtres d'administration cmd:

diskpart
list volume

vous pouvez voir votre partition 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>

Dans mon cas: Volume 3

2) créer un script diskpart avec le bloc-notes créer le fichier volume3offline.txt

select volume 3
offline volume
exit

3) créer un fichier bat avec le bloc-notes créer le fichier govolume3offline.bat dans le même répertoire

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

4) créer une tâche planifiée Ouvrez le planificateur de tâches Windows Programmez une tâche qui lance govolume3offline.bat au démarrage

5) Vérifiez si tout va bien après un redémarrage dans Windows

diskpart
list volume

votre volume linux doit être hors ligne

Redémarrez sous 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)
f35
la source
1
Ma partition racine Linux n'apparaît pas dans diskpart. Une idée pourquoi?
Darksworm
2

Sur mon disque dur GPT, Ubuntu 16.10 fonctionne en parallèle de Windows 7.

J'ai rencontré le problème de corruption de superbloc documenté ici, car j'avais oublié d'avoir installé ext2fs dans le passé et il fonctionnait toujours en tant que service Windows en arrière-plan.

Le nouveau ext2fs v0.69 dit qu'il corrige le bogue de corruption de superbloc et je l'ai installé à partir de http://www.ext2fsd.com/ . Cependant, le "gestionnaire ext2fs" a montré mon disque formaté ext4 en tant qu'ext3 et il n'était pas accessible après le montage sous Windows.

Donc, j'ai complètement désinstallé ext2fs et l'ai fait

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

Cela a résolu le problème du superbloc et je suis revenu à la normale.

user774876
la source
1
Ubuntu 16.10 n'est pas pris en charge, vous devez donc mettre à niveau!
Zanna
Même expérience avec 0.69 avec Ubuntu 18.04. ext2fs a clairement toujours des problèmes avec les versions actuelles d'Ubuntu.
Jonas
-1

Le superbloc sur la partition Ubuntu est corrompu par le service de sauvegarde de niveau bloc de Windows 10. Désactivez via le panneau de configuration.

dave_melb
la source
Cela n'a pas fonctionné
samleighton87
Je peux confirmer: avec wbengine désactivé, j'ai toujours le problème aussi
f35