Софт для Linux: Эмуляторы
Не хотелось очень сильно увеличивать объём предыдущей статьи на тему домашнего Linux, поэтому часть про Linux и игры получилась несколько незаконченной и даже обрезанной в части возможностей Steam. Ну это ничего, дело поправимое, я всё равно заранее решил рассказать про эмуляцию в Linux в отдельном материале. И вот оно.
Wine Is Not an Emulator
Начнём тему эмуляторов с Wine. Хотя многие скажут, что это не эмулятор и даже в названии это отражено, но я всё-таки с такой позицией не могу полностью согласиться. Да, Wine не является полноценным эмулятором операционной системы, как те же виртуальные машины (например, VM VirtualBox от Oracle). Однако, он эмулирует вызовы библиотек Windows, что позволяет запускать приложения (16, 32 и 64-битные) написанные собственно для Windows и, которые обычно под Linux запустить нельзя (кстати, Wine и для Windows есть — с помощью него можно запускать какие-то совсем устаревшие программы, которые в современных версиях Windows уже не работают). Ну и уж если Wine эмулирует что-то, чтобы запустить то, что запустить обычно нельзя — ну значит это эмулятор. Да, такой вот недоэмулятор ОС, зато работает непосредственно в Linux, без необходимости выделять отдельное место на диске под другую ОС или под виртуальный диск для полноценной виртуальной машины. Идея хорошая и реализация неплохая. Есть, конечно же, и нюансы связанные с самой этой реализацией, но поскольку это сам по себе костыль, то и придираться особо не будем. Главное, что есть возможность запустить что-то, что вам супер-пупер необходимо, но есть только для Windows.
С установкой Wine в Linux Mint не всё хорошо и просто, т.е. поставить его как большинство программ из менеджера программ не удастся — это просто невозможно сделать:
И придётся идти на сайт Wine, чтобы узнать, как его можно установить. Там мы откроем страницу загрузки и на этом наши приключения только начнутся: далее мы ещё выберем для какой версии Linux нам это надо — для Linux Mint надо выбрать Ubuntu. А дальше надо выполнить определённые и привычные действия для Ubuntu или Linux Mint (далее приведены действия для Linux Mint 19).
Сначала надо разрешить 32-битную архитектуру приложений на 64-битных системах, у кого это ещё не включено:
sudo dpkg --add-architecture i386
Потом установить ключи репозитория для Wine:
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key
Ну и подключить собственно сам репозиторий:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'
sudo apt update
И наконец-то запустить установку Wine:
sudo apt install --install-recommends winehq-stable
Это всё можно сделать и с помощью GUI программы Synaptic, настроив для этого предварительно источники приложений (скачав предварительно ключ по вышеуказанному адресу):
Однако, при попытке установить Wine мы получим ошибку: не хватает библиотеки FAudio и она не устанавливается из репозитория. Придётся самостоятельно качать эту библиотеку по адресу, указанному на странице форума Wine. Для Linux Mint нам надо скачать два файла .deb: для архитектуры i386 и amd64, и установить их обычным способом:
И только после этого установка пойдёт:
Будет загружена куча модулей — и обойдётся это нам в 1 гигабайт жёсткого диска. Немало, немало… При этом по логике создателей пакета не надо «загаживать» меню системы дополнительными записями в стиле «Wine был тут«, поэтому всё придётся делать через командную строку, либо вручную добавлять в меню нужные команды. И ведь обычному пользователю надо ещё догадаться, что конфигурацию Wine можно изменить с помощью команды winecfg, ведь в меню её нет:
Ну и при запуске любого исполняемого файла для Windows (exe, com, msi и т.д.) управление будет перехвачено Wine и, если это установочный файл, то будет произведена установка в профиль Wine по умолчанию, а если просто исполняемый — то он будет запущен. И вот пример запущенного файлового менеджера Total Commander:
Что приятно, так это то, что диски в Wine уже подмонтированы и кроме своего основного каталога .wine в папке пользователя (Диск C) можно видеть каталоги пользователя Linux (документы, рисунки, музыка, видео) подмонтированные в папке пользователя в Windows, и корневую папку Linux, подключенную как диск Z — что открывает широкие возможности по применению ПО (почему бы и не использовать свой любимый двухоконный файловый менеджер, раз в Linux с ними такая беда?).
Самое главное, для чего и стоит устанавливать «чистый» Wine, а не другие пакеты, основанные на нём и заточенные под конкретные нужды, что тут у пользователя будет развязаны руки в плане разных настроек. В частности, одним из преимуществ использования «чистого» Wine является работа с так называемыми «префиксами» — по сути разными «песочницами» со своими настройками и файловой системой. Поскольку программы могут быть самыми разнообразными и какие-то работают только до определённой версии Windows, каким-то нужны специфические настройки реестра и т.п., то логично при возникновении проблем с определённым ПО — вынести это в отдельный профиль (он же префикс, в терминах Wine). Префикс созданный по умолчанию хранится в каталоге .wine в папке пользователя, но никто не мешает создать, например, там же каталог .wine2 и настроить его для использования Wine:
WINEPREFIX="/home/логин/.wine2/" winecfg
А затем устанавливать и использовать ПО с использованием этого префикса:
WINEPREFIX="/home/логин/.wine2/" wine программа.exe
Для удобной же настройки Wine и управления префиксами могут пригодиться разные GUI, написанные специально для этого. Например, Q4Wine позволяет создавать префиксы, настраивать их, устанавливать в эти префиксы ПО:
Ну и запускать ПО Wine — проводник, диспетчер задач, редактор реестра, средство установки и удаления программ, панель управления и прочее:
Для удобной установки в префиксы разного рода библиотек, шрифтов, ПО и некоторых игр может помочь Winetricks:
Например, можно установить DirectX 9 и попробовать установить под Wine какую-нибудь игру. Ну и использование Wine совместно с Winetricks позволит вам запустить большинство ПО для Windows. Алгоритм достаточно простой — в консоли пытаемся запустить нужную программу — получаем ошибку о нехватке той или иной библиотеки, идём в Winetricks — устанавливаем и повторяем до полного удовлетворения :-) Проблемы могут возникнуть в ситуации, когда ПО использует какие-либо недокументированные особенности библиотек Windows, либо какие-то совсем новые фреймворки, которые ещё не оттестированы и не поддерживаются.
Как я уже говорил до этого, поддерживается и API DirectX, что позволяет в том числе и играть в Windows-игры. Но использовать чистый Wine для этого не очень удобно — скорее всего вам придётся помучится и почитать форумы для запуска какой-нибудь привередливой игры. Но есть путь гораздо проще — использовать специальные приложения, разработанные на основе Wine, которые уже содержат в себе настройки для большинства игр для Windows, которые можно запустить в Linux.
PlayOnLinux
Один из известных проектов, основанных на Wine. Он заточен именно на установку приложений и игр со специальными настройками, чтобы они практически гарантированно работали в Linux. Минус ровно один — поскольку настройки применяются PlayOnLinux, то приходится доверяться им, внести изменения не получится…
Устанавливать данный проект, как и Wine, следует не из стандартного менеджера программ Linux Mint (вы получите слишком старую версию), а также через сайт данного продукта. Там для Linux Mint 19 рекомендуется следующий набор команд:
wget -q "http://deb.playonlinux.com/public.gpg" -O- | sudo apt-key add -
sudo wget http://deb.playonlinux.com/playonlinux_bionic.list -O /etc/apt/sources.list.d/playonlinux.list
sudo apt-get update
sudo apt-get install playonlinux
После установки пользователь может попробовать загрузить через данное ПО какую-либо программу или игру. Для каждой такой программы или игры будет использован свой собственный «префикс» Wine и будет автоматически установлен требуемый набор библиотек и внесены необходимые изменения в реестр и в файловую систему Windows в этом префиксе. Получается, что данная программа направлена в основном на обычных пользователей Linux, которые не хотят разбираться с теми или иными нюансами настройки программ Linux в чистом Wine.
Есть и другие подобные форки Wine, например, платные Cedega (заточен под игры) или форки для профессионального ПО, такие как CrossOver, WINE@Etersoft, WINE-LXP. Как решение за деньги — оно немного… странное, потому что тут надо чётко понимать, за что именно платить. Для офиса это бывает оправдано, а вот для дома — ну я даже не знаю. А другие бесплатные варианты (типа WineWizard) зачастую уже прекратили своё существование. Но зато появляются и другие форки.
Valve Proton
Один из форков Wine, созданный компанией Valve, добавляющий пользователю возможность запускать Windows-игры в библиотеке Steam в Linux. Это один из логичных шагов компании, создавшей SteamOS на базе Debian — одного из дистрибутивов Linux (и «дедушка» Linux Mint).
Изначально в настройках возможность запускать игры, написанные для другой ОС предусмотрена только для ограниченного списка поддерживаемых игр, но на свой страх и риск пользователь Linux поддержку может расширить на все продукты в библиотеке Steam:
После включения в библиотеке Steam будут отображены все игры, которые есть у пользователя, и их все можно попробовать установить. Но вот поиграть можно будет в то, что сможет заработать и ещё придётся смириться с потерей скорости в требовательных играх — эмуляция всё-таки «бесплатной» не бывает. Хотя Proton чем и хорош, так тем, что он связал воедино Wine и реализации DirectX 10-11 на базе проекта DXVK и DirectX 12 на базе vk3d (это, в принципе, и так уже часть Wine), которые обеспечивают ретрансляцию вызовов DirectX в API Vulkan, а это не так сильно влияет на производительность и тотальной «просадки» всё-таки не наблюдается.
И в целом это просто отличное решение для обычного пользователя, который хочет поиграть и не хочет заморачиваться всякими «терминалами», не любит «курить форумы». Тут не надо самостоятельно устанавливать Wine, библиотеки и прочее ПО. Прямо-таки «коробочное» решение, всё-в-одном. Рекомендую, однозначно.
DOSBox
И ещё один замечательный «недоэмулятор» для запуска программ, но уже не для Windows, а для MS DOS. Он, кстати, есть также как и Wine в версии для Windows, потому что в современных версиях Windows (ну практически всё что старше XP) запустить программы (а особенно игры) для MS DOS весьма непростая задача и режим совместимости помогает не особо. Для тех же целей можно было бы использовать и Wine, но если нужна только одна-две программы для DOS, то это как стрелять из пушки по воробьям.
Установить DOSBox в Linux Mint можно из менеджера программ:
Настроить DOSBox можно только с помощью редактирования конфигурационного файла, который хранится в скрытом каталоге .dosbox в пользовательской папке:
Видно, что подсказки в файле есть, но они на английском языке, поэтому для обычного пользователя это может вызвать проблемы. Но обычному пользователю туда смотреть особо и не надо, поскольку там речь идёт в основном про настройку и рабочие параметры эмулируемых устройств, и просто так менять эти параметры на другие можно только будучи твёрдо уверенным что делаешь. На мой взгляд, интерес представляет только самый конец этого файла, в котором указаны команды выполняемые при старте DOSBox:
[autoexec]
Lines in this section will be run at startup.
You can put your MOUNT lines here.
mount c /home/duke/DOSBOX
Обычно там одна команда, которая монтирует для DOSBox один из каталогов файловой системы Linux, как один из дисков MS DOS (Диск C). Подобным образом можно смонтировать и другие диски, в том числе и диск A (дисковод иногда бывает нужен каким-то программам). Ну и можно сюда же записать другие команды, например, запуска файлового менеджера, чтобы не работать в командной строке после запуска приложения DOSBox. Я, например, рекомендую свой любимый DOS Navigator (также можно и Norton Commander использовать, если он вам больше нравится). Только для этого надо скачать его именно для DOS, а не версию для Windows. Поэтому качаем версию 1.51, распаковываем её в папку DN в каталог DOSBOX пользовательского каталога (который монтируется в диск C). После этого можно будет в конфигурационный файл DOSBox добавить новую строчку в конец файла:
[autoexec]
Lines in this section will be run at startup.
You can put your MOUNT lines here.
mount c /home/duke/DOSBOX
c:\DN\dn.com
И после запуска DOSBox у нас сразу загрузится наш любимый файловый менеджер:
Ну и можно использовать DOSBox для запуска всякого разного ПО, в том числе и старых DOS-игр. Вот, например, моя любимая стратегия Settlers II запущена в окне DOSBox (на полный экран можно развернуть с помощью комбинации Alt-Enter):
Я недавно писал статью про выпуск юбилейной версии этой игры 1997 года с возможностью поиграть в современных версиях Windows, но можно и через DOSBox насладиться этой же игрой. Крайне рекомендую всем любителям стратегий, на мой взгляд, она практически идеальна.
Виртуальные машины: VirtualBox
И вот «реальный» эмулятор: настоящая виртуальная машина от Oracle (куплена вместе с Sun, а та в свою очередь до этого купила Innotek, которые воспользовались исходным кодом Qemu). Несмотря на все смены владельца ПО остаётся свободным ПО, но использует проприетарную (закрытую) часть ПО, устанавливаемую в качестве расширения.
Сама по себе технология виртуальной машины (VM) позволяет иметь полностью отдельную «песочницу» с любой поддерживаемой операционной системой, связанной с исходной операционной системой только самим приложением для исполнения этой виртуальной машины. Плюс — ещё файл (виртуальный диск) для хранения данных виртуальной машины, который может лежать в любой подмонтированной папке. Подход явно отличается от подхода Wine, поскольку тут полностью эмулируется работа всей операционной системы (причём не только Windows), включая эмуляцию дисковой системы (у Wine используются каталоги самой же операционной системы). Но и заплатить за это придётся дороже: виртуальные диски с установленными полноценными ОС съедают гораздо больше места, чем «песочница» Wine (1 Гб). А также и эмуляция всего и вся тоже требует значительно больших ресурсов ПК, чем недоэмуляция Wine. Зато если у вас мощный комп, можно не задумываясь об этих потерях, запускать с помощью виртуальных машин любое требуемое вам ПО, не обращая внимания на то, под какую систему оно написано. VirtualBox даже позволяет эмулировать 64-битные системы под 32-битной ОС (но с 6-й версии отключена возможность установки VirtualBox на 32-битную систему). Требуется, конечно, поддержка процессором технологии виртуализации (VT-x), но сейчас она есть у всех актуальных моделей (а если у вас вдруг её нет — то это повод либо заглянуть в BIOS и включить её, либо поменять процессор). Причём с 6-й версии вообще отключили возможность запускать виртуальные машины на процессорах без аппаратной виртуализации, поэтому на своём тестовом стенде с Core 2 Duo я хоть и могу установить свеженький VirtualBox, но работать на нём сможет только 5-я версия.
Дополнительные (но не обязательные) закрытые расширения позволяют работать с USB-устройствами, подключенными к основной ОС (вот это бывает необходимо), и, что не очень актуально для домашнего ПК, работать с запущенной виртуальной машиной через удалённый рабочий стол (RDP) и использовать Intel PXE для загрузки ОС по сети.
Установка VM VirtualBox в Linux Mint вполне обычна и возможна прямо из менеджера программ, однако в этом случае в Linux Mint 19 мы получим устаревший VirtualBox версии 5.2.3 (но для процессоров без аппаратной виртуализации это актуальная версия). А вот если мы хотим получить свежую версию (на данный момент — 6-ю), то для установки нам сначала потребуется скачать ключи по этому адресу: https://www.virtualbox.org/download/oracle_vbox_2016.asc, установить их либо с помощью команды sudo apt-key add oracle_vbox_2016.asc
, либо с помощью импорта ключей для источников приложений Synaptic:
Потом добавить следующую строчку deb [arch=amd64]
https://download.virtualbox.org/virtualbox/debian <mydist> contrib
(источник для VirtualBox) в дополнительные репозитории:
Где вместо <mydist> для Linux Mint 19 надо указать bionic.
Ну и после этого осталось обновить кэш приложений с помощью команды sudo apt-get update
и установить ПО с помощью команды sudo apt-get install virtualbox-6.1
или проделать это всё с помощью того же Synaptic:
После этого мы получаем следующее окно:
И можем приступать к добавлению новых виртуальных машин:
Потом можно поменять настройки созданной виртуальной машины:
И вот запущенный ReactOS:
Можно установить и многочисленные варианты Windows, и весь софт написанный для Windows скорее всего будет работать отлично, я, по крайней мере, с проблемами не сталкивался. Очень удобно держать несколько виртуальных машин для разных нужд. Например, у меня есть специальная виртуальная машина для текущей разработки под .NET, в которой установлена последняя версия Visual Studio Community и сервера СУБД MySQL. Мне не очень нравится, когда основная домашняя ОС забита специальным ПО, которое используется для других целей, поэтому у меня есть несколько виртуальных машин, каждая из которых настроена под конкретную конфигурацию проекта.
Но вот использовать VM VirtualBox для игр — это, скажем так, не лучшая идея. Несмотря на то, что появилась экспериментальная поддержка 3D-ускорения, однако DirectX работает фактически на коде Wine, поэтому смысла ставить виртуальную систему с ОС Windows, чтобы поиграть в игру, попросту нет — проще использовать Wine или его форки.
Для виртуализации в Linux можно использовать и другие программные продукты, тот же Qemu, или KVM, или даже платный вариант: VMWare (а вот Parallels Workstation приказал долго жить…). Но для дома вполне достаточно VM VirtualBox, а поскольку его я в основном и использую, то и пишу, про то что знаю и могу рекомендовать.
Эмуляторы ZX Spectrum
Поскольку первым компьютером у меня был Pentagon 128, один из многочисленных клонов ZX Spectrum‘а, и я практически вырос на играх для него и с помощью него научился программировать на бейсике и ассемблере, я не могу обойти тему эмулирования этого замечательного ПК. Поэтому посмотрим, что нам может предложить Linux для запуска ПО, написанного для ZX Spectrum.
Фактически, под Linux есть только один актуальный и всё ещё развивающийся эмулятор ZX Spectrum — это FUSE (Free Unix Spectrum Emulator). Причём это вообще один из лучших эмуляторов XZ Spectrum, и я его использую и под Windows. Установить его в Linux Mint 19 проще всего из его менеджера программ, но выбрать лучше SDL-версию:
GTK-версия, конечно же, выглядит привычнее (есть главное меню, а вот в SDL-версии меню надо вызывать кнопкой F1), но обладает одним огромным недостатком — в ней пока невозможно переключить изображение на полный экран. А вот в SDL-версии такой переключатель появился и как раз в доступной версии в менеджере программ (1.5.1). Самая актуальная версия 1.5.7, но установить её можно только либо с помощью компиляции исходных кодов, либо с помощью ручного скачивания пакетов для Debian: для ветки buster надо будет скачать и установить пакеты libspectrum8, fuse-emulator-common, fuse-emulator-sdl и spectrum-roms. Особой разницы с 1.5.1 я особо не заметил, исправления скорее касаются мелких багов и доработок.
И вот запущенный эмулятор:
По этому скриншоту видно, что эмулятор поддерживает и кассеты и дискеты, но это подразумевает только эмуляцию этих устройств, т.е. чтение данных из соответствующих файлов (TAP и TZX для кассет, TRD, SCL, FDI — для дискет, плюс поддержка снепшотов Z80, SNA — мгновенных снимков памяти). Это, безусловно, удобнее чем запускать магнитофон и дожидаться загрузки программы, и даже удобнее дискеты, которая может выйти из строя, но просто так прочитать реальные кассеты и дискеты, которые могли сохраниться за прошедшие 30 лет с помощью эмуляторов не удастся.
Зато есть возможность скачать кучу игр и программ из интернета (а вот в 90-е такой возможности не было…). Есть, например, зарубежный сайт World of Spectrum, на котором просто уйма всего для ZX Spectrum, а есть и российские сайты-сборники, например, ZX Spectrum Old Demos, с которого можно выкачать просто огромное количество всякого добра, хватило бы только времени всё это разобрать. Преимущество отечественных сайтов, конечно же, в том, что там, во-первых, представлены и российские разработки под ZX Spectrum, а, во-вторых, можно найти то, что на западе до сих пор запрещено распространять бесплатно.
Если вышеприведённый скриншот вас смутит своим размером, то могу уверить, что это реальные 256 на 192 точки, которые будучи растянутыми на весь экран телевизора были максимумом того, что в качестве ПК было доступно обычному гражданину в начале 90-х. В эмуляторе же с этим проще, в FUSE есть много режимов, с помощью которых можно выбрать размер и качество изображения:
Варианты с имитацией ТВ-изображения — это, конечно, для настоящих тру-спектрумистов, которые всё детство и юность провели за экранами телевизоров, к которым были подключены их спектрумы. Изображение же без сглаживания даёт идеальную картинку, которой она должна была бы быть, если бы лет 30-40 назад её можно было бы вывести на современные ЖК-мониторы или телевизоры по цифровому кабелю. Использование сглаживания даёт более гладкую картинку, на которой меньше заметны пиксели, но главное с этим не переборщить. Мне в FUSE больше нравится вариант AdvMAME, чем HQ.
Ну и собственно вопрос — зачем же всё это надо? Конечно же — для того чтобы играть в те игры, на которые и в молодости потратил многие часы. Для того, чтобы опять проходить те самые хиты 80-х и 90-х, ну и играть в современные игры для Спектрума — и такие тоже есть, да-да!
Вот, например, Last Battle 1995 года выпуска:
На мой взгляд, это лучшая пошаговая стратегия для ZX Spectruma, созданная разработчиками из России. Графика (и особенно меню), конечно, смотрится уже слабовато для середины 90-х и навевает воспоминания о Laser Squad, но геймплей затягивающий: оторваться от очередной попытки рассеять «туман войны» и захватить мир невозможно. Я и сейчас иногда поигрываю в неё, действительно — не в графике счастье.
Или вот — игра, образца 1991 года, пошаговая RPG-like игра Hero Quest:
Отличная и тоже затягивающая игра про приключения отряда варвара, эльфа, гнома и мага в подземельях и поисках приключений на свою… голову. Играется довольно быстро, но уровней в двух частях аж 24, так что не один вечер придётся потратить.
И я уж молчу про многочисленные Dizzy и подобные им игры (например, «48 утюгов» — однозначно играть всем любителям подобного жанра). Квест «Звёздное наследие«, тактическая стратегия «Space Crusade«, древняя, но захватывающая стратегия Nether Earth… И из нового тоже есть много интересного: тот же Castlevania: Spectral Interlude (2015), Mighty Final Fight (2018) и ремейк 2017 года Dizzy VII — Crystal Kingdom Dizzy. Много в общем всего есть, во что я готов поиграть и прямо сейчас, не взирая на имеющиеся залежи всякого добра в Steam. Ну и ностальгия понятное дело. Играя во всё это «старьё», я вспоминаю себя гораздо моложе, когда и трава была зеленее и небо голубее (и это не носило никаких отрицательных коннотаций!).
Я не собираюсь в рамках данной статьи проводить обзор всего ПО для ZX Spectrum, лучше это сделать в рамках отдельной серии, поэтому идём дальше.
Эмуляторы Dendy
Ну и закончу тему эмуляторов игровой приставкой, известной в России как Dendy, а за рубежом Famicom или NES (Nintendo Entertainment System). У меня самого её не было (между Денди и Спектрумом я выбрал последний), но она была у многих друзей и родственников, поэтому в неё я тоже поиграл в своё время вдосталь.
Для Linux есть несколько эмуляторов NES, но я бы рекомендовал FCEUX, поскольку он более стабильный и обладает неплохим набором опций. Например, в настройках видео можно выбрать OpenGL и установить размер экрана (scaling factor) — в Dendy, как в ZX Spectrum, он мелковат для современных экранов:
Ну и скачиваем на просторах интернета (например, тут) образ нужной нам игры (с расширением ROM) и открываем с помощью меню «Open ROM» и наслаждаемся любимыми «танчиками» (да-да, только недавно это сокращение закрепилось за World of Tanks):
В общем, любители ретро-гейминга под Linux не обижены.
Итого
Ну вот на этом и закончим обзор эмуляторов. Может быть и есть ещё какие-нибудь эмуляторы каких-либо экзотических или более навороченых устройств, но с этими устройствами я не сталкивался, поэтому и про их эмуляторы сказать ничего не могу.
Подытоживая. Если кровь из носу требуется какая-либо программа для Windows, аналога которой не удаётся подобрать в Linux — стоит выбрать Wine. Если в Wine программа не работает, то ваш выбор — виртуальная машина VirtualBox. Если вы хотите поиграть под Linux в Windows-игры, то проще всего это делать с помощью Steam и технологии Valve Proton. А если же вы любитель тряхнуть стариной и вспомнить молодость, то вам помогут DOSBox (для старых DOS-овских игр), FUSE (для игр под ZX Spectrum) и FCEUX (для дендевских игрушек).
P.S. Эта статья из цикла «Linux обычного пользователя» и, если она вас заинтересовала, то вы можете прочитать и другие статьи по этой теме.
- dukeyusupov
- 0
- 1 773