Previously, we assign 1 IDE device per IDE bus. This means on i440FX + PIIX
machines, we are limited to 2 IDE devices. The bus however supports 2 units
per bus so we should support 4 IDE devices without any extra configuration.
Changing the bus numbering would break many existing VMs so we introduce a
new configuration field for Drive configuration which records the interface
version and we only apply this new numbering to new IDE devices.
Fixes#5358
This allows, for example, mounting a disk image as an emulated USB drive.
This also allows read-write floppy images. Some interfaces (IDE, SCSI, etc)
do not support removable rw images and will error on start.
Resolves#5079
1. If a drive is external, assume it is also read-only.
2. Internal drives can now be marked read-only (QEMU)
3. Fix read-only bookmarks not being created in the helper.
Fixes#4838
This requires us to save two bookmarks: one for the main process and one for
the helper process. This also simplifies the logic for changing images and we
no longer need to pass around references to the UTMQemuConfigurationDrive.
This allows us to freely make changes to the backend without being constrained
to supporting the pre-SwiftUI frontend (for iOS). On macOS, 11.3 fixed some
bugs that required ugly hacks to work around.
We were constrained to class types when we had to support Objective-C but now
that the backend is in Swift, we can use structs which work much better with
SwiftUI (without lots of hacks).
We attempt to isolate each individual view to a single observable object
representing the single source of truth for a sub-section of settings.
At this point, we ensure UTM can compile but many functionality are broken
until the backend rewrite is complete.