GNU/Linux >> Linux の 問題 >  >> Linux

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

  • ライブ USB/CD を使用してコンピュータを起動し、UEFI モードで . 2 つの起動オプション <flash_drive> がありました と UEFI: <flash_drive> 、2 番目は /sys/firmware/efi/ で 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
      

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

    • Fedora の場合 (最大 16、他の人のために働くかもしれません):

      yum reinstall grub-efi
      

      次のコマンドでは、sdX を起動元の EFI パーティションを持つデバイスに置き換える必要があります。 --part YY を置き換える必要があります 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 パーティションを作成し、ファイルをコピーし、再起動するだけです)。


最初の方法を簡単にする方法として、ライブ 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

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

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

ThinkServer TS140 でまったく同じ手順を実行しても、UEFI が一度たりとも気を失うことはありませんでした。 RD430 ドライバーのページを見ると、私の BIOS は 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 リファレンス マニュアルを作成しました。
» Lenovo の UEFI_on_TS430 ドキュメントは、efi シェルの使用法を説明している唯一のリソースです。
» nPartition Administrator's Guide からの別の uefi シェル リファレンス .
» ローダーに移動して実行することで、efi シェルからパーティションの起動を試みることができます。
» UEFI は、ディスクに msdos パーツ テーブルではなく、GPT パーティション テーブルを持たせたいと考えています。
» UEFI は、ディスクの最初のパーティションを fat32 または vfat でフォーマットする必要があります。
» 「一般的な」ブートの場合、/EFI/boot が必要です bootx64.efi のルートのディレクトリ 初期化。
» grubx64.efi をコピーする人もいます インストールされた場所から /EFI/boot/bootx64.efi まで そして、このチートは彼らのために働きました。
» grub に変更を加えるときはいつでも efibootmgr -v を使用してください 再起動が問題ないことを確認する前後に。

私の RD430 体験

これを整理してサーバーをセットアップしようとして、この 1 週間で 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 ソフトウェア RAID BIOS プロンプトを無効にします。
» 古い HighPoint RocketRaid カードを開いている PCIe スロットに追加します。
» /etc/default/grub に変更を加える そして update-grub を実行します .
(おそらく grub-install も実行する必要がありますか? )


Linux
  1. デフォルトのグラフィックスドライバを再インストールする方法は?

  2. サーバーに Pdftk をインストールするにはどうすればよいですか?

  3. LinuxでRをアップグレードするには?

  1. `alias Sudo !!`の方法は?

  2. 最新のcmakeバージョンを再インストールするには?

  3. sudoとしてファイルに追加する方法は?

  1. LinuxにVagrantをインストールする方法

  2. ApacheでvHostを設定する方法

  3. Subversion 1.6にダウングレードする方法は?