Agora que os consoles domésticos se tornaram poderosas centrais multimídias, foi necessário ter um sistema operacional mais complicado para fornecer aos usuários mais serviços e jogos com uma camada maior de abstração. Tudo isso, mantendo a segurança e o desempenho adequado.
Consequentemente, termos como shell ou BIOS não são mais usados para descrever esta área, não porque não existem mais, mas devido descreverem apenas uma pequena fração do novo sistema. O termo genérico agora é "sistema operacional", que compreende muitas áreas (carregador de inicialização, kernel, interface do usuário) analisadas separadamente. Como sempre, recomendo verificar o sistema operacional do PSP primeiro, já que seu projeto modular é um ingrediente recorrente no PS3.
Níveis de privilégio do Cell
Antes de entrarmos em detalhes, preciso mencionar os diferentes modos de operação no Cell. Eu originalmente planejava descrever isso na seção "CPU", mas como aquela seção ficou incrivelmente densa, vou apresentá-lo aqui onde você verá seu uso prático imediatamente. Além disso, seus modos também afetam o projeto de qualquer sistema operacional que execute dentro do Cell — não apenas o que a Sony desenvolveu para o console.
Dito isso, para proteger contra o acesso não autorizado aos dados e/ou recursos sensíveis, o Cell implementa um conjunto de níveis de privilégio herdado da especificação PowerPC. Em outras palavras, o Cell executa os programas em dois modos:
- Modo privilegiado: o Cell concede acesso a todos os cantos do seu hardware (registradores, endereços de memória, instruções, etc.) . Por razões de segurança, este modo só deve ser usado pelo núcleo do sistema operacional (ou seja, o Kernel).
- Além disso, o Cell foi projetado para executar vários sistemas operacionais simultaneamente e para alcançar isso no nível de hardware, o "modo privilegiado" pode ser dividido em dois subníveis: Privilegiado 1 e Privilegiado 2. O "Privilegiado 2" é destinado a ser usado por um Kernel, enquanto o "Privilegiado 1" é usado por um Hypervisor, este último arbitra recursos entre diferentes Kernels que executam simultaneamente.
- A funcionalidade "hypervisor" também se tornou uma área de pesquisa na sede da IBM .
- Modo usuário: como o nome indica, o Cell concede apenas um conjunto limitado de recursos e é direcionado para aplicativos tradicionais que rodam em cima do sistema operacional. Se por algum motivo, um programa solicitar acesso a um local protegido, então a execução é direcionada ao Kernel ou Hypervisor para decidir se o acesso deve ser concedido ou não.
Além disso, os SPEs contêm um modus operandi chamado modo isolado e ele protege o processo a execução dentro da SPU, de modo que nenhuma unidade externa (o PPE ou outros SPEs) possa acessá-la até que a SPU termine. O modo isolado pode ser ativado após o envio de um programa para qualquer SPE e garante que o processador não seja alterado enquanto um código sensível (ou seja, uma rotina de criptografia) está executado.
O sistema operacional da Sony, que descreverei nos parágrafos a seguir, usa todos os modos descritos para lidar com sua segurança.
Visão geral
Como eu disse antes, o sistema operacional é bastante complexo. Portanto, para podermos seguir esta seção sem muita dificuldade, podemos dividir o tipo de arquivos que encontraremos no sistema operacional do console em camadas diferentes:
- Loaders (carregadores): para resumir, os programas/binários nesse console são sistematicamente criptografados. Assim, os "Loaders" são programas que executam programas "reais". Em outras palavras, os Loaders pegam os binários, descriptografam, verificam sua autenticidade e, finalmente, enviam para o respectivo processador (o PPE ou SPE) para execução. Se isso não parece complicado, os Loaders são ligados em cadeia para proteger ainda mais o software. Finalmente, os Loaders são encontrados em muitas mídias.
- Alguns Loaders são atualizados pela Sony (por meio de atualização de software), enquanto outros não podem ser alterados. Isso é independente de serem instalados em armazenamento regravável, já que alguns Loaders são criptografados usando chaves específicas do console, então não podem ser alterados depois que o console sai de fábrica (ao menos pelos meios tradicionais).
- System files (arquivos de sistema): esses compreendem de binários de baixo nível (executados através de Loaders), metadados para organizar o hardware, utilitários e outros recursos (ou seja, fontes, imagens). Assim como os Loaders, há arquivos de sistema específicos do console que não podem ser substituídos ou gerados automaticamente.
- Alguns binários pegaram emprestado o código dos projetos FreeBSD e NetBSD .
- User Content (conteúdo de usuário): esses incluem arquivos de configuração (por exemplo, configurações da internet), dados usados por jogos (por exemplo, arquivos de instalação e salvamento de jogos) e dados gerados automaticamente pelo console (por exemplo, informações de disco rígido).
- Ao contrário das outras camadas, a destruição desses dados não leva a resultados catastróficos.
Hierarquia de segurança do sistema operacional
Em termos gerais, o sistema operacional do PS3 é projetado com a mesma abordagem modular do PSP. Relembrando do artigo anterior, o sistema operacional é composto de vários módulos. Esses podem servir ao usuário (como um jogo ou aplicativo) ou residir na memória indefinidamente para servir outros módulos (na forma de chamadas de sistema e/ou drivers). Alguns módulos têm mais acesso privilegiado do que outros (módulo do Kernel versus módulo do usuário).

Diagrama mostrando como os componentes do sistema operacional do PlayStation se encaixam nos níveis de privilégio do Cell.
Referência ao "OtherOS" são explicadas com mais detalhes nas próximas seções.
O sistema operacional, durante seu ciclo de vida, chamará muitos módulos com diferentes privilégios. A Sony construiu seu sistema operacional para que os módulos rodem nos três níveis de privilégio do Cell:
- Nível 1: aqui é onde reside um Hypervisor programado pela Sony. Também referido como
lv1, este programa é a porta para cada bit do console e vinculado as exceções acionadas pela MMU. Dito isso, o hypervisor só aceita solicitações de programas autorizados pela Sony (residentes no próximo nível de privilégio). Enquanto o Hypervisor reside na memória, ele também fornece chamadas de sistema de baixo nível e suporte ao sistema de arquivos FAT16. - Nível 2: naturalmente reservado para o Kernel, um programa privilegiado também chamado
lv2ou "Supervisor". O Kernel abstrai o hypervisor para que os programas do nível 3 não tenham interação direta com ele. O Kernel fornece funções de multithreading tanto para PPU quanto para SPU. Por fim, o Kernel inicializa os módulos do espaço do usuário. - Nível 3: o restante dos programas (chamados espaço do usuário), incluindo jogos e a interface visual, são executados neste nível. Estes programas estão sob o controle do Kernel para se comunicar com o hardware do console e não podem criar processos/programas novos unilateralmente.
Mídia de armazenamento
Com tudo isso dito, onde todos esses dados são armazenados? Do ponto de vista do usuário comum, existem apenas dois meios visíveis: os discos Blu-ray para jogos e um disco rígido para saves. Bem, existem mais alguns, então vamos dar uma olhada em cada um deles agora!
BootROM do Cell
Acontece que dentro do Cell há uma pequena ROM escondida em algum lugar que os fabricantes podem usar para armazenar um boot-loader (carregador de inicialização) "protegido". A IBM fornece esse espaço para poupar as empresas (não apenas a Sony) de terem que implementar manualmente seus próprios métodos de ofuscação de código para proteger seu código de inicialização, já que os componentes disponíveis comercialmente nem sempre estão preparados para suas necessidades específicas.
Como essa memória já está fisicamente protegida com ofuscação de código, ela não precisa ser criptografada. Desta forma, ela é ideal para um boot-loader de primeiro estágio (que não pode ser criptografado) e o PlayStation 3 armazena seu estágio inicial de inicialização nela.
Memória Flash NAND/NOR
Lembre-se daquelas 256 MB de memória flash NAND que mencionei brevemente antes? Bem, é aqui que fica a maior parte do sistema operacional. Isto é, era até que a Sony lançou o modelo CHECHH no final de 2007, substituindo as NANDs de 256MB por uma NOR de apenas 16 MB. Como consequência, alguns arquivos tiveram que ser movidos para outro lugar. Para fins de simplicidade, vamos primeiro ver o que esses chips armazenam :
- Carregadores específicos do console: especificamente, dois carregadores chamados
bootldremetldr. Esses arquivos são criptografados com uma chave gravada durante a fabricação, portanto, não podem ser substituídos!- Seja como for, existem funções ocultas no hipervisor da Sony que permitem atualizá-los, embora, por alguma razão, nunca tenham sido usadas .
- CoreOS: a primeira metade do sistema operacional. Consiste principalmente em mais carregadores que continuarão o processo de inicialização e, eventualmente, a inicialização a segunda metade (GameOS). O CoreOS também fornece o menu de recuperação, um shell alternativo que contém os utilitários de manutenção que os usuários podem usar para (tentar) reparar seu console.
- IDs únicos: semelhantes ao IDStorage do PSP, eles são usados pelo console para controlar o hardware protegido como a unidade de Blu-ray; ou pela Sony para autenticar o console em seus servidores online (ou seja, a chave IDPS).
- Recursos de segurança: alguns programas dependem deles para executar operações de segurança. Por exemplo, filmes em Blu-ray com DRM verificam um bloco chamado Virtual Table Rights Management (VTRM — tabela virtual de gestão de direitos, em tradução livre). A Sony também armazena ferramentas de revogação e registros para fazer uma lista negra de certificados de segurança que foram comprometidos no passado.
Devido ao seu tamanho maior, os modelos com memória Flash NAND também armazenam a parte restante do sistema operacional (chamada de GameOS ou devflash). Isso inclui:
- A Interface Visual (VSH, de Visual Shell): uma continuação da interface característica do PSP, também é fornecida com toneladas de módulos (plugins) e recursos.
- Emuladores: programas mencionados anteriormente que permitem que o PS3 execute jogos de PS1, PS2 ou PSP. O emulador específico do PS2 carregado depende da revisão do console (se ele tem o hardware completo do PS2, ou o hardware parcial do PS2, ou se não tem nenhum hardware do PS2).
- Bibliotecas de tempo de execução: programas desenvolvidos com o SDK da Sony são vinculados dinamicamente a um conjunto de bibliotecas armazenadas aqui.
- Reprodutor de Blu-ray: programas que lidam com a interação com a unidade de Blu-ray e a decodificação de filmes.
- Recursos do sistema: como fontes e certificados nos quais os binários dependem para funcionar.
Como se não bastasse, os consoles com NAND também armazenam outros dados, como o xRegistry (coleção de configurações de rede, contas da PlayStation Network e uma lista de dispositivos Blutooth emparelhados), mas registros de revogação e um Carregador para o OtherOS (uma peça realmente interessante que discutiremos mais nos próximos parágrafos).
Disco rígido
O estreante disco de 2,5 polegadas, com capacidade de armazenamento que variou de 20 GB a 500GB (conforme mais revisões foram lançadas), fornecia armazenamento persistente de dados para:
- Conteúdo do usuário: incluindo saves de jogos, troféus (mais informações na seção "Jogos") e outros dados relacionados ao usuário.
- Recursos de jogo: jogos podem copiar arquivos do disco Blu-ray para o disco rígido para melhorar os tempos de carregamento. Eles são tratados como "dados do jogo" pelo sistema operacional.
- Cache: uma partição separada de 2 GB está disponível para jogos para armazenamento temporário (caso a RAM principal não seja suficiente).
No entanto, os sistemas NOR também armazenam o GameOS no HDD. Como consequência, sempre que o usuário troca o disco rígido, o console solicita um arquivo de atualização para reinstalar o GameOS no disco. Seja como for, nenhum dos sistemas NOR ou NAND será inicializado sem o disco rígido.
Certos dados do usuário podem ser salvos em um pendrive USB e depois transferidos para outro console, se necessário, embora esse processo reformate o console mais novo antes de copiar os dados antigos.
Memória eMMC
Em 2012, a Sony lançou uma revisão redesenhada do console chamada "SuperSlim" (codinome CECH-4xxx). Estes estavam disponíveis em três versões: uma com um disco rígido de 250 GB, outra com um disco rígido de 500 GB ou uma terceira opção com apenas uma memória flash eMMC interna de 12 GB. As duas primeiras opções seguem o projeto de sistema de arquivos implementado em modelos com memória NOR, enquanto a terceira armazena tudo na memória eMMC (incluindo dados do usuário) e segue o projeto com memória NAND para armazenar os arquivos do sistema.
Contudo, há uma pegadinha no modelo com memória eMMC. Em vez do chip de memória NOR, a Sony encaixou um chip Panasonic "MN66840", que, segundo o PS3 Dev Wiki , parece redirecionar o barramento da memória NOR para a memória eMMC. Presume-se que isso seja apenas um truque para economizar custos, já que recicla a mesma Southbridge das outras versões.
Curiosamente, se o usuário decidir colocar um disco rígido no modelo com memória eMMC, o console move todos os dados do usuário da memória eMMC para o novo disco rígido. Como consequência, o usuário pode usar totalmente o disco rígido, embora o espaço vazio deixado na memória eMMC fique sem uso.
Processo de inicialização
Certo, utilizando todo o conhecimento anterior, você vai aprender como o sistema inicia — e antecipo: é bastante complicado. A motivo é simples: a Sony não quer que você mexa no hardware ou software deles, então eles construíram várias camadas de ofuscação e criptografia para impedir que você invada e carregue seu próprio código (e esperançosamente desista e continue comprando jogos/filmes/o que for), porém, como a história nos conta, o oposto aconteceu.
Nas próximas linhas, detalho o que este console faz assim que você pressiona o botão de ligar. Note que este processo só mudou drasticamente uma vez (depois que hackers o quebraram). Então, para fins de simplicidade, começamos com o processo de inicialização "original" (implementado antes da versão de sistema 3.60) :
- Um chip separado na placa-mãe (chamado de Syscon) é ligado e executa instruções de sua ROM interna. Em seguida, envia um "Anel de Configuração" para o Cell via SPI (uma conexão serial), isso inicializa o Cell e desativa o oitavo SPU. Por fim, ele liga a linha de energia e dá vida ao Cell.
- O vetor de reinicialização da PPU do Cell aponta para a sua ROM oculta, que armazena as rotinas para localizar e descriptografar o
bootldrna memória Flash. A parte descriptografada é então carregada pela primeira SPU em modo de isolamento. - Após carregar o
bootldr, a SPU, já isolada, inicia parte do hardware (a memória XDR e as interfaces de E/S), descriptografa um binário chamadolv0e instrui a PPU a executá-lo. - A PPU, agora executando
lv0, descriptografa ometldr(um carregador específico do console) e o envia para a terceira SPU, novamente em modo de isolamento. - A SPU2, agora executando o
metldr, executa mais cinco carregadores sequencialmente:- O
lv1ldrdescriptografa e carrega olv1, que contém o Hypervisor que assume o primeiro nível de privilégio. Além disso,lv1configura o disco rígido, a unidade de Blu-ray e o RSX. - O
lv2ldrdescriptografa e carrega olv2, que contém o Kernel e é executado em cima do hypervisor. Ele também finaliza a inicialização do RSX, a emulação de PS2, o controlador Bluetooth, o controlador USB e o leitor Multi-card. - O
appldrdescriptografa e carrega ovsh( o Visual Shell) e outras dependências. Depois, ovshpermite que o usuário carregue um jogo. - O
isoldrdescriptografa e carrega módulos que serão executados na terceira SPU em modo de isolamento. Esses módulos são críticos para a segurança e realizam muitas funções criptográficas ao longo do ciclo de vida do console. Consequentemente, a terceira SPU é reservado para funções de segurança e os jogos não podem usá-lo (deixando apenas seis SPEs disponíveis para os jogos).
- O
A PPU, após carregar o vsh, concede o controle ao usuário através de uma interface gráfica de usuário, que se manifesta com um som de orquestra icônico seguido do menu XMB.
Processo de inicialização revisado
Em março de 2011, um hacker conhecido pelo nome "GeoHot" quebrou a segurança do metldr, comprometendo assim a autenticidade dos carregadores subsequentes. Portanto, a Sony revidou emitindo atualizações de segurança em seu hardware e software. Essas correções são discutidas em maiores detalhes mais a frente na seção "Antipirataria e Homebrew".
Visual Shell
Você está ficando cansado de toda essa teoria? Deixe-me mudar para algo que todos possam realmente ver: A Visual Shell.
A XrossMediaBar (XMB), uma nova interface de usuário que ganhou reconhecimento internacional dois anos antes, foi ligeiramente adaptada para que possa ser interagida do sofá (chamada de "10-foot user interface" - "interface de usuário de 10 pés, ou 3 metros", em tradução livre) e expandida para aproveitar a resolução "full HD" (1920x1080 píxeis).

XMB no PSP (2004).
Renderizado em 480×272 píxeis.

XMB no PS3 (2006).
Renderizado em 1920x1080 píxeis.
Embora os usuários do PSP encontrem muitas semelhanças, a Sony adicionou um novo conjunto de aplicativos que usam o potencial do Cell, do RSX e da unidade de Blu-ray. Muitos deles relacionados a multimídia (como o reprodutor de vídeo e a apresentação de slides de imagens), televisão (como aplicativos de TV sob demanda, como o iPlayer da BBC), perfil social (avatares online) e compras online (PlayStation Now e PlayStation Store, só para citar alguns).
Além disso, como este é um console doméstico que pode ser compartilhado por várias pessoas, a XMB suporta múltiplos usuários, onde cada um pode usar uma conta diferente da PlayStation Network e armazenar seus dados de usuários separados (jogo comprados e saves).

Assim como no PSP, destacar um jogo pode estilizar o plano de fundo para chamar sua atenção!.

O XMB fornece uma imensa quantidade de configurações, especialmente úteis quando você precisa configurar sua novíssima TV 1080p com áudio surround 3.1.

O XMB pode instalar jogos, atualizações e expansões (DLCs) usando um instalador de pacotes nativo.
Por fim, a inclusão de um disco rígido é um alívio para os jogadores veteranos que, no passado, eram obrigados a comprar armazenamento proprietário caro (Memory Stick Pro Duo) sempre que ficavam sem espaço.
Empreste-me o seu PS3
De maneira impressionante, nem todos os aplicativos incluídos no console tinham objetivos egoístas. Com o advento da computação distribuída e as capacidades do Cell para projetos de ciências de dados, a Universidade de Stanford se uniu à Sony para permitir que os proprietários do PlayStation 3 contribuíssem para pesquisas médicas. O resultado disso foi a Folding@home.
A Folding@home consistia em um aplicativo instalado em todos os PlayStation 3 que, uma vez aberto pelo usuário, se conectava a um servidor central e executava simulações de proteínas. Além disso, o aplicativo também podia ser executado em segundo plano durante os horários de menor uso.

O Folding@Home exibe o trabalho realizado desde que o usuário iniciou o aplicativo .
Ao longo de sua vida útil, o poder de computação combinado de 15 milhões de usuários do PS3 em todo o mundo ajudou o Folding@home em suas pesquisas para a cura de doença de Alzheimer . No final, a Folding@home e a Sony aposentaram o aplicativo em 2012 e o projeto continua em outras plataformas.
Pessoalmente, gosto de ler sobre projetos que fazem contribuições globais usando as capacidades da computação distribuída, ao invés dos artigos sensacionalistas intermináveis sobre mineração de criptomoedas. Creio que não podemos esquecer que, com cada nova tecnologia poderosa, sempre teremos aplicativos altruístas desenvolvidos para ela.
Uma proposta de múltiplos sistemas operacionais
Quando a IBM definiu o Cell no nível de software, eles mencionaram que o Cell seria capaz de executar vários sistemas operacionais (SO) ao mesmo tempo, devido aos vários núcleos de execução do Cell . Assim, a Sony levou essa ideia adiante e adicionou uma opção no XMB para instalar um sistema operacional secundário . Essa funcionalidade foi chamada de OtherOS e, em resumo, fornece um gerenciador de partição (o XMB apenas guia o usuário para redimensionar a partição do GameOS e alocar novo espaço para o segundo SO) e um botão para iniciar a partir do segundo SO (graças aos arquivos de inicialização do OtherOS já configurados na memória Flash). Então, o usuário só precisa preencher a nova partição com um SO. Consequentemente, várias distribuições Linux (por exemplo, Ubuntu e Fedora) adicionaram o PS3 como outro possível alvo para instalação. Você pode considerar isso como um sucessor espiritual do Linux para PS2.

Red Ribbon GNU/Linux é uma distribuição exclusiva para o PS3/Cell e compilada para arquitetura PPC64 .
Graças ao OtherOS, usuários experientes tiveram a oportunidade de desenvolver aplicativos homebrew que rodavam no Cell sem restrições de licença, o que foi particularmente interessante para fins de pesquisa/científicos , uma vez que este console tinha um preço mais acessível do que um mainframe. Para fins de multimídia, a unidade de Blu-ray e o leitor Multi-card também eram acessíveis a partir do OtherOS.
Por outro lado, embora os privilégios do OtherOS possam superar os do GameOS (no nível de Kernel), eles não ultrapassam o hypervisor, que ainda reside na memória. Portanto, qualquer acesso de hardware do OtherOS ainda depende da vontade do hypervisor da Sony, e acontece que este último bloqueia o acesso aos buffers de comando do RSX (impedindo o uso das unidades de sombreamento, entre outros componentes usados para acelerar as operações gráficas). Consequentemente, as distribuições Linux recorrem à renderização de software (todos os gráficos são desenhados pelo Cell) e, em seguida, o buffer de imagem é transmitido para o RSX para exibição. Embora seja decepcionante que o OtherOS não possa aproveitar todas as capacidades do console, isso provavelmente foi feito para reduzir as superfícies de ataque. Ironicamente, o uso do Cell pelo OtherOS é semelhante ao que a IBM/Toshiba/Sony podem ter originalmente previsto para o PS3!
Compartilhando o mesmo destino do aplicativo Folding@home, o OtherOS foi eventualmente removido em uma atualização subsequente, mas devido a causas diferentes (principalmente relacionadas à segurança). Pouco depois, o OtherOS foi restaurado de forma não oficial graças a exploits de software e de engenharia reversa. No momento, o OtherOS está disponível se o usuário instalar um firmware personalizado. Eu explico isso mais detalhadamente na seção "Antipirataria e homebrew".
No momento em que este texto foi escrito, o desenvolvedor René Rebe está implementando drivers xf86 próprios que aproveitam a aceleração fornecida pelo RSX e seus 256 MB de memória . Seu trabalho é combinado com outros desenvolvimentos que removeram as restrições impostas pelo hipervisor (inicialmente graças à descoberta de exploits de software e posteriormente com o uso de um firmware personalizado, este último é explicado mais detalhadamente na seção "Antipirataria e homebrew") O Sr. Rebe publica seu progresso em seu canal no YouTube e conta com doações voluntárias para continuar seu trabalho .
Atualização
Para a parte final desta longa seção, falaremos sobre as capacidades de atualização do GameOS.
Em resumo, assim como o PSP, a Sony distribuiu arquivos PS3UPDAT.PUP que empacotam todos os novos binários do sistema operacional. Devido ao sistema de segurança do console, apenas os arquivos que não estão protegidos com chaves exclusivas do console e que são armazenados em memória regraváveis (Flash, disco rígido, eMMC) são atualizáveis, o restante deve permanecer como está.
Os arquivos PUP foram distribuídos através do site oficial da Sony, do assistente de atualização da XMB ou encontrados nos conteúdos de um disco de jogo (todos os jogos incorporam um arquivo PUP, refletindo a versão SDK que ele foi desenvolvido). Como os modelos com memória Flash NAND contêm apenas 256 MB de espaço e armazenam todo o sistema operacional, a Sony nunca lançou arquivos de atualização com tamanhos maiores que 256 MB.
