Jak mogę zapobiec uszkodzeniu superbloku ext4 przez Windows 10 za każdym razem?

21

Mam komputer z systemem Ubuntu / Windows z podwójnym uruchomieniem od ponad 5 lat. Ostatnia działająca konfiguracja to: Windows 10 i Ubuntu 16.04 LTS.

Instaluję Ubuntu 16.10 na partycji Linux i mam pewne problemy:

  • Jeśli uruchomię się tylko w systemie Linux, nie ma problemów, działa dobrze.
  • Jeśli uruchomię system Windows, nie ma problemu, system Windows działa poprawnie.
  • Jeśli uruchamiam Linux po Windows, mam błąd superbloku i spadam do busybox.

Jeśli przywrócę superblok za pomocą

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

Mogę uruchomić system Linux, ale po kolejnym uruchomieniu systemu Windows te same problemy występują ponownie.

Oczywiście próbowałem znaleźć rozwiązania:

  • chkdski testdiskpodczas gdy na Windows.
  • Usuwam partycję rozszerzoną i pozwalam instalatorowi Linux na ich odtworzenie.
  • Utwórz przez i, część rozszerzoną + ext4 i zamień i wybierz te partycje podczas procesu instalacji.

Tabela partycji ( 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

Zrobiłem więcej testów bez powodzenia:

  • Usunąłem rozszerzoną partycję Linuksa
  • Rozszerzyłem partycję Windows na pełny dysk
  • Uruchomiłem chkdsk /F /Rna tej nowej partycji Windows → po kilku godzinach wszystko jest w porządku
  • Ponownie zainstalowałem Ubuntu 16.10 i pozwoliłem, aby program instalacyjny zmienił rozmiar dysku i utworzył część ext4 i swap.
  • Uruchamiam Linux → nie ma problemu
  • Uruchamiam Windows → nie ma problemu (wchodzę do menu Windows, które pozwala mi wybierać między Windows i Linuxem, wybieram Windows)
  • Uruchamiam Linux: ten sam problem ponownie (błąd superbloku)

Aktualizacja: dokładny błąd superbloku:

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

Aby to naprawić:

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

działa dobrze, ale po uruchomieniu systemu Windows problem pojawia się ponownie ...

Aktualizacja 2: Z W10 mogę zamontować partycję ext4 z Linuksem za pomocą ext2narzędzia W10 . Działa dobrze, widzę pliki. Ale potem ten sam problem, gdy uruchamiam się w systemie Linux: błędy superbloku.

Oczywiście, jeśli po prostu uruchomię W10 (bez logowania) i zrestartuję Linux, problem też tam będzie.

Problem był obecny w W10 1511, zaktualizowałem do W10 1607: ten sam problem

Widziałem, że nie jestem sam na ziemi z tym problemem, ale nie widziałem żadnego rozwiązania.

update2: Usunąłem partycję linux i swap i utworzyłem nową partycję z systemu Windows. Następnie ponownie zainstalowałem Ubuntu 16.10 => ten sam problem

aktualizacja 3: Początek rozwiązania Być może znalazłem rozwiązanie. Podczas logowania w systemie Windows: Po uruchomieniu polecenia diskpart, gdy ustawiony jest wolumin linux, offline nie ma już problemu podczas uruchamiania systemu Linux.

Teraz muszę znaleźć sposób automatycznego ustawienia głośności offline (regedit?)

f35
źródło
Czy systemy Windows i Linux są zainstalowane w systemie UEFI BIOS lub starszym systemie BIOS? Czy zmieniasz jakieś ustawienia BIOS-u podczas przełączania między Windows a Ubuntu? Czy korzystasz z macierzy RAID do konfiguracji pamięci? Czy uzyskałeś dostęp do systemu plików ext z Windows za pomocą sterownika systemu plików takiego jak Ext2fsd?
David Foerster,
BIOS UEFI: nie, zmiana w BIOS: nie, RAID nie (to MSI u270), dostęp do partycji linux z Windows: nie. Wystarczy uruchomić system Windows (bez logowania) i uruchomić ponownie z Ubuntu, aby problem pojawił się. Dzięki, aby zwrócić uwagę na mój problem
f35
Jaki błąd superbloku? Czy to nie problem z zegarem? Jeśli czas przechowywany w superbloku jest krótszy niż ten zgłaszany przez twardy zegar, możesz mieć ten problem. Staraj się przechowywać czas w UTC w zegarze sprzętowym zarówno w systemie Linux, jak i Windows.
solsTiCe
@solsTiCe: Sprawdź moją aktualizację w początkowym poście pod kątem dokładnego błędu superbloku. Zegar w bios to UTC, zegar w Windows to UTC z czasem lokalnym, zegar w Ubuntu: sudo dpkg-rekonfiguruj tzdata Bieżąca domyślna strefa czasowa: „Europa / Paryż” Czas lokalny to: Nd 20 lis 21:55:16 CET 2016. Czas uniwersalny jest teraz: Nd 20 listopada 20:55:16 UTC 2016.
f35
@ f35 Mam ten sam problem. Podwójne uruchamianie z Dell XPS 13 9350 z dyskiem SSD. Uruchomi się do Ubuntu 16.10 po przywróceniu superbloku z fsck i bez problemów z ponownym uruchomieniem z Ubuntu. Uruchomi się do systemu Windows 10 z Ubuntu i zrestartuje się bez problemu. Jednak przy ponownym uruchomieniu do Ubuntu występuje ten sam błąd superbloku, który wymaga naprawy jak powyżej. Wypróbowałem odpowiedź poniżej (wyłącz usługę tworzenia kopii zapasowych na poziomie bloku), ale nie naprawiłem. Potwierdź również, że zegary są takie same jak w powyższym komentarzu. Czy ktoś wie, dlaczego tak się dzieje?
samleighton87,

Odpowiedzi:

12

Przeprowadziłem pewne badania i wydaje się, że od czasu ext2fsprogs 1.43 (Ubuntu 16.10), 64bit i metadata_csumfunkcje są włączone, gdy tworzony jest nowy system plików ext4. Zrobiłem świeżą instalację Ubuntu 16.10, ale przed instalacją zacząłem sesję na żywo USB i usunąłem 64bit i metadata_csumfunkcje dla ext4 /etc/mke2fs.conf. Po tym uruchomiłem instalator z tej sesji na żywo i teraz mogę uruchomić system Windows 10 bez uszkodzenia moich partycji ext4 (musisz ponownie sformatować partycje ext4 podczas instalacji Ubuntu 16.10).

Problem związany jest z ext2fsd, który oczywiście nie obsługuje funkcji 64-bitowej i / lub funkcji metadata_csum. Wystarczy mieć zainstalowany ext2fsd, aby uszkodzić partycje ext4. Nie trzeba ich montować w systemie Windows.

Możesz sprawdzić, czy te funkcje są włączone za pomocą następującego polecenia:

sudo tune2fs -l /dev/[sdXX]

gdzie [sdXX] oznacza daną partycję ext4.

hempel
źródło
4
Dzięki, to też wokuje i myślę, że to lepsze rozwiązanie. Możemy to zrobić bez ponownej instalacji systemu Linux: z płyty CD na żywo: sudo tune2fs -O ^ metadata_csum, ^ 64bit / dev / sdXX
f35
@ f35: pamiętaj, że Live CD / USB musi mieć wersję Ubuntu 16.10, ponieważ wcześniejsze wersje Ubuntu nie wiedzą nic o sumie kontrolnej metadanych.
krumpelstiltskin
Możesz użyć wcześniejszych liveCD / DVD / cokolwiek, jeśli masz inny napęd USB z partycją fat32 i umieścisz na nim pakiety debian e2fslibs 1.43 i e2fsprogs 1.43 i zainstalujesz je za pomocą jednego dpkglub drugiego udpkg.
Wyatt8740
co za okropny program.
max pleaner
„Nie trzeba ich montować w systemie Windows”. Dlaczego ten problem występuje przy każdym uruchomieniu systemu Windows?
quietContest
10

Mam ten sam problem i wydaje mi się, że jest to sterownik systemu plików Windows 10 ext2fsd. Może też dla ciebie? Po odinstalowaniu ext2fsd (wersja 0.68) mogę uruchamiać system Windows 10 tak często, jak chcę, a partycje ext4 pozostają czyste. Po zainstalowaniu ext2fsd wszystkie partycje ext4 ulegają uszkodzeniu bez względu na to, czy są zamontowane czy nie.

hempel
źródło
2
Dzięki! Odinstalowanie ext2fsd z Windows rozwiązało mój problem
Yohanes Gultom
2

Mam rozwiązanie, które działa dla mnie (diskpart to mój przyjaciel)

1) zidentyfikuj partycję linux w oknach administracyjnych cmd:

diskpart
list volume

możesz zobaczyć swoją partycję linuksową

  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>

W moim przypadku: Tom 3

2) utwórz skrypt diskpart za pomocą notatnika utwórz plik volume3offline.txt

select volume 3
offline volume
exit

3) utwórz plik nietoperza za pomocą notatnika utwórz plik govolume3offline.bat w tym samym katalogu

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

4) Utwórz zaplanowane zadanie Otwórz harmonogram Windows Tash Zaprogramuj zadanie uruchamiające govolume3offline.bat w czasie uruchamiania

5) sprawdź, czy wszystko jest w porządku po ponownym uruchomieniu systemu Windows

diskpart
list volume

twój wolumin linux powinien być offline

Uruchom ponownie w systemie 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
źródło
1
Moja partycja root Linux nie wyświetla się w partycji dysku. Masz pomysł, dlaczego?
Darksworm,
2

Na moim dysku twardym GPT Ubuntu 16.10 działa równolegle z Windows 7.

Natknąłem się na problem z uszkodzeniem superbloku udokumentowany tutaj, ponieważ zapomniałem o zainstalowaniu ext2fs w przeszłości i nadal działał jako usługa Windows w tle.

Nowy ext2fs v0.69 mówi, że naprawia błąd uszkodzenia superbloku i zainstalowałem go z http://www.ext2fsd.com/ . Jednak „ext2fs Manager” pokazał mój sformatowany dysk ext4 jako ext3 i nie był dostępny po zamontowaniu pod Windows.

Więc całkowicie odinstalowałem ext2fs i zrobiłem to

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

To rozwiązało problem superbloku i wracam do normy.

użytkownik774876
źródło
1
Ubuntu 16.10 nie jest obsługiwane, dlatego powinieneś dokonać aktualizacji!
Zanna
To samo doświadczenie z 0.69 z Ubuntu 18.04. ext2fs wciąż ma problemy z aktualnymi wersjami Ubuntu.
Jonas
-1

Superblock na partycji Ubuntu jest uszkodzony przez usługę tworzenia kopii zapasowych na poziomie bloku Windows 10. Wyłącz za pomocą panelu sterowania.

dave_melb
źródło
To nie zadziałało
samleighton87,
Mogę potwierdzić: przy wyłączonym wbengine nadal mam problem
f35