GRUBはUSBスティックの2番目のパーティションから起動したくありません。どうすれば修正できますか?

GRUBはUSBスティックの2番目のパーティションから起動したくありません。どうすれば修正できますか?

4つのパーティションを持つ64GB USBスティックがあります。

  1. Windowsデータ転送用のFAT
  2. Linux 起動可能
  3. 暗号化されたLinuxパーティション
  4. Linuxパーティション

起動可能なパーティションからの起動は、ほとんどのコンピュータでうまく機能します。 (Intel CPUを搭載した古いMacBookでは動作しません。)

古いノートブックを見つけて、起動可能なパーティションを介してLinuxを再インストールしようとしましたが、F12メニューにはありません(USBスティック)。

だからGRUBに行き、次のように入力します:

grub>ls
(proc) (hd0) (hd0,msdos1)  (hd0,msdos2)  (hd0,msdos3)  (hd0,msdos4)  (hd1,gpt1) (hd1,gpt2) (hd1,gpt3) (hd1,gpt4)

正しいパーティションは" (hd0,msdos2)"であることがわかりました。

Partition hd0,msdos2: Filesystem type iso9660 - Label 'EOS_202209' - ...

Tabファイルごとに.EFI検索すると、次のようになります。

set root=(hd0,msdos2)/EFI/BOOT/BOOTx64.EFI

このファイルは確かに存在し、GRUBで見ることができます。その理由は次のとおりです。

grub> chainloader +1

error: disk ‘(hd0,msdos2)/EFI/BOOT/BOOTx64.EFI’ not found.

どうすればいいですか?

ベストアンサー1

PCの世界には、現在のクラシックBIOS方式と最新のUEFI方式の2つのブート方式があります。.EFIファイルはUEFIブート方法でのみ機能します。古いノートブックは、クラシックBIOS方式のみをサポートできます。 GRUBには、i386-pcクラシックBIOS起動用x86_64-efiとUEFI用に別々のアーキテクチャバージョンがあります。

GRUBroot変数は、個々のファイルではなく、パーティション、LVM論理ボリューム、またはその他のファイルシステムコンテナを識別する必要があります。chainloader +1変数によって識別されるパーティションの外側の最初のディスクブロック内のコードを読み取って実行するようにGRUBに指示します。rootこれは、WindowsブートローダがBIOS起動方法をチェーンロードするのに適したコマンドです。

UEFI の場合、.EFI ファイルを実行するには、次の操作を行う必要があります。

set root=(hd0,msdos2)
chainloader /EFI/BOOT/BOOTx64.EFI

しかし、これはすでにGRUBに移動している起動プロセスの部分を手動で繰り返す可能性があります。

Linux(またはそのインストーラ)を起動したい場合は、GRUBに到達すると.EFIファイルを実行したくありません。カーネルファイル(通常は次のコマンドを使用してlinux vmlinuz-<version number>)とinitramfs /をロードしようとしています。 initrdファイル:名前はディストリビューションによって異なりますが、Mint(Debianの親戚)ではコマンドは次のとおりですinitrd initrd.img-<kernel version number>

ファイルシステムのラベルEOS_202209を見ると、あなたが持っているのがおそらくArchベースのEndeavourOSであることがわかりますが、なぜLinux Mintに言及するのかわかりません。

おすすめ記事