10

Even on an iMac Pro, it still takes some time (maybe 15 minutes) to upgrade the OS (after everything is downloaded). During this time, I can't use the computer.

Why is that? What is it actually doing? Why is this process not a simple reboot?

Please note I'm not asking why a reboot is required. As a software developer, I'm fully aware of why a reboot is required.

Also note A clear reason why an upgrade could take a while is a filesystem migration (such as the HFS+ → APFS migration). Apple did some test migrations, even, before rolling out the final thing. However, most OS upgrades don't involve changes to the filesystem AFAIK.

This is a question is similar to Why does the OS X Software Update check take so long? about another upgrade process taking a while. There are specifics of macOS and iOS that are worth considering in answering this question. For example: both ship with drivers necessary for all supported systems.

  • 6
    I'm voting to close this question as 'off-topic' according to the published question guidelines. Questions that ask why Apple did, didn't, can, or can't do something are off the record because they can't be answered by this group. – fsb Jun 27 '18 at 20:06
  • 4
    @fsb Typical over-moderation that turns people off to these sites. – user293202 Jun 27 '18 at 20:55
  • 3
    I didn't do it for 'over-moderation'. The way your question was worded, originally before the edit, was asking why does Apple require a reboot. The way I read it was off-topic. It takes more than 1 person's vote to close a question, it takes 4 votes. These sites help many people by ensuring questions can have, and get, accurate answers. Please see How to Ask for tips on how to ask questions that can get good answers. – fsb Jun 27 '18 at 21:09
  • 1
    @fsb It was clear before the edit. "Why aren't OS upgrades simply a reboot?" is not "Why do OS upgrades require a reboot?" Then I mentioned "Why is this process not a simple reboot?" Then I mention "and then rebooting" You misread the original question, but no worries. – user293202 Jun 27 '18 at 21:14
  • 4
    This is a perfectly valid question. This is not a "Why Apple does X, Y, or Z" but rather "why does a process take so long?" which is technical in nature. Nominating for reopening. – Allan Jun 28 '18 at 12:23
4

Why is this process not a simple reboot?

The overall answer here is it depends. It depends greatly on what needs to be done. An update that you do to your system may be vastly different than I do on mine. The update in question may only need a service restarted or it may need updates to the actual kernel.

Why is that [I can't use the computer]?

Generally, for the same reason you can't use an app (Word, Excel, Numbers, iTerm, Adobe Photoshop, etc.) that is in the process of being upgraded. The files must be closed, read, analyzed, the appropriate patches/updates copied over and the app restarted.

When an OS is upgraded, the same thing must happen and this is typically done (when it comes to kernel level upgrades especially) in single user mode.

Typically, you'll see updates downloaded, the system will begin a shutdown, updates applied, a reboot, and a "finalization" of the updates followed by a normal boot. You can't use the computer during any of this.

What is it actually doing?

It depends. It could be anything from patching a config file to flashing firmware of some type.

If the system is in /System, why isn't an OS upgrade simply creating a /NewSystem

First off, /System is protected by SIP so to disable it, you actually need to boot from a different mount point.* Secondly, the way you're looking at this is analogous to doing a home renovation by dumping a new house next to the old one and telling the people to just move in. It's not the way it works.

Many things have to happen, least of which is restore points created (in case the backup fails). So this means a copy of the working system is created, the update applied, the update checked, and (if all good) the restore point deleted.

In the case of firmware updates, images have to be verified (i.e. you don't want a Mac mini firmware on your Mac Pro), checksums validated, images backed up, applied, verified, old ones removed and the system reinitialized. Again, none can be done with you logged in and none of it done by simply "dumping" files in a directory.

An upgrade is a process and all of this takes time.


* SIP is designed to protect the system by preventing changes to the OS. Allowing the OS to change the system "on-the-fly" would negate the security it's trying to achieve.

  • Thanks for your answer Allan. Ok so I can, as root, without violating SIP, create an archive of the system directory (just tried it). Yes, you would need to disable SIP to switch to a new system dir, but that wouldn't take significant time if /NewSystem is already built. – user293202 Jun 28 '18 at 16:38
  • That's not the way it works. Besides....an installation can take half hour or more and technically that's just copying files. An update does much, much more than just copy files. – Allan Jun 28 '18 at 17:57
  • "Again, none can be done with you logged in" Why not, exactly? – user293202 Jun 28 '18 at 18:38
  • Can you update an app while an app is running? Same concept but much more complex. Your OS is running (files are open and protected). You have to kill the processes, remove the protection (more than just running sudo) and patch the system. If it's a kernel update, you have to bring everything down because nothing will be written. – Allan Jun 28 '18 at 18:45
  • No, but you can do the vast majority of the work in updating an app while the app is running. That is: unpacking, applying differential updates to build a new directory structure, and checksumming. I don't see an OS update as significantly different. We could get into the weeds here. – user293202 Jun 28 '18 at 22:08
3

Rebooting a computer for some operating system updates/upgrades is required for all operating systems, not just macOS.

Actually, in the case of an update, sometimes a reboot isn't required when it is still used as part of an update process, but this is only in instances where it's easier for most of the user population to have to undergo a reboot. For example, some system updates make changes to things like a network service and, while you could get away with just restarting that rather than the whole computer, it's just easier for most users to do a restart than go through the steps to restart the network service.

However, in most cases that a reboot is required, it's because it's actually necessary. There are many operating system resources that are used by applications, including 3rd party applications, and updating these while the user is logged in just isn't going to be an easy task and, in fact, potentially capable of causing file corruption etc.

Also, in cases of firmware updates a reboot is most definitely required. Adding to this, some years back Apple started automatically including firmware updates (if/when required) within macOS updates/upgrades, so it's not easy to check which devices had firmware updates included in an update/upgrade. Regardless though, firmware updates require a reboot, there's just no way around it.

Another example is the update of resources required to use hardware. In some cases a reboot is required, in others it isn't.

Finally, in terms of your last question about why not just create a new system and then having this become active after the next reboot, while this would technically be possible it really isn't practical. The System directory is GBs in size and this would take a lot longer to do and require a much larger amount of free space on the boot volume.

  • My question wasn't "why can't an OS be upgraded without rebooting?". It's why does the process take so long and lock the user out? Also, hard links (en.wikipedia.org/wiki/Hard_link) could be used to drastically reduce time and space required for an upgrade. (Note: I'm a software developer) – user293202 Jun 27 '18 at 21:00
  • 2
    @Taylor specifically re: OTA iOS updates, they're delivered in the form of differential patches that need to be applied to existing files. Both OTA and non-OTA updates to iOS are still stored on an encrypted device and need to be encrypted as part of the installation process. Encrypting things takes time. The only people I'm aware of who know with complete certainty why those decisions were made are the development team at Cupertino. – Scottmeup Jun 28 '18 at 11:28

You must log in to answer this question.