Question

I want to dual boot between macOS and Windows 10. But I don't want to give each a fixed amount of disk space, which is hard to change later. I instead want to keep it flexible so that at some times, macOS can use more disk space, and at other times, Windows.

How do I do this without using a VM? I don't need or want to run both OSs at once. I want to dual boot.

Can I install Windows and ask it to boot from a disk image or sparse image on the HFS+ filesystem? Or, alternatively, boot macOS from a disk image on an NTFS filesystem?

Or is that some LVM stuff that works for this?

Was it helpful?

Solution

Short answer

No, it is not possible (to my knowledge, at this time) to boot into one of the other operating systems from a disk image stored on another partition.

What I have done in the past is make a third partition that I use to share files between the two. I make both boot partitions large enough to store the most important things and then a third that I can store other files on whether they be Windows files or Mac files. It isn't a perfect solution but at least that way if you want more space for Mac stuff then you can format that partition in HFS+. If you want more space for Windows stuff you can format that partition in NTFS or exFAT or something.

If you do decide to do something like that then look into the proper way of doing so before you try. It isn't an easy process but it is at least easier than trying to do what you suggested. You can find some instructions on Ubuntu's website that help explain how to set up a triple boot system. Follow those instructions and just skip the step where you install Ubuntu. Instead, leave the last partition empty for storing stuff.

IMPORTANT: Don't forget to backup everything before trying any sort of partitioning on your main drive. You were warned.

Another option is to install a second drive if possible. I have an older MacBook Pro and I took the DVD drive out and put a second drive in its place. Thats the absolute easiest thing to do if you can.

As to your question about LVM. CoreStorage would allow you to set up partitions that can be resized later and the like, but Windows cannot boot from a CoreStorage partition. CoreStorage is strictly a macOS technology that no other OS recognizes. But that is a longer story for another time.

Longer answer

Your Mac's firmware that is in charge of finding and mounting a bootable partition does not have that ability. Maybe, just maybe in the Linux world that is possible but I'm not sure. But I know a Mac's firmware doesn't have that capability because that is not something 99.9999% of people would want to do.

When your Mac turns on the firmware (the baked in software that is stored on a chip on the motherboard) is in charge of finding a partition on your hard drive with an operating system that can boot. When booting to macOS the firmware (EFI on a Mac) finds a special partition on your hard drive called EFI (yes, the same name as the firmware), mounts that partition, and lets the software (called a boot loader) take over the boot process. The EFI is very small and has very limited capabilities since it has to live in a small chip on the motherboard. The boot loader can do more because the EFI partition on your hard drive is large enough to store a bigger program.

The boot loader then mounts the other drives on your disk and finds the partitions with macOS and depending on which drive you selected in the System Preferences it will boot macOS from the partition you chose (you can have many different partitions on the same hard drive with macOS installed on any of them).

When booting to Windows on a Mac your EFI does things a little differently. As far as I understand the boot loader on the EFI partition isn't used to boot Windows. Instead, the Windows installer puts a little chunk of code at the very beginning of you drive in the tiny space called the MBR. That space is measured in bytes. Not even kilobytes. Just bytes. It is absolutely tiny. So you can't do much with the boot loader stored there. All it does is find the Windows partition and direct the CPU there to finish booting. There is no space on the Windows boot loader to do much of anything else at all. Especially not to mount a drive, find the correct disk image on that drive and then mount and boot from that disk image. It wouldn't come close to fitting in the MBR.

Going back to the EFI partition there may be a chance of fitting enough software on that partition to do all the work necessary to boot from a disk image but again I'm not sure its possible. I'm not familiar enough with the boot process to know if it is. All I know for sure is that the current EFI and boot loader do not support anything like you are asking for.

Making a boot loader that does what you are looking for may be possible but it would require a lot of work and a strong understanding of how the whole boot process works.

The point is it would be a much better use of your time figuring out a better way to partition your hard drive then to try and mount one using a disk image.

I tried to explain things as best as I understand them but I may be wrong. Someone please correct me if I am.

Licensed under: CC-BY-SA with attribution
Not affiliated with apple.stackexchange
scroll top