Введение
Free60 — это продолжение проекта Xbox Linux, целью которого является установка Linux, BSD или Darwin на Microsoft Xbox 360 с использованием программного или аппаратного «взлома». Xbox 360 использует аппаратное шифрование и не запускает неподписанный код по умолчанию. Цели проекта были достигнуты в марте 2007 года, когда вскоре после сообщения о критической уязвимости в гипервизоре Xbox 360 появился загрузчик для Linux, позволивший запустить Linux, портированный на Xbox 360. На сегодняшний день доступны два набора патчей для ядра Linux: для версий 2.6.21 и 2.6.24.3. На Xbox 360 можно запускать три основных дистрибутива Linux: Gentoo, Debian и Ubuntu Linux, причем последние два легко установить на жесткий диск Xbox 360 с помощью скриптов, предоставленных участниками проекта Free60.
Способ исполнения
Поскольку исполняемый код на Xbox 360 имеет цифровую подпись и работает под управлением гипервизора, для запуска самодельного программного обеспечения необходим эксплойт или взлом. На Xbox 360 первым эксплойтом, позволившим загрузить неподписанный код, стала модифицированная прошивка DVD-ROM, модифицированный записанный диск с игрой King Kong (для Xbox 360) и целевая консоль с одной из двух уязвимых версий ядра. В качестве альтернативы можно использовать самодельный кабель для дампа и патча BIOS с перемычками, подключенными к соответствующему разъему на материнской плате консоли, чтобы пропатчить гипервизор и разрешить выполнение неподписанного кода непосредственно при загрузке, что известно как эксплойт "JTAG/SMC". Он был устранен после июня 2009 года, но заменен "Reset Glitch Hack" в 2011 году. Этот метод применим к любой версии ядра на всех, кроме последней ревизии материнской платы Xbox 360 (большинство консолей, выпущенных с 2014 года до окончания производства в 2015 году). Однако следует учитывать, что это сбой, зависящий от времени, и время загрузки может быть нестабильным. При использовании оригинального эксплойта King Kong консоль должна запустить модифицированную игру, которая использует программную уязвимость для загрузки небольшого фрагмента кода, содержащегося на диске. Этот код может либо инициализировать последовательный порт для загрузки дополнительного кода на консоль, либо извлечь лоток дисковода и подготовить консоль к загрузке дополнительного кода с определенной точки на оптическом носителе, который затем вставляется в дисковод. Последний метод включает в себя бинарный файл readcd, созданный специально для этой цели. Код, выполняемый readcd в этом случае, известен как XeLL, сокращение от Xenon Linux Loader. XeLL перехватывает потоки процессора и запускает ядро Linux из сети (tftp) или с оптических носителей, что является его единственной целью, предоставляя плоское дерево устройств для ядра. В случае выпущенных "Live CD" бинарный файл readcd обычно включается в модифицированный игровой диск, который извлекает диск, а затем вставляется диск, содержащий бинарный файл XeLL, а также полное ядро Linux и файловую систему.
Ограничения
Метод readcd изначально был ограничен только DVD ROM-приводами Hitachi, но теперь также поддерживает приводы Samsung. Все остальные коммерчески доступные приводы считаются неподдерживаемыми, и на данный момент единственными другими используемыми производителями являются BenQ и Lite ON. Для самой консоли Xbox 360 требуется более старая версия ядра, которую может быть сложно найти, поскольку подключение к службе Xbox Live применяет обновления к консоли, а многие игры содержат обновления, которые необходимо установить перед запуском. Это ограничение уже не так критично, поскольку теперь известно, что ядро, более новое, чем последнее из двух уязвимых версий, можно понизить с помощью атаки по времени. В настоящее время нет драйверов для поддержки встроенного аудиооборудования консоли, однако можно использовать USB-аудиоустройство. Некоторые кодеки несовместимы с текущим драйвером дисплея, из-за чего некоторые видео не воспроизводятся. Кроме того, проблемы с буфером кадров и кэшем приводят к тому, что воспроизводимые видео начинают прерываться через несколько секунд после заполнения кэша.
Разработка
Один из основных участников проекта Free60 разработал метод ускорения 3D-графики на графическом процессоре Xbox 360 (кодовое название Xenos) под Linux. Эта работа была оформлена в виде API для облегчения использования. Для достижения этого ускорения необходимо загрузить некоторые данные из флэш-памяти Xbox 360 на графический процессор Xenos. Этот процесс может быть автоматизирован для обеспечения легальности ускорения 3D-графики. Поскольку в настоящее время лишь небольшая часть Xbox 360 способна выполнять неподписанный код, разработка в проекте Free60 в последнее время замедлилась. Это можно противопоставить предшественнику Free60, проекту Xbox Linux, который получил значительно большее развитие благодаря относительной простоте запуска неподписанного кода на Xbox и легкости портирования x86-кода на специализированный процессор Intel Pentium III, используемый в Xbox. Для продолжения разработки участники проекта Free60 ищут помощи. Наиболее важным запросом является предоставление аудиодрайверов; участники Free60 обратились к специалисту, знакомому с компонентом ядра ALSA и материнской платой на базе SiS966, с просьбой об их разработке. В результате успеха Free60 был создан проект Kernel Rebooter. Его цель – после загрузки уязвимого ядра и эксплуатации его для получения контроля над системой, обеспечить возможность перезагрузки консоли в модифицированный, неподписанный гипервизор и ядро. Возможность перезагрузки в более новые версии ядра позволит запускать на консоли игры, требующие этих версий ядра. Этот проект достиг определенного успеха; существуют бинарные файлы (для запуска через последовательный загрузчик или readcd), позволяющие частично перезагрузить гипервизор.
Лето 2009 года обновление Xbox Live
11 августа 2009 года Microsoft выпустила обновление программного обеспечения для Xbox 360, которое перезаписывает загрузчик второго уровня системы. Любая ошибка в процессе обновления приведет к необратимой поломке Xbox 360. Статистические данные по другим системам показывают, что примерно одно обновление загрузчика из тысячи завершается неудачно, и если у Microsoft нет принципиально нового решения этой проблемы, это подвергает риску десятки тысяч консолей Xbox. Похоже, что это обновление было выпущено для устранения уязвимости, уже известной проекту Free60. Эта уязвимость была успешно использована для запуска произвольного кода, и полноценный взлом, удобный для конечных пользователей, разрабатывался в течение некоторого времени и планируется к публикации на free60.org в ближайшее время. Он позволит пользователям вернуть контроль над своими Xbox и запускать произвольный код, такой как самодельные приложения или Linux, сразу после включения консоли и без необходимости использования модчипа, что, наконец, откроет Xbox 360 для взлома на уровне оригинального Xbox. В связи с опасностью обновления и блокировкой запуска самодельного программного обеспечения, проект Free60 рекомендует всем пользователям Xbox 360 воздержаться от обновления своих систем до последней версии программного обеспечения. На сайте Free60 будет размещена актуальная информация по этой теме, включая финальную версию программного обеспечения для взлома.