web-dev-qa-db-fra.com

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

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

J'ai installé Ubuntu 16.10 sur la partition Linux et j'ai quelques problèmes:

  • Si je ne démarre que sous Linux, pas de problème, cela fonctionne bien.
  • Si je lance Windows, pas de problème, Windows fonctionne bien.
  • Si je lance Linux après Windows, j'ai une erreur de superblocage et je passe à 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 sous Windows, les mêmes problèmes se reproduisent.

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

  • chkdsket testdisklors de l'utilisation de Windows.
  • Je supprime la partition étendue et laisse l'installateur Linux les recréer.
  • Créez par et, la partition étendue + ext4, échangez et sélectionnez ces partitions au cours du 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 d'autres tests sans succès:

  • J'ai enlevé la partition étendue Linux
  • J'ai étendu la partition Windows sur le disque complet
  • J'ai lancé un chkdsk /F /R sur 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 le composant 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 lance Linux: même problème à nouveau (erreur superbloc)

Mise à jour: l'erreur exacte du 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’outil W10 ext2. Cela fonctionne bien, je peux voir les fichiers. Mais après cela, même problème, lorsque je démarre sous Linux: les erreurs de superblocage.

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

Le problème était présent avec W10 1511, je suis passé à W10 1607: même problème

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

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

mise à jour 3: le début de la solution, j'ai peut-être trouvé une solution. Lorsque vous vous connectez dans Windows: Avec la commande diskpartname__, lorsque le volume linux est défini offlinename__, il n’ya plus de problème lorsque j’initialise Linux.

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

21
f35

J'ai fait des recherches et il semble que depuis ext2fsprogs 1.43 (Ubuntu 16.10), les fonctionnalités 64 bits et metadata_csum sont activées lors de la création d'un nouveau système de fichiers ext4. J'ai fait une nouvelle installation d'Ubuntu 16.10, mais avant de procéder à l'installation, j'ai démarré la session USB Live et supprimé les fonctionnalités 64 bits et metadata_csum pour ext4 de /etc/mke2fs.conf. Après cela, j'ai exécuté le programme d'installation en dehors de cette session en direct et je peux maintenant 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 les fonctionnalités 64 bits et/ou métadata_csum. Il suffit que ext2fsd soit installé pour corrompre vos partitions ext4. Pas besoin qu'ils soient montés 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.

12
hempel

J'ai le même problème et pour moi, il semble que ce soit le pilote de système de fichiers Windows 10 ext2fsd. Peut-être pour toi aussi? 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.

10
hempel

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

1) identifiez la partition linux dans les fenêtres d’administration de 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 Ouvrir le planificateur Windows tash Programmez une tâche qui lancera govolume3offline.bat au démarrage

5) vérifier si tout va bien après un redémarrage dans Windows

diskpart
list volume

votre volume linux devrait être hors ligne

Redémarrer 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)
2
f35

Sur mon disque dur GPT, Ubuntu 16.10 s’exécute en parallèle de Windows 7.

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

La nouvelle version 0.62 d'ext2fs indique qu'elle corrige le bogue de corruption de superbloc et que je l'ai installée depuis http://www.ext2fsd.com/ . Cependant, le "gestionnaire ext2fs" indiquait que mon lecteur formaté ext4 était ext3 et qu'il n'était pas accessible après le montage sous Windows.

J'ai donc complètement désinstallé ext2fs et

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

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

2
user774876