web-dev-qa-db-ja.com

GRUB2 EFIを再インストールするにはどうすればいいですか?

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

実用的な解決策は、grub-efi-AMD64を正しく再インストールすることであることが最終的にわかりました。それで、どのようにこれをしますか?

シモンズ:実際には、私は自分でGRUB2 EFIを再インストールすることに成功し、私はこれについての完全なハウツーを見つけることができなかったので、ここに私の答えを掲載するつもりです。

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

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

    modprobe efivarsは私にはうまくいきませんでした。

  • 壊れたシステムにchrootします( ubuntu grub2 help に似ていますが、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パーティションを持つデバイスに置き換える必要があります。 --part Yでは、YをEFIパーティションの番号に置き換える必要があります(/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パーティションを作成するだけです)。ファイルをコピーし、再起動します。

87
Maxime R.

最初の方法の潜在的な単純化として、ライブCDのgrubを使用するだけで、ハードディスク上のシステムに直接ブートすることが可能です。 xubuntu 13.10ライブCDでxubuntu 13.10でテスト済み。

セキュアブートがBIOSで無効になっていることを確認してください。ライブCDを挿入してUEFIで起動します。 CDのGRUBメニューが表示されます。コマンドラインに到達するために "c"を押してください。

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

別のEFIシステムパーティションがある場合は、上記のgrubコマンドを適用してください。

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

Sudo grub-install
8
user302914

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

私の場合、それはLinux Mint Debianを搭載したLenovo ThinkServer RD430であり、何でもあるように見えましたブート。私の場合の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つのエントリ0000および0002を追加しました!
ブート順序の最初のBoot0002* Linux HDエントリは正しくありません
0000エントリは正しいです。

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

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

# efibootmgr -b 2 -B

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


UEFIノート

これを読んでいて、私と同じようにUEFIにイライラしている場合は、次の注意事項とリソースを参照してください。
"UEFIシェルからの起動は、DOSシェルの使用に似ています。
"Intelは efiのPDFリファレンスマニュアル Shellコマンドを作成しました。
"Lenovoの EFI_on_TS430文書 は、efi Shellの使用法を説明している唯一のリソースです。
" 別のuefiシェルリファレンス fromnPartition Administrator's Guide
"ローダーに移動して実行することで、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です。 AOC-S3008L-L8i RAIDコントローラー( ITモードに再フラッシュ )6x 3TBドライブの2番目のPCIe 3.0スロットに。 RAM:12GB ECC(3x 4GB)。

以下は、システムが起動しない原因となる変更です。
"S3008L-L8i pciスロットを変更します(SSD +カードのみを残します)。
"オンボードコントローラーの LSi software raid bios Prompt を無効にします。
"古いHighPoint RocketRaidカードを空きPCIeスロットに追加します。
"/etc/default/grubを変更してから、update-grubを実行します。
多分grub-installも実行する必要がありますか?

5
Chris K

私はこれを支持するでしょうが、どうやら私は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)。 Ubuntu 11.04用のdeb - ディストリビューションやアーキテクチャに合わせて適切に変更し、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を使用することもできますが、それはいくつかのブートローダーの質問をします。

[編集]私はまたコメントするのに十分な担当者を持っていないので、私が返事に対するコメントだと思ったのは返事であることが判明した。

3
IBBoard

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

  • フォルダーを作る

    Sudo su
    mkdir /boot/efi
    
  • /etc/fstabに "EFI System"パーティションをマウントする

    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
    
  • eFIモードでUbuntuを再起動する

    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
1
rubo77

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

Linux Mint Tara(Ubuntu Bionic Beaverに密接に関連したLinuxの亜種)では、この方法で私のインストールを中止し、後で保存することが可能になりました。それは私が生きているUSBに永続性を持たせたいという思いから生まれました、そして、永続的なインストールのためにUnetbootinのようなユーティリティをインストールする時間はフレッシュインストールと大体同じですので内部SSDにOSをインストールするために使用されました。

もちろん、これはRAIDやその他の特別な設定ではありませんが、USBドライブ上に準備されたボリュームパーティション、およびディストリビューションの利用可能な方法を使用してそのUSB上で行われるインストールを必要としました。パーティションのルート(/)マウント。

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

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

'advanced'に入ると、複数のカーネルレスキューが利用可能でした。そこから、grubユーティリティを実行して、通常どおり起動します。

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

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

0
Tim Pozza