/
パーティション、swap
パーティション、およびEFIブート用のESP
パーティションを使用して、自分のマシンにFedoraをインストールしました。
今、私はFedoraの代わりにElementary OSをインストールしていました。
/
パーティション(/ dev/sda3)をフォーマットしました起動すると、Fedoraによってインストールされた古いgrubメニューが表示されます。 Elementary OSで起動できるのは、次の方法だけです。
/dev/sda1/
をナビゲートして、grubx64.efi
ファイルを含むelementary
ディレクトリを取得します。 /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)
任意の助けいただければ幸いです。
やったよ !
まず、不要なブートエントリをすべて削除しました。
efibootmgr -b <entry_hex_number> -B
次に、ESPパーティションをFAT32
ファイルシステムで再フォーマットします。
mkfs.vfat -F32 /dev/sda1
次に、/dev/sda
ではなく/dev/sda1
にgrubをインストールしました
grub-install /dev/sda
そもそもなぜgrubを使っているのか分かりません。 UEFIはブートローダーとして機能し、ブートメニューからさまざまなオペレーティングシステムまたは個々のカーネルを選択できます。いくつかの例外はありますが、通常、2番目のブートローダー(この場合はgrub)をチェーンする必要はありません。
あなたが言及したのは、Fedoraの基本OS 代わりにをインストールした、つまりoneオペレーティングシステムをロードするだけでよいということです。ここでそれを行う方法を紹介しますなし grubを使用します。カーネルがEFI_STUBでコンパイルされている必要があります。
grep EFI_STUB /boot/config-<version>
cp /boot/vmlinuz-<version> /boot/efi/EFI/elementary/vmlinuz-<version>.efi
cp /boot/initrd.img-<version> /boot/efi/EFI/elementary/initrd.img-<version>
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
引数には、ディスクのデバイス名を指定します。 --disk /dev/sda
、--part
引数には、ESPのパーティション番号を指定します。 4. ESPパーティション番号は次のコマンドで確認できます。
gdisk -l /dev/sda | awk '$6=="EF00" {print $1}'
これを手動で(上記の手順を繰り返すだけ)、またはジョブを実行する小さなスクリプトを記述します。それを完全に自動化するために、スクリプトをカーネルのポストインストール手順、initramfsの更新後手順、およびカーネルのpostrm手順(UEFIブートエントリを削除するため)にフックできます。実際、ディストリビューションでこれがデフォルトで行われない理由はわかりません。これは数行のコードです。