V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

mbr2gptでエラーが出て苦労の挙句解決できたのでメモ

背景

中古のノートPCを購入(CPU: Intel i5-8350U OS:windows 11 Pro)したのだが何かおかしい。

・セキュアbootになっていない
パーティションタイプがMBRになっている

CPUはwindows 11サポート対象だが上記はシステム要件を満たしていない。なのに動作している。windows 11のクリーンインストールでもなく通常のupgrade手順でもなく、抜け道でupgradeされたものなのかも(CPU、TPMはシステム要件を満たしているので通常のupgrade手順で出来るはずだが。 おそらく、中古PC販売者がCPU等がもっと旧いPCでも同じ手順で出来る様に全て抜け道で行ったのではないかと推測。 )

動いているとはいえシステム要件を満たしていないのは気になるので、MBRからGPTへの変換やセキュアbootに変更しようとした。 ところがMBRからGPTへの変換でエラーが出て解決に苦労したので、解決した方法を備忘録として残す。

なお、遭遇したエラーは
mbr2gpt /validate /disk:0 /allowFullOS   コマンドに対して

MBR2GPT cannot find OS partition for disk 0

が返ってくるというものであった。

対応のアウトライン

次の順で行った。 なお、コマンドは管理者権限でのコマンドプロンプトを使う事。powershellでは管理者権限であっても動かないものがある。また、通常のコマンドプロンプトでも動かないものがある。

1.ディスクの構成を確かめる
2.問題個所を除去する
3.mbrからgptへ変換する

これらの対策は、
https://www.diskpart.com/gpt-mbr/mbr2gpt-cannot-find-os-partition-7201.html
のページのsolution-1によるものです。

なお、このエラーはwindowsのupgradeの際にやり方によりゴミが残る事によるものだそう。

ディスクの構成を確かめる

diskpartコマンドでdiskpartモードに入ってから行う。

・list disk  でディスク番号を確認。その後diskを選択。 
 sel disk 0 や sel disk 1などでwindowsがインストールされているディスクを選択。

・list parで、boot ディレクトリーがありそうなpartition を確認。

・該当partitionにドライブletterがアサインされていなければ、
sel par コマンドと assign letter=w などドライブletterを割り当てる。
 例: sel par 2 then assign letter=b

・diskpartから抜け出し、 dir /a b:\  などで、boot <dir> があるpartitionか確認する

・もし そのパーティションにboot <dir>が無かった場合は、別のパーティションで同様に探す

問題個所を除去する

bドライブにbootディレクトリーがあったとして説明する。

bcdedit /store b:\boot\bcd /enum all を実行し、unknown となっているところが無いか調べる。 

もしunknownがあれば、 そこの部分の {identifier}部分を使って、
bcdedit /store b:\boot\bcd /delete {identifier}  にてその部分を削除する。

これをunknownが無くなるまで繰り返す。

mbrからgptへ変換する

disk0がwindowsが入っているdiskとして説明。

mbr2gpt /validate /disk:0 /allowFullOS

を行い、これがsuccessfully completed となったら

mbr2gpt /convert /disk:0 /allowFullOS

にてMBRからGPTに変換する。

後始末:BIOSでレガシーからUEFI起動に変更

再起動しBIOSを立ち上げ起動方法を変更する

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。

CAPTCHA



あなたはIPv4でアクセスしています