カスタムGRUB2構成で独自のMultiboot-USBスティックを作成しようとしています。私は基本的に https://wiki.archlinux.org/index.php/Multiboot_USB_drive の指示に従って、EFIモードでUSBスティックにGRUB2をインストールしました。
grub-install --target=x86_64-efi --recheck --removable --efi-directory=/EFI_MOUNTPOINT --boot-directory=/DATA_MOUNTPOINT/boot
の実行だから私はgrub.cfgを含むEFIパーティションを持っています
search.fs_uuid <uuid> root hdX,gptY
set prefix=($root)'/boot/grub'
configfile $prefix/grub.cfg
/ boot/grubを含むフォルダが1つだけのブートパーティション
これは、いくつかのmenuentryを含む独自のgrub.cfgを/ boot/grubに書き込むことができ、そのエントリから起動できる限り機能しています。しかし、モジュールをロードできません。コマンドラインに入ると、たとえばタイピング
insmod ntfs
絶対に何もしません。エラーメッセージなどはありません。モジュールがロードされないだけです(lsmodで確認)。私も絶対アドレスを試しました
insmod (hdX,gptY)/boot/grub/x86_64-efi/ntfs.mod
同じ結果になります。たとえば、.modファイルを標準出力にキャットできるため、パスは正しいです。
私が実際にできることは、モジュールを削除することです。例えば。
rmmod btrfs
rmmod btrfs
2行目にエラーメッセージが表示されるため、モジュールbtrfsが削除されます。これは、lsmod出力によって確認されます。ただし、入力(btrfsがすでに削除されている場合)
insmod btrfs (or absolute addressing like above)
rmmod btrfs
2行目にエラーメッセージが表示されるため、最初の行は明らかに効果がありませんでした。
何がうまくいかないのか分かりますか? mod-folderをEFI-partitionにコピーしようとしましたが、うまくいきませんでした...
前もって感謝します
私はいくつかの異なる「マルチブートUSB」オプションを試しました。動的であるため、これが好きです。ISOファイルを追加するだけで、新しいISOファイルが検索され、メニューに追加されます。 GRUBメニューを構成していません。LinuxMintDebianEdition3で問題が発生しましたが、これで動作します。彼のスクリプトをいつでも見て、どのように動作するかを確認できます。
幸運を。
ここにサイトがあります:
わかりました。これはセキュアブートが原因であることがわかりました。 https://forums.opensuse.org/showthread.php/531587-is-GRUB-deliberately-broken-in-openSUSE によると
セキュアブートが有効になっている場合、grub2-efiはセキュアブート違反を防ぐために「insmod」を内部的に無効にします。また、「grub2」はEFIパーティションの「grub.efi」からロードされており、通常必要なモジュールがすでにプリロードされています。さらに、セキュアブートが有効になっている場合、「linux」は許可されません。「linuxefi」(署名をチェックする)を使用する必要があります。
そしてgrub-install--helpは
--no-uefi-secure-boot:システムが現在使用を開始している場合でも、UEFIセキュアブートで使用可能なイメージをインストールしません。このオプションはEFIでのみ使用できます。
したがって、現在のマシンがセキュアブートで起動されている場合、grub-installはそのバージョンのGRUBをインストールし、モジュールを挿入できません。私の場合は不思議なことにGRUB =モジュール「linux」がロードされましたが、モジュール「linuxefi」はロードされていません。とにかく、更新されたセットアップは次のとおりです。
grub-install --target=x86_64-efi --recheck --removable --no-uefi-secure-boot --efi-directory=/EFI_MOUNTPOINT --boot-directory=/EFI_MOUNTPOINT/boot
を実行します自分のマシンでセキュアブートを無効にできませんが、.efiファイルをセキュアとしてマークします。そのセットアップを使用する(および/EFI/BOOT/BOOTX64.EFIをコンピューターEFIでセキュアとしてマークする)ことは私にとってはうまくいき、GRUBは完全に機能するようになりました。私のオリジナルのように--boot-directory=/DATA_MOUNTPOINT/boot
を使用するセットアップによりGRUBがクラッシュし、レスキューモードに入りました。
最近のセキュアブートがどれほど一般的であるかを考えると、この動作がGRUB2マニュアル全体のどこにも記載されていないのを見るのはかなり面倒です。
この場合のために特別に設計された Super UEFIinSecureBoot Disk を使用できます。セキュアブートモードでモジュールをロードするだけでなく、ファイル検証機能を乗っ取って任意の信頼できないEFIファイルをロードする変更されたブートローダーが含まれています。