Android-x86のgrub2ブートローダーはLinuxと同じです。
/efi/boot/android.cfgを読み込む形です。
下記に転載します。
# $1 Kernel dir
# $2 Title
# $3... Kernel cmdline
function add_boot_entry {
menuentry "$2" "$@" --class android-x86 {
savedefault
set root=$android
if [ ! -e $2/kernel ]; then
search --no-floppy --set root -f $2/kernel
fi
set kd=$2
shift 3
linux $kd/kernel root=/dev/ram0 androidboot.hardware=android_x86_64
$src $@
initrd $kd/initrd.img
}
}
# $1 Title
# $2... Kernel cmdline
function add_entry {
set title="AG-11 2020-12-19 $1"
shift 1
add_boot_entry "$kdir" "$title" "$@"
}
# $1 EFI to chainload
# $2 OS name
# $3 Class
function add_os_if_exists {
# Is there a better way to find ESP?
for d in hd0,gpt1 hd0,gpt2 hd1,gpt1 hd1,gpt2 hd0,msdos1 hd0,msdos2
hd1,msdos1 hd1,msdos2; do
if [ "($d)$1" != "$cmdpath/$bootefi" -a -e ($d)$1 ]; then
menuentry "$2 at $d ->" "$d" "$1" --class "$3" {
savedefault
set root=$2
chainloader ($root)$3
}
break
fi
done
}
function savedefault {
if [ -s $prefix/grubenv -a "$chosen" != "$default" ]; then
set default="$chosen"
save_env default
fi
}
function load_theme {
loadfont DejaVuSansMono-18
set gfxmode=1024x768
terminal_output gfxterm
set theme=$prefix/theme/theme.txt
export theme
}
if [ "$root" == "loop0" ]; then
set prefix=($root)/boot/grub
fi
if [ -s $prefix/theme/theme.txt ]; then
load_theme
fi
if [ -s $prefix/grubenv ]; then
load_env
fi
if [ "$grub_cpu" = "i386" ]; then
set bootefi=bootia32.efi
set grub=grubia32
else
set bootefi=BOOTx64.EFI
set grub=grubx64
fi
if [ -z "$src" -a -n "$isofile" ]; then
set src=iso-scan/filename=$isofile
fi
search --no-floppy --set android -f $kdir/kernel
export android bootefi grub kdir live src
# Create main menu
add_entry "$live" quiet
add_entry "$debug_mode" DEBUG=2
if [ -s ($android)$kdir/install.img ]; then
add_entry "Installation" INSTALL=1
fi
submenu "Advanced options -> " --class forward {
add_entry "$live - Vulkan support (experimental)" quiet VULKAN=1
add_entry "$live - No Setup Wizard" quiet SETUPWIZARD=0
add_entry "$live - No Hardware Acceleration" quiet nomodeset HWACCEL=0
if [ -s ($android)$kdir/install.img ]; then
add_entry "Auto Install to specified harddisk" AUTO_INSTALL=0
add_entry "Auto Update" AUTO_INSTALL=update
fi
add_os_if_exists /EFI/BOOT/$bootefi "UEFI OS" os
add_os_if_exists /EFI/BOOT/fallback.efi "UEFI Fallback" os
add_os_if_exists /EFI/BOOT/fallback_x64.efi "UEFI Fallback" os
menuentry "Reboot" --class reboot { reboot }
menuentry "Poweroff" --class shutdown { halt }
menuentry "UEFI firmware settings" --class setup { fwsetup }
}
# Add other OSes boot loaders if exist
add_os_if_exists /EFI/fedora/${grub}.efi Fedora fedora
add_os_if_exists /EFI/centos/${grub}.efi CentOS centos
add_os_if_exists /EFI/ubuntu/${grub}.efi Ubuntu ubuntu
add_os_if_exists /EFI/debian/${grub}.efi Debian debian
add_os_if_exists /EFI/gentoo/${grub}.efi Gentoo gentoo
add_os_if_exists /EFI/opensuse/${grub}.efi openSUSE opensuse
add_os_if_exists /EFI/linuxmint/${grub}.efi "Linux Mint" linuxmint
add_os_if_exists /EFI/boto/bootx64.efi OPENTHOS openthos
add_os_if_exists /EFI/Microsoft/Boot/bootmgfw.efi Windows windows
for d in $cmdpath $prefix; do
if [ -f $d/custom.cfg ]; then
source $d/custom.cfg
fi
done