オリジナルのWindows 8でUbuntu 12.10デュアルブートをインストールしたHP Pavilion Sleekbook 14ラップトップを持っています。grubでブートするようにセットアップするためにブート修復を使用しました。
私の問題は、作成された新しいefiファイルから直接起動することができなかったことです。 BIOS画面でブートオプションを調べましたが、Ubuntuの選択肢はありません。 Ubuntuを起動する唯一の方法は、システムの電源を入れたときにF9を押してから、手動でubuntu efiファイルに移動することです。これは機能しますが、細心の注意を払っていなければ、Windowsが起動します。
ブート修復の実行が完了した後、sda2/EFI/ubuntu/shimx64.efiからブートするように指示されました。Windowsbootmgfw.efiの代わりにこのファイルを移動する必要があるという提案を見てきましたが、物事を壊し、Windows 8のインストールを起動することができません。すでにwin7はwin7よりも嫌いですが、いくつかのタスクのために時々必要になります...
私のブート修復の詳細はこちらです: http://paste.ubuntu.com/1418009/
Ubuntu 12.04.3 LTSとWindows 8をデュアルブートしようとしたときに、HP Pavilion g6でこの問題が発生しました。つまり、「正常に」Boot-Repairを実行した後でも、ノートブックが直接Windows 8で起動していました。 HPシンボルが表示される前にF9を押すと、ブートメニュー(HPのメニューですか?わかりません...)に移動し、そこから「Ubuntu」エントリを選択して、_に移動しましたGRUB 2そして最後に私のUbuntuのインストールに。
それでも、ユーザーの介入を必要とせずに、コンピューターをLinuxから直接起動できるようにしたかったのです。
最後に、 上記のロッド・スミスの答え が、別のフォーラムで見つけた情報と組み合わされて、私のためにトリックをしました。セキュアブートを無効にし、レガシーブートも無効にします。
これは私がやったことです:
以下のコマンドを使用して、Windowsブートローダーの場所を確認しました。
$ Sudo efibootmgr -v
私の場合、元のブートローダーは/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
にありました。 お使いのコンピューターでは別の場所にある可能性があることに注意してください。その場合、以下のコマンドを調整する必要があります。
Rodの回答(ブートローダーを手動で修復する方法に関するもの)の勧告に従って、私はそのファイルを1レベル上に移動してバックアップしました。
$ Sudo cp /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/bootmgfw.efi
最後に、その場所にGRUB2のブートローダーをコピーし、Windowsの元のブートローダーの代わりに、システムに必要なブートローダーをロードするように "トリック"しました。
$ Sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
それでついに、GRUB2で動作するデュアルブートができました。更新後にWindowsがブートローダーを再度上書きする場合(私が行ったように)、grubを元の場所に戻す手順は既に知っています。
これが誰かを助けることを願っています。ソリューションに問題がある場合はお知らせください。
HP ProBook 4340sで、新しいKubuntu 15.04で既に上書きされた元のWindows 8で同じ問題に直面しました(デュアルブートは望ましくありません)。他の試みの中で、Boot-Repairも試してみました(インストール後のHDと boot-repair-disk の両方から)が、その演習はおそらく不要でした。
トリックを作ったのは、BIOSセットアップでの次の変更です(コンピューター起動後、プッシュF1-に移動しますシステム構成-オープンブートオプション):
チェックカスタマイズされたブート
チェックオフSecureBoot
ブートモード:EFI HybridまたはEFI Nativeを選択します(EFI Native)
EFI Boot Order:put Customized Bootを先頭に
カスタマイズされたブートオプションの定義:選択追加 +設定を追加:\EFI\ubuntu\grubx64.efi
高速ブートオプション(F9)のEFIファイルからブートオプションを使用してGRUBを開くと、正しいパス文字列が見つかりました。最初は、オプションリストに含まれていました。
カスタマイズされたブートオプションを追加した後、リストに追加されました。
Hewlett-PackardのUEFIは、しばらくの間私に心痛を与えてきました。あなたの修正により、最初にF9を押すことなく、GRUBでHPラップトップを再起動することができました。
問題が1つありました。修正後、GRUBでWindows 8を選択できましたが、Windows 8は起動を拒否し、GRUBメニューが再び表示されました。
私の修正:
/boot/efi/EFI/Microsoft/Boot/bootmgf2.efi
にコピーしています/boot/grub/grub.cfg
を編集して、名前が変更されたMicrosoft efiファイルを認識するラップトップがGRUBから起動し、UbuntuおよびWindows 8がGRUBから正常に起動するようになりました。
通常、ブート修復を実行すると、Microsoftの元のブートローダーファイル(bootmgfw.efi
)がbootmgfw.efi.bkp
としてバックアップされ、元のbootmgfw.efi
ファイルがGRUB(またはshim)のコピーに置き換えられます。 、投稿したブート修復の出力にはこれが表示されます。ただし、このようなバックアップファイルは表示されません。したがって、次の3つのいずれかを実行することをお勧めします。
/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
をバックアップします(後者は非標準であるため、/boot/efi/EFI/Microsoft/bootmgfw.efi
に名前を変更するのではなく、bootmgfw.efi.bkp
に1レベル下に移動することをお勧めします。ブート修復とUbuntuのGRUB以外のツールを見つけることができません)。 /boot/efi/EFI/ubuntu/grubx64.efi
を代わりにコピーします。または、セキュアブートを動作させ続ける場合は、その場所に/boot/efi/EFI/ubuntu/shimx64.efi
をコピーし、元の名前を使用してgrubx64.efi
を/boot/efi/EFI/Microsoft/Boot
にコピーします。次に、GRUB構成を変更して、新しい場所または新しい名前でWindowsブートローダーを起動できるようにする必要があります。 (GRUBはまだWindowsブートローダーをセキュアブートモードで起動できないと聞いたので、GRUBからWindowsを起動する場合は、セキュアブートを無効にする必要があるかもしれません。 「自分でこれを試したことがないので、この点でGRUBの機能について誤解される可能性があります。)Sudo mvrefind.sh /boot/efi/EFI/refind /boot/efi/EFI/Microsoft/Boot
と入力します。後者のコマンドは、先ほど説明した手動の手順またはブート修復の動作に似た方法でファイルを移動して名前を変更しますが、GRUBではなくデフォルトのブートローダーとしてrEFIndをセットアップします。セキュアブートを使用する場合は、ファイルをジャグリングし、shimの新しいバージョンをインストールすることで使用できます(UbuntuのshimはrEFIndで適切に動作しないほど早い段階です)。この方法でrEFIndをインストールすると、GRUBを使用せずに起動でき、インストールスクリプト(Debianパッケージのインストール時にパッケージシステムによって実行される)とmvrefind.sh
スクリプトの組み合わせにより、発生している問題を回避できます。記録のために、あなたが抱えている問題はHPのEFI実装の既知のバグに関連しています。基本的に、ファームウェアはMicrosoftのブートローダーから起動し、他から起動するのが困難または不可能になるようにハードコードされています。これについてHPに不満を言うことを強くお勧めします。人々が文句を言わない限り、彼らはそのような問題を解決しません。
3つのソリューションのうち、ブート修復を使用するのが最も簡単に機能する可能性があります。ただし、先ほど述べたように、ブート修復で使用される非標準の命名は、将来的に他のユーティリティに問題を引き起こす可能性があります。手動調整は機能するためにより多くの努力を必要としますが、長期的にはよりきれいになります。一部の人々は、WindowsブートローダーをチェーンロードするためにGRUBを取得する際に問題があると報告しているため、どちらのオプションでもそのスコアに頭痛の種があります。 rEFIndはLinuxまたはWindowsを問題なく起動する可能性がはるかに高くなりますが、手順からわかるように、手動でファイルジャグリングを実行するよりも、おそらく、修復を再度実行するよりも少し手間がかかります。セキュアブートとrEFIndを併用するには、現時点でさらにフープジャンピングが必要です。 (詳細については、rEFIndのドキュメントを参照してください。)rEFIndは、GRUBよりもきれいなユーザーインターフェイスも提供します。
3つのソリューションすべてにリスクが伴います。 EFIの実装はそれらの間で非常に大きく異なります。つまり、1台のコンピューターでうまく機能する自動化された手順または手動の手順のいずれかが、別のコンピューターで惨めに失敗する可能性があります。自分を守るために、ESP(Linuxでは通常/boot/efi
)をバックアップすることをお勧めします。ファイルをtarballにパックするか、バックアップディレクトリにコピーするだけです。何かがうまくいかない場合は、緊急ディスクで起動してファイルを復元できます。それはおそらくコンピューターを再起動させます。
私は同じ問題に1日を費やし、ついに解決しました。以下は正確な解決策です。問題を解決するための完全な記事は here であり、これはRod Smithによって書かれています。
有用な情報
EfiブートローダーでGPTパーティションテーブルを起動するため。 efi
ファイルは、インストール時にオペレーティングシステムによって作成されます。このファイルは、対応するオペレーティングシステムを起動できるようにするために、コンピューターのUEFI BIOSに提供する必要があります。
Efiファイルを保持するには、1つのEFIパーティションが必要です。これは通常、ラベルがfat32
のEFI system
フォーマットの200MB未満のパーティションです。ブート可能なパーティション(通常はオペレーティングシステム)を起動するために必要な.efi
ファイルとその依存関係(.dll
または.efi
の形)が含まれます。私のコンピューターでは、このパーティションの構造は次のスキーマに示されています。
\EFI
|_Boot
|_fw
|_Microsoft
|_Boot
|_Recovery
|_Ubuntu
|_fw
通常、.efi
ファイルには任意の名前を付けることができますが、一部のコンピューターは特定の名前を探しているようです。したがって、標準名についても言及します。
Boot
Folder:Isはデフォルトのブートオプションとして認識され、NVRAMが何らかの理由で消去された場合。これはデフォルトで使用されます。 efiブートローダーの名前は「bootx64.efi」です。デフォルトのefiブートローダーを選択する場合は、efiファイルとその周囲のすべてのファイルをブートフォルダーにコピーし、ソースのefiファイルの名前を「bootx64.efi」に変更します。
Microsoft
Folder:Windowsのefiブートファイルを保持します。いくつかのefiファイルがありますが、主なファイルは「efibootmgfw.efi」です。これはWindowsが起動するために使用されると確信しています。
Ubuntu
フォルダー:UbuntuまたはMintのefiファイルを保持します。いくつかの.efi
ファイルがありますが、主なものはgrubx64.efi
です
何をすべきか?
オペレーティングシステムのインストール時にインストールされるブートオプションが既にいくつかあります。ただし、HDDの取り外しと再取り付け、新しいオペレーティングシステムまたは新しいマザーボードバッテリーの取り付けなど、さまざまな理由でBIOSのブートオプションから削除される可能性があります。ブートオプションを回復するには、2つの解決策があります。
(非推奨)いくつかの回答で説明されているように、機能するブートオプションを機能しないブートオプションに置き換えることができます。しかし、問題は他の方法のままです。
欠落しているefiブートローダーファイルを手動で登録します。
どうすればいいですか?
Linuxブータブルフラッシュから起動します(Linux Mintのブータブルフラッシュを使用しています)。これはEFI usbでなければなりません。 (ルーファスなどのプログラムで作成できるGPT usb)
EFIパーティションをマウントすると、ディストリビューションがこれを自動的に行う場合があります。 /boot
が使用可能で、上記のような構造を示している場合は、この手順をスキップしてください。現代のUbuntuはあなたのためにこれを行う必要があります。
EFIパーティションのアドレスを見つけます。これは、parted
コマンドまたはDisks
プログラムを使用して実行できます。通常、ブート可能ディスクの最初または2番目のパーティションです。(/dev/sda1
または/dev/sda2
)このパーティションは通常、FAT32で100MB〜200MBで、EFIシステムのパーティションタイプです。
EFIパーティションをマウントします。 df
コマンドを使用して、パーティションが以前にマウントされているかどうかを確認できます。
df /boot/efi
パーティションが以前にマウントされていない場合(前のコマンドには表示されません)mount
コマンドを使用してパーティションをマウントします。
mount /dev/sda1 /boot/efi
/boot/efi
を参照すると、上記で説明したものと同様のファイル構造が表示されます。紛失したオペレーティングシステムのフォルダを見つけることができるかどうかを制御します。私の場合、コンピューターのBIOSはWindowsブートオプションしか表示できませんでしたが、Linux MintのGrubブートオプションもありました。
(非推奨)Windowsブートオプションが機能していたため、まずテスト目的で、Windowsのブートefiファイルと一緒に多数のファイルを保持するMicrosoftフォルダーのバックアップを作成しました。 (bootmgfw.efi
)次に、ubuntuフォルダーの名前をMicrosoftに変更し、次にgrubx64.efi
の名前をbootmgfw.efi
に変更しました。再起動後、Windowsで起動する代わりにgrubメニューがロードされますが、今回はWindowsから起動することはgrubでのみ可能でした。また、Windowsを直接起動することはできませんでした。
Sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
(推奨される方法)biosのブートオプションに関連するオペレーティングシステムを表示したいefiファイルのアドレスを書き込むだけです。私の場合、Linux MintはコンピューターのBIOSのブートリストにありませんでした。そのEFIファイルのアドレスは、EFIパーティションのルートに相対的な/efi/ubuntu/grubx64.efi
でした。次に、efibootmgrコマンドを使用してNVRAMに登録しました。
efibootmgr -c -d /dev/sda -p 1 -l \\efi\\ubuntu\\grubx64.efi -L nameForBootOption
コマンドのp 1
部分では、1は指定されたディスクのefiパーティションのパーティション番号を定義します。 nameForBootOption
は、ブートオプションに指定されたカスタム名です
*正しいアドレスを書くように注意してください。 Linuxでパーティションをマウントするとき。ルートの下のいくつかのフォルダにパーティションをマウントし、実際のアドレスを/media/mint/CC1F-9708/EFI/ubuntu
のようなものに拡張しますが、/EFI/ubuntu
部分のみを与える必要があります。
* Disks
プログラムは、デフォルトでLinux Mintのブート可能なフラッシュ上にある素晴らしいグラフィカルツールです。 EFIパーティションの確認と検索に使用できます。また、mountコマンドまたはpartedコマンドを使用せずにEFIパーティションをマウントするためにも使用できます。メニュー、設定、ディスクで検索するだけです。
これは、VinceやIのようにウィンドウを起動できない人のためのmairabcの答えです。 fs_uuidが必要です。
# grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/bootmgfw.efi
そして、hints_string:
# grub-probe --target=hints_string /boot/efi/EFI/Microsoft/bootmgfw.efi
次に、ファイル/etc/grub.d/40_customを次のように編集する必要があります。
menuentry "Microsoft Windows x86_64 UEFI-GPT" {
insmod part_gpt
insmod fat
insmod search_fs_uuid
insmod chain
search --fs-uuid --no-floppy --set=root your_hints_string your_fs_uuid
chainloader /EFI/Microsoft/bootmgfw.efi
}
保存して
# update-grub
windowsを再起動...
bootmgfw.efi
をrEFIndまたはGRUBに置き換えることなく、HP Pavilion g7-2269wm(UEFI)でrEFInd(GRUBも可能)を起動する方法を見つけました。
REFIndをインストールし、Sudo efibootmgr -c -d /dev/sda -p 2 -L "rEFInd" -l "\EFI\refind\shimx64.efi"
を使用してrEFIndをブートマネージャーリストに追加しました
F9を使用して再起動してrEFIndを選択し、次にUbuntuを選択しました。
次にbootmgfw.efi
をbootmgfwms.efi
に名前を変更しました
Sudo mv /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/Boot/bootmgfwms.efi
その後、再起動し、F9を使用せずにrEFIndを再起動しました。Windows10エントリがなくなったため、Ubuntuを選択しました。
その後、私が実行したWindows 10エントリを取り戻すために
Sudo mv /boot/efi/EFI/Microsoft/Boot/bootmgfwms.efi /boot/EFI/EFI/Microsoft/Boot/bootmgfw.efi
その後、再起動すると、F9を押さずにrEFIndが表示され、Windows 10がエントリとして表示されます。
Cent-OS 7をWindows 10にインストールした後、同様の問題に直面しました。以下のプロセスが続きます。
問題:Windows 10がロードされ、セントOSブートメニューが表示されませんでした。
これで、システムはcentos UEFIで起動します
レガシーブートを有効にしたため、ESCキーを選択してBIOSまたはその他のブートオプションに移動できます
このバグの影響を受けます: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1091477
解決策:
14インチのWindows 10とUbuntuデュアルブートを備えた2018 HPラップトップを持っています。以前はF9を押して、必要なOSを選択していましたが、今は数週間行っています。
解決:
シャットダウンし、F10を押してBIOSに入ります
ブート順序をリストするBIOSの部分に移動します
OSブートマネージャーでEnterキーを押します。
f5またはF6を使用して、UbuntuをWindowsに切り替えます。
保存して終了。
私のHPラップトップでは、次のように段階的に行いました。
1-F9でUbuntuを起動します
2-Windowsブートローダーの場所を確認する
Sudo efibootmgr -v
私の場合は/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
3-.efiファイルのバックアップ:
Sudo cp /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi /boot/efi/EFI/Microsoft/bootmgfw.efi
4-元の.efiファイルをubuntuファイルに置き換えます(the trick):
Sudo cp /boot/efi/EFI/ubuntu/grubx64.efi /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
5-GRUBにWindows 10メニューエントリを追加します。 /etc/grub.d/40_custom
を開き、このメニューエントリをファイルの最後に追加します。
menuentry "Windows 10 click here!" {
search --set=root --file /EFI/Microsoft/bootmgfw.efi
chainloader /EFI/Microsoft/bootmgfw.efi
}
6-40_custom
および:
Sudo update-grub
7-BIOSでセキュアブートを無効にします(必要かどうかわかりません)
8-すべてがうまくいった場合、デフォルトでbuntで起動し、windows 1がgrubの別のオプションになります。
思ったより簡単でした。
ブートファイル内を移動したくないの場合、ブートシーケンスを手動で変更してみてください。
Ubuntuに手動でアクセスし、以下を使用して現在のブートシーケンスとそのIDを確認します。
Sudo efibootmgr -v
次に、-oとIDを使用してブートシーケンスを変更します(ブート順は左から右)。
Sudo efibootmgr -o 0000,3000,0001,2001,2002,2003
例:
1。現在のブート設定を表示
$ Sudo efibootmgr -v
BootCurrent: 0001
Timeout: 2 seconds
BootOrder: 0001,3000,0000,2001,2002,2003
Boot0000* ubuntu HD(2,GPT,c451cb3c-a684-45ac-9925-4046e57c40cb,0x145800,0x82000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* Windows Boot Manager HD(2,GPT,c451cb3c-a684-45ac-9925-4046e57c40cb,0x145800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot2001* USB Drive (UEFI) RC
Boot2002* Internal CD/DVD ROM Drive (UEFI) RC
Boot3000* Internal Hard Disk or Solid State Disk RC
Boot3001* Internal Hard Disk or Solid State Disk RC
Boot3002* Internal Hard Disk or Solid State Disk RC
Boot3003* Internal Hard Disk or Solid State Disk RC
2.起動順序を変更します(最初にubuntuを起動したいため、起動時に起動メニューが表示されます):
Boot2003(フロッピーディスクドライブ?)が見つからなかったため、最初の試行でエラーが発生しました。再起動後に再作成されたことがわかります。
$ Sudo efibootmgr -o 0000,3000,0001,2001,2002,2003
Invalid boot order entry value: 0000,3000,0001,2001,2002,2003
^
Boot entry 2003 does not exist
$ Sudo efibootmgr -o 0000,3000,0001,2001,2002
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0000,3000,0001,2001,2002
Boot0000* ubuntu
Boot0001* Windows Boot Manager
Boot2001* USB Drive (UEFI)
Boot2002* Internal CD/DVD ROM Drive (UEFI)
Boot3000* Internal Hard Disk or Solid State Disk
Boot3001* Internal Hard Disk or Solid State Disk
Boot3002* Internal Hard Disk or Solid State Disk
Boot3003* Internal Hard Disk or Solid State Disk
3.再起動します。ブートメニューが表示されます。 (2003は自動的に再追加されます):
$ Sudo efibootmgr -v
BootCurrent: 0000
Timeout: 2 seconds
BootOrder: 0000,3000,0001,2001,2002,2003
Boot0000* ubuntu HD(2,GPT,c451cb3c-a684-45ac-9925-4046e57c40cb,0x145800,0x82000)/File(\EFI\ubuntu\shimx64.efi)
Boot0001* Windows Boot Manager HD(2,GPT,c451cb3c-a684-45ac-9925-4046e57c40cb,0x145800,0x82000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}....................
Boot2001* USB Drive (UEFI) RC
Boot2002* Internal CD/DVD ROM Drive (UEFI) RC
Boot3000* Internal Hard Disk or Solid State Disk RC
Boot3001* Internal Hard Disk or Solid State Disk RC
Boot3002* Internal Hard Disk or Solid State Disk RC
Boot3003* Internal Hard Disk or Solid State Disk RC
Grub4dosがロードされていることを知った後、私のソリューションが実現しました
men.lst
にこのエントリを作成します
title Linux
find --set-root /-name.efi
boot /-name.efi
これはWindowsの問題ではありません! HPファームウェアはUEFIファーム変数 "BootOrder"を使用しない(または適切にサポートさえしない)ため、完全にバグがあります。これに対する唯一の修正は、Windowsブートローダーファイル(既に述べたように)をgrub.efiに置き換えることだと思います。
Windows 8が10にインストールされたノートブックHP-15-r248nfにUbuntu 14.04 64ビットをインストールした後、Realtek Wifiドライバー(echo "options rtl8723be fwlps=N ips=N" | Sudo tee /etc/modprobe.d/rtl8723be.conf
を使用して解決)でのWifi接続のドロップの問題に加えてスムーズに発生しました。引き続きWindowsで起動します。
Grubを介したUbuntuは、ブートフェーズでESCキーを使用する場合にのみ使用可能になりました。 boot-repairは役に立たず、実際にはgrubにかなり多くのオプションをインストールしましたが、grubにはまだ直接アクセスできませんでした。
実際、起動順序をデフォルトから変更するだけで済みました。
ここで、grubに移動します。ここで、上部に星印の付いたUbuntuオプションを選択します。これは、少し遅れて自動的に起動します。
@Vitor Abellaの手順により、HP 2000-notebookのデュアルブートの問題が解決したことを確認します。ただし、次のいずれかを実行する必要があります(@mairabcが言及したとおり)。
または
私のシナリオは、15:20投稿のMichalŽarnayの15年8月19日のポストに似ています:いくつかのHP Pavillion Slimline 400-314ミニタワーを入手しました。プリインストールされたWindows 8は必要ありませんでした。 Grub2。
残念ながら、パビリオンのBIOSメニューのブート構成は非常に限られています。他のほとんどの人がここで説明しているような素晴らしい選択肢はほとんどありません。起動順序を変更しようとしても失敗しません。
私が働き始めた唯一の解決策は、 このブログ の「代替ネーミングソリューション」セクションで説明されている「代替ネーミング」回避策を使用することです。