EFIブートパーティションを再作成するには?

EFIブートパーティションを再作成するには?

/マイコンピュータ、パーティション、swapパーティション、およびESPEFIブートパーティションにFedoraをインストールしました。

それでは、Fedoraの代わりにElementary OSをインストールしましょう。

  1. /パーティション(/dev/sda3)をフォーマットしました。
  2. スワップパーティションフォーマット(/dev/sda4)
  3. しかし、いいえEFIブートパーティション(/dev/sda1)フォーマット

今すぐ起動すると、Fedoraのインストールの前のグルーブメニューが表示されます。以下からのみElementary OSから起動できます。

  1. 起動メニューに入ります。
  2. EFIファイルから起動することを選択
  3. ファイルが含まれているディレクトリ/dev/sda1/に移動します。これは 。elementarygrubx64.efi/boot/efi/EFI/elementary/grubx64.efi

この問題をどのように解決できますか?ブートパーティションを別の形式/dev/sda1/でフォーマットfat16し、grubを再インストールしたいと思います。

/dev/sda1今私の内容は次のとおりです。

root@rafael:/home/rafael# ls /boot/efi/
EFI  mach_kernel  System

root@rafael:/home/rafael# ls /boot/efi/EFI/
BOOT/       elementary/ fedora/     

root@rafael:/home/rafael# ls /boot/efi/EFI/fedora/
BOOT.CSV  fonts  gcdx64.efi  grub.cfg  grubx64.efi  MokManager.efi  shim.efi  shim-fedora.efi

root@rafael:/home/rafael# ls /boot/efi/EFI/elementary/
grubx64.efi

これは私のefibootmgr結果です。

BootCurrent: 003D
Timeout: 0 seconds
BootOrder: 2001,2002,2003
Boot0000* Notebook Hard Drive
Boot0010* Internal CD/DVD ROM Drive
Boot0011* Internal CD/DVD ROM Drive (UEFI)
Boot0012* Fedora
Boot0013* Fedora
Boot0014* Fedora
Boot0015* Fedora
Boot0016* Fedora
Boot0017* Fedora
Boot0018* Fedora
Boot0019* Fedora
Boot001A* Fedora
Boot001B* Fedora
Boot001C* Fedora
Boot001D* Fedora
Boot001E* Fedora
Boot001F* elementary
Boot2001* USB Drive (UEFI)
Boot2002* Internal CD/DVD ROM Drive (UEFI)

どんな助けでも大変感謝します。

ベストアンサー1

なぜ grub を使いたいのか分からない。 UEFIはブートローダとして機能し、ブートメニューからさまざまなオペレーティングシステムまたは個々のカーネルを選択できます。いくつかの例外がありますが、通常、2番目のブートローダ(この場合はgrub)を接続する必要はありません。

基本OSをインストールしたと言われました。代わりにFedoraはロードするだけでよいという意味です。一つオペレーティングシステムここで方法を紹介します いいえグラップを使用してください。カーネルはEFI_STUBにコンパイルする必要があります。その場合は確認できます。

grep EFI_STUB /boot/config-<version>

カーネルとinitramfsをESP(EFIシステムパーティション)にコピーする

cp /boot/vmlinuz-<version> /boot/efi/EFI/elementary/vmlinuz-<version>.efi
cp /boot/initrd.img-<version> /boot/efi/EFI/elementary/initrd.img-<version>

UEFIでカーネルを起動オプションとして登録する

echo "root=UUID=<disk_uuid> ro quiet rootfstype=ext4 add_efi_memmap initrd=\\EFI\\elementary\\initrd.img-<version>" |
  iconv -f ascii -t ucs2 |
  efibootmgr \
    --create --gpt \
    --disk /dev/<disk> --part <partition_number> \
    --label "Elementary OS" \
    --loader "\\EFI\\elementary\\vmlinuz-<version>.efi" \
    --write-signature --append-binary-args -

パラメータは--diskディスクのデバイス名を使用します(例:4)--disk /dev/sda--partパラメーターはESPのパーティション番号(例:4)を使用します。次のコマンドを使用してESPパーティション番号を見つけることができます。

gdisk -l /dev/sda | awk '$6=="EF00" {print $1}'

カーネルを更新するたびに、この手順を繰り返します。

このタスクを手動で実行するか(上記の手順を繰り返すだけ)、タスクを実行するための小さなスクリプトを作成できます。完全な自動化のために、スクリプトはカーネルインストール後プロセス、initramfsポストアップデートプロセス、およびカーネルpostrmプロセス(UEFIブートエントリの削除)に接続できます。実際、これがディストリビューションでデフォルトで行われない理由はわかりません。ほんの数行のコードしかありません。

おすすめ記事