LinuxデュアルブートPCでWindows10無料アップグレードしたらパーティションぶっ壊された話

Windows10にアップグレードすると自動的にパーティションが一つ増えます。変なパーティションの構成にしたままアップグレードしようとすると、これが原因でデュアルブートpcが起動できなくなります。こうなってしまうと、パーティション修復ソフトで元に戻す必要があります。
7
ぷー くま ぷー @pu_kuma_pu

先日、UbuntuとWindows7のデュアルブートpcで、Windows 10にアップグレードしようとしたらエラー起きてヒドイ目にあった。

2016-06-14 13:57:54
ぷー くま ぷー @pu_kuma_pu

Windows10にアップしている最中にエラーコードc1900101-20004を吐いてアップデートが中止された。再起動をかけると grub rescueモードに突入。

2016-06-14 14:00:46
ぷー くま ぷー @pu_kuma_pu

error: no such partition. Entering rescue mode... grub rescue> という表示

2016-06-14 14:01:41
ぷー くま ぷー @pu_kuma_pu

grubのlsコマンドを叩くと4つあったはずのパーティションが3つに減っている。ubuntuのルートディレクトリの入ったパーティションが消された模様。

2016-06-14 14:05:12
ぷー くま ぷー @pu_kuma_pu

調査してみるとWindows10アップグレードでは新しいパーティションが作られるらしく、その作業でおかしくなった可能性が大。askubuntu.com/a/662714

2016-06-14 14:10:51
ぷー くま ぷー @pu_kuma_pu

そこでパーティションを調べるために、壊れたpcにUbuntu16.04のLive USBを挿して立ち上げようと試みるも、Live USBのubuntuが起動中にエラー起こして止まってしまうという謎の現象が起きる。

2016-06-14 14:16:10
ぷー くま ぷー @pu_kuma_pu

さらには、昔作った幾つかのLinux Live CD(古いUbuntu, Puppy Linux etc)の起動にも失敗してしまう。HDDが壊れてしまうと、一時ファイル保管等にHDDを使うLinux Live CDも立ち上がらなくなる模様。

2016-06-14 14:21:00
ぷー くま ぷー @pu_kuma_pu

調査すると、壊れたパーティションの修復には testdisk というソフトウェアを使う必要があるらしい。pctrouble.net/software/testd… を見るとUltimate Boot CDを使うとよいらしいのでこれをまず試してみた。

2016-06-14 14:25:10
ぷー くま ぷー @pu_kuma_pu

でも Ultimate Boot CDからtestdiskを動かすために Parted Magicを起動させようとしたが、こいつもまた動いてくれなくて途方に暮れる。pctrouble.net/software/testd…

2016-06-14 14:27:41
ぷー くま ぷー @pu_kuma_pu

testdiskの公式ページによるとtestdiskが含まれるLive CDは色々選択肢があるらしい。 cgsecurity.org/wiki/TestDisk_…

2016-06-14 14:30:05
ぷー くま ぷー @pu_kuma_pu

その中からSystemRescueCdが実績豊富らしいのでこれを選択した。 system-rescue-cd.org/Main_Page

2016-06-14 14:31:25
ぷー くま ぷー @pu_kuma_pu

SystemRescueCDをUSBにインストするために次を参照。 system-rescue-cd.org/Sysresccd-manu… Aのisohybridコマンドを用いるやり方を選んだ。

2016-06-14 14:34:52
ぷー くま ぷー @pu_kuma_pu

Ubuntu16.04 Live USBを起動させた別のpcから sudo apt install syslinux-utils してisohybridをインストール。次に、ダウンロードした ISOファイルを isohybridで下処理してから、USBにddでコピーした。

2016-06-14 14:37:27
ぷー くま ぷー @pu_kuma_pu

SystemRescueCDは問題なく起動できた。一番上のデフォルトブートオプションを選択し、途中で日本語キーボードを選択して、しばらく待つと root@sysresccd /root % のプロンプトが出てくる。 system-rescue-cd.org/Screenshots

2016-06-14 14:44:18
ぷー くま ぷー @pu_kuma_pu

そうしたら、 testdisk と打ち込めば testdiskが起動してくれる。 あとは pctrouble.net/software/testd… に書いてあるやり方どおりにやったらパーティションを元の構成に回復できた。

2016-06-14 14:50:03
ぷー くま ぷー @pu_kuma_pu

ここでpcを再起動すると再び grub rescue が出てしまう。 grubが壊れているため今度はgrubを再インストする必要がある。このgrub rescueで lsコマンドを叩くと、今度は元通りのパーティションが表示されているので一安心。

2016-06-14 14:52:31
ぷー くま ぷー @pu_kuma_pu

ubuntu Live USBを挿してそこからgrubを再インストしてようやく作業は終了。 help.ubuntu.com/community/Grub…

2016-06-14 14:56:30
ぷー くま ぷー @pu_kuma_pu

pcを起動させると、いつもの紫色したgrubの画面が出る。ubuntuを起動するも特にダメージ無し。grubの画面では Windows7 が項目に上がっていた。Windows 7を起動させると、いきなりWindows 10のアップ中の田んぼのマークが出てきた。

2016-06-14 15:01:37
ぷー くま ぷー @pu_kuma_pu

しばらくすると 「以前のバージョンのWindowsを復元しています...」のメッセージが出た。待っていると見慣れたWindows7のようこそ画面になって、すべて元通りになった。

2016-06-14 15:03:41
ぷー くま ぷー @pu_kuma_pu

Ubuntu側からGpartedを使ってHDDの構成を見ると、先頭のWindows7のパーティションの後ろに、見慣れない「未割り当て」の451MiBの領域が出来ていた。これがWindows10アップグレードの際にできたパーティションの残骸らしい。

2016-06-14 15:12:12
ぷー くま ぷー @pu_kuma_pu

もともと、パーティションは sda1がntfsでwindows7用 sda2がext4でubuntuのルート sda3がlinux-swap領域 sda1〜3はプライメリーパーティション。 sda4が拡張領域でその中にsda5としてubuntuの/homeが入っていた。

2016-06-14 15:16:33
ぷー くま ぷー @pu_kuma_pu

sda4の拡張パーティション内はext4のsda5がすべて占めていた。 この状態で新たにパーティションを作ろうとすると、sda5を縮小して論理パーティションを切り出す必要がある。しかしWindowsからはext4の操作ができないのでアップグレードに失敗したのかもしれない。

2016-06-14 15:19:36
ぷー くま ぷー @pu_kuma_pu

結局、HDDが小さいこともあって、余ってたHDDに一からUbuntuとWindows7を再インストすることにした。Ubuntuのパーティションは全て論理パーティションにするよう注意した。

2016-06-14 15:23:16
ぷー くま ぷー @pu_kuma_pu

今度は sda1が NTFS sda5,6,7 がUbuntu用のパーティションとした。 この状態ならsda1の後ろに新しいプライメリーパーティションを作ることが可能となる。 こうしてから再びWindows10のアップグレードをしたら今度は無事成功して一件落着。

2016-06-14 15:26:59