GRUB2ブートUSB / CDおよびその他のISOファイルを作成する方法は?

GRUB2ブートUSB / CDおよびその他のISOファイルを作成する方法は?

ISOファイルを起動し、初期メニュー画面を表示するようにGRUB2を取得するにはどうすればよいですか(BIOSからUSB / CDを起動するのと同じ)。

たとえば、次のメニュー定義( "/etc/grub.d/40_custom")は次のようになります。

menuentry 'CentOS-8.3.2011-x86_64-dvd1.iso' {
    set root=(hd0,msdos3)
    set isofile=/CentOS-8.3.2011-x86_64-dvd1.iso
    set cdlabel=CentOS-8.3.2011-x86_64-dvd
    loopback loop $isofile
    linux (loop)/isolinux/vmlinuz inst.stage2=hd:LABEL=$cdlabel iso-scan/filename=$isofile
    initrd (loop)/isolinux/initrd.img
}

ガイド:

ここに画像の説明を入力してください。

しかし、GRUB2が次に起動したいと思います。

ここに画像の説明を入力してください。

答え1

私はmemdiskこれにfromを使います。syslinuxCentosではパッケージが何であるかわかりませんが、Debianではpackageにありますsyslinux-common。パッケージはCentosで同様の名前を持つことができます。

また、以下のスクリプトを使用して.iso.img/boot/memdisk/update-grub

Debian 以外のシステムで実行できますgrub-mkconfig -o /boot/grub/grub.cfgupdate-grubupdate-grub は grub-mkconfig の単純なラッパーです。

私のシステムでは、以下をとして保存し/etc/grub.d/42-memdiskて使用可能にしましたchmod +x。ファイル名の先頭の数字は実行順序に影響します。ソートされた順序でgrub-mkconfigスクリプトを実行します。/etc/grub.d/私のシステムではこれが最後に実行されたスクリプトなので、memdiskその項目はgrubメニューの下部にあります。

#!/bin/sh
set -e

IMAGES=/boot/images
. /usr/lib/grub/grub-mkconfig_lib
if test -e /boot/memdisk ; then
  echo "Found memdisk: $MEMDISKPATH" >&2
  MEMDISKPATH="$( make_system_path_relative_to_its_root "/boot/memdisk" )"

  find "$IMAGES" -name '*.img' -o -name '*.iso' | sort | 
  while read image ; do
      IMAGEPATH="$( make_system_path_relative_to_its_root "$image" )"
      echo "Found image: $IMAGEPATH" >&2
      cat << EOF
menuentry "Bootable image: $(basename $IMAGEPATH | sed -E -e 's/\.(img|iso)$//i')" {
EOF
      prepare_grub_to_access_device ${GRUB_DEVICE_BOOT} | sed -e 's/^/\t/'
      cat << EOF
        linux16 $MEMDISKPATH bigraw
        initrd16 $IMAGEPATH
}
EOF
  done
fi

関連情報