オペレーティングシステムUbuntu 20.04.3 LTS Desktop 64-bit
はgpt2パーティションにあり、ファイルシステムはNTFSです。
以下は、FAT32ファイルシステムのgpt1パーティション構造です。
.
├── boot
│ └── grub
│ └── grub.cfg
└── efi
└── boot
├── bootx64.efi
├── grubx64.efi
└── mmx64.efi
4 directories, 4 files
これはNTFSパーティションのgrubメニューです(デフォルトのgrub.cfg):
if loadfont /boot/grub/font.pf2 ; then
set gfxmode=auto
insmod efi_gop
insmod efi_uga
insmod gfxterm
terminal_output gfxterm
fi
set menu_color_normal=white/black
set menu_color_highlight=black/light-gray
set timeout=5
menuentry "Ubuntu" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash ---
initrd /casper/initrd
}
menuentry "Ubuntu (safe graphics)" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed maybe-ubiquity quiet splash nomodeset ---
initrd /casper/initrd
}
menuentry "OEM install (for manufacturers)" {
set gfxpayload=keep
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed only-ubiquity quiet splash oem-config/enable=true ---
initrd /casper/initrd
}
grub_platform
if [ "$grub_platform" = "efi" ]; then
menuentry 'Boot from next volume' {
exit 1
}
menuentry 'UEFI Firmware Settings' {
fwsetup
}
fi
grub.cfgファイル(FAT32パーティション)に次のものが含まれている場合:
search --no-floppy --set=root --fs-uuid 2E92F36515DD4A5A
chainloader /EFI/BOOT/BOOTx64.EFI
boot
grub選択メニューから選択し、それをデフォルトのgrub.cfgファイル(NTFSパーティション)(isoイメージに含まれているのと同じ基本ファイル)に入れると、Ubuntu 20.04.3 LTS Desktop 64-bit
エラーメッセージが表示されます。
error: can't allocate initrd.
Press any key to continue...
このコマンドを使用すると、NTFSパーティションブートローダが正しく起動されることを強調する必要があります。そうしないと、このコマンドで発生するエラーであるchainloader
grub選択メニューは表示されません。initrd
grub.cfgファイル(FAT32パーティション)に次のものが含まれている場合:
search --no-floppy --set=root --fs-uuid 2E92F36515DD4A5A
configfile /boot/grub/grub.cfg
メニューを選択すると、すべてがうまく機能するため、initrdコマンドでエラーが発生しなくなります。
initrd
デフォルトのgrub.cfgファイルを使用して起動するためにNTFSパーティションブートローダを実行するのに問題がありますか?
パーティション2にWindowsがある場合は、すべてがうまく機能するかどうかをテストしましたchainloader
。
アップデート1:
パーティションを交換しようとしましたが、エラーが解決しません。
アップデート2:コマンドでより詳細なエラー出力を取得したい
のですinitrd
が、わかりません。それをする方法。
頑張りました
linux /casper/vmlinuz file=/cdrom/preseed/ubuntu.seed nosplash debug ignore_loglevel ---
initrd /casper/initrd
しかし、エラー出力はまだ同じで、行は追加されていません。
アップデート3:
私がやろうとしていることをまとめて明確にするために、FAT32パーティションからNTFSパーティションにあるブートローダをチェーンロードしています。
BIOSから直接NTFSパーティションを起動すると、すべてがうまく機能しますが、FAT32パーティションからチェーンロードを開始すると問題が発生します。 FAT32パーティションファイル内でコマンドの代わりにコマンドを使用して
grub.cfg(NTFSパーティション)メニューを呼び出しても(その中に含まれる行を表示しました)、すべてがうまく機能します。configfile
chainloader
grub.cfg
アップデート4:一般化の理由で、とにかく
このコマンドを使用し、同じコマンドを実行してWindowsとUbuntuの両方のパーティションを起動できたため、問題を解決するコマンドを使用することもchainloader
できました。configfile
アップデート5:モジュール
はntfs
2つのパーティションのブートローダに組み込まれています。注文lsmod
はこれを確認します。それにもかかわらず、両方のパーティションにinsmod ntfs
ファイルを挿入しようとしましたが、grub.cfg
期待どおりにエラーは変更されませんでした。
アップデート6:
古いコンピュータのUEFIはNTFSを直接読み取ることができないため、BIOSからNTFSパーティションを直接起動しません。
アップデート7:
バグが見つかりました!私はそれが数秒間しか持続しなかったので、以前はそれに気づかなかった。ところで携帯電話で撮った映像はエラーをキャッチするために60fpsに設定しなければならず、録画した後PCに転送し、PCで映像クリップのスクリーンショットを撮った後に回転させてGIMPクロップを使用しました。
エラーは次のとおりです。
error: can't find command `grub_platform`.
スクリーンショットは次のとおりです。