UEFIをサポートしていないUbuntu 22.04 LTSを使用していますmemtest86+ v5
。
Ubuntu 22.04 LTSにインストールしようとしていますが、memtest86+ v6
そのバイナリをダウンロードしました。ここ。
memtest64.efi
EFIパーティションに移動し、以下を追加しました。/etc/grub.d/40_custom
menuentry 'Memtest86+ v6' {
insmod part_gpt
insmod fat
set root='hd0,gpt1'
chainloader (\$root)/EFI/memtest64.efi
}
そして彼は逃げたupdate-grub
。エントリは起動メニューに表示されますが、入力すると次のようになります。
Error: No Server is Specified
GRUBコンソールがhd0,gpt1
EFIパーティションであることを確認しました。
あるいは、GRUBに/ bootフォルダからMemtest86 +を起動させたいのですが、GRUBを介してそれを見つける方法がわかりません/boot
。
******@Ubuntu-Portable:~$ sudo lsblk -o +fstype
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS FSTYPE
sda 8:0 0 953.9G 0 disk
├─sda1 8:1 0 476M 0 part /boot/efi vfat
├─sda2 8:2 0 250G 0 part / ext4
└─sda3 8:3 0 703.4G 0 part /media/****/**** exfat
sr0 11:0 1 1024M 0 rom
nvme0n1 259:0 0 128G 0 disk
├─nvme0n1p1 259:1 0 200M 0 part vfat
├─nvme0n1p2 259:2 0 128M 0 part
└─nvme0n1p3 259:3 0 127.7G 0 part ntfs
修正する:これはうまくいきますが、まだefiパーティションの代わりに/ bootから起動する方法がわかりません。
menuentry 'Memtest86+ v6' {
insmod part_gpt
insmod fat
insmod chain
set root=(hd0,gpt1)
chainloader /EFI/memtest64.efi
}
仕事をきれいに保つために、すべての仕事は屋内で処理したいと思います。/etc/grub.d/40_custom
答え1
memtest64.efi
EFI/boot
システムパーティションの代わりにEFIシステムパーティションを配置する場合は、次の方法を使用できます。
menuentry 'Memtest86+ v6' {
insmod part_gpt
insmod ext2
insmod chain
set root=(hd0,gpt2)
chainloader /boot/memtest64.efi
}
ただし、あなたのコメントで指摘したように、これは想定されるストレージデバイスによって異なります(hd0)
。
i386-pc
GRUBのBIOS()アーキテクチャバージョンでは、ストレージデバイス識別子は通常(hd0)
BIOS INT 13hディスク番号に直接マップされているため、これはBIOSスタイルを起動するのに良い前提でした。つまり、(hd0)
ディスク0x80を意味します。
BIOSでブートディスクを指定する唯一の信頼性があり互換性のある方法は、必要なブートディスクがディスク0x80((hd0)
GRUBでも同じ)になるようにBIOSディスクのリストを並べ替えることです。したがって、ブートディスクを選択すると、ほとんどのBIOSはこの方法です。起動ディスクです。 BIOSシステムでは、GRUBがどのディスクから起動したかを100%確実にするための普遍的な方法はありませんが、(hd0)
ほぼ常に合う非常に良い推測です。
UEFI を使用すると、信頼できなくなります。一部のUEFI実装は可能私が個人的に所有しているUEFIシステムも同じことをします。いいえそして、私がシステム管理者として見ているシステムは、通常これを実行していないようです。
したがって、代わりにGRUBコマンドをset root=(hd0,<partition ID>)
使用する必要があります。search
既知のパス(パス名から始まる)からのみファイルを検索できます。ファイルが配置されているファイルシステムのルートディレクトリ、Linuxのルートファイルシステムであってもなくてもよい):
search --no-floppy --file --set root /boot/memtest64.efi
grub[2]-mkconfig
あるいは、現在のほとんどの最新バージョンがデフォルトで実行しているように、問題のファイルシステムのUUIDを見つけて検索することもできます。
search --no-floppy --fs-uuid --set root 12345678-9abc-def0-1234-56789abcdef0
このコマンドは--no-floppy
GRUBにフロッピードライブの検索をスキップするように指示し、コマンドが検索基準を満たすファイルシステムを指すように変数を設定するようにします--set root
。search
root
簡単に言えば、lsblk -o +uuid
そのディレクトリを含むファイルシステムのUUIDを見つけたら、次のコードスニペットをmemtest64.efi
作成します。40_custom
menuentry 'Memtest86+ v6' {
insmod part_gpt
insmod ext2
insmod chain
search --no-floppy --fs-uuid --set root <insert filesystem UUID here>
chainloader /boot/memtest64.efi
}
答え2
これはEFI / GPTシステムのデフォルトのGRUBファイルです。
if loadfont unicode ; then
set gfxmode=1024x768,800x600,auto
set gfxpayload=800x600,1024x768
terminal_output gfxterm
fi
set default=0
set timeout=-1
insmod linux
insmod part_gpt
insmod fat
search --no-floppy --set=root --label "ESP"
menuentry "Start Memtest86+, use built-in support for USB keyboards" {
linux /EFI/memtest86+/memtest keyboard=both
}
menuentry "Start Memtest86+, use BIOS legacy emulation for USB keyboards" {
linux /EFI/memtest86+/memtest keyboard=legacy
}
menuentry "Start Memtest86+, disable SMP and memory identification" {
linux /EFI/memtest86+/memtest nosmp nosm nobench
}