web-dev-qa-db-ja.com

grub2-install:エラー:/ boot / efiは、Gentooの新規インストールのEFIパーティションのように見えません

プラットフォームでいくつかのソフトウェアをテストするには、Gentoo 13マシンが必要です。私はGentooの常連ではないので、インストール手順に苦しんでいます。私は にいますGRUB2 をインストールすると、次のエラーで失敗しました:

# grub2-install --target=x86_64-efi --efi-directory=/boot
Installing for x86_64-efi platform.
grub2-install: error: /boot doesn't look like an EFI partition.

バックトラックしてディスクを準備しています|デフォルト:partedを使用してディスク をパーティション分割すると、指示どおりにセットアップされているようです。

(chroot) Gentoo-2012 / # parted
GNU Parted 3.2
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) unit mb                                                          
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21475MB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End      Size     File system     Name    Flags
 1      1.05MB  3.15MB   2.10MB                   grub    bios_grub
 2      3.15MB  131MB    128MB    ext2            boot    boot, esp
 3      131MB   2572MB   2441MB   linux-swap(v1)  swap    msftdata
 4      2572MB  21474MB  18902MB  ext4            rootfs  msftdata

上記の結果は、このマニュアルの同じ章のセクション 、パーティションへのファイルシステムの適用 および 、スワップパーティションのアクティブ化 からのものです。

私もコメントをフォローしましたEFIディレクトリは/ bootではなく、/ boot/efifrom ブートローダーの問題と質問 Gentooフォーラムでは、同じエラーが発生しました:

(chroot) Gentoo-2012 / # mkdir /boot/efi
(chroot) Gentoo-2012 / # grub2-install --target=x86_64-efi --boot-directory=/boot --efi-directory=/boot/efi
Installing for x86_64-efi platform.
grub2-install: error: /boot/efi doesn't look like an EFI partition.

何が問題で、どうすれば修正できますか?


上記のfdiskによって表示される情報の対応するgpartedビューは次のとおりです。

(chroot) Gentoo-2012 / # fdisk -l
Disk /dev/loop0: 3.3 GiB, 3567640576 bytes, 6968048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes    

Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 52F5571A-808B-XXXX-XXXX-XXXXXXXX

Device       Start      End  Sectors  Size Type
/dev/sda1     2048     6143     4096    2M BIOS boot
/dev/sda2     6144   255999   249856  122M EFI System
/dev/sda3   256000  5023743  4767744  2.3G Microsoft basic data
/dev/sda4  5023744 41940991 36917248 17.6G Microsoft basic data

パッケージも確認しましたsys-boot/grubはEFIをサポートします:

(chroot) Gentoo-2012 / # cat /etc/portage/make.conf | grep GRUB
GRUB_PLATFORMS="emu efi-32 efi-64 pc"

次にemerge --ask --newuse sys-boot/grubemerge -pv sys-boot/grub、次にgrubを再構築します。

5
jww

問題は、BIOS、EFI、MBR、およびGPTの混在と一致しているようです。ガイドに従ってGPTを使用しようとしましたが、経験が浅いために解決できない依存関係がいくつかありました。カーネルは(構成オプションCONFIG_EFI_PARTITIONを介して)GPTサポートを使用して構築されたことが、私にははっきりしていません。

GPTとEFIを削除して、純粋にBIOSとMBRに切り替えたところ、結果のマシンを起動できました。 BIOSとGPTは有効な組み合わせであると思われますが、実際に機能するかどうかは疑問です(たとえば、 Bootloader Options を参照)。

これは私がマシンを実行することができた設定です:

$ parted
GNU Parted 3.2
Using /dev/sda
(parted) print                                                            
Model: ATA VMware Virtual I (scsi)
Disk /dev/sda: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type     File system     Flags
 1      1049kB  135MB   134MB   primary  ext2            boot
 2      135MB   19.5GB  19.3GB  primary  ext4
 3      19.5GB  21.5GB  2012MB  primary  linux-swap(v1)

パーティション1は/boot、パーティション2は/、パーティション3はswapです。

1
jww

答えは簡単です。 EFIシステムパーティション(ESP)は、ext2ではなく、FAT32(FAT16またはFAT12でも適切なUEFIに対応します。ほとんどの場合、Linuxではvfatと表示されます)である必要があります。

mkfs.fat -F32 /dev/sda2

FWIW、grub i386-pc(BIOS/CSMブート用)をインストールしない場合は、「BIOSブート」パーティションは必要ありません。 GPTのgrub i386-pcでのみ必要です(ただし、grub x86_64-efiまたはi386-efiでは不要)。

ESP for /bootを使用するかどうかは問題ではありません。使用する場合は、次を実行する必要があります。

grub2-install --efi-directory /boot

代わりに/boot/efiにマウントする場合は、次を実行する必要があります。

grub2-install --efi-directory /boot/efi

--boot-directory /bootが暗示されます(つまり、デフォルト)。 /bootがESP、別の別のパーティション、または/ファイルシステム上のディレクトリであるかどうかは関係ありません。

grub2-install;を実行するために再度chrootする必要がない場合もあります。たとえば、sda4/のパーティションである/mntをマウントしたとします。さらに、ESPのsda2/mnt/boot/efiをマウントすると、次のように実行できます。

grub2-install --boot-directory /mnt/boot --efi-directory /mnt/boot/efi

ただし、grub2-mkconfigはchroot AFAIKで実行する必要があります。しかし、代わりにシンプルでクリーンなgrub.cfgを自分で書くことを計画している場合(これはgrub2を使用する唯一の優雅な方法です)、これはあなたの懸念から外れます。

9
Tom Yan

この問題が発生し、/ bootは存在するが、ブートパーティションがマウントされていないことがわかりました。これを修正するには、ブートパーティションをマウントする必要がありました。

mnt /dev/sda1 /boot
0
glitchyme