/qemu-macos-m1

scripts to create and run QEMU virutal machines on macOS machine's using the M1 chip

Primary LanguageShell

QEMU on MacOS

Usage

1. Update Variables in Script

Change vars at the top of:

bin/vm-templates.sh

Notably:

$IMGS_DIR
$DISK_DIR

2. Download ubuntu cloud image

Donwload the Ubuntu cloud images to the directory you set $IMGS_DIR to above.

cd $IMGS_DIR
curl -sSLO https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img
curl -sSLO https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-arm64.img

3. Run VM

./run.sh

4. Bootstrap VM

curl -sSL https://gist.github.com/kriipke/f70919d5a4a1096011f4e7f2fa7dbe05 | sudo bash -eux -

Miscellaneous EDK2 Notes

THE FOLLOWING ARE SOME USEFUL EXCEPRTS FROM edk2-build.config

## # x86_64

desc = ovmf build (64-bit) conf = OvmfPkg/OvmfPkgX64.dsc arch = X64 opts = common pcds = workaround.202308 plat = OvmfX64 dest = ../pc-bios cpy1 = FV/OVMF_CODE.fd edk2-x86_64-code.fd

desc = ovmf build (64-bit, secure boot) conf = OvmfPkg/OvmfPkgIa32X64.dsc arch = IA32 X64 opts = common ovmf.sb.smm pcds = workaround.202308 plat = Ovmf3264 dest = ../pc-bios cpy1 = FV/OVMF_CODE.fd edk2-x86_64-secure-code.fd

desc = ovmf build for microvm conf = OvmfPkg/Microvm/MicrovmX64.dsc arch = X64 opts = common pcds = workaround.202308 plat = MicrovmX64 dest = ../pc-bios cpy1 = FV/MICROVM.fd edk2-x86_64-microvm.fd

## # arm

desc = ArmVirt build, 32-bit (arm v7) conf = ArmVirtPkg/ArmVirtQemu.dsc arch = ARM opts = common armvirt.silent pcds = nx.broken.shim.grub plat = ArmVirtQemu-ARM dest = ../pc-bios cpy1 = FV/QEMU_EFI.fd edk2-arm-code.fd cpy2 = FV/QEMU_VARS.fd edk2-arm-vars.fd pad1 = edk2-arm-code.fd 64m pad2 = edk2-arm-vars.fd 64m

## # aarch64

desc = ArmVirt build, 64-bit (arm v8) conf = ArmVirtPkg/ArmVirtQemu.dsc arch = AARCH64 opts = common armvirt.silent pcds = nx.broken.shim.grub plat = ArmVirtQemu-AARCH64 dest = ../pc-bios cpy1 = FV/QEMU_EFI.fd edk2-aarch64-code.fd pad1 = edk2-aarch64-code.fd 64m

## # arm

desc = ArmVirt build, 32-bit (arm v7) conf = ArmVirtPkg/ArmVirtQemu.dsc arch = ARM opts = common armvirt.silent pcds = nx.broken.shim.grub plat = ArmVirtQemu-ARM dest = ../pc-bios cpy1 = FV/QEMU_EFI.fd edk2-arm-code.fd cpy2 = FV/QEMU_VARS.fd edk2-arm-vars.fd pad1 = edk2-arm-code.fd 64m pad2 = edk2-arm-vars.fd 64m

## # aarch64

desc = ArmVirt build, 64-bit (arm v8) conf = ArmVirtPkg/ArmVirtQemu.dsc arch = AARCH64 opts = common armvirt.silent pcds = nx.broken.shim.grub plat = ArmVirtQemu-AARCH64 dest = ../pc-bios cpy1 = FV/QEMU_EFI.fd edk2-aarch64-code.fd pad1 = edk2-aarch64-code.fd 64m ##