GRUB2 EFIを再インストールする方法は?


56

BIOSの更新に成功した後、何かがおかしくなり、黒い画面の左上隅にカーソルが点滅してしまいました。エラーも、何もありません。BIOS SATA: <disc name>は、通常のUEFIの代わりにブートオプションのみをリストしましたubuntu。GPTパーティションスキームを使用しています。

私は最終的に、作業ソリューションが適切に再インストールすることであることがわかりましたgrub-efi-amd64。それで、どうすればこれを行うことができますか?

PS:実際、私は自分でGRUB2 EFIを再インストールすることに成功し、これに関する完全なハウツーを見つけることができなかったため、ここに答えを投稿します。


デュアルブートで問題が発生しました:Windows 10 / PCLinuxOSラップトップ。どういうわけかgrub2ローダーまたは機能が失われました。上記のゆがみの多くを試みた後、Grub2 Boot Rescue isoにつまずき、CDに焼き付けてドライブに残しました。毎回ブートプロセスを実行するのは少し面倒ですが、少なくともうまくいきました。次に、Boot Repair Disk isoを見つけてDVDに書き込みました。この時点で私のドライブは本当に不安定でしたので、今回はWindows 10とMint Sonyaをすべて再フォーマットして再インストールしました。次に、ブート修復ディスクを起動し、Grub2 ovをインストールしました
キー

回答:


87
  • UEFIモードでライブUSB / CD 使用してコンピューターを起動します。2つのブートオプションが<flash_drive>ありUEFI: <flash_drive>、2つ目はefi変数を公開するために必要で、後で失敗しない/sys/firmware/efi/ようにしefibootmgrます。最初のオプションで起動すると、次のエラーが表示されます。

    Fatal: Couldn't open either sysfs or procfs directories for accessing EFI variables.
    Try 'modprobe efivars' as root.
    

    modprobe efivars 私には役に立たなかった。

  • 壊れたシステムにchrootします(ubuntu grub2のヘルプに似ていますが、efiの特異性があります):

    sudo mount /dev/sda2 /mnt #sda2 is the root partition
    sudo mount /dev/sda1 /mnt/boot/efi #sda1 is the efi partition
    for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
    sudo cp /etc/resolv.conf /mnt/etc/ #makes the network available after chrooting
    modprobe efivars # make sure this is loaded
    sudo chroot /mnt
    
  • Linuxディストリビューションに応じて、さまざまなことを行うようになりました。

    • 以下のためのUbuntu / Debianの

      apt-get install --reinstall grub-efi-amd64
      

      または、代わりに:

      apt-get install --reinstall grub-efi
      update-grub
      

      上記はgrubを提供しますが、起動可能なものは提供しません

    • 以下のためのFedora(16まで、他の人のために働く場合があります):

      yum reinstall grub-efi
      

      次のコマンドでは、sdXを、起動するEFIパーティションがあるデバイスに置き換える必要があります。で EFIパーティションの番号--part Yに置き換える必要がありますY(など/dev/sdXY)。

      efibootmgr -c --disk /dev/sdX --part Y
      efibootmgr -v # verify a new record called Linux is there
      
  • 次に、Ctrl + D入力して chrootを終了し、すべてをアンマウントして再起動します。

    for i in /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
    sudo umount /mnt/boot/efi #please do this. Corrupted efi partitions are not nice
    sudo umount /mnt
    sudo reboot
    

これをニーズに合わせて調整する必要がある場合があり(異なるパーティションテーブル、個別の/ bootパーティションなど)、それが唯一のオプションではないかもしれませんが、これは私にとってはうまくいきました。

物事を修正するのに適したライブシステムはgrmlです。また、起動可能なUSBデバイスのセットアップ方法に関する広範なガイドもありますが、実際にはMacセクションが最も役立ちます(FAT32パーティションの作成、ファイルのコピー、再起動、完了)。


4
おい!本当にありがとう!これにより、リセット後にLenovo X220が起動しなくなり、最新のパッケージアップデートがアクティブになり、同時にBIOSリセットを実行したので、3Gカードとの接続の問題が修正されたため、私を救ってくれました。その後、何らかの理由で起動が不可能になりました。ガイドを使用するまで。ところで、resolv.confをコピーした部分は/run/resolvconf...(Ubuntu 12.04で)へのシンボリックリンクであるため、私にとっては機能しませんでした。代わりに、chroot環境でディレクトリmount --bind /run /mnt/run全体をマウントするために使用し/runました。
nem75

Fedora 16での経験とgrmlへの参照で答えを拡張しました。編集内容を確認して受け入れていただければ幸いです。
ジョナスシェーファー

1
Ubuntu(少なくとも12.04の場合)update-grubでは、最新のgrub2イメージをEFIパーティションにコピーせず、grub.cfgのみを更新します。より良い方法はapt-get install --reinstall grub-efi(またはgrub-efi-amd64)、最後にupdate-grubを呼び出すことです。
number5

3
昨日、メディアプレーヤーを保存しました。300インターネットポイント。
ステファノボリーニ

2
実行した後update-grub/boot/efiフォルダはまだ空でした(この新しいパーティションを作成していました)。grub-install実際のファイルを実行した後にのみ、そこに書き込まれました。このガイドは私を助けてくれました(ドイツ語):wiki.ubuntuusers.de/EFI_Problembehebung
フィリップガーバー

8

最初の方法の潜在的な簡素化として、ライブCDのgrubのみを使用して、ハードディスク上のシステムを直接起動することができます。xubuntu 13.10ライブCDを使用して、xubuntu 13.10でテスト済み。

BIOSでセキュアブートが無効になっていることを確認します。ライブCDを挿入し、UEFI経由で起動します。CDのGRUBメニューが表示されます。「c」を押してコマンドラインに移動します。

configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg

別のEFIシステムパーティションがある場合は、上記のgrubコマンドを適応させます。

システムがハードディスクから起動したら、EFIシステムパーティションにgrubを再インストールし、grub-installを介してファームウェアに登録するだけで十分です。

sudo grub-install

動作しません。configfile (hd0,gpt1)/EFI/ubuntu/grub.cfg何もしません。このコマンドを発行した後、どのようにブートしますか?
Autodidact

3
ワオ。こんなに簡単だとは思っていませんでした!これは答えの地獄です!sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi上記のコマンドを実行したのではなく、実行しました(ただし、上記のコマンドでも同様に機能する可能性があります-わかりません)。その後、Linux OSに再度アクセスできます。次に実行するだけでsudo update-grub、すべてが起動可能になります。
ゾラワール

@SandeepDatta:efiディレクトリはおそらく別のディスク/パーティションにあります。私は/ dev / sdb1にあったので、実行しました:configfile (hd1,gpt1)/EFI/ubuntu/grub.cfg。LiveCDを起動して実行sudo gpartedし、efiパーティションを見つけます。
ゾラワール

5

Maxineと同様に、BIOSでUEFI設定が破損し、マシンが起動しないことがわかりました。

私の場合、それはLinux Mint Debianを搭載したLenovo ThinkServer RD430であり、update-grubやサーバー内のハードドライブの変更については何もしないと起動しませんでした。私の場合のOSは、USB経由でインストールされたlinuxmint-201403-mate-dvd-64bitです。(UEFIが機能しなくなるイベントの詳細については、以下を参照してください)

ThinkServer TS140でまったく同じ手順を実行しても、UEFIが一度も気を失うことはありませんでした。RD430ドライバーページを見ると、私の経歴は2つのバージョンです。マザーボードのBIOSを更新する必要がなかったので、新しいバージョンが利用可能になったときに自動的に更新することはできません。biosを更新した後、上記のMaxineの答えはうまくいきました。

# efibootmgr -c --disk /dev/sdX --part Y
# efibootmgr -v
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0002,0000,0003,0001,0004
Boot0000* linuxmint HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\EFI\linuxmint\grubx64.efi)
Boot0001* LMDE Linux Mint Debian    HD(1,800,15d505800,934c598c-fe3c-fd43-84a1-fa38e4f72552)File(\EFI\linuxmint\grubx64.efi)
Boot0002* Linux HD(1,800,1f4000,829f6cc9-5b17-479c-b3ea-61e43faecbf7)File(\elilo.efi)
Boot0003* UEFI: Built-in EFI Shell  Vendor(5023b95c-db26-429b-a648-bd47664c8012,)AMBO
Boot0004* UEFI: VerbatimSTORE N GO 1.00 ACPI(a0341d0,0)PCI(1a,0)USB(1,0)USB(4,0)HD(1,80,1d70780,00000000)AMBO
mint / # 

このefibootmgr -cコマンドは、2つのエントリ00000002!起動順序の最初
Boot0002* Linux HDエントリが正しくありません。エントリが正しいです。
0000

これをテストするために、0002エントリーである中断なしでブートしてみました。予想どおり、機能しませんでした。そこで、サーバーを再起動し、F12を押して、を選択しましたlinuxmint。希望どおり、それは私のLMDEインストールで起動しました。

efibootmgrを使用して不要なエントリを削除する方法は次のとおりです。

# efibootmgr -b 2 -B

このコマンドを使用して、エントリ0001とを削除しました0002。オプション0001は、OSを回復するための多くの試みの最後のものでした。


UEFIノート

これを読んでいて、私と同じようにUEFIにイライラしている場合、いくつかの注意事項とリソースを以下に示し
ます。
»Intelは、efiシェルコマンドのPDFリファレンスマニュアルを作成しました
»LenovoのUEFI_on_TS430ドキュメントは、efiシェルの使用法を説明した唯一のリソースです。
» 別のUEFIシェルの参照からのnPartitions管理者ガイド
»ローダーに移動して実行することで、efiシェルからパーティションの起動を試すことができます。
»UEFIは、ディスクにmsdosパーツテーブルではなく、GPTパーティションテーブルが必要です。
»UEFIは、ディスク上の最初のパーティションをfat32またはvfatでフォーマットすることを望んでいます。
»「汎用」ブートの場合/EFI/boot、ルートにディレクトリが存在する必要がありますbootx64.efi
»一部の人々grubx64.efiはそれがインストールされた場所からコピーし/EFI/boot/bootx64.efi、このチートは彼らのために働いた。
»GRUBに変更を加えるときはいつでも、efibootmgr -v前と後を使用して再起動が正常であることを確認してください。


RD430の経験

先週、OSを10回以上再インストールして、これを整理してサーバーをセットアップしようとしました。私の構成は、LMDEがインストールされたPCIe 2.0スロットのこのRAIDコントローラー上のSSD です。6x 3TBドライブを搭載した2番目のPCIe 3.0スロットのAOC-S3008L-L8i RAIDコントローラー(ITモードに再フラッシュ)。RAM:12GB ECC(3x 4GB)。

システムが起動しない原因となる変更を以下に示します。
»S3008L-L8i pciスロットを変更します(SSD +カードのみを残します)。
» オンボードコントローラーのLSiソフトウェアraid biosプロンプトを無効にします
»古いHighPoint RocketRaidカードを空きPCIeスロットに追加します。
»を変更し/etc/default/grubてから実行しupdate-grubます。
おそらくgrub-install同様に実行する必要がありますか?


I UEFi.Iと非常にイライラしていますBIOSでのLinuxをインストールしたが、UEFIと協力し、REFind関数ことを得ることは非常に難しいですしている
Suiciドーガ

3

私はこれに賛成票を投じますが、どうやらSuperUserについて十分な担当者がいないようです。クローンは何日も機能していましたが、起動しませんでしたが、これに対する答えを最終的に見つけてうれしいです。UEFIと何らかの「セキュアブート」メカニズムなどに関係していると思います。

私はオフラインで作業しているので、apt-getはオプションではありませんでした。私がしたことは、UbuntuデスクトップをUSBスティックに置き、USBスティックのルートにパッケージgrub-efigrub-efi-amd64パッケージを追加することでした(grub-efi_1.99〜rc1-13ubuntu3_amd64.debとgrub-efi-amd64_1.99〜rc1-13ubuntu3_amd64.deb Ubuntu 11.04-ディストリビューションとアーキテクチャに応じて適切に変更します)、USBスティックのスクリプトにも以下を追加します。

#! /bin/bash
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
dir=`dirname $0`
sudo cp $dir/grub-efi*.deb /mnt/tmp
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb"
sudo shutdown -r now

Live USBスティックを起動し、ターミナルを開いてコマンドを実行すると、ジョブは素晴らしいです!唯一の問題は、UEFIがHDDの下のブート優先順位を下げることがあることです。この時点で、BIOSに進み、ブート順序を変更して試行(および失敗)を停止する必要がありますSATA: drive

dpkg-reconfigure代わりにを使用することもできますがdpkg -i、ブートローダーに関する質問がいくつかあります。

[編集]また、コメントするのに十分な担当者がいないので、返信に対するコメントだと思ったのは返信であることがわかりました。


ご乗車(搭乗)ありがとうございます!実際には、投票するには15ポイント、コメントするには50ポイント(superuser.com/privilegesを参照)が必要です。答えられる簡単な質問を見て回ってください。シャットダウンする前に何もアンマウントしないでください。喜んでくれました。
マキシムR.

他の関連サイトでアカウントを取得しているので、混乱はさらに大きくなりました。私はこの側に初めてだったことを忘れていました。通常、Linuxはシャットダウン時にアンマウントされ、コマンドを指定したchrootが終了後に戻るため、問題を引き起こすとは思わない。UEFIでライブディストリビューションを起動しなくても中断しないことがわかりましたsudo chroot /mnt /bin/sh -c "dpkg -i /tmp/grub-efi*.deb" && sudo shutdown -r nowが、適切な動作を行ったかどうかをテストすることは優先事項ではありませんでした。
IBBoard

1

Lenovo Yoga 2 Pro上の32ビットUbuntu 14.10では、次のようにUEFIブートに変更しました。

  • フォルダーを作る

    sudo su
    mkdir /boot/efi
    
  • 「EFIシステム」パーティションをマウントします /etc/fstab

    fdisk -l|grep EFI
    

    これは示した: /dev/sda2 2050048 2582527 532480 260M EFI System

    echo "/dev/sda2 /boot/efi   vfat    defaults,sync   0   0">>/etc/fstab
    

    そのパーティションをマウントする

    mount /boot/efi
    
  • インストールgrub-efi-amd64-binとアンインストールgrub-efi-ia32-bin

    aptitude install grub-efi-amd64-bin grub-efi-ia32-bin_
    
    grub-install --target=x86_64-efi
    
  • Ubuntuをefiモードで再起動します

    update-grub
    
  • それがうまく起動するかどうかをテストしてからgrub-efi-amd64、インストールgrub-pc grub-gfxpayload-listsしてアンインストールしました

    aptitude install grub-efi-amd64 grub-pc_ grub-gfxpayload-lists_
    

私は尋ねられたときに/ bootを削除しないことを選択します。


たぶん私はそれを複雑にし、これはちょうどうまくいったでしょう:

apt-get install --reinstall grub-efi
update-grub

0

このエントリは、efiエントリを再インストールするためのコンピューターの準備の行に沿っています。また、内部メディア(SSD、HDD)にシステムをインストールした後、レスキューディスクを作成するための効果的で簡単な方法であることがわかります。

Linux Mint Tara(Ubuntu Bionic Beaverに密接に関連するLinuxの変種)では、この方法によりインストールが中断され、後で保存できるようになりました。永続性を備えたライブUSBが必要だったことから生まれました。永続インストールのためにUnetbootinのようなユーティリティをインストールする時間は、新規インストールとほぼ同じなので、単純に同じライブディストリビューションを使用してUSBにインストールしました。内蔵SSDにOSをインストールするために使用されました。

もちろん、これはRAIDや他の特別なセットアップではありませんが、USBドライブに準備済みのボリュームパーティションが必要であり、そのUSBでディストリビューションの利用可能な方法を使用してインストールを行う必要があります。パーティションのルート(/)マウント。

これは、新しいgrubのインストールが内部ドライブと絡み合った場所です。USBから再起動すると、内部UEFI grubエントリが消えたように見え、BIOSメニューのエントリを使用してドライブを選択しようとすると、grubメニューのみが残ります。

代わりに、USBから起動すると、このディストリビューションの方法により、/ boot / efiマウントを含むパーティションである/ dev / sda2のリストを含む既製のgrubメニューが作成されたことが示されました。ほとんどのプライマリ内部ドライブのインストールでは、パーティションのgrub名はhd0、gpt1です。

「高度」に進むと、複数のカーネルレスキューが利用可能になりました。そこから、grubユーティリティを実行し、通常どおり起動します。

この時点から、以前はアクセスできなかった内部ドライブでOSを実行し、USBを取り外してから実行しsudo grub-installます。

USBなしで再起動すると、元に戻ることができるはずです。この時点で、USBは内部ドライブを通常モードまたはレスキューモードで起動するように構成されており、ドライブには独自のメニューがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.