GNU/Linux >> Tutoriels Linux >  >> Ubuntu

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

J'ai un pc avec dual-boot Ubuntu/Windows 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 j'ai quelques problèmes :

  • Si je ne démarre que sous Linux, pas de problème, ça marche bien.
  • Si je démarre Windows, pas de problème, Windows fonctionne correctement.
  • Si je démarre Linux après Windows, j'ai une erreur superbloc 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 de Windows, les mêmes problèmes se reproduisent.

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

  • chkdsk et testdisk sous Windows.
  • 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 refait d'autres tests sans succès :

  • J'ai supprimé la partition étendue Linux
  • J'ai étendu la partition Windows au 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 la partie ext4 et swap.
  • Je démarre Linux → pas de problème
  • Je démarre Windows → pas de problème (j'accède au menu Windows qui me laisse choisir entre Windows et Linux, je choisis Windows)
  • Je démarre Linux :encore le même problème (erreur superbloc)

Mettre à 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 de nouveau là…

Update 2 :
A partir de W10, je peux monter la partition linux ext4 avec le W10 ext2 outil. Cela fonctionne bien, je peux voir les fichiers. Mais après ça, même problème, quand je boot sous Linux :erreurs superbloc.

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

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

Connexe :Comment vérifier les erreurs dans la RAM via Linux ?

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.
Puis j'ai réinstallé Ubuntu 16.10 => encore le même problème

update 3 :Un début de solution
J'ai peut-être trouvé une solution.
Une fois connecté à 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 mettre le volume hors ligne automatiquement (regedit ?)

Meilleure réponse

J'ai fait quelques recherches et il semble que depuis ext2fsprogs 1.43 (Ubuntu 16.10), le 64bit et le metadata_csum les fonctionnalités sont activées 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 metadata_csum fonctionnalités pour ext4 depuis /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'avoir ext2fsd installé pour corrompre vos partitions ext4. Il n'est pas nécessaire 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.


Ubuntu
  1. Comment rechercher sur le Web à partir d'un terminal sous Linux

  2. Linux - Comment démarrer une partition Windows à partir de la ligne de commande Grub ?

  3. Comment accéder aux partitions Windows à partir du terminal Linux ?

  4. Comment empêcher les utilisateurs d'accéder au répertoire racine ?

  5. Comment créer une clé USB Windows 10 amorçable sous Linux avec le nouveau WoeUSB

Comment accéder au bureau Windows distant à partir d'Ubuntu Linux

Comment définir ou modifier le fuseau horaire sous Linux

Comment exécuter Ubuntu en utilisant le sous-système Windows pour Linux

Comment accéder aux partitions Linux à partir de Windows 10

Comment se connecter au WiFi depuis le terminal dans Ubuntu Linux

Comment empêcher PHP-FPM de consommer trop de RAM sous Linux