¿Por qué tardan tanto las actualizaciones de macOS/iOS?

Incluso en un iMac Pro, aún lleva algo de tiempo (quizás 15 minutos) actualizar el sistema operativo (después de que se haya descargado todo). Durante este tiempo, no puedo usar la computadora.

¿Porqué es eso? ¿Qué está haciendo realmente? ¿Por qué este proceso no es un simple reinicio?

Tenga en cuenta que no estoy preguntando por qué es necesario reiniciar. Como desarrollador de software, soy plenamente consciente de por qué es necesario reiniciar.

También tenga en cuenta Una razón clara por la que una actualización podría tardar un tiempo es una migración del sistema de archivos (como la migración HFS+ → APFS). Apple hizo algunas migraciones de prueba, incluso, antes de implementar la última versión. Sin embargo, la mayoría de las actualizaciones del sistema operativo no implican cambios en el sistema de archivos AFAIK.

Esta es una pregunta similar a ¿Por qué tarda tanto la verificación de la actualización del software OS X? sobre otro proceso de actualización que lleva un tiempo. Hay detalles de macOS e iOS que vale la pena considerar al responder esta pregunta. Por ejemplo: ambos se envían con los controladores necesarios para todos los sistemas compatibles.

Voto para cerrar esta pregunta como 'fuera de tema' de acuerdo con las pautas de preguntas publicadas. Las preguntas que preguntan por qué Apple hizo, no hizo, puede o no puede hacer algo son extraoficiales porque este grupo no puede responderlas.
@fsb Típica sobremoderación que aleja a la gente de estos sitios.
No lo hice por 'exceso de moderación'. La forma en que se redactó su pregunta, originalmente antes de la edición, preguntaba por qué Apple requiere un reinicio. La forma en que lo leí estaba fuera de tema. Se necesita el voto de más de 1 persona para cerrar una pregunta, se necesitan 4 votos. Estos sitios ayudan a muchas personas al garantizar que las preguntas puedan tener y obtener respuestas precisas. Consulte Cómo preguntar para obtener consejos sobre cómo hacer preguntas que puedan obtener buenas respuestas.
@fsb Estaba claro antes de la edición. "¿Por qué las actualizaciones del sistema operativo no son simplemente un reinicio?" no es "¿Por qué las actualizaciones del sistema operativo requieren un reinicio?" Luego mencioné "¿Por qué este proceso no es un simple reinicio?" Luego menciono "y luego reiniciar". Leíste mal la pregunta original, pero no te preocupes.
@fsb ¿Por qué mi pregunta está fuera de tema cuando esta presumiblemente no lo está? apple.stackexchange.com/questions/31495/…
Esta es una pregunta perfectamente válida. Esto no es un "¿Por qué Apple hace X, Y o Z?", sino "¿Por qué tarda tanto un proceso?" que es de carácter técnico. Nominación para la reapertura.

Respuestas (2)

¿Por qué este proceso no es un simple reinicio?

La respuesta general aquí es que depende. Depende mucho de lo que haya que hacer. Una actualización que haga en su sistema puede ser muy diferente a la que yo hago en el mío. Es posible que la actualización en cuestión solo necesite que se reinicie un servicio o que necesite actualizaciones del kernel real.

¿Por qué [no puedo usar la computadora]?

Generalmente, por la misma razón, no puede usar una aplicación (Word, Excel, Numbers, iTerm, Adobe Photoshop, etc.) que está en proceso de actualización. Los archivos deben cerrarse, leerse, analizarse, copiarse los parches/actualizaciones correspondientes y reiniciarse la aplicación.

Cuando se actualiza un sistema operativo, debe suceder lo mismo y esto generalmente se hace (especialmente cuando se trata de actualizaciones de nivel de kernel) en modo de usuario único.

Por lo general, verá las actualizaciones descargadas, el sistema comenzará a apagarse, se aplicarán las actualizaciones, se reiniciará y se "finalizará" las actualizaciones, seguido de un inicio normal. No puedes usar la computadora durante nada de esto.

¿Qué está haciendo realmente?

Depende. Podría ser cualquier cosa, desde parchear un archivo de configuración hasta actualizar algún tipo de firmware.

Si el sistema está en /System, ¿por qué una actualización del sistema operativo no es simplemente crear un/NewSystem

En primer lugar, /Systemestá protegido por SIP , por lo que para deshabilitarlo, en realidad necesita iniciar desde un punto de montaje diferente. * En segundo lugar, la forma en que usted ve esto es análoga a hacer una renovación en el hogar tirando una casa nueva al lado de la anterior y diciéndole a la gente que simplemente se mude. No es así como funciona.

Muchas cosas tienen que suceder, la menor de las cuales es la creación de puntos de restauración (en caso de que falle la copia de seguridad). Entonces, esto significa que se crea una copia del sistema en funcionamiento, se aplica la actualización, se verifica la actualización y (si todo está bien) se elimina el punto de restauración.

En el caso de las actualizaciones de firmware, las imágenes deben verificarse (es decir, no desea un firmware Mac mini en su Mac Pro), las sumas de verificación validadas, las imágenes respaldadas, aplicadas, verificadas, las antiguas eliminadas y el sistema reiniciado. Nuevamente, no se puede hacer nada con usted conectado y nada de eso se puede hacer simplemente "volcando" archivos en un directorio.

Una actualización es un proceso y todo esto lleva tiempo.


* SIP está diseñado para proteger el sistema evitando cambios en el sistema operativo. Permitir que el sistema operativo cambie el sistema "sobre la marcha" anularía la seguridad que está tratando de lograr.

Gracias por tu respuesta Alan. Ok, entonces puedo, como root, sin violar SIP, crear un archivo del directorio del sistema (solo lo probé). Sí, necesitaría deshabilitar SIP para cambiar a un nuevo directorio del sistema, pero eso no tomaría mucho tiempo si /NewSystemya está construido.
Esa no es la forma en que funciona. Además... una instalación puede tomar media hora o más y técnicamente eso es solo copiar archivos. Una actualización hace mucho, mucho más que copiar archivos.
"Nuevamente, no se puede hacer nada con usted conectado" ¿Por qué no, exactamente?
¿Se puede actualizar una aplicación mientras se está ejecutando una aplicación? Mismo concepto pero mucho más complejo. Su sistema operativo se está ejecutando (los archivos están abiertos y protegidos). Tienes que matar los procesos, quitar la protección (más que simplemente correr sudo) y parchear el sistema. Si se trata de una actualización del kernel, debe desactivar todo porque no se escribirá nada.
No, pero puede hacer la gran mayoría del trabajo al actualizar una aplicación mientras se ejecuta. Es decir: desempaquetar, aplicar actualizaciones diferenciales para crear una nueva estructura de directorios y hacer una suma de verificación. No veo una actualización del sistema operativo tan significativamente diferente. Podríamos meternos en la maleza aquí.
No veo una actualización del sistema operativo tan significativamente diferente. Como dije... depende. Cuando se trata de actualizaciones del kernel (como se describe en la respuesta), no puede simplemente escribir /System, ya que SIP es un factor importante aquí. Para deshabilitar SIP, debe iniciar desde un punto de montaje diferente. Simplemente no puede hacer eso mientras se está ejecutando. Además, estamos hablando de un sistema operativo, no de una sola instancia de una aplicación.

Se requiere reiniciar una computadora para algunas actualizaciones del sistema operativo para todos los sistemas operativos, no solo macOS.

En realidad, en el caso de una actualización , a veces no se requiere un reinicio cuando todavía se usa como parte de un proceso de actualización, pero esto es solo en los casos en que es más fácil para la mayoría de la población de usuarios tener que reiniciar. Por ejemplo, algunas actualizaciones del sistema realizan cambios en cosas como un servicio de red y, si bien podría salirse con la suya simplemente reiniciando eso en lugar de toda la computadora, es más fácil para la mayoría de los usuarios reiniciar que seguir los pasos para reiniciar la red. Servicio.

Sin embargo, en la mayoría de los casos en que se requiere un reinicio, es porque realmente es necesario. Hay muchos recursos del sistema operativo que utilizan las aplicaciones, incluidas las aplicaciones de terceros, y actualizarlos mientras el usuario está conectado no será una tarea fácil y, de hecho, es potencialmente capaz de causar daños en los archivos, etc.

Además, en los casos de actualizaciones de firmware, definitivamente se requiere un reinicio. Sumado a esto, hace algunos años, Apple comenzó a incluir automáticamente actualizaciones de firmware (si es necesario) dentro de las actualizaciones/actualizaciones de macOS, por lo que no es fácil verificar qué dispositivos tenían actualizaciones de firmware incluidas en una actualización/actualización. De todos modos, las actualizaciones de firmware requieren un reinicio, simplemente no hay forma de evitarlo.

Otro ejemplo es la actualización de los recursos necesarios para utilizar el hardware. En algunos casos es necesario reiniciar, en otros no.

Finalmente, en términos de su última pregunta sobre por qué no simplemente crear un nuevo sistema y luego activarlo después del próximo reinicio, si bien esto sería técnicamente posible, realmente no es práctico. El directorio del sistema tiene un tamaño de GB y esto llevaría mucho más tiempo y requeriría una cantidad mucho mayor de espacio libre en el volumen de arranque.

Mi pregunta no era "¿por qué no se puede actualizar un sistema operativo sin reiniciar?". ¿Es por eso que el proceso tarda tanto y bloquea al usuario? Además, los enlaces físicos ( en.wikipedia.org/wiki/Hard_link ) podrían usarse para reducir drásticamente el tiempo y el espacio necesarios para una actualización. (Nota: soy desarrollador de software)
@Taylor específicamente con respecto a: las actualizaciones de iOS OTA, se entregan en forma de parches diferenciales que deben aplicarse a los archivos existentes. Las actualizaciones OTA y no OTA de iOS todavía se almacenan en un dispositivo cifrado y deben cifrarse como parte del proceso de instalación. Cifrar cosas lleva tiempo. Las únicas personas que conozco que saben con total certeza por qué se tomaron esas decisiones son el equipo de desarrollo de Cupertino.