UEFI Grubが設定ファイルを見つけることができません。

UEFI Grubが設定ファイルを見つけることができません。

Grubを使用してWindowsと他の2つのLinuxディストーションプログラムを起動する必要があります。したがって、次のコマンドを使用してUEFIパーティションにGrubをインストールし、専用パーティションを使用してGrubが使用するファイルを保存しました。

sudo grub-install --efi-directory=/mnt/efi --root-directory=/mnt/grub --bootloader-id=Grub --uefi-secure-boot --target=x86_64-efi /dev/sda

/dev/sda1Mounted on/mnt/efiは私のEFIパーティション、/dev/sda2Mounted onは/mnt/grubGrubファイル用のパーティションです。

しかし、Grubを起動した後、私が配置したgrub.cfgファイルが見つからず、デフォルトの/mnt/grubGrubシェルが表示されるようです。またはを入力してシス​​テムをconfigfile /efi/Grub/grub.cfg手動で復元することもできますconfigfile (hd0,gpt2)/grub/grub.cfg

ここに私のファイルのいくつかがあります

$ sudo tree /mnt/efi/EFI
/mnt/efi/EFI
├── Grub
│   ├── BOOTX64.CSV
│   ├── fbx64.efi
│   ├── grub.cfg
│   ├── grubx64.efi
│   ├── mmx64.efi
│   └── shimx64.efi
└── Microsoft
    |...


$ sudo tree /mnt/grub/grub
/mnt/grub/grub
├── fonts
│   └── unicode.pf2
├── grub.cfg
├── grubenv
└── x86_64-efi
    |...

$ sudo cat /mnt/efi/EFI/Grub/grub.cfg
search.fs_uuid 3110d895-a376-484a-8dba-e0475b9a977c root hd0,gpt2
set prefix=($root)'/grub'
configfile $prefix/grub.cfg

$ sudo fdisk -l /dev/sda
Disk /dev/sda: 931.51 GiB, 1000204886016 bytes, 1953525168 sectors
Disklabel type: gpt

Device          Start        End   Sectors   Size Type
/dev/sda1        2048     526335    524288   256M EFI System
/dev/sda2      526336     657407    131072    64M Linux filesystem
/dev/sda3      657408     690175     32768    16M Microsoft reserved
/dev/sda4      690176  563607551 562917376 268.4G Microsoft basic data
/dev/sda5   563607552  697825279 134217728    64G Linux filesystem
/dev/sda6   697825280  966260735 268435456   128G Linux filesystem
/dev/sda7   966260736  983037951  16777216     8G Linux swap
/dev/sda8   983037952 1117254748 134216797    64G Linux filesystem
/dev/sda9  1117255680 1385691135 268435456   128G Linux filesystem
/dev/sda10 1385691136 1402468350  16777215     8G Linux swap

私は小さな間違いをしたようですが、これにはあまりにも多くの時間を費やしました。

ベストアンサー1

GRUBはgrub.cfgESPからロードするために絶対パスを使用しているようです。おそらくGRUBがどのディレクトリからロードされたのかわからないかもしれません。

Debianの場合、パスはです/EFI/debian/grub.cfg

.efiこのコマンドを使用すると、特定の実行可能ファイルが使用できるパスを見つけることができます。

strings /boot/efi/EFI/devuan/grubx64.efi | less '+/EFI\/'

.efi明らかに、上記とは異なる実行ファイルパスを使用する必要があるかもしれません。

これ関連のバグのようです。

grub.cfg予想されるパスにコピーするのがうまくいくようです。

cd /boot/efi/EFI/
mkdir debian
cp devuan/grub.cfg debian/

もちろん、コマンドとパスは異なる場合があります。変更が発生すると、grub.cfgFATファイルシステムは接続をサポートしていないため、コピーを更新する必要があります。しかし、私の姿は次のようなので、あまり変わったようではありません。

search.fs_uuid $root_fs_uuid root mduuid/$array_uuid 
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg

おすすめ記事