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.cfg
https://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/sda
GRUBを再インストールしてもう一度実行してみましたが、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.cfg
Regenerate Gentooのgrub.cfgを実行します。
答え2
私はこれが古い質問であることを知っていますが、それでも最新の答えを得る価値があります
ディスクレイアウト
私が正しく理解していることを確認してみましょう。
/dev/sda1
/boot
あなたが従うGentooのマニュアルに対応しています別々にパーティションを分割することをお勧めします/dev/sda2
Gentooインストールのルートディレクトリが含まれています。/
/dev/sdb1
オペレーティングシステム間で共有可能なパーティション。/dev/sdb2
あなたのアーチのインストールは何ですか?含まれていません別の/boot
パーティション
EFIパーティション
Windowsのインストールについて言及していないので無視しても構いません。この警告。将来の読者がWindowsを使用している場合は、警告をお読みください。
- Windowsに加えて、UEFI仕様は複数のディスク上の複数のESPパーティションに最適です。
- 各オペレーティングシステムは
.efi
そのファイルを別々のディレクトリにインストールする必要があります。/boot/EFI/arch/bootx64.efi
- UEFIは関係ありませんが、個人的な経験としては、このような実際のブートマネージャを使用しない限り、1つのEFIパーティションのみを使用することをお勧めします。マイクロプレートリーダー
幼虫
- 管理するGRUBのコピーを選択します(後でこの選択を保存します)。
- リカバリディスクまたはオペレーティングシステムのインストールディスクを使用して新しいオペレーティングシステムをインストールします(あなたの場合はArch)。
- すべてのディスク使用量の一覧表示
gptdisk
- Gentoo /bootをマウントするためにArch
/boot
ディレクトリのマウントポイントを作成します。 (これが単なるgrubアップデートの場合は、この手順をスキップしてください。)実際、GentooとArchは同じブートディレクトリを共有します。 - 手順3の出力に従って既存のEFIパーティションをマウントします。
mount -t vfat /dev/sda1/EFI /boot/EFI
- オプションを使用して、ArchのGrubインストーラが手順5でインストールしたディレクトリを指すようにします
--efi-directory
。grub-install --target=x86_64-efi --efi-directory=/boot/EFI
手順6が完了し、次の設定が適用されます。
/boot/EFI/gentoo/
/boot/EFI/arch/
各ディレクトリには、各オペレーティングシステムのEFIスタブローダを含める必要があります。
#1で選択したOSで起動し、適切なコマンドを実行してGRUBを更新します(os-prober
このコマンドを実行すると、メニューに新しいOSが追加されます。両方のGRUBを更新することを選択できますが、これは多少冗長です。