QEMU is an emulator for a wide range of machine architectures. I’ve played with QEMU on MacOS before to install and run Solaris on SPARC. It turns out there a QEMU build for Apple silicon M1, and there’s also a gui frontend to help with the configuration of various machines, called UTM.
Is there any CPU architecture that QEMU does not emulate? This is pretty amazing:
Let’s take a go at emulating an x86 32bit and install Windows 95. I added 3 drives, floppy (to boot from install disk image), a CD-ROM (for the install ISO) and a 4GB drive to install to:
Here’s where you add the disk images, and a summary of the other settings:
On first boot I got this error:
Doing some searching online it’s not immediately obvious if this is a configuration issue or a bug in UTM. One of the comments here does mention that the hdd disk image needs to be first (even though the dialog says the listed order is the boot order). I added the disks in this order and this seems to work:
While in the settings I also notice if you check the ‘advanced’ checkbox there’s options to turn of UEFI boot as that wouldn’t have been on PCs of this era, and changed the CPU to a 486:
Adding a blank 4GB disk image, a Windows 95 boot floppy image, the iso image for install cdrom, and then starting up, we can boot to a DOS prompt and start fdisk to format the blank disk image:
This works for the first time, but after you’ve formatted the blank disk image, booting a subsequent time fails with a ‘no operating system’ error. To get around this (because it won’t start unless the hd image is first), press Escape as soon as you get the BIOS screen and then you can select the boot device. In this case pick the floppy drive.
And now we’re away:
Select 1 for the NEC cdrom driver. At this point the cd iso should be on d: and c: should be your hdd disk image. If you try and run d:\setup.exe you’ll be reminded that fdisk doesn’t format your disk, you you need to format c: as well before you can install, otherwise you’ll see:
Rerun d:\setup.exe after format completes and now scandisk starts up:
Windows 95 setup is running – yes you can install x86 based OSes under UTM/QEMU on Apple Silicon!
If you work on many projects deployed to AWS over time, it can become more difficult to track what resources are where and what relates to what. Tagging can help a lot, so can regions. For example I can deploy one project to us-west-1 and another to us-west-2.
Another idea is to take advantages of multiple AWS accounts and manage them as an Organization. There’s no additional cost for each account or setting up the Organization, the costs are still only for the resources you are using.
Now you have multiple accounts to segregate various projects or other things you’re working on, instead of logging off one account and logging on to the other and switching back a forth, you can assume a role within other accounts from the Account dropdown and ‘Switch Roles’. This option is only visible if you are signed on as an IAM user and not the root account user.
Before you get to this step, in the account you want to switch to, create a new IAM role with the permissions you need to use, and in the Trust section, add the account id for the other account where you want to assume the role from. The complete the fields above and insert the ARN id for the role.
After the first time you’ve used this switch role feature, you’ll see the role in the Account dropdown to reuse later.