Por que as atualizações do macOS / iOS levam tanto tempo?

11

Mesmo em um iMac Pro, ainda leva algum tempo (talvez 15 minutos) para atualizar o sistema operacional (depois que tudo é baixado). Durante esse período, não consigo usar o computador.

Por que é que? O que ele está realmente fazendo? Por que esse processo não é uma simples reinicialização?

Observe que não estou perguntando por que uma reinicialização é necessária. Como desenvolvedor de software, estou ciente do motivo pelo qual uma reinicialização é necessária.

Observe também Um motivo claro pelo qual uma atualização pode demorar um pouco é uma migração do sistema de arquivos (como a migração HFS + → APFS). A Apple fez algumas migrações de teste antes mesmo de lançar a coisa final. No entanto, a maioria das atualizações do sistema operacional não envolve alterações no sistema de arquivos AFAIK.

Essa é uma pergunta semelhante a Por que a verificação de atualização de software do OS X leva tanto tempo? sobre outro processo de atualização demorando um pouco. Vale a pena considerar algumas especificidades do macOS e iOS para responder a essa pergunta. Por exemplo: ambos são fornecidos com drivers necessários para todos os sistemas suportados.

grg
fonte
6
Estou votando para fechar esta pergunta como 'fora de tópico', de acordo com as diretrizes de perguntas publicadas. Perguntas que perguntam por que a Apple fez, não fez, pode ou não pode fazer algo estão fora do registro, porque não podem ser respondidas por este grupo.
precisa
5
@fsb Sobre-moderação típica que desativa as pessoas para esses sites.
3
Eu não fiz isso por 'super-moderação'. A maneira como sua pergunta foi formulada, originalmente antes da edição, foi perguntando por que a Apple exige uma reinicialização. A maneira como eu li foi fora de tópico. É preciso mais de 1 voto da pessoa para fechar uma pergunta, são necessários 4 votos. Esses sites ajudam muitas pessoas, garantindo que as perguntas possam ter e obter respostas precisas. Consulte Como solicitar dicas sobre como fazer perguntas que podem obter boas respostas.
precisa
1
@fsb Estava claro antes da edição. "Por que as atualizações do sistema operacional não são apenas uma reinicialização?" não é "Por que as atualizações do sistema operacional exigem uma reinicialização?" Então mencionei "Por que esse processo não é uma simples reinicialização?" Então eu mencionei "e depois reiniciei" Você interpretou mal a pergunta original, mas não se preocupe.
5
Esta é uma pergunta perfeitamente válida. Este não é um "Por que a Apple faz X, Y ou Z", mas "por que um processo leva tanto tempo?" que é de natureza técnica. Nomeação para reabertura.
Allan

Respostas:

4

Por que esse processo não é uma simples reinicialização?

A resposta geral aqui é que depende. Depende muito do que precisa ser feito. Uma atualização que você faz no seu sistema pode ser muito diferente da minha. A atualização em questão pode precisar apenas de um serviço reiniciado ou de atualizações no kernel real.

Por que isso [não consigo usar o computador]?

Geralmente, pelo mesmo motivo, você não pode usar um aplicativo (Word, Excel, Numbers, iTerm, Adobe Photoshop, etc.) que esteja em processo de atualização. Os arquivos devem ser fechados, lidos, analisados, as correções / atualizações apropriadas copiadas e o aplicativo reiniciado.

Quando um sistema operacional é atualizado, a mesma coisa deve acontecer e isso geralmente é feito (quando se trata principalmente de atualizações no nível do kernel) no modo de usuário único.

Normalmente, você verá as atualizações baixadas, o sistema iniciará um desligamento, as atualizações aplicadas, uma reinicialização e uma "finalização" das atualizações seguidas por uma inicialização normal. Você não pode usar o computador durante nada disso.

O que ele está realmente fazendo?

Depende. Pode ser qualquer coisa, desde a correção de um arquivo de configuração até o firmware piscante de algum tipo.

Se o sistema estiver ativado /System, por que não há uma atualização do sistema operacional simplesmente criando um /NewSystem

Primeiro, /Systemé protegido pelo SIP. Para desativá-lo, você realmente precisa inicializar a partir de um ponto de montagem diferente. * Em segundo lugar, a maneira como você olha isso é análoga a fazer uma reforma de uma casa, despejando uma casa nova ao lado da antiga e dizendo às pessoas para se mudarem. Não é assim que funciona.

Muitas coisas precisam acontecer, das quais menos pontos de restauração são criados (caso o backup falhe). Portanto, isso significa que uma cópia do sistema de trabalho é criada, a atualização aplicada, a atualização verificada e (se tudo estiver bom) o ponto de restauração excluído.

No caso de atualizações de firmware, as imagens precisam ser verificadas (ou seja, você não deseja um firmware do Mac mini no Mac Pro), somas de verificação validadas, backup de imagens, aplicadas, verificadas, antigas removidas e o sistema reinicializado. Novamente, nada pode ser feito com você conectado e nada disso simplesmente "despejando" arquivos em um diretório.

Uma atualização é um processo e tudo isso leva tempo.


* O SIP foi projetado para proteger o sistema, impedindo alterações no sistema operacional. Permitir que o sistema operacional altere o sistema "on-the-fly" negaria a segurança que está tentando obter.

Allan
fonte
Obrigado pela sua resposta Allan. Ok, então eu posso, como root, sem violar o SIP, criar um arquivo do diretório do sistema (tentei). Sim, você precisaria desabilitar o SIP para mudar para um novo diretório do sistema, mas isso não levaria tempo significativo se /NewSystemjá estiver criado.
Não é assim que funciona. Além disso ... uma instalação pode levar meia hora ou mais e, tecnicamente, é apenas copiar arquivos. Uma atualização faz muito, muito mais do que apenas copiar arquivos.
Allan
"Novamente, nada pode ser feito com você conectado" Por que não exatamente?
Você pode atualizar um aplicativo enquanto ele está em execução? Mesmo conceito, mas muito mais complexo. Seu sistema operacional está em execução (os arquivos estão abertos e protegidos). Você precisa matar os processos, remover a proteção (mais do que apenas rodar sudo) e corrigir o sistema. Se for uma atualização do kernel, você precisará reduzir tudo, porque nada será escrito.
Allan
Não, mas você pode fazer a grande maioria do trabalho na atualização de um aplicativo enquanto o aplicativo estiver em execução. Ou seja: descompactar, aplicar atualizações diferenciais para criar uma nova estrutura de diretórios e soma de verificação. Não vejo uma atualização do sistema operacional significativamente diferente. Poderíamos entrar no mato aqui.
3

É necessário reiniciar o computador para obter algumas atualizações / upgrades do sistema operacional para todos os sistemas operacionais, não apenas para o macOS.

Na verdade, no caso de uma atualização , às vezes uma reinicialização não é necessária quando ainda é usada como parte de um processo de atualização, mas isso é apenas nos casos em que é mais fácil para a maioria da população de usuários passar por uma reinicialização. Por exemplo, algumas atualizações do sistema fazem alterações em coisas como um serviço de rede e, embora você possa apenas reiniciar isso em vez de todo o computador, é mais fácil para a maioria dos usuários reiniciar do que seguir as etapas para reiniciar a rede serviço.

No entanto, na maioria dos casos, é necessário reiniciar, porque é realmente necessário. Existem muitos recursos do sistema operacional usados ​​por aplicativos, incluindo aplicativos de terceiros, e atualizá-los enquanto o usuário está logado não será uma tarefa fácil e, de fato, potencialmente capaz de causar corrupção de arquivos, etc.

Além disso, em casos de atualizações de firmware, é definitivamente necessário reiniciar. Além disso, alguns anos atrás, a Apple começou automaticamente, incluindo atualizações de firmware (se / quando necessário) nas atualizações / upgrades do macOS, portanto, não é fácil verificar quais dispositivos tiveram as atualizações de firmware incluídas em uma atualização / atualização. Independentemente disso, as atualizações de firmware exigem uma reinicialização, simplesmente não há maneira de contornar isso.

Outro exemplo é a atualização de recursos necessários para usar o hardware. Em alguns casos, é necessária uma reinicialização; em outros, não.

Por fim, em termos de sua última pergunta sobre por que não criar um novo sistema e ativá-lo após a próxima reinicialização, enquanto isso seria tecnicamente possível, não é realmente prático. O diretório System tem GBs e isso levaria muito mais tempo e exigiria uma quantidade muito maior de espaço livre no volume de inicialização.

Monomeeth
fonte
Minha pergunta não era "por que um sistema operacional não pode ser atualizado sem a reinicialização?". É por isso que o processo demora tanto e bloqueia o usuário? Além disso, links físicos ( en.wikipedia.org/wiki/Hard_link ) podem ser usados ​​para reduzir drasticamente o tempo e o espaço necessários para uma atualização. (Observação: sou desenvolvedor de software)
2
O @Taylor especificamente re: atualizações OTA para iOS, são entregues na forma de patches diferenciais que precisam ser aplicados aos arquivos existentes. As atualizações OTA e não OTA para iOS ainda estão armazenadas em um dispositivo criptografado e precisam ser criptografadas como parte do processo de instalação. Criptografar as coisas leva tempo. As únicas pessoas que conheço que sabem com total certeza por que essas decisões foram tomadas são a equipe de desenvolvimento da Cupertino.
21818 Scott