Ubuntuのブートファイルを食べたWindows 7をインストールしました。コンピューターを起動すると、Ubuntuを起動するオプションを提供せずに、Windowsに直接移動します。
Ubuntuを元に戻すにはどうすればよいですか?
Windowsをインストールすると、Windowsはそれがマシン上の唯一のオペレーティングシステム(OS)であるか、少なくともLinuxを考慮しないと想定します。そのため、GRUBを独自のブートローダーに置き換えます。必要なことは、WindowsブートローダーをGRUBに置き換えることです。 GRUBコマンドなどをいじってGRUBを置き換えるためのさまざまな指示を見てきましたが、私にとって最も簡単な方法はchroot
をインストールして実行することですupdate-grub
。 chroot
は、あちこちに物事をリダイレクトしようとする代わりに、実際のインストールで作業できるので素晴らしいです。本当にきれいです。
方法は次のとおりです。
メインパーティションのパーティション番号を決定します。 Sudo fdisk -l
、Sudo blkid
、またはGParted(デフォルトでライブセッションに既にインストールされているはずです)がここで役立ちます。この回答では、/dev/sda2
であると想定していますが、システムに正しいパーティション番号を使用していることを確認してください!
メインパーティションがLVMにある場合、デバイスは代わりに/dev/mapper/
に配置されます。ほとんどの場合、/dev/mapper/{volume}--{os}-root
ここで{volume}
はLVMボリューム名であり、{os}
はオペレーティングシステムです。正確な名前に対してls /dev/mapper
を実行します。
パーティションをマウントします。
Sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
別の/boot
、/var
または/usr
パーティションがある場合、手順2と3を繰り返してこれらをマウントします/mnt/boot
、/mnt/var
、/mnt/usr
にそれぞれパーティション。例えば、
Sudo mount /dev/sdXW /mnt/boot
Sudo mount /dev/sdXY /mnt/var
Sudo mount /dev/sdXZ /mnt/usr
sdXW
、sdXY
、およびsdXZ
をそれぞれのパーティション番号に置き換えます。
他の必要なものをバインドマウントします。
for i in /sys /proc /run /dev; do Sudo mount --bind "$i" "/mnt$i"; done
UbuntuがEFIモードでインストールされている場合( 不明な場合はこの回答を参照 )、Sudo fdisk -l | grep -i efi
またはGPartedを使用してEFIパーティションを見つけます。 EFI
のラベルが付けられます。 sdXY
をシステムの実際のパーティション番号に置き換えて、このパーティションをマウントします。
Sudo mount /dev/sdXY /mnt/boot/efi
chroot
をUbuntuインストールに追加します。
Sudo chroot /mnt
この時点で、ライブセッションではなくインストールを実行しており、rootとして実行しています。 GRUBを更新します。
update-grub
エラーが発生した場合、または手順7に進んでも問題が解決しない場合は、手順8に進みます(それ以外の場合はオプションです)。
状況に応じて、grubを再インストールする必要があります。
grub-install /dev/sda
update-grub # In order to find and add windows to grub menu.
UbuntuがEFIモードでインストールされ、EFIパーティションのUUIDが変更された場合、/etc/fstab
で更新する必要がある場合があります。比較してください:
blkid | grep -i efi
grep -i efi /etc/fstab
現在のEFIパーティションUUID(blkid
から)が/etc/fstab
内のものと異なる場合、/etc/fstab
を現在のUUIDで更新します。
すべてがエラーなく動作した場合、すべての設定は完了です。
exit
Sudo reboot
この時点で、正常に起動できるはずです。
正常に起動できず、エラーメッセージがなかったために手順8を実行しなかった場合は、手順8で再試行します。
Windowsインストーラーは、システム内の他のOSを気にしません。そのため、マスターブートレコードに独自のコードを書き込みます。幸いなことに、ソリューションも簡単です。
MBRを修復する必要があります。以下をせよ
UbuntuのライブUSB/CDを使用して起動します。 boot-repair
を使用して問題を修正してください。
ライブusb/cdで起動した後、ターミナルで次のコマンドを実行します。
Sudo add-apt-repository ppa:yannubuntu/boot-repair && Sudo apt-get update
Sudo apt-get install -y boot-repair && boot-repair
Recomended Repair
を使用します。
ライブのUbuntu USBペンドライブまたはCDから起動し、
次の手順でUbuntuにBoot-Repairをインストールします
ターミナルを開き、次のコマンドを実行します
Sudo add-apt-repository ppa:yannubuntu/boot-repair
Sudo apt-get update
Sudo apt-get install boot-repair
インストールが完了したら、Gnomeを使用している場合は[システム]-> [管理]-> [ブート修復]メニューから起動できます。Unityを使用している場合はダッシュで「ブート修復」を検索できます。次に、次のスクリーンショットに従います。
方法1
システムを適用して再起動します
方法2
Windows 7にeasyBCD
をインストールするだけです
新しいエントリの追加> Linux/BSD>(選択)Grub2>(プッシュ)エントリの追加
次に、Windows 7ブートローダーでbuntを選択してGrub2(以前のブートローダー)に移動します。
EFIベースのシステム(Windows 8以降に同梱されているほとんどのシステムなど)では、Windowsはブートローダーを更新したり、デフォルトのブートローダーにリセットしたりする場合があります。これは、OSを再インストールするとき、または主要なシステムアップデートを実行するとき(たとえば、最新のWindowsリリースにアップグレードするとき)に特に一般的です。 WindowsがEFIベースのコンピューター上のGRUBファイルを実際に消去する可能性は低いことに注意してください。 Ubuntuを起動するために必要なものはすべてそのままです。単にバイパスされています。これらの場合、GRUBを完全に再インストールするのはやり過ぎです。実際、新しい問題が発生する可能性は(わずかですが)あります。
したがって、これらの場合にGRUBを再インストールする代わりに、GRUB(または任意のブートローダーまたはブートマネージャー)をデフォルトにリセットすることをお勧めします。これを行うには、次のようないくつかの方法があります。
ubuntu
エントリを見つけて、リストの一番上に移動します。次回の再起動時に、GRUBが表示されます。 (GRUB以外のものを使用する場合は、そのエントリを見つける必要があります。)bcdedit
-Windows bcdedit
ツールを使用して、GRUBをデフォルトの起動順序に設定できます。 AdministratorCommand Promptウィンドウに入力されたコマンドbcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
は、これを行います。ただし、セキュアブートをアクティブにしてコンピューターを起動する場合は、代わりにbcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi
が必要になります。実際、後者のコマンドは、セキュアブートが使用されていなくても通常動作するため、最初にそのコマンドを使用します。高度なWindowsシェルツールがあり、これまでに説明したものとは少し異なる構文が必要ですが、詳細は思い出せません。ubuntu
エントリは、このブートマネージャーメニューに表示され、Ubuntuを起動できる可能性があります。または、インストーラーが「インストール前に試す」モードで起動したような、Ubuntu緊急メディアから起動することもできます。どちらの場合でも、efibootmgr
を使用して起動順序を調整できます:Sudo efibootmgr
と入力して、ブートエントリを表示します。BootOrder
行に注意してください。ubuntu
のエントリを見つけて、Boot####
番号を書き留めます。Sudo efibootmgr -o xxxx[,yyyy,zzzz,....]
と入力して起動順序を変更し、xxxx
をUbuntuの番号にします。 Windowsがリストにない場合は、起動順序の先頭に自分自身を追加する可能性が高いと思われますが、その後に続くことはほとんど重要ではありません。したがって、おそらくWindowsがリストにあることを確認する必要があります。また、ubuntu
エントリがリストの最上部に移動しただけで、すべての元のエントリが存在するようにリストを並べ替えるのが最も安全です。これらの手順には、EFIシェルでbcfg
を使用する、macOSでbless
を使用する、1回限りのブートを行うために rEFInd を使用するなど、他のバリアントがあります。EasyUEFIから始めます;最も簡単なソリューションになる可能性があります。ただし、Windowsは起動するたびにデフォルトに設定することを要求する場合があり、レポートでは、bcdedit
がその問題をより適切に処理できることが示されています。
上記のいずれもBIOSモードのインストールには適用されないことに注意してください。ただし、Windows 8以降に同梱されているほとんどのコンピューターはEFIモードで起動するため、BIOSモードのインストールはますます少なくなっているため、多くの場合、GRUBを盲目的に再インストールするよりも、EFIの方法で問題を処理する方が適切です。
より簡単なソリューションがあります:
これは、Windows 8とUbuntu 13.10のデュアルブート、Samsungシリーズ7 Chronosラップトップ、セキュアブート無効、UEFI、レガシーブート有効でテストされています。
ブート修復は私のために働いた。グラフィカルアプリケーションを使用するのは非常に簡単です。コマンドラインを使用する必要はありません。ボタンをクリックするだけです。
利用可能なすべての修復オプションは buntuのドキュメント に記載されており、 別のページ があります(起動可能なディスクを作成するか、既存のUbuntuライブディスク)とその使用方法。
UbuntuのライブCDを起動し、Boot-Repairをインストールして実行するだけです。
GRUBが破損している場合、ユーザーは通常システムにアクセスできないため、ライブセッション(ライブCDまたはライブUSB)から修復を実行する必要があります。
GRUBブレークには多くの原因が考えられます:WindowsがMBRに書き込みを行っている、DRMがGRUBを正しくインストールできない、インストーラーのバグ、ハードウェアの変更... GRUBの更新_スコットによって最初に提案されたように、通常は十分ではなく、マルコによって提案されたGRUBを再インストールする方が効率的ですが、他の調整が必要なさまざまな状況があります(カーネルにオプションを追加し、GRUBメニュー、GRUBオプションの変更、適切なホストアーキテクチャの選択...)。 GRUBを修復するためのその他の問題は、chrootの使用と、適切なパーティション/ディスクの選択です。
これはすべて、小さなグラフィカルツール Boot-Repair で簡単になりました。使いやすくするためにUbuntu 12.04 CDに統合する必要がありますが、それを必要としている人のために、すでにUbuntu-Secured-Remix(Boot-Repairを統合したUbuntu CD)、Boot-Repair-Disk(Bootを実行しているCD) -起動時の修復)、...
お役に立てれば。
スコットとWeb-Eの回答は十分であり、何度も助けになりました。しかし、多くの場合、i386およびAMD64プラットフォームに関連する問題、またはgrubがefi
ディレクトリを見つけられない問題のために、ブート修復ツールはgrubを修復できません。
10回以上私の問題を解決したのは、古いgrubインストールを手動でパージし、新しいものをインストールすることです。
したがって、最初にスコットの answer から最初の6ステップを実行します。エラーが発生した場合、5番目のステップをスキップできます。
- 「Try Ubuntu」モードで、ライブCDまたはライブUSBから起動します。
メインパーティションのパーティション番号を決定します。
Sudo fdisk -l
、Sudo blkid
、またはGParted(デフォルトでライブセッションに既にインストールされているはずです)がここで役立ちます。この回答では、/dev/sda2
であると想定していますが、システムに正しいパーティション番号を使用していることを確認してください!メインパーティションがLVMにある場合、デバイスは代わりに
/dev/mapper/
に配置されます。ほとんどの場合、/dev/mapper/{volume}--{os}-root
ここで{volume}
はLVMボリューム名であり、{os}
はオペレーティングシステムです。正確な名前に対してls /dev/mapper
を実行します。パーティションをマウントします。
Sudo mount /dev/sda2 /mnt #Replace sda2 with the partition from step 2
別の
/boot
、/var
または/usr
パーティションがある場合、手順2と3を繰り返してこれらをマウントします/mnt/boot
、/mnt/var
、/mnt/usr
にそれぞれパーティション。例えば、Sudo mount /dev/sdXW /mnt/boot Sudo mount /dev/sdXY /mnt/var Sudo mount /dev/sdXZ /mnt/usr
sdXW
、sdXY
、およびsdXZ
をそれぞれのパーティション番号に置き換えます。他の必要なものをバインドマウントします。
for i in /sys /proc /run /dev; do Sudo mount --bind "$i" "/mnt$i"; done
UbuntuがEFIモードでインストールされている場合([不明な場合はこの回答を参照] [efi])、
Sudo fdisk -l | grep -i efi
またはGPartedを使用してEFIパーティションを見つけます。EFI
のラベルが付けられます。sdXY
をシステムの実際のパーティション番号に置き換えて、このパーティションをマウントします。Sudo mount /dev/sdXY /mnt/boot/efi
chroot
をUbuntuインストールに追加します。Sudo chroot /mnt
次に、次の手順を実行します。
Sudo dpkg --configure -a
Sudo apt install -fy
Sudo apt purge -y grub*-common grub-common:i386 shim-signed
Sudo apt install -y grub-pc
sdXY
を指定してブートローダーをインストールするように求められます。 Sudo fdisk -l
コマンドを使用して、現在のOSがインストールされている場所を見つけます。 Linux
というラベルが付けられます。を使用してそのウィンドウをナビゲートします Tab キーを押して、オプションを選択します Space キー。Sudo grub-update
を実行することもできます。それでも問題が解決しない場合は、 Arch's wiki を読んで、grubについて実際に理解し、他のさまざまな問題に取り組むことができます。 (はい、Ubuntuにも役立ちます!)。
WindowsはLinuxフォーマットのパーティションを認識しません。 liveCDからgpartedを使用し、ブートフラグでNTFSでフォーマットされたプライマリパーティションを作成する必要があります。
Windowsがパーティションテーブルを常に正しくリセットするとは限らないため、新しいプライマリパーティションが拡張パーティションの後にある場合に問題が発生することがあります。適切なバックアップとパーティションテーブルの個別のバックアップを作成するのが最適です。
パーティションテーブルをテキストファイルにバックアップし、外部デバイスに保存します。
Sudo sfdisk -d /dev/sda > PTsda.txt
これは、MBR(msdos)システム専用です。 UbuntuのインストールがGPTパーティションドライブにある場合は、WindowsをUEFIモードでのみインストールするか、ドライブをMBR(msdos)に戻すことができます。
Scott Severanceの答えは有効かつ詳細ですが、外部ブートデバイスを必要としない解決策があるため、Ubuntuパーティションをすべて識別して手動でマウントする必要はありませんchroot
に至るまで。
Windows 10では、Advanced Recovery
を使用して、起動するデバイス(パーティション?)を選択できます。
Settings
に移動し、Update & Security
を選択します。
Recovery
に移動します。
Advanced Startup
からRestart Now
を選択します
次にUse a Device
を選択すると、すべてのブートオプションが表示されます。 「ubuntu」パーティションを選択すると、PCはそのパーティションから起動します。
通常のUbuntu環境で起動したら、grub-update
を実行しようとしましたが、変更はありませんでした。
次に、/boot/efi
パーティションで/dev/nvme0n1p1
を実行し、Sudo grub-install /dev/nvme0n1p1
を実行してからSudo update-grub
を実行しました。
マイナーアップデートでMBRを上書きするという新しいWindows 10ポリシーがあるように見えるため、これでマスターブートレコードが複数回復元されました。
ここでの質問で概説されているboot-repair
が/etc/grub.d/
テンプレートを消去することにより(おそらく)別の問題が発生しました: Windows 10のインストール後にUbuntuが起動しない
@karelsコメントで指摘されているように、grub構成は/etc/grub.d
のファイルを使用して生成されます。私のディレクトリには/etc/grub.d/25_custom
のみが含まれていて、そこには存在しない.efiイメージを指す奇妙なメニューエントリが含まれていました。 /etc/grub.d
テンプレートがboot-repair
によってホースされているようです。
私はこれを修正しました:
Sudo mount /dev/sdxx /mnt
Sudo cp /etc/grub.d/* /mnt/etc/grub.d/
Sudo update-grub
fsck
コマンドのみがgrub-rescue
画面を修正しました。
Boot-Repair を使用してLive-CDから起動し、ターミナルを開きます
正しいデバイスを入手します。
Sudo fdisk -l
ブートデバイスを見つける必要があります。ブートデバイスのブートカテゴリには、次のような*
があります。
Device Boot Start End Sectors Size Id Type
/dev/sda1 2048 2000895 1998848 976M 82 Linux swap / Solaris
/dev/sda2 * 2000896 943716351 941715456 449G 83 Linux
次を使用してディスクを修復します。
Sudo fsck /dev/sda2 -y
注:/ dev/sda2はこの例のブートデバイスです。
完了したら再起動します。できた.