Теперь, когда домашние консоли стали мощными мультимедийными центрами, потребуется более сложная операционная система (ОС), чтобы предоставить пользователям больше сервисов и игр с более толстым слоем абстракции. Все это при сохранении безопасности и производительности на должном уровне.
Следовательно, такие термины, как shell или BIOS больше не используются для описания этой области, не потому что они больше не существуют, а потому что они описывают небольшую часть новой системы. В настоящее время общим термином является "операционная система", которая включает в себя множество областей (загрузчик, ядро, пользовательский интерфейс), анализируемых отдельно. Как всегда, я рекомендую сначала ознакомиться с ОС PSP, поскольку её модульная конструкция - повторяющийся ингредиент PS3.
Привилегированная безопасность Cell
Прежде чем мы погрузимся в детали, я должен упомянуть о различных режимах работы Cell. Сначала я планировал описать это в разделе "Процессор", но поскольку он получился невероятно плотным, я расскажу об этом здесь, где вы сразу же увидите его на практике. Кроме того, режимы работы Cell также влияют на дизайн любой операционной системы, работающей в Cell - не только той, которую Sony разработала для этой консоли.
Тем не менее, для защиты от несанкционированного доступа к конфиденциальным данным и/или ресурсам, Cell реализует уровни привилегий, унаследованных от спецификации PowerPC. Другими словами, Cell выполняет программы в двух режимах:
- Привилегированный режим: Cell предоставляет доступ к каждому уголку своего железа (регистры, адреса памяти, опкоды и прочее) . По соображениям безопасности этот режим должен использоваться только ядром ОС.
- Более того, Cell также был подготовлен к одновременному запуску нескольких ОС. Для достижения этого на аппаратном уровне, "режим привилегий" может быть дополнительно разделен на Привилегия 1 и Привилегия 2. "Привилегия 2" предназначена для использования ядром, а "Привилегия 1" используется гипервизором, который осуществляет арбитраж ресурсов между различными ядрами, работающими одновременно.
- Функциональность "гипервизора" также превратилась в область исследований в штаб-квартире IBM .
- Пользовательский режим: Как понятно из названия, Cell предоставляет только ограниченный набор ресурсов . И этот режим предназначен для обычных приложений, работающих в ОС. Если по какой-либо причине программа запрашивает доступ к защищенному месту, то выполнение переходит к ядру или гипервизору, чтобы запросить, следует ли предоставлять доступ или нет.
Кроме того, блоки SPE содержат режим работы под названием изолированный режим. Этот режим защищает процесс выполнения внутри SPU, так что никакие внешние блоки (PPE или другие SPE) не смогут получить к нему доступ до завершения работы SPU. Эта функция может быть активирована после загрузки программы в любом SPE и гарантирует, что в процессор не вмешаются во время выполнения важного кода (процедуры шифрования).
Операционная система Sony, которую я собираюсь описать в следующих параграфах, использует все описанные режимы для обеспечения безопасности.
Общие сведения
Как я уже говорил ранее, ОС довольно сложная. Итак, чтобы без проблем следовать этому разделу, мы можем разделить типы файлов, которые мы найдем в ОС этой консоли, на различные уровни:
- Загрузчики: короче говоря, программы/бинарные файлы в этой консоли систематически шифруются. Поэтому "загрузчики" - это программы, которые выполняют "настоящие" программы. Говоря иначе, загрузчики получают двоичные файлы, расшифровывают их, проверяют их подлинность и, наконец, отправляют их в соответствующий процессор (PPE или SPE) на выполнение. Если это не показалось сложным, то загрузчики соединяются в цепочку, чтобы еще больше защитить ПО. Наконец, загрузчики встречаются на многих носителях.
- Некоторые загрузчики обновляются Sony (через обновления ПО), в то время как другие не могут быть изменены. Это не зависит от того, установлены ли они в перезаписываемое хранилище или нет. Поскольку некоторые загрузчики зашифрованы специфическими для каждой консоли ключами, то их нельзя изменить после того, как консоль покинет завод (по крайней мере, традиционными средствами).
- Системные файлы: они содержат низкоуровневые двоичные файлы (выполняемые через загрузчики), метаданные для организации аппаратного обеспечения, утилиты и другие ассеты (шрифты и изображения). Как и загрузчики, для каждой консоли есть свои системные файлы, которые не могут быть заменены или сгенерированы автоматически.
- Некоторые двоичные файлы заимствовали код из проектов Free BSD и NetBSD .
- Контент пользователей: это файлы конфигурации, данные, используемые играми, и данные, автоматически генерируемые консолью (это могут быть настройки Интернета, файлы установки игр, сохранения, информация о жестком диске).
- В отличие от других слоев, уничтожение этих данных не приводит к катастрофическим последствиям.
Иерархия безопасности ОС
В общем, ОС PS3 разработана с использованием того же модульного подхода, что и в PSP. Если вспомнить предыдущую статью, ОС состоит из множества модулей. Они могут обслуживать пользователей (игра или приложение) или находиться в памяти неопределенное время для обслуживания других модулей (в виде системных вызовов и/или драйверов). Некоторые модули имеют больше привилегий, чем другие (модуль ядра против модуля пользователя).

Диаграмма показывает, как компоненты операционной системы PlayStation соответствуют уровням привилегий Cell.
Ссылки на 'OtherOS' объясняются в следующих разделах.
ОС на протяжении своего жизненного цикла будет обращаться ко многим модулям с различными привилегиями. Sony создала свою ОС таким образом, чтобы модули работали под тремя уровнями привилегий Cell:
- Уровень 1: там находится гипервизор, запрограммированный Sony. Также известная как
lv1, эта программа - дверь к каждому биту этой консоли, и она связана с исключениями, вызываемыми MMU. При этом гипервизор принимает запросы только от программ, авторизованных Sony (находящихся на следующем уровне привилегий). Хоть и гипервизор находится в памяти, он также обеспечивает низкоуровневые системные вызовы и поддержку файловой системы FAT16. - Уровень 2: естественно, зарезервирован для ядра, привилегированной программы. Также известна как
lv2или "супервизор". Ядро абстрагирует гипервизор, поэтому программы третьего уровня не имеют прямого доступа с нему. Ядро предоставляет функции многопоточности для PPU и SPU. В конечном счете, ядро загружает модули из пользовательского пространства. - Уровень 3: на это уровне работают остальные программы, включая игры и визуальная оболочка (пространство пользователя). Эти плебеи подчиняются воле ядра для связи с железом консоли, и они не могут породить новый процесс или программу в одностороннем порядке.
Носители информации
С учетом всего сказанного, где хранятся все эти данные? С точки зрения обычного пользователя, есть только два видимых средства: диски Blu-ray для игр и жесткий диск для сохранений. Есть еще несколько, и сейчас мы рассмотрим каждый из них!
Cell BootROM
Оказывается, что производители спрятали внутри Cell маленький ROM, в котором хранится 'защищенный' загрузчик (boot-loader). IBM дает это пространство, чтобы избавить любую компанию (не только Sony) от необходимости вручную применять специальные методы обфускации для защиты своего загрузочного кода, поскольку готовые компоненты не всегда готовы к конкретным потребностям.
Поскольку эта часть уже физически защищена обфускацией, её не нужно шифровать. Таким образом, он идеально подходит для первоначального загрузчика (first-stage boot-loader) (который не может быть зашифрован), и PlayStation 3 хранит свой ранний этап загрузки именно там.
Флэш-память NAND/NOR
Помните о тех 256 МБ флэш-памяти NAND, о которых я кратко упоминал ранее? Здесь находится большая часть операционной системы. Так было до тех пор, пока в конце 2007 года Sony не выпустила модель CECHH, заменив 256 МБ NAND на ничтожные 16 МБ NOR. Как следствие, некоторые файлы пришлось перенести в другое место. Для простоты давайте сначала посмотрим, что хранят эти чипы :
- Загрузчики, специфичные для консоли: в частности, два загрузчика
bootldrиmetldr. Эти файлы зашифрованы ключом, зашитым во время производства, поэтому их невозможно заменить!- Как бы то ни было, в гипервизоре Sony есть скрытые функции, позволяющие обновить их. Однако, по какой-то причине они никогда не использовались {{< cite "operating_system-psxplace]}}.
- CoreOS: первая половина операционной системы. В основном он состоит из дополнительных загрузчиков, которые продолжат процесс загрузки и в конечном итоге загрузят вторую половину ОС (GameOS). CoreOS дает доступ к меню восстановления (Recovery Menu), альтернативной оболочке, содержащую утилиты обслуживания, которые пользователи могут использовать для (попытки) ремонта своей консоли.
- Уникальные ID: подобно IDStorage в PSP, они используются консолью для управления защищенным оборудованием, таким как привод Blu-ray; или Sony для аутентификации консоли на своих онлайн-серверах (ключ IDPS).
- Элементы безопасности: некоторые программы зависят от них для выполнения операций безопасности. Например, фильмы Blu-ray с DRM проверяют блок под названием Virtual Table Rights Management (VTRM). Sony также хранит инструменты отзыва и записи для внесения в черный список сертификатов безопасности, которые были скомпрометированы в прошлом.
Из-за большего объема модели с флэш-памятью NAND также хранят оставшуюся часть ОС (называемую GameOS или devflash). Сюда входит:
- Визуальная оболочка (VSH): продолжение фирменного интерфейса PSP, который также включает в себя кучу модулей (плагинов) и ассетов.
- Эмуляторы: вышеупомянутые программы, позволяющие PS3 запускать игры PS1, PS2 или PSP. Конкретный загружаемый эмулятор PS2 зависит от ревизии консоли (имеет ли она полное железо PS2, частичное или вообще не использует железо PS2).
- Библиотеки среды выполнения: программы, разработанные с помощью SDK от Sony, динамически связываются с набором библиотек, которые хранятся там.
- Проигрыватель Blu-ray: программы, обеспечивающие взаимодействие с приводом Blu-ray и декодирование фильмов.
- Системные ассеты: например, это шрифты и сертификаты, от которых зависит работа двоичных программ.
Как будто этого было мало, но консоли с NAND также содержат другие данные, такие как xRegistry (коллекция сетевых настроек, учетных записей PlayStation Network и список устройств Bluetooth), больше записей об отзыве и загрузчик для OtherOS (действительно интересная часть, о которой мы поговорим подробнее в следующих параграфах).
Жесткий диск
Дебютный 2,5-дюймовый жесткий диск объемом от 20 до 500 Гб (по мере выпуска новых версий) обеспечивает постоянное хранение данных:
- Пользовательский контент: включая сохранения игр, трофеи (больше информации в разделе "Игры") и другие данные, связанные с пользователями.
- Игровые ассеты: игры могут копировать файлы с диска на жесткий диск, чтобы улучшить время загрузки. ОС система рассматривает их как "игровые данные".
- Кэш: отдельный раздел размером 2 ГБ доступен для игр для временного хранения (в случае, если основной оперативной памяти недостаточно).
Системы с NOR, однако, также хранят GameOS на жестком диске. Как следствие, каждый раз, когда пользователь меняет жесткий диск, консоль запрашивает файл обновления для переустановки GameOS на диск. Как бы то ни было, системы ни с NOR, ни с NAND не загружаются без жесткого диска.
Некоторые пользовательские данные можно сохранить с помощью USB-накопителя, а затем при необходимости перенести на другую консоль. Однако этот процесс переформатирует новую консоль перед копированием старых данных.
eMMC
В 2012 году Sony представила обновленную версию консоли под названием 'SuperSlim' (кодовое название CECH-4xxx). Они были доступны в трех вариантах: один с жестким диском на 250 ГБ, другой с жестким диском на 500 ГБ или третий вариант с внутренней флэш-памятью eMMC на 12 ГБ. Первые два варианта следуют схеме файловой системы, реализованной в моделях с NOR. Третий вариант хранит все в eMMC (включая данные пользователей) и следует схеме с NAND для хранения системных файлов.
Однако в модели с eMMC есть одна загвоздка. Вместо чипа NOR компания Sony установила чип Panasonic 'MN66840', который, согласно PS3 Dev Wiki , перенаправляет шину NOR на eMMC. Я предполагаю, что это просто трюк для экономии средств, так как он использует один и тот же южный мост из других вариантов.
Довольно любопытно, что если пользователь решит установить жесткий диск в модель eMMC, консоль перенесет все пользовательские данные с eMMC на новый жесткий диск. Как следствие, пользователь может полностью использовать жесткий диск, хотя пустое место в eMMC теперь остается незанятым.
Процесс загрузки
Итак, используя все предыдущие знания, вы узнаете, как загружается система - и, скажу я вам, это довольно сложно. Причина проста: Sony не хочет, чтобы вы возились с их железом или ПО. Поэтому они создали множество уровней обфускации и шифрования, чтобы помешать вам взломать систему и загрузить свой собственный код (и, надеясь, отказаться от него и продолжать покупать игры/фильмы/другое). Но, как покажет история, произошло совершенно обратное.
В следующем разделе я опишу, что делает эта консоль после нажатия кнопки питания. Обратите внимание, что этот процесс радикально изменился только один раз (после того, как хакеры взломали его). Итак, для простоты мы начнем с "оригинального" процесса загрузки (реализованного до версии системы 3.60) :
- Отдельный чип на материнской плате (Syscon) активируется и выполняет инструкции из внутреннего ROM. Потом он отправляет "кольцо конфигурации" в Cell через SPI (последовательное соединение), которое инициализирует Cell и деактивирует восемь SPU. Затем, он защемляет линию питания и дает жизнь Cell.
- Вектор сброса PPU в Cell указывает на его скрытый ROM, в котором хранятся процедуры поиска и расшифровки
bootldrиз флэш-памяти. Потом расшифрованный фрагмент загружается SPU в режиме изоляции. - Теперь изолированный SPU, загрузив
bootldr, инициализирует часть аппаратного обеспечения (память XDR и интерфейсы ввода-вывода), расшифровывает двоичный файлlv0и дает команду PPU запустить его. - PPU, теперь выполняющий
lv0, расшифровываетmetldr(загрузчик, специфичный для консоли) и посылает его третьему SPU, снова в режиме изоляции. - Третий SPU, теперь выполняющий
metldr, последовательно выполняет ещё пять загрузчиков:lv1ldrрасшифровывает и загружаетlv1, который содержит гипервизор, переходящий на первый уровень привилегий. Кроме того,lv1настраивает жесткий диск, привод Blu-ray и RSX.lv2ldrрасшифровывает и загружаетlv2, который содержит ядро и работает поверх гипервизора. Также он завершает инициализацию RSX, эмуляции PS2, Bluetooth, контроллера USB и карт-ридер.appldrрасшифровывает и загружаетvsh( визуальную оболочку) и другие зависимости.vshпозже позволит пользователю загрузить игру.isoldrрасшифровывает и загружает модули, которые будут работать в третьем SPU в изолированном модуле. Эти модули критически важны для безопасности и выполняют множество криптографических функций на протяжении всего жизненного цикла консоли. Следовательно, третий SPU зарезервирован для функций безопасности, и игры не могут его использовать (для игр остается только шесть SPE).
PPU, загрузив vsh, предоставляет пользователю управление через графический интерфейс пользователя, который проявляется знаковым оркестровым звуком запуска, за которым следует меню XMB.
Измененный процесс загрузки
В марте 2011 года хакер "GeoHot" взломал защиту metldr, тем самым нарушив подлинность последующих загрузчиков. После этого Sony нанесла ответный удар, выпустив обновления безопасности в своем оборудовании и ПО. Эти исправления более подробно описаны в разделе "Борьба с пиратством".
Визуальная оболочка
Вы устали от всей этой теории? Позвольте мне переключиться на то, что на самом деле может увидеть каждый: Визуальная оболочка.
XrossMediaBar (XMB) - это новый пользовательский интерфейс, получивший международное признание за два года до этого. Он был слегка адаптирован, чтобы с ним можно было взаимодействовать с дивана (так называемый "10-футовый интерфейс"), и расширен, чтобы использовать преимущества разрешения "Full HD" (1920х1080 пикселей).

XMB в PSP (2004).
Разрешение 480×272.

XMB в PS3 (2006).
Разрешение 1920×1080.
Хотя пользователи PSP найдут много знакомого, Sony добавила новый набор приложений, использующих потенциал Cell, RSX и привода Blu-ray. Многие из них связаны с мультимедиа (видеоплеер и слайд-шоу изображений), телевидением (приложения для телевидения, такие как BBC iPlayer), социальным профилем (онлайн-аватары) и онлайн-покупками (PlayStation Now, PlayStation Store и другие).
Кроме того, поскольку это домашняя консоль, которая может быть общей для нескольких пользователей, XMB поддерживает множество пользователей, где каждый может использовать свою учетную запись PlayStation Network и хранить отдельные пользовательские данные (купленные игры и сохранения).

Как и в PSP, выбор игры в меню может стилизовать фон, чтобы привлечь ваше внимание!

XMB предоставляет огромное количество настроек. Это особенно полезно тогда, когда вам нужно настроить новый блестящий 1080p ТВ с объёмным 3.1-аудио.

Различные мультимедиа-возможности.

XMB может устанавливать игры, обновления и дополнения (DLC) с помощью встроенного инсталлятора.
Наконец, добавление жесткого диска - это облегчение для ветеранов, которые в прошлом были вынуждены покупать дорогие проприетарные накопители (Memory Stick Pro Duo), когда у них заканчивалось место.
Одолжи мне свою PS3
Впечатляет то, что не все приложения, поставляемые в комплекте с этой консолью, преследовали корыстные цели. С появлением распределенных вычислений и возможностей Cell для проектов по изучению данных Стэнфордский университет объединил усилия с Sony, чтобы владельцы PlayStation 3 могли внести свой вклад в медицинские исследования. Результатом стало приложение Folding@home.
Folding@home - это приложение, установленное на каждой PlayStation 3, которое, будучи открытым для пользователей, подключалось к центральному серверу и выполняло моделирование белков. Кроме того, приложению было разрешено работать в фоновом режиме в непиковое время.

Folding@Home отображает работу, выполненную с момента запуска приложения .
В течение всего времени работы Folding@home объединенные вычислительные мощности 15 миллионов пользователей PS3 по всему миру помогали в исследованиях, направленных на лечение болезни Альцгеймера . В конце концов, Folding@home и Sony убрали приложение в 2012 году, а первое продолжает жить на других платформах.
Это мое личное мнение, но мне нравится читать о проектах, которые вносят глобальный вклад, используя возможности распределенных вычислений, в отличие от бесконечных сенсационных статей о майнинге криптовалюты. Думаю, не стоит забывать, что с каждой новой мощной технологией всегда будут разрабатываться бескорыстные приложения для неё.
Несколько ОС
Когда IBM описывала Cell на уровне ПО, они упомянули, что Cell способен работать с несколькими ОС одновременно, благодаря множеству исполняющих ядер Cell . Таким образом, Sony взяла эту идею на вооружение и добавила в XMB опцию, позволяющую установить вторую ОС . Эта функция получила название OtherOS, и она, в двух словах, предоставляла собой менеджер разделов (XMB просто направляет пользователя для изменения размера раздела GameOS и выделения нового места для второй ОС) и кнопку для загрузки со второй ОС (благодаря загрузочным файлам OtherOS, уже установленным во флэш-памяти). Таким образом, пользователю просто нужно заполнить новый раздел системой. Следовательно, многие дистрибутивы Linux (например, Ubuntu и Fedora) добавили PS3 в качестве еще одной возможной платформы для установки. Вы можете считать это духовным преемником Linux for PS2.

Red Ribbon GNU/Linux - это дистрибутив, предназначенный исключительно для PS3/Cell и скомпилированный с использованием PPC64 .
Благодаря OtherOS опытные пользователи имели возможность разрабатывать хоумбрю-приложения, работающие на Cell без лицензионных ограничений. Это было особенно интересно для исследовательских/научных целей , так как эта консоль имела более доступную цену, чем мейнфрейм. Для мультимедийных целей привод Blu-ray и карт-ридер также были доступны в OtherOS.
С другой стороны, хоть привилегии OtherOS и могут превосходить привилегии GameOS (на уровне ядра), они не превосходят гипервизор, который все ещё находится в памяти. Таким образом, любой аппаратный доступ из OtherOS по-прежнему зависит от воли гипервизора Sony. Так получилось, что последний блокирует доступ к командным буферам RSX (препятствуя использованию шейдерных блоков и прочих компонентов для ускорения графических операций). Следовательно, в результате дистрибутив Linux прибегает к программному рендерингу (вся графика рисуется через Cell), а затем передает кадровый буфер в RSX для отображения. Разочаровывает, что OtherOS не может использовать все возможности этой консоли. Вероятно, это было сделано для уменьшения поверхности атаки. По иронии судьбы, использование Cell в OtherOS похоже на то, как IBM/Toshiba/Sony, возможно, изначально представляли себе PS3!
Разделив судьбу Folding@home, OtherOS в конечном итоге была удалена в последующем обновлении, но по другим причинам (в основном связанным с безопасностью). Вскоре после этого OtherOS была неофициально восстановлена благодаря программным эксплойтам и усилиям по обратной разработке. В настоящее время OtherOS доступна, если пользователь устанавливает кастомную прошивку. Подробнее об этом я рассказываю в разделе "Борьба с пиратством и хоумбрю".
На момент написания этой статьи разработчик Рене Ребе реализует надлежащие драйверы xf86, которые используют преимущества ускорения, обеспечиваемого RSX и его 256 МБ памяти . Его работа сочетается с другими разработками, которые устранили ограничения, наложенные гипервизором (первоначально благодаря обнаружению программных эксплойтов, а затем с использованием кастомной прошивки, последняя более подробно описана в разделе "Борьба с пиратством и хоумбрю"). Г-н Ребе публикует свои успехи на своем YouTube-канале и полагается на добровольные пожертвования для продолжения своей работы .
Обновляемость
В заключительной части этого длинного раздела поговорим о возможностях обновления GameOS.
В двух словах, как и в случае с PSP, Sony распространяла файлы PS3UPDAT.PUP, в которые упакованы все новые двоичные файлы ОС. Из-за системы безопасности консоли, только те файлы, которые не защищены уникальными ключами консоли и хранятся на перезаписываемых носителях (флэш-память, жесткий диск, eMMC), могут быть обновлены. Остальные файлы должны оставаться как есть.
Файлы PUP распространялись через официальный сайт Sony, помощника по обновлению XMB или находились в содержимом диска с игрой (все игры содержат файл PUP, отражающий версию SDK, для которой они разработаны). Поскольку модели с флэш-памятью NAND содержат всего 256 МБ и хранят там всю ОС, Sony никогда не выпускала файлы обновлений размером более 256 МБ.