Dando boot no sistema operacional do Apple TV em um PC comum - Discussão
O hardware do Apple TV de 1ª geração é essencialmente um Mac compacto com EFI, e o software do Apple TV é basicamente o Mac OS X Tiger (10.4.7) rodando a interface BackRow.app. O que nos impede de dar boot no AppleTV OS completo em um PC comum usando PC_EFI?
- Autor Principal
-
@NebKiwi
Publicado em 2009-05-01
- Coleção
- Arquitetura Base OSx86 10.X e Bootloaders
- Histórico no Arquivo
- 229,460 leituras históricas · 45 notas técnicas selecionadas (de 48 postagens) · 2009-05-01 – 2009-08-06
- Colaboradores Creditados (8)
- @andyvand (15)@NebKiwi (12)@alexkidd (6)@naquaada (5)@pαuℓzurrr. (4)@cmdshft (3)@milanca (2)@BlackCH
- Referência de Hardware
- USB 3.2 Boot Flash Drives ↗ SATA III & NVMe SSDs ↗ AMD Radeon GPUs (QE/CI) ↗
Seguinte... a história é esta: o hardware do Apple TV é essencialmente um Mac de entrada com suporte a EFI, e o sistema do Apple TV é basicamente o Mac OS X Tiger (10.4.7, se não me falha a memória) com uma interface gráfica estilizada. Eu sei que dá para instalar um Finder alternativo ou o próprio "Backrow.app" dentro de uma instalação normal do Tiger, mas o que exatamente nos impede de dar boot no sistema operacional completo do Apple TV diretamente em um PC comum? O PC_EFI já não era capaz de iniciar o Tiger? Tenho aqui uma imagem do sistema do Apple TV (o DMG de atualização baixado direto dos servidores da Apple) e estou disposto a fazer experimentos... sugestões e ideias são muito bem-vindas!
Notas de Campo e Relatos da Comunidade
45 respostas técnicas selecionadas a partir de 48 postagens originais
Eu tinha isso no meu sistema Tiger; posso dar uma olhada se ainda tenho o instalador. Mas hoje em dia não é mais necessário porque o FrontRow 2.x já se parece com o AppleTV. Eu preferia o visual do FrontRow 1.x, parecia muito mais legal com aqueles ícones grandes girando.
Acho que seria muito maneiro dar boot no próprio Sistema Operacional completo do AppleTV.
Porém, acho o aplicativo FrontRow 2 bem sem graça. A interface é bonita, mas acho que eu gostaria de um menu mais intuitivo e de uma animação de abertura ou algo como o que o AppleTV faz quando você o liga, em vez de apenas um fade out e fade in. O instalador para o Tiger não funciona no Leopard, o que é uma pena.
Seria ótimo se fosse suportado pelo Chameleon 2.1 como um sistema operacional separado!
@NebKiwiCerto... a história é a seguinte.. O hardware do AppleTV é essencialmente um Mac bem básico, e usa EFI. O software do AppleTV é basicamente o Tiger (10.4.7, se não me falha a memória) com uma interface gráfica caprichada. Sei que dá para instalar um Finder substituto ou "Backrow.app" numa instalação existente do Tiger, mas o que nos impede de dar boot no AppleTV completo…
É possível, mas você precisa de uma imagem completa e de um kernel prelinked customizado...
O ATV Take 2 também é possível (leve em conta que na verdade trata-se de um kernel xnu 10.5.6 embarcado...)
Kexts extras também são necessárias para suporte de hardware...
Também é preciso modificar o BackRow (com o GUID do disco dentro...) e remover a kext watchdog (ou ele reiniciará após pouquíssimo tempo...)
O passo final é modificar o Finder.app (= BackRow.app) aplicando patch no binário para que ele reconheça o computador como válido (trocar um branch if equal em determinado ponto por branch if not equal...)
Para AMD também há a necessidade de aplicar patch nos CPUIDs...
NOTA: O Finder.app do ATV OS não pode ser usado com o teclado, pois exige um transceptor IrDA USB + Apple Remote...
Existe, contudo, uma solução alternativa para isso...
Há uma kext de emulação de controle remoto + daemon disponível que permite mapear os 6 botões do controle remoto no teclado...
Quanto ao kernel, posso fornecer um compilado a partir dos meus códigos-fonte de kernel, de modo que funcionará perfeitamente com AMDs e Intels + usa o dynamic linker customizado (compilação diferente do dyld padrão estilo Voodoo, usa um arquivo diferente para o build...)
@andyvandÉ possível, mas você precisa de uma imagem completa e de um kernel prelinked customizado... O ATV Take 2 também é possível (leve em conta que na verdade trata-se de um kernel xnu 10.5.6 embarcado...) Kexts extras também são necessárias para suporte de hardware... Também é preciso modificar o BackRow (com o GUID do disco dentro...) e remover a kext watchdog (ou ele reiniciará após…
Uau, bem detalhado, valeu Andy.. parece um belo desafio então Não fazia ideia de que o AppleTV OS tinha tanta proteção...
@NebKiwiUau, bem detalhado, valeu Andy.. parece um belo desafio então Não fazia ideia de que o AppleTV OS tinha tanta proteção...
Esqueci de acrescentar...
O binário do BackRow.framework também precisa, além do GUID do disco, ter o /dev/diskXsY substituído pela entrada /dev/diskXsY da partição e drive de instalação...
Conheci alguém que fez isso num iMac4,1 real e funcionou...
Pode ser feito para hackintoshes também... sem problemas quanto a isso...
Ainda assim, notei que, embora o ATV Take 2 use um kernel do Leopard, os aplicativos que rodam nele + kexts costumam ainda ser compilados para o Tiger...
Então você precisaria das versões do Tiger das kexts (o ideal é 10.4.11...)
O IR Remote EMU eu posso fornecer (tenho uma versão melhorada...)
Porém ele precisaria ser recompilado para o SDK do Tiger... (talvez eu pense em criar uma entrada de SDK customizada especificamente otimizada para o ATV Take 2 OS...)
Também é possível que o patch no binário do Finder só seja necessário caso você o rode sobre o Mac OS X normal...
Acredito que ele verifica se o nome do OS no SystemVersion.plist está definido como AppleTV OS (o nome pode ser ligeiramente diferente... verifique no seu dmg em /System/Library/CoreServices/SystemVersion.plist)
Mas mesmo que seja necessário... o editor ht é o seu melhor amigo para navegar pelas referências e pelo código...
É bem fácil aplicar patch nas coisas dessa forma...
Estou usando um Apple Remote através de um receptor IR compatível com eHome (por exemplo, de um controle remoto do Windows Media Center) e o software Mira. Mas isso é outra história. Conheço o IR Receiver Emulator de que o Andy falou; ele era necessário para instalar o FrontRow em um sistema Tiger. Também existiam patches para que o BackRow ganhasse uma opção 'Sair' (Quit) permitindo iniciar um Finder modificado. Mas não tenho certeza se vale o esforço; para obter o mesmo resultado, basta montar um hackintosh num hardware barebone e adicionar o FrontRow na lista de itens de login. Aí você também poderia usar o Apple Remote com o Mira.
Ah sim, estou me lembrando dessas modificações de /dev/diskXsY. Isso tinha que ser feito com um editor hexadecimal, certo? E acho que o software do AppleTV criava um monte de pastas (numeradas de 00 a 99 ou algo assim?) no diretório raiz dos discos especificados, ficava bem feio.
@naquaadaEstou usando um Apple Remote através de um receptor IR compatível com eHome (por exemplo, de um controle remoto do Windows Media Center) e o software Mira. Mas isso é outra história. Conheço o IR Receiver Emulator de que o Andy falou; ele era necessário para instalar o FrontRow em um sistema Tiger. Também existiam patches para que o BackRow ganhasse uma opção 'Sair' (Quit) permitindo…
Acho que o Mira não vai funcionar, pois ele costuma mapear as funções do controle diretamente para as ações usadas, e não para a conversão IR real do Apple Remote...
A outra opção, portanto, é modificar o Finder.app substituindo também o BRFullScreenRenderer por BRWindowRenderer (para conseguir alternar pelo teclado para o OS com a tecla Command + Tab)
Ainda assim, você também precisa do daemon do Remote Emu rodando para conseguir usar a interface...
Certa vez fiz seis pequenos aplicativos (1 para cada botão) que mapeei para o AppleTV.app com uma ferramenta que permite atribuir funções de mouse a aplicativos (mapeando cada botão do mouse necessário para o botão correspondente... porém precisa de um mouse de 6 botões...)
Os aplicativos eram bem simples... apenas enviavam a ação sysctl apropriada para a respectiva função kern. etc...
Dessa forma, quando o aplicativo está rodando, dá para usá-lo com o mouse... (e não interfere na operação normal, tornando desnecessário o daemon em segundo plano para os mapeamentos de teclado...)
Testei isso com sucesso na época em um PC AMD rodando o Tiger 10.4.11
@NebKiwiO PC_EFI não era capaz de dar boot no Tiger?
Qualquer booter com suporte a EFI deve servir...
O Chameleon V2 funcionaria como mágica sem problema algum...
Se você estiver pensando em criar um AppleTV Take 2 OS customizado para PC, estou disposto a recompilar o conjunto do kernel para as partes embarcadas no estilo AppleTV...
Porém não tenho mais o DVD de instalação do Mac OS X 10.4.11, então será difícil fazer o prelink dos drivers necessários no kernel... (para o mach_kernel.prelink)
Mas suponho que eu possa usar um Combo Update do 10.4.11 para alguns deles...
Me avise...
projeto
@andyvandSe você estiver pensando em criar um AppleTV Take 2 OS customizado para PC, estou disposto a recompilar o conjunto do kernel para as partes embarcadas no estilo AppleTV... Porém não tenho mais o DVD de instalação do Mac OS X 10.4.11, então será difícil fazer o prelink dos drivers necessários no kernel... (para o mach_kernel.prelink) Mas suponho que eu possa usar um Combo Update do 10.4.11…
Eu adoraria trabalhar num projeto desses, mas me falta bastante conhecimento técnico específico de como fazer isso; quer dizer, sei como o Mac OS X funciona e tenho um conhecimento bem decente de UNIX e OSx86 em geral... Então, se alguém quiser trabalhar nisto, ficarei mais do que feliz em ajudar de todas as formas que puder — preciso mesmo de um bom projeto para o verão. Morar num vilarejo no meio do nada é um tédio só!
@NebKiwiEu adoraria trabalhar num projeto desses, mas me falta bastante conhecimento técnico específico de como fazer isso; quer dizer, sei como o Mac OS X funciona e tenho um conhecimento bem decente de UNIX e OSx86 em geral... Então, se alguém quiser trabalhar nisto, ficarei mais do que feliz em ajudar de todas as formas que puder — preciso mesmo de um bom projeto para o verão.…
OK, vou modificar levemente o procedimento de compilação do kernel para permitir gerar um kernel estilo embarcado para o AppleTV OS Take 2 com dynamic linker customizado...
Depois você poderá fazer o prelink das partes necessárias (kexts e drivers) dentro do mach_kernel (criando assim o mach_kernel.prelink)
Também vou recompilar o IR Remote Emulator necessário para o Tiger...
Enviarei ambos para você assim que terminar cada um (ainda tenho bastante trabalho pela frente... mas começo a mexer nisso amanhã...)
@andyvandOK, vou modificar levemente o procedimento de compilação do kernel para permitir gerar um kernel estilo embarcado para o AppleTV OS Take 2 com dynamic linker customizado... Depois você poderá fazer o prelink das partes necessárias (kexts e drivers) dentro do mach_kernel (criando assim o mach_kernel.prelink) Também vou recompilar o IR Remote Emulator necessário para…
Andy, você é incrível. Sério mesmo, muitíssimo obrigado! Você é muito gentil. Quem mais embarca nessa? Algum ultra-geek de OSx86 com tempo livre?
AppleTV
OK, tenho uma imagem completa do sistema (2.3.1) e já a restaurei em uma partição dedicada. Tudo pronto para começar
@NebKiwiOK, tenho uma imagem completa do sistema (2.3.1) e já a restaurei em uma partição dedicada. Tudo pronto para começar
kkk para citar o bobo do Ballmer da M$...
@Steve BallmerDevelopers, developers, developers...
OK... consegui algum tempo livre e estou começando a atualizar os códigos-fonte para criar o kernel adequado...
Posto aqui quando terminar...
Fazendo um ótimo progresso por aqui...
Tive que criar um SDK customizado para compilar o dyld, contudo...
O trabalho continua...
@andyvandFazendo um ótimo progresso por aqui... Tive que criar um SDK customizado para compilar o dyld, contudo... O trabalho continua...
W00T.. Muito obrigado por fazer isso!
@NebKiwiW00T.. Muito obrigado por fazer isso!
OK... o dyld customizado do AppleTV já compila (apenas i386...)
O kernel está compilando neste exato momento...
Acho que terei um pronto muito em breve...
E quanto aos drivers de vídeo, som, chipset, WLAN, suporte a AMD... Imagino que especialmente o vídeo seja problemático se o AppleTV ainda for baseado no Tiger e placas mais novas só forem suportadas no Leopard.
Não será problema...
É um kernel do Leopard compilado para o AppleTV (diferente dos kernels padrão 792.XXX.XXX do AppleTV)
Ele suportará também as kexts mais novas e rodará o restante perfeitamente...
As outras kexts funcionarão (por compatibilidade) e o resto também rodará perfeitamente...
Sem mais delongas, anuncio:
O kernel do AppleTV OS...
Baixem em:
rapid share.com/files/230399705/AppleTV_Kernel.zip
AppleTV
Vou testar assim que chegar em casa! Estou na faculdade no momento. Valeu, Andy,
@andyvandSem mais delongas, anuncio: O kernel do AppleTV OS... Baixem em: rapid share.com/files/230399705/AppleTV_Kernel.zip
Se isso fizer o AppleTV rodar na sua máquina, POR FAVOR nos conte exatamente como você conseguiu. Isso será épico se funcionar.
Talvez você devesse adicionar uma versão modificada: AndyTV
Se alguém tiver um instalador adequado, seria ótimo. Vocês acham que funcionaria a partir de um pendrive USB ou HD externo USB?
@naquaadaTalvez você devesse adicionar uma versão modificada: AndyTV Se alguém tiver um instalador adequado, seria ótimo. Vocês acham que funcionaria a partir de um pendrive USB ou HD externo USB?
Acho que o plano é empacotar tudo num .pkg e adicioná-lo a um DVD do Leopard para criar um instalador modificado.. assim que estiver rodando redondo, claro..
@NebKiwiAcho que o plano é empacotar tudo num .pkg e adicioná-lo a um DVD do Leopard para criar um instalador modificado.. assim que estiver rodando redondo, claro..
Como estão progredindo os testes?
Alguma sorte em fazê-lo dar boot direitinho?
Dando boot
@andyvandComo estão progredindo os testes? Alguma sorte em fazê-lo dar boot direitinho?
Fala Andy, estou indo dormir agora.. exausto! Vou brincar com isso amanhã Se eu conseguir fazer esse bendito kernel prelinked funcionar.. Vou ver até onde consigo chegar apenas colocando as kexts em /S/L/E..
Até mais, vou mantendo você informado.
Atv
agradeceria muito qualquer voluntário disposto a ajudar com isto.. Alguém com alguns GBs sobrando? O sistema está dando boot bem nos estágios iniciais, mas apresentando alguns pequenos erros que achamos ser apenas o meu hardware.Me mandem MP se tiverem interesse. Obrigado.
eu poderia testar, dar boot por um HD externo USB ou pendrive USB.. se 2GB não forem suficientes, o HD USB resolve, tem espaço de sobra lá.
@milancaeu poderia testar, dar boot por um HD externo USB ou pendrive USB.. se 2GB não forem suficientes, o HD USB resolve, tem espaço de sobra lá.
2 GB devem bastar... (para a parte menor)
Provavelmente precisa ser particionado como GUID com os mesmos GUIDs do AppleTV (4 partições; confira a wiki do AwkwardTV sobre como usar HD externo... o guia de particionamento deve funcionar)
Ok Andy, valeu.. Tenho um HD USB que está totalmente vazio, então posso particionar o disco como quiser sem me preocupar com os dados. Me mande MP com as informações e posso testar nas minhas máquinas.
Eu gostaria de testar isso também..
Mas tenho um sistema AMD. Este kernel do AppleTV funcionará num sistema AMD?
E como se configura tudo isso?
Basta restaurar o AppleTV OS em um HD, substituir o kernel, adicionar as kexts necessárias e dar boot?
Valeu!
Baixe a imagem diretamente dos servidores da Apple Clique Aqui. (mesu.apple.com/data/OS/061-5816.20090224.At23V/2Z694-5587-18.dmg)
Troque o kernel pelo que o Andy postou no tópico e copie por cima todas as kexts padrão do Leopard, obviamente usando a System.kext e a IPFirewall.kext do pacote do Andy. Apague a kext watchdog que vem na pasta Extensions por padrão. Aplique as permissões e tente dar boot.. basicamente é isso. Divirtam-se!
Quanto a AMD e Intel... não faço ideia. Presumo que vá funcionar, já que o kernel é baseado nos códigos-fonte do kernel do Andy.
Montei a imagem de disco, mas não estou vendo a kext watchdog. Há alguma outra informação ou procedimento necessário? Eu gostaria muito de brincar com isso.
EDIT: Deixa pra lá, achei. Então, basicamente, é só copiar por cima as kexts do Leo que usamos e pronto, né? Parece bem simples.
@Hara TaikiMontei a imagem de disco, mas não estou vendo a kext watchdog. Há alguma outra informação ou procedimento necessário? Eu gostaria muito de brincar com isso. EDIT: Deixa pra lá, achei. Então, basicamente, é só copiar por cima as kexts do Leo que usamos e pronto, né? Parece bem simples.
Basicamente sim. Divirta-se com ele!
@NebKiwiBasicamente sim. Divirta-se com ele!
você pode postar instruções detalhadas de como fazer isso?
baixei o dmg do site da Apple e restaurei-o em um pendrive USB.
copiei minhas kexts do Leopard por cima das kexts da OSBoot, copiei e substituí o mach_kernel, system.kext e ipfirewall.kext do Andy, apaguei a watchdog.
instalei o Chameleon EFI. apliquei as permissões...
quando dou boot nele, aparece "error parsing plist fileloading Darwin/x86"
e depois mostra "errors encountered while starting up the computer"
@NebKiwiBaixe a imagem diretamente dos servidores da Apple Clique Aqui. (mesu.apple.com/data/OS/061-5816.20090224.At23V/2Z694-5587-18.dmg) Troque o kernel pelo que o Andy postou no tópico e copie por cima todas as kexts padrão do Leopard, obviamente usando a System.kext e a IPFirewall.kext do pacote do Andy. Apague a kext watchdog que vem…
Então você conseguiu fazer funcionar?
Poderia postar alguns vídeos/fotos se conseguiu?
Estou prestes a tentar aqui
Edit:
Acho que acabei de matar o meu sistema...
Já é a segunda vez esta semana
Criei uma nova partição e restaurei a OSBoot nela.
Depois substituí todas as extensions, apaguei a watchdog e adicionei o Kernel AppleTV do AnV.
Aí, quando tentei dar boot no meu sistema, ele só mostrava
boot0: done, acho eu, e então reiniciava o PC...
Tentei remover a partição do AppleTV usando um DVD, mas agora está dando erros de alocação de memória (memory allocation error) ao tentar dar boot pelo HD do OSX...
É possível restaurar o Chameleon no HD?
Eu estava usando a versão mais recente...
Valeu!
como você aplica as permissões das kexts adicionadas à pasta Extensions da OSBoot?
@pαuℓzurrr.Então você conseguiu fazer funcionar? Poderia postar alguns vídeos/fotos se conseguiu? Estou prestes a tentar aqui Edit: Acho que acabei de matar o meu sistema... Já é a segunda vez esta semana Criei uma nova partição e restaurei a OSBoot nela. Depois substituí todas as extensions, apaguei a watchdog e adicionei o Kernel AppleTV do AnV. Aí, quando tentei dar boot no meu…
Alguém, por favor?
Instalei o OSX em uma partição USB; consigo acessar o HD, mas ele não quer montar a partição principal! Está dando um erro dizendo que preciso rodar o Reparador de Disco (First Aid) nela, mas quando faço isso recebo este erro:
Verifying volumes "disk0s2"
** /dev/disk0s2
Invalid BS_jmpBoot in boot block: fa31c0
Error: File system verify or repair failed.
Ainda consigo salvar meus dados do disco rígido?
alguém pode me enviar um Finder patcheado do AppleTV 2.3.1?
Mostrar mais 4 notas técnicas da comunidadeRegistro histórico completo
Well my hdd was ----ed up and i needed to write zero's to make it work again...
So warning to all, Don't Install On Same HDD as you're running install...
ok, i've patched the appletv finder and managed to boot to the itunes pairup screen.
but i have no way of controlling it
the keyboard and mouse won't work
@alexkiddok, i've patched the appletv finder and managed to boot to the itunes pairup screen. but i have no way of controlling it the keyboard and mouse won't work
You need to install the remote emu by Brandon Holland:
brandon holland.com/irkeyboardemu.html
This will allow you to control aTV with a USB keyboard
have any one tried appletv os 2.4 ?
it seems that they have added some checks to prevent non atv hardware to sync with itunes.
hopefully someone will come out with a patch.
Fontes e Registro de Autoria (8 membros creditados · Tópico #2738)
| Usuário | Contribuição no Dossiê | Postagens | Período Ativo |
|---|---|---|---|
| @andyvand | Colaborador Essencial | 15 | 2009-05-04 → 2009-05-10 |
| @NebKiwi | Autor Principal | 12 | 2009-05-01 → 2009-05-17 |
| @alexkidd | Colaborador Essencial | 6 | 2009-05-18 → 2009-08-06 |
| @naquaada | Colaborador Essencial | 5 | 2009-05-01 → 2009-05-08 |
| @pαuℓzurrr. | Colaborador Essencial | 4 | 2009-05-17 → 2009-05-20 |
| @cmdshft | Colaborador Essencial | 3 | 2009-05-01 → 2009-05-17 |
| @milanca | Colaborador | 2 | 2009-05-10 |
| @BlackCH | Colaborador | 1 | 2009-05-21 |