PS3Давно валялась в черновиках данная заметка, все никак не мог собраться ее оформить и опубликовать. Но как говорят это вечно длится не может, так что приступим к повествовании. Собственно в чем же задача, спросите вы? У кого есть PS3 с установленной CFW, тот знает что записать файл больше 4Гб нельзя на внешний диск, так как это ограничение файловой системы FAT32 (сейчас файловые менеджеры для PS3, такие как Multiman поддерживают возможность чтения с томов NTFS, но эта функциональность появилась довольно недавно). Для решения этой проблемы можно было применить два метода:
  • записывать игру на внутренний диск
  • использовать специальные программы которые разбивали большие файлы на части, которые понимал файловый менеджер PS3 (в конечном итоге он все равно склеивал эти файлы и копировал на внутренний диск приставки)

Но существовал и еще один метод, это поднять медиа-сервер для «стриминга» контента на PS3. Собственно этим мы займемся :)
У меня на PS3 установлена CFW с функцией Cobra, что позволяет использовать ISO образы, и не требует разворачивания образа в отдельный каталог, как того требуется. Дополнительно у меня еще установлен webMAN что позволяет мне монтировать образы игр не запуская файловый менеджер и даже управлять образами и самой приставкой из веб-браузера (даже с мобильного). Но не это есть предметом данного сообщения. Кому интересно, может обратиться к документации по этому ПО или мне написать личное сообщение.
Собственно, ничего сложного в сборке этого нет (сложно было найти это все в разных форумах и собрать вместе), скачиваем подготовленный архив с исходными файлами. Этот архив предназначен для платформы Linux x86_64, хотя я его собирал и под FreeBSD и даже для роутера ASUS RT-N56U. Я уже не помню всех нюансов сборки под данную платформу, если вас интересует данный вопрос, можете мне написать в личку или почитать Issue 1106: compiling ps3netsrv. В данный архив уже включены измененные файлы «main.cpp» и «netiso.h». Разворачиваем архив и собираем.
$ tar -xzvf ps3netsrv.tar.gz
$ make

Примечание.
В архиве есть скелет rc-скрипта для автоматического запуска/остановки сервиса, но я пошел другим путем и так его и не закончил.
Запускаем все это очень просто:
$ ./ps3netsrv /mnt/media/ps3netsrv

— где /mnt/media/ps3netsrv root-директория где будет лежать контент для PS3. Внутри корневой директории создаем папки — GAMES, PS3ISO. В первую складываем обычные распакованые образы, а в вторую образы в формате ISO.
Как я и говорил рание, мы не будем использовать rc-скрипты для управление сервисом, а создадим отдельный контейнер для данного сервиса используя возможности Docker.
Создадим отдельную папку для размещения файла конфигурации создания контейнера и скопируем в него скомпилированый файл. Для примера:
$ cd ~/docker/ps3netsrv
$ cp ~/source/ps3netsrv/ps3netsrv ./

Создадим файл конфигурации:
$ vim Dockerfile

FROM sovicua:jessie
MAINTAINER Viktor M. Sytnyk <sovicua@sovic.org.ua>
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get upgrade -y
RUN groupadd -g 1000 ps3netsrv
RUN useradd -u 1000 -g 1000 -m -c "PS3 Media Server" ps3netsrv
VOLUME /home/ps3netsrv/media
RUN chown ps3netsrv:ps3netsrv /home/ps3netsrv/media
COPY ps3netsrv /home/ps3netsrv/
RUN chown ps3netsrv:ps3netsrv /home/ps3netsrv/ps3netsrv
WORKDIR /home/ps3netsrv
CMD ./ps3netsrv ./media

Создаем образ для данного сервиса:
$ docker build -t sovicua:ps3netsrv .

И запускаем контейнер:
$ docker run --net=host --name=ps3netsrv --user=ps3netsrv -v /mnt/media/ps3netsrv:/home/ps3netsrv/media -i -t -d sovicua:ps3netsrv

— где /mnt/media/ps3netsrv — корневой каталог в основной операционной системе, который монтируется в /home/ps3netsrv/media в контейнере. Все можно проверять работу нашего медиа-сервера на PS3. Думаю что вы сможете дальше не составить труда вам разобрать что и как.
В дальнейшем я планирую выгрузить данный контейнер в общий пул Docker Hub, что бы каждый мог воспользоваться данным готовым контейнером для создания медиа-сервера.
Хотелось бы услышать ваше мнение по данному вопросу.

P.S. Изначально я для базового образа забыл установить правильную временную зону, по умолчанию для контейнера была установлена UTC. Процедура изменения временной зоны для базового образа описана в небольшой статье Установка timezone в базовом образе Docker.

Комментарии (4)


  1. kvaps
    07.07.2015 12:46

    Я думал о таком подходе раньше, когда кобра была еще закрытой, а данный подход доступен только для DEX-прошивок. Но спустя время у меня полетел родной жесткий диск, и я поставил первый нашедшийся у меня на терабайт.
    К этому времени вышла уже кобра, со всеми плюшками и плагинами среди которых фоновый ftp-сервер.
    Весь смысл в шаринге образов отпал. Образы, как и PKG файлы сливаются на плойку прямо с NAS, консольным ftp-клиентом, во время копирования можно играть в другие игрушки, места еще до фига. PKG-игры, после копирования, можно установить через Package Manager (у меня Rebug).
    Тем не менее за статью спасибо, было интересно:)


    1. sovicUA Автор
      07.07.2015 13:15

      Да, сейчас это не проблема есть заменить родной диск большим. Но на заливку тоже нужно время и место,
      У меня все это работает в связке с торрент клиентом Transmission который работает на домашнем NAS, соответственно я после того как скачиваю игру остаюсь на раздаче, и для того что бы играть, я просто создаю символическую ссылку в PS3ISO или GAMES на образы что лежат в папке Transmission. То-есть банально экономия места на диске, и копировать не нужно.
      Как то повелось что не нравятся мне PKG и потом если нужно установить новую прошивку (я обычно делаю downgrade до 3.55) на чистую систему, нужно снова их инсталлировать. А так достаточно только данные пользователя восстановить из резервной копии.


      1. Ghool
        07.07.2015 17:41

        Я так и не собрался вложить 2500 в поход к умельцам, а покупка flashtool оказалось стоит столько же и ещё кучу времени ждать, так что я забил на взлом и купил все 3 интересующих меня игры :)


        1. sovicUA Автор
          07.07.2015 17:56

          2500 это на понижение прошивки или на ODE? У нас Cobra стоит от $60 до $80.
          Я даже подумывал себе поставить, хоть у меня и прошивка 3.55, очень хотелось в онлайне поиграть.
          А потом словил бан на консоль в PSN (Dark Soul игрался в онлайне) и тоже забил, если сильно уж захочется то приходится искать чистый ID и подменять, но тут есть неудобство обычно его хватает всего на пару дней.