どっかの高専生の技術備忘録

10割自分の備忘録用のブログ。

デュアルブートしていたマシンで、OSを削除したのにブートオプションが残っている場合の対処法

目次

何が起こったか

Linux mintとのデュアルブート環境でLinux mintが入っていたパーティションを削除し、
その分をWindowsに割り当てたけど、起動オプションにLinux mintが残り続ける。
その起動オプションから起動すると GNU GRUBminimal bash like is supportedと表示される状態。
別に起動するときWindowsを選べばいいんだけど、気持ち悪いから消したい。
注意
UEFIブートなマシンなので、それ前提で書いています。その点、注意してください。

原因

Linux mintが入っていたパーティションは消したけど、ブートローダまでは消せてなかった模様。
てっきり、ブートローダLinux用に作ったパーティションに入ってると思ったら
Windowsブートローダと同じブートセクターに入っていた
インストールのときにミスった可能性がある。。。

解決方法

今回、Windowsとのデュアルブートだったので、
Windowsの回復オプションを起動させて、コマンドプロンプトからブートローダを消していく方法をやってみる。
(bootrecで直らないかなぁ、ってやってみたけど駄目だったOTL)
もし、LinuxLinuxとのデュアルブートだったり、Windowsの回復オプションが起動できない場合は

  • Windowsの起動メディアを作ってそこから起動
  • LinuxのはいったLive USBから起動

こんな感じで、別の方法を取る必要があると思う。
ちなみに、Windowsの回復オプションを表示する方法はShift キーを押しながら、GUIのPCを再起動をすると回復オプションが表示される

コマンドプロンプトの表示

回復オプションが表示できたらコマンドプロンプトを起動していく。
オプションの選択->トラブルシューティング->詳細オプション->コマンドプロンプト から起動できる。
起動するとカレントディレクトX:/windows/system32で起動する。
ドライブレターがXなのは回復用パーティションで起動しているからなので問題ない。

diskpartを使ってドライブレターの割り当て

diskpartを使ってブートセクターを操作できるようにする。
おそらく、初期のままだとブートローダのあるパーティションにドライブレターが割あたってなく、操作できないのでここから始めていく。
コマンドプロンプトが起動できたら、diskpartコマンドを実行してdiskpartを起動させる。
起動できると

Microsfot DiskPart バージョン XXXX

Copyright (C) Microsoft Corporation.
コンピューター: XXXXX

DISKPART>

と表示される。
そうしたら、list volumeを実行して、そのディスク上にあるパーティションもといボリュームを表示する。
そうすると

DISKPART> list volume

 Volume ###  Ltr  Label  Fs    Type       Size   Status  Info
 ----------  ---  -----  ----  ---------  -----  ------  ----
 Volume 0     C   OS     NTFS  Partition  XXXGB  正常
 Volume 1         ESP    FAR32 Partition  250MB  正常    非表示
 以下略

な感じで表示される。
ブートローダが入っているのはESP (EFI System Partition)なのでこのボリュームに対してドライブレターを割り当てていく。
ESPについてはここにわかりやすく載っている。
今回はこのVolume 1 に対してEを割り当てていく。
select volume=1を実行するとボリューム 1 が選択されましたと表示され、volume 1を選択状態にできる。
試しにlist volumeをしてみると
そうすると

DISKPART> list volume

 Volume ###  Ltr  Label  Fs    Type       Size   Status  Info
 ----------  ---  -----  ----  ---------  -----  ------  ----
 Volume 0     C   OS     NTFS  Partition  XXXGB  正常
*Volume 1         ESP    FAR32 Partition  250MB  正常    非表示
 以下略

こんな感じで、先頭にアスタリスクが表示されるようになる。
そうしたらassign letter=Eを実行し、ドライブレターを割り当てる。

DISKPART> assign letter=E

DiskPartはドライブ文字またはマウントポイントを正常に割り当てました。

と表示されたのを確認してから、もう一回list volumeをしてみると

DISKPART> list volume

 Volume ###  Ltr  Label  Fs    Type       Size   Status  Info
 ----------  ---  -----  ----  ---------  -----  ------  ----
 Volume 0     C   OS     NTFS  Partition  XXXGB  正常
*Volume 1     E   ESP    FAR32 Partition  250MB  正常    非表示
 以下略

と表示され、実際にEが割り当てられたことが確認できる。
これができたら、exitしてdiskpartは終了させて、
Linux mintブートローダを削除していく。

コマンドプロンプトからブートローダの削除

コマンドプロンプトに戻ってきたら、E:を実行して、カレントディレクトリをE:/に切り替える。
そこでdirしてみるとEFIというディレクトリがあるはずなので、そこに移動する。
そうしたら、MicrosoftDellubuntuやら色々ディレクトリがあるが、
今回消したいのはLinux mintブートローダなので、このubuntuディレクトリをまるまる削除する。
ちゃんと中身を確認して、目的のディレクトリなのを確認してから削除して下さい
自分の環境の場合、ubuntuディレクトリ内は

E:/EFI/ubuntu>dir
 ドライブEnoボリューム ラベルはESPです
 ボリュームのシリアル番号はXXXX-XXXXです

YYYY/MM/DD HH:MM  grubx64.efi
YYYY/MM/DD HH:MM  shimx64.efi
YYYY/MM/DD HH:MM  mmx64.efi
YYYY/MM/DD HH:MM  BOOTX64.CSV
YYYY/MM/DD HH:MM  grub.cfg

このディレクトリを中のファイルまるごと再帰的に削除するには
rd /s E:/EFI/ubuntu と実行すればよい、このとき確認が入るのでYを入力してEnterを押せば削除される。

割り当てたドライブレターを削除する

無事にブートローダが削除できたら、先程ESPに割り当てたドライブレターEを割り当て解除する。
不用意な事故を防ぐためにやっておいた方がいいと思う。。
もう一度diskpartを起動させて、ボリュームの選択、そうしたらremvoe letter=Eを実行する。

DISKPART> remove letter=E
DiskPartはドライブ文字またはマウントポイントを正常に削除しました。

と表示されたのを確認してからlist volumeをしてみると

DISKPART> list volume

 Volume ###  Ltr  Label  Fs    Type       Size   Status  Info
 ----------  ---  -----  ----  ---------  -----  ------  ----
 Volume 0     C   OS     NTFS  Partition  XXXGB  正常
*Volume 1         ESP    FAR32 Partition  250MB  正常    非表示
 以下略

となり、正常にドライブ文字が削除されているのを確認できる。
ここまでくれば、GNU GRUBが表示されることなく、Windowsが起動するようになる。

結論

大人しく、仮想マシンで我慢しておけばよかった。