Skip to content

Instantly share code, notes, and snippets.

@valera-rozuvan
Last active October 13, 2025 19:02
Show Gist options
  • Save valera-rozuvan/cacc5591179a0aef74fdc255fdafce9f to your computer and use it in GitHub Desktop.
Save valera-rozuvan/cacc5591179a0aef74fdc255fdafce9f to your computer and use it in GitHub Desktop.
create a Grub2 bootable image and run with QEMU
insmod part_gpt
menuentry "MYOS" {
echo "Here"
sleep 6
}
#!/bin/bash
rm -f disk.img
dd if=/dev/zero of=disk.img bs=1M count=256
parted disk.img mklabel gpt
parted disk.img mkpart ESP fat32 1MiB 255MiB
parted disk.img set 1 esp on
LOOPBACK=$(losetup -o $((2048 * 512)) --sizelimit $((254 * 1024 * 1024)) -f disk.img --show)
mkfs.vfat -F 16 -n "EFI System" $LOOPBACK
mkdir img
mount $LOOPBACK img
grub-install \
--target=x86_64-efi \
--efi-directory=img \
--boot-directory=img/boot \
--removable \
--no-nvram
cp boot/ img/ -r
umount img
rm -r img
losetup -d $LOOPBACK
qemu-system-x86_64 \
-drive format=raw,file=disk.img \
-m 4096M \
-d int,cpu_reset \
-no-reboot \
-bios OVMF_CODE.fd
# get ovmf from here https://github.com/osdev0/edk2-ovmf-nightly
# if not working, try running QEMU with following flags:
# -M accel=tcg,smm=off
# -d int
# -no-reboot
# -no-shutdown
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment