O que é coreduetd?

17

Desde o Yosemite e em todos os sistemas operacionais posteriores, o OS X / macOS executa o coreduetd em / usr / libexec / coreduetd com o ID do pacote com.apple.coreduetd.osx em segundo plano.

  • O que exatamente esse processo está fazendo?
  • Em qual hardware isso é executado (ou seja: a funcionalidade é suportada)?
  • Pode ser desativado?
  • Como pode ser desativado?
  • Deve ser desativado?
  • Quais são os efeitos colaterais (potenciais) de sua desativação (dependências)?

Esta pergunta não deve ser lida como um problema YX, mas uma tentativa de eventualmente adicionar à lista de perguntas canônicas.

LÁngLаngС
fonte
Deveríamos falar sobre isso no Ask Different Meta - também é uma pergunta canônica para uma que queremos fechar como “muito ampla” e “muito wiki” - não queremos incentivar perguntas que carecem de uma pergunta prática a ser resolvida e nós certamente não deseja escrever um livro de "sistema interno do macOS" um capítulo por vez e um daemon por vez. Abster-me-ei de fechar a partir de agora - mas há problemas fundamentais em fazer isso sistematicamente na IMO.
bmike
você já instalou um Apogee Duet?
Lane

Respostas:

14

Não há muito na web sobre o que coreduetdfaz em um Mac além de "ele é usado para Handoff entre iOS e macOS".

O que isso está fazendo?

Ele monitora seus vários estados de sistema e aplicativo, incluindo estados em seus dispositivos Apple.

Pode ser desativado?

Tecnicamente, sim, usando launchctl. No entanto, eu (altamente) não recomendo fazê-lo.

Deve ser desativado?

Pergunta completamente subjetiva. Somente você pode decidir se esse é o caminho certo para você. Mais uma vez, eu recomendo que você não.

Quais são os efeitos colaterais (potenciais) de sua desativação (dependências)?

Potencialmente, o seguinte pode ser afetado :

  • A transferência entre iOS e macOS seria afetada
  • sincronização do iCloud
  • Sincronização de email com o Office 365

No entanto, pesquisando um pouco, consegui encontrar um projeto de pesquisa de segurança para iOS (em http://sans.org ) que examinava o coreduet.dbarquivo no iOS. Eu apliquei esse pensamento ao coreduet.dbarquivo no macOS. Aqui está o que eu encontrei ...

Ao fazer uma cópia do coreduet.dbarquivo, examinei-o no sqlite3, obtendo primeiro uma lista de todas as tabelas

$ sudo cp /var/db/CoreDuet/coreduet.db ~/

$ sudo sqlite3 coreduet.db

sqlite> .tables
ZCDDMAIRPLANEMODEEVENT    ZCDDMFORECASTINTEGER      ZCDDMSTATISTICINTEGER
ZCDDMAPPNAMEMAPPER        ZCDDMFORECASTREAL         ZCDDMSTATISTICREAL
ZCDDMAPPSTATECHANGEEVENT  ZCDDMFORECASTSCORE        ZCDDMSTATISTICSTRING
ZCDDMATTRIBUTENAMEMAPPER  ZCDDMFORECASTSTRING       ZCDDMSTRINGATTRIBUTE
ZCDDMBACKLIGHTEVENT       ZCDDMINTEGERATTRIBUTE     ZCDDMTHERMALEVENT
ZCDDMBATTERYEVENT         ZCDDMPLUGINEVENT          ZCDDMWAKEDNESSEVENT
ZCDDMBOOKKEEPING          ZCDDMPOOL                 Z_METADATA
ZCDDMBOOTORSHUTDOWNEVENT  ZCDDMPOOLNAMEMAPPER       Z_MODELCACHE
ZCDDMDEVICEEVENT          ZCDDMREALATTRIBUTE        Z_PRIMARYKEY
ZCDDMDEVICEMAPPER         ZCDDMSCREENLOCKEVENT
ZCDDMFORECAST             ZCDDMSLEEPORWAKEEVENT
sqlite>

Parece que há vários eventos que ele acompanha. No entanto, para ver o que poderíamos ver, abri a tabela Z_PRIMARYKEY:

sqlite> SELECT * FROM Z_PRIMARYKEY;
1|CDDMAirplaneModeEvent|0|81
2|CDDMAppNameMapper|0|218
3|CDDMAppStateChangeEvent|0|185302
4|CDDMAttributeNameMapper|0|101
5|CDDMBacklightEvent|0|0
6|CDDMBatteryEvent|0|0
7|CDDMBookkeeping|0|1
8|CDDMBootOrShutdownEvent|0|0
9|CDDMDeviceEvent|0|0
10|CDDMDeviceMapper|0|0
11|CDDMForecast|0|0
12|CDDMForecastInteger|0|0
13|CDDMForecastReal|0|0
14|CDDMForecastScore|0|0
15|CDDMForecastString|0|0
16|CDDMIntegerAttribute|0|0
17|CDDMPluginEvent|0|0
18|CDDMPool|0|79
19|CDDMPoolNameMapper|0|66
20|CDDMRealAttribute|0|0
21|CDDMScreenLockEvent|0|0
22|CDDMSleepOrWakeEvent|0|17
23|CDDMStatisticInteger|0|0
24|CDDMStatisticReal|0|0
25|CDDMStatisticString|0|0
26|CDDMStringAttribute|0|7293
27|CDDMThermalEvent|0|0
28|CDDMWakednessEvent|0|0
sqlite>

Esse banco de dados específico parece rastrear eventos do sistema. Dado que estou em um iMac, faria sentido que eu não possua coisas como "BatteryEvent" ou "PlugInEvent", mas teria "AppStateChangeEvents". "AirplaneMode" é um pouco confuso, pois é um iMac, mas geralmente mantenho meu WiFi desligado, exceto para testes; em algum momento, esse estado foi adicionado ao banco de dados.

Indo um pouco mais longe no CCDMAirplaneModeEvent, podemos ver que ele rastreia não apenas quando, mas onde o evento ocorreu (embora meu banco de 0dados possua dados para esses campos) e por quem.

select * FROM ZCDDMAIRPLANEMODEEVENT;

    Z_PK        Z_ENT       Z_OPT       ZAIRPLANEMODEON  ZANONYMIZEDBEACON  ZANONYMIZEDLOCATION  ZLOCALDAYSSINCESUNDAY  ZLOCALTIME  ZLOCALTIMEQUARTERHOURSLOT  ZNETWORKQUALITY  ZUSERID     ZCREATIONDATE
----------  ----------  ----------  ---------------  -----------------  -------------------  ---------------------  ----------  -------------------------  ---------------  ----------  -------------
81          1           1           0                0                  0                    0                      80704       0                          0                0           523938304
Allan
fonte
2
Excelente, mas como você aponta: não tocá-lo ...
Solar Mike
De fato. Muito rápido e já muito bom. E a "sincronização de email com o Office 365" já foi afetada em um iMac local e estacionário? Isso é uma surpresa.
LаngLаngС
1
Eu acho que você está no caminho errado aqui. Se você pesquisar no aplicativo do console, as principais mensagens registradas serão de manipulação de energia. Meu palpite é que a estrutura é e sempre será uma estrutura privada, para que a Apple não precise publicar nenhum tipo de API para os desenvolvedores e que possa ser acessada por meio de indireção e outra API mais estável. Ele precisa acompanhar o modo AirPlane e o estado do sistema para saber quando e como ativar a CPU para executar tarefas agendadas - gerenciar orçamentos de energia no hardware / CPU / GPU.
bmike
1
@bmike - acho que não. Examinando o AppStateChangeEvents, há dados de localização incluídos que contêm dados não exclusivos. Teoricamente, deveria ser o mesmo se fosse apenas manipulação de energia. No entanto, eu concordo com você que é uma estrutura privada para a Apple.
Allan