web-dev-qa-db-ja.com

Windows 10が毎回ext4スーパーブロックを破損するのを防ぐにはどうすればよいですか?

私は5年以上前からUbuntu/Windowsのデュアルブートを搭載したPCを持っています。最後に機能した構成は、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をもう一度ブートした後、同じ問題が再発します。

もちろん、私は見つけた解決策を試しました:

  • 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とスワップ部分を作成しました。
  • 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とスワップパーティションを削除し、Windowsから新しいパーティションを作成しました。その後、Ubuntu 16.10を再インストールしました=>同じ問題をもう一度

更新3:解決策の始まりおそらく解決策を見つけました。 Windowsでログ記録する場合:コマンドdiskpartを使用すると、Linuxボリュームを設定するとofflineになり、Linuxを起動しても問題はありません。

ボリュームを自動的にオフラインに設定する方法を見つける必要があります(regedit?)

21
f35

私はいくつかの調査を行いましたが、ext2fsprogs 1.43(Ubuntu 16.10)以降、新しいext4ファイルシステムの作成時に64ビットおよびmetadata_csum機能が有効になっているようです。 Ubuntu 16.10を新規インストールしましたが、インストールする前にUSBライブセッションを開始し、metadata_csumからext4の64ビットおよび/etc/mke2fs.conf機能を削除しました。この後、このライブセッションからインストーラーを実行し、ext4パーティションを破損せずにWindows 10を起動できるようになりました(Ubuntu 16.10のインストール中にext4パーティションを再フォーマットする必要があります)。

この問題はext2fsdに関連しており、ext2fsdは明らかに64ビット機能やmetadata_csum機能をサポートしていません。 ext4パーティションを破壊するには、ext2fsdをインストールするだけで十分です。それらをWindowsにマウントする必要はありません。

これらの機能が有効になっているかどうかは、次のコマンドで確認できます。

Sudo tune2fs -l /dev/[sdXX]

[sdXX]は問題のext4パーティションを表します。

12
hempel

私は同じ問題を抱えており、私にとってはWindows 10 ext2fsdファイルシステムドライバーのようです。たぶんあなたも? ext2fsd(バージョン0.68)をアンインストールすると、Windows 10を何度でも起動でき、ext4パーティションはクリーンなままです。 ext2fsdをインストールすると、マウントされているかどうかに関係なく、すべてのext4パーティションが破損します。

10
hempel

私に合った解決策があります(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スケジューラーを開くブート時に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)
2
f35

私のGPTハードドライブでは、Ubuntu 16.10がWindows 7と並行して実行されています。

過去にext2fsをインストールしたことを忘れていたため、バックグラウンドでWindowsサービスとして実行されていたため、ここに記載されているスーパーブロック破損の問題に遭遇しました。

新しいext2fs v0.69では、スーパーブロック破損のバグが修正されたため、 http://www.ext2fsd.com/ からインストールしました。ただし、「ext2fsマネージャー」は、ext4でフォーマットされたドライブをext3として表示し、Windowsでマウントした後にアクセスできませんでした。

だから、私はext2fsを完全にアンインストールしました

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

これでスーパーブロックの問題が解決し、正常に戻りました。

2
user774876