デュアルブートArch LinuxとGentoo Linux:ハードドライブが見つからないため、Archを起動できません。

デュアルブートArch LinuxとGentoo Linux:ハードドライブが見つからないため、Archを起動できません。

WindowsにGentoo Linuxを起動パーティション(GRUBファイルがインストールされている場所)/dev/sda2としてインストールしました。 MBRパーティションテーブルがあります。これはデータパーティション(プライマリパーティションなどのバックアップが必要なファイルを保存する場所)であり、Arch Linuxをインストールした場所です。 GPTパーティションテーブルがあります。 GentooはGRUBから正常に起動できますが、私はGentooからインストールしました。アーチはそうではありません。はい/dev/sda1/dev/sda/dev/sdb1/dev/sdb2/dev/sdb/boot/grub/grub.cfghttps://paste.pound-python.org/show/2TXi8NeWbhoaWsifKeMM/。以下はファイルのArch Linux部分です。

        menuentry 'Arch Linux (on /dev/sdb2)' --class gnu-linux --class gnu --class os $menuentry_i
d_option 'osprober-gnulinux-/boot/vmlinuz-linux--1db96616-a88a-42a6-9283-a57016bba4c9' {
                insmod part_gpt
                insmod ext2
                set root='hd1,gpt2'
                if [ x$feature_platform_search_hint = xy ]; then
                  search --no-floppy --fs-uuid --set=root --hint-bios=hd1,gpt2 --hint-efi=hd1,gpt2 --hint-baremetal=ahci1,gpt2  1db96616-a88a-42a6-9283-a57016bba4c9
                else
                  search --no-floppy --fs-uuid --set=root 1db96616-a88a-42a6-9283-a57016bba4c9
                fi
                linux /boot/vmlinuz-linux root=UUID=1db96616-a88a-42a6-9283-a57016bba4c9 rw quiet
                initrd /boot/initramfs-linux.img
        }

しかし、実行しようとすると、hd1、gpt2が存在しないというエラーが発生します。したがって、私が言及したパーティションがここに存在し、それがls /dev/sd*返されることがわかります。

/dev/sda  /dev/sda1  /dev/sda2  /dev/sdb  /dev/sdb1  /dev/sdb2

この問題を解決するのに役立つ追加情報が必要な場合は、その情報を入手する方法を教えてください。

grub-install --target=x86_64-efi --efi-directory=/boot /dev/sdaGRUBを再インストールしてもう一度実行してみましたが、grub-mkconfig -o /boot/grub/grub.cfg問題は解決しません。

編集:これは混乱しています... gdiskを使って/ dev / sdaのMBRをGPTに変換したところ、gdisk -l /dev/sda次のものが返されます。

GPT fdisk (gdisk) version 1.0.1

Partition table scan:
  MBR: protective
  BSD: not present
  APM: not present
  GPT: present

Found valid GPT with protective MBR; using GPT.
Disk /dev/sda: 1953525168 sectors, 931.5 GiB
Logical sector size: 512 bytes
Disk identifier (GUID): 8AD72DC5-C104-4524-8C18-52759DC6C784
Partition table holds up to 128 entries
First usable sector is 34, last usable sector is 1953525134
Partitions will be aligned on 2048-sector boundaries
Total free space is 2957 sectors (1.4 MiB)

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          264191   128.0 MiB   EF00  EFI System
   2          264192      1953524191   931.4 GiB   8300  Linux filesystem

GRUBを再インストールしました(GPT変更後に必要、それ以外の場合はハードドライブを起動できません)grub-install --target=x86_64-efi --efi-directory=/boot /dev/sda。その後、GRUBプロファイルを再生成し、最終的に再起動してArch Linuxの起動を試みましたが、同じエラーで再び失敗しました。インターネット検索では、他のパーティションテーブルが問題である可能性があると提案しましたが、パーティションテーブルを変更しても機能しないようです。私の新しいGRUB cfgファイルは次のとおりです。ここ

EDIT2:/ dev / sdb1を削除し、ESPパーティションに置き換えて、実行中のArch LinuxパーティションにGRUBをインストールしましたgrub-install --target=x86_64-efi --efi-directory=/boot /dev/sdb && grub-mkconfig -o /boot/grub/grub.cfg。まだArch Linuxを起動できません。 Escを押して起動オプションを確認したところ、ライブUSBに起動メニューが表示され、Gentooインストールで起動メニューが表示されていますが、Arch Linuxインストールでは表示されませんでした。また、GentooのGRUBインストールとその設定を更新しましたが、まだGentooを使用してArchを起動できません(以前と同じエラー)。

答え1

Gentooシステムにはこのファイルが必要です/etc/grub.d/40_custom。 Archのgrub.cfgを参照するために、このファイルにメニュー項目を追加できます。このような:

menuentry 'Arch Linux' {
   set root='hdX,msdosX' 
   configfile /boot/grub/grub.cfg
}

このrootエントリはArchを含むパーティションを指す必要があります/boot。次に、grub-mkconfig -o /boot/grub/grub.cfgRegenerate Gentooのgrub.cfgを実行します。

答え2

私はこれが古い質問であることを知っていますが、それでも最新の答えを得る価値があります

ディスクレイアウト

私が正しく理解していることを確認してみましょう。

  1. /dev/sda1/boot あなたが従うGentooのマニュアルに対応しています別々にパーティションを分割することをお勧めします
  2. /dev/sda2Gentooインストールのルートディレクトリが含まれています。/
  3. /dev/sdb1オペレーティングシステム間で共有可能なパーティション。
  4. /dev/sdb2あなたのアーチのインストールは何ですか?含まれていません別の/bootパーティション

EFIパーティション

Windowsのインストールについて言及していないので無視しても構いません。この警告。将来の読者がWindowsを使用している場合は、警告をお読みください。

  1. Windowsに加えて、UEFI仕様は複数のディスク上の複数のESPパーティションに最適です。
  2. 各オペレーティングシステムは.efiそのファイルを別々のディレクトリにインストールする必要があります。/boot/EFI/arch/bootx64.efi
  3. UEFIは関係ありませんが、個人的な経験としては、このような実際のブートマネージャを使用しない限り、1つのEFIパーティションのみを使用することをお勧めします。マイクロプレートリーダー

幼虫

  1. 管理するGRUBのコピーを選択します(後でこの選択を保存します)。
  2. リカバリディスクまたはオペレーティングシステムのインストールディスクを使用して新しいオペレーティングシステムをインストールします(あなたの場合はArch)。
  3. すべてのディスク使用量の一覧表示gptdisk
  4. Gentoo /bootをマウントするためにArch/bootディレクトリのマウントポイントを作成します。 (これが単なるgrubアップデートの場合は、この手順をスキップしてください。)実際、GentooとArchは同じブートディレクトリを共有します。
  5. 手順3の出力に従って既存のEFIパーティションをマウントします。mount -t vfat /dev/sda1/EFI /boot/EFI
  6. オプションを使用して、ArchのGrubインストーラが手順5でインストールしたディレクトリを指すようにします--efi-directorygrub-install --target=x86_64-efi --efi-directory=/boot/EFI

手順6が完了し、次の設定が適用されます。

/boot/EFI/gentoo/
/boot/EFI/arch/

各ディレクトリには、各オペレーティングシステムのEFIスタブローダを含める必要があります。

#1で選択したOSで起動し、適切なコマンドを実行してGRUBを更新します(os-proberこのコマンドを実行すると、メニューに新しいOSが追加されます。両方のGRUBを更新することを選択できますが、これは多少冗長です。

関連情報