Запуск The Sims 4 и Origin через Wine

От скуки решил скачать The Sims 4, чтобы устроить там чад кутежа и кровавого угара. Запускается он через Origin, но так как я собирался поиграть от силы пару часов, то скачал взломанную версию.

Вот только при запуске игры вылезает ошибка, что мол Origin не запущен, запустите его и попробуйте снова. Почитал комменты на трекере - у некоторых людей такая же проблема, причём на Windows. Скачал другую раздачу - всё тоже самое. И тут в одной раздаче увидел в комментариях совет - мол, поставьте Origin, но не регистрируйтесь там, просто установите, и когда игра запустится - появится окно Origin для ввода логина и пароля, а дальше пойдёт сама игра.

Лады, скачаю, поставлю. Скачал, давай ставить - запуск установщика крашится, ругаясь на DirectX11, примерно как в игре Beholder. Полез на сайт Wine, там и нашёл решение - нужно создать 32-х битный префикс, скачать Legacy версию Origin, выставить в winecfg совместимость с Windows XP для скачанного файла, и установить его. Legacy версия позволяет только загружать игры, но нельзя просматривать сам магазин игр или бесплатные игры, но нам этого вполне хватит, мы же не собираемся ничего там покупать ;).

После этого The Sims 4 без проблем запускается и работает.

Запуск игры Beholder в Wine

На днях посмотрел ролик, в котором игру Beholder обсуждают Лаврентий Августович и его помощник Шурка:

Заинтересовался, полез посмотреть игру в Steam, оказалось, что это пока открытая бета, ключ можно получить через официальный сайт, сама игра выходит осенью. Вот её краткое описание:

"Вы – управляющий дома, который… ШПИОНИТ за жильцами! Вы ставите жучки, обыскиваете квартиры, прослушиваете телефоны. Вы собираете компромат и строчите доносы. Или… Возможно, у вас есть другой выбор?"

В общем роман "1984" Оруэлла во всей красе. Итак, что нужно сделать, чтобы запустить игру в Linux?

Для начала, обновить Wine. Я пробовал запускать со стабильной версии 1.8.4, но игра выдала такую ошибку:

fixme:d3d:wined3d_get_format Can't find format WINED3DFMT_R16_UNORM (0x55) in the format lookup table

Погуглил и выяснил, что поддержка формата WINED3DFMT_R16_UNORM появилась только в Wine 1.9.3. Но если и обновлятся, то до последней версии, в моём случае это Wine-1.9.19-r1.

После обновления вылезла другая ошибка:

fixme:d3d:wined3d_dxtn_init Wine cannot find the txc_dxtn library, DXTn software support unavailable.

Нужно установить media-libs/libtxc_dxtn, причем я поставил 32-х битную версию, т.к. на одном форуме видел чела с такой же проблемой, но у него была установлена 64-х битная версия. Ему посоветовали поставить 32-ую и проблема решилась.

Практически всё, осталось запустить winecfg, на вкладке Приложения добавить файл Beholder.exe - находится по адресу ~/.wine/drive_c/Program Files (x86)/Steam/steamapps/common/Beholder/ и ещё я выбрал Версию Windows 8, не знаю, может и с Windows XP так же будет работать.

Щелкаем на Beholder.exe в окне Настройка приложений и переходим на вкладку Библиотеки, выбираем из списка d3d11, жмём Добавить, она появляется в окне ниже, щёлкаем по ней, жмём Изменить и в окне выбираем Отключить.

Если не отключить эту библиотеку, то игра запустится, но как только пойдёт ролик в начале, игра закрашится, т.к. Wine пока ещё плохо работает с DirectX11. А так игрушка будет работать через DirectX9.

Приятной игры 🙂

P.S. Почитал обсуждение игры в Steam - разработчики обещают нативную версию под Linux, но чуть позже.

Винил для PS4

Третьего дня приехал винил для PS4, заказанный на известном китайском сайте. Выбрал скин Last of Us, хотя перед этим были метания, что же таки взять - Дарта Вёрдера, Uncharted, God of War, или Last of Us. Сегодня присовокупил к консоли, на ощупь винил приятный, картинка хорошего качества, даже как-то неожиданно.

PS4 винилPS4 винил

Сборка dev-qt/qtwebkit-5.6.0 и создание swap файла

Третьего дня зашел на сайт Calculate Linux и узнал, что месяц назад начался переезд на KDE/Plasma5. Судя по каментам, всё работает более-менее стабильно, поэтому нужно было переезжать, тем более переезд был принудительный, KDE 4 перестал поддерживаться сообществом и всё такое.

И вот, система обновляется, всё нормально, пока дело не доходит до сборки dev-qt/qtwebkit-5.6.0

Выдаёт такую ошибку:

make[2]: Entering directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/JavaScriptCore'
ruby /var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/JavaScriptCore/offlineasm/generate_offset_extractor.rb llint/LowLevelInterpreter.asm LLIntDesiredOffsets.h
/usr/lib64/ruby/2.0.0/rubygems.rb:15:in `require': cannot load such file -- rubygems/compatibility (LoadError)
from /usr/lib64/ruby/2.0.0/rubygems.rb:15:in `<top (required)>'
from <internal:gem_prelude>:1:in `require'
from <internal:gem_prelude>:1:in `<compiled>'
Makefile.LLIntOffsetsExtractor:426: recipe for target 'LLIntDesiredOffsets.h' failed
make[2]: *** [LLIntDesiredOffsets.h] Error 1

Засоветовали пересобрать dev-lang/ruby и dev-ruby/rubygems - не помогло. Далее я обратил внимание, что установлено 2 версии ruby - 2.0 и 2.1.7. Переключение профиля  ruby20 на ruby21 через eselect ruby set ruby21 помогло решить проблему.

Но на этом проблемы не закончились. Дальше при сборке выдаёт такое:

x86_64-pc-linux-gnu-g++: internal compiler error: Killed (program cc1plus)
Please submit a full bug report,
with preprocessed source if appropriate.
See <https://bugs.gentoo.org/> for instructions.
Makefile.WebCore.Target:151688: recipe for target '.obj/inspector/InspectorAllInOne.o' failed
make[2]: *** [.obj/inspector/InspectorAllInOne.o] Error 4
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/WebCore'
Makefile.WebCore:68: recipe for target 'sub-Target-pri-make_first-ordered' failed
make[1]: *** [sub-Target-pri-make_first-ordered] Error 2
make[1]: Leaving directory '/var/calculate/tmp/portage/dev-qt/qtwebkit-5.6.0/work/qtwebkit-opensource-src-5.6.0/Source/WebCore'
Makefile:178: recipe for target 'sub-Source-WebCore-WebCore-pro-make_first-ordered' failed
make: *** [sub-Source-WebCore-WebCore-pro-make_first-ordered] Error 2

Полез на багтрекер Gentoo - пишут, что скорее всего просто закончилась память.

Действительно, dmesg подтверждает:

[27324.991323] Out of memory: Kill process 6800 (cc1plus) score 125 or sacrifice child
[27324.991337] Killed process 6800 (cc1plus) total-vm:1123472kB, anon-rss:1051444kB, file-rss:0kB

Пришлось подключать дополнительно swap-файл, т.к. раздел для него на жёстком диске я просто не создавал, оперативной памяти в 8Гб всегда хватало.

Создаём файл:

sudo dd if=/dev/zero of=/swapfile bs=1G count=6

Заместо G можно подставить M и K, соответственно мегабайт и килобайт.

Значение count умножаются на значение bs, я создал файл размером в 6 гигабайт.

Создаем swap в файле:

mkswap /swapfile

Включаем его:

swapon /swapfile

После подключения swap'a сборка завершилась успешно.

Более подробно про создание, подключение и настройки своппинга написано здесь.

Не воспроизводится видео в Twitter.

Twitter пишет такое - "Воспроизведение видео не поддерживается в этом браузере.". В интернете много советов по этому поводу, мне помог этот - если стоит расширение Flashblock, нужно внести в его белый список 2 адреса -  twimg.com и amp.twimg.com.

Оживить Cubietruck, часть хз какая.

Cubietruck в очередной раз помер, мои надежды не оправдались. Действительно, начала глючить флешка, но я заранее заказал на Aliexpress новый SDD, марки KingDian объёмом 64 Гб.

План был таков - из ноута вытащить старый HDD и поставить его в кубик, а новый SDD поставить в ноут. Был еще вариант купить новую флешку, но посмотрев на цену (хорошая флешка стоила около 1600 рублей, а цена SDD - 2000), этот вариант сразу же отпал. Правда пришлось ещё докупить вот такую коробочку для жёсткого диска, ибо Sata порт кубика port multiplier не поддерживает. Хотя я находил решение, но ссыкотно было его покупать, хрен его знает, может не взлетит.

И выяснил вот ещё что - флешка для Cubietruck хоть как нужна, он с неё начинает загрузку, хотя первый (и второй, вроде) Cubieboard могли это делать напрямую с винта.

Итак, диск приехал, я сразу метнулся на почту, а следом в магазин за внешним боксом. Подключил 2,5" диски к десктопу, разбил новый диск на партиции через Gparted (не Ъ, да), начал копировать систему посредством rsync. Позже напишу пост, чё да как, очень удобная штука, как выяснилось, плюс про полезные фичи для работы системы на SSD диске.

SDD воткнул в ноут, система нормально загрузилась. Далее поставил (в который раз) Cubian на флешку, скопировал всё на диск, после этого внёс изменения в загрузочный файл (об этом тоже в другом посте), чтобы дальнейшая загрузка шла с диска.

Далее разобрал ту конструкцию, на которой крепилась плата Cubietruck, выкинул батарейку - из-за неё кубик при большой нагрузке на диск отключался. Воткнул всё в ч0рную коробочку, которая также шла в комплекте с Cubietruck. Надеюсь, мозгоёбство на этом закончится.

Cubietruck: обновление ядра Cubian

Итак, для чего мне это нужно. Дело в том, что в качестве торрент-клиента у меня стоит Transmission с веб-мордой. В версии 2.52 в веб-морде нет строки для указания места, куда будет загружаться файл, она появляется только в версии 2.84, папка для загрузки задаётся жёстко в конфиг-файле. И самое прекрасное - обновление из Jessie (нынешний Stable релиз) до этой самой 2.84 тащит за собой ещё и новый udev, а новый udev требует опцию FHANDLE=y в ядре, иначе при следующем запуске система не загрузится, об этом я писал ещё в марте.

Но поцчему-то сам Cubian перестал обновляться, по крайней мере ядро, и последняя новость на сайте - от 8.10.14, когда вышел Cubian X. И так как я не умею пересобирать ядро для архитектуры arm, приходиться юзать уже готовые сборки. Человек на Git'e Cubiana'a задавал такой же вопрос - как обновить ядро? Ему ответили - иди по этой ссылке, читай файл readme.txt и ставь ядро. Хорошо, что я чуть-чуть умею читать по буржуйски , тоже прочитал этот самый readme и начал ставить. Может ещё кому пригодится. Поехали.

Для начала желательно таки прочитать файл readme.txt, там написано, какой последний выпуск ядра и что в него добавлено\убрано, лишним не будет. На момент, когда я этим занимался, самое новое ядро было версии danand_a20_3_4_110_c. Я выбрал первый способ установки, т.к. это первая установка ядра, дальнейшие обновления можно будет делать на работающей системе.

Качаем нужный архив ядра, распаковываем.

Подключаем SD карту с установленным Cubian'ом к компьютеру, автоматически должны примонтироваться 2 раздела - /boot  и / (корень). В директории распакованного ядра 3 поддиректории - boot, firmware, modules. Из boot берем образ ядра uImage и копируем в /boot флешки Cubietruck'a. Причём в /boot уже будет файл uImage, это символическая ссылка на старое ядро uImage-3.4.79-sun7i. Ссылку можно предварительно удалить, она уже не нужна, а вот uImage-3.4.79-sun7i трогать не стоит, пусть лежит, в случае проблем с новым ядром можно будет удалить файл нового ядра и опять сделать символическую ссылку на старое ядро. Итак, здесь закончили.

Выходим из boot, следующая директория firmware, просто копируем отсюда все в /lib/firmware флешки Cubietruck'a. Следом нужно задать владельца и группу root для  директории - chown -R root:root /lib/firmware.

Выходим из директории firmware и заходим в modules. Внутре неё находится поддиректория 3.4.110-sun7i+, у более старого\нового ядра будет своё название. Вот её необходимо скопировать в /lib/modules Cubietruck'a, причём не сами файлы внутри неё, а директорию целиком. После этого задаём владельца и группу root для директории - chown -R root:root /lib/modules/3.4.110-sun7i+.

На этом все, вытаскиваем флешку, пихаем в Cubietruck, включаем, наблюдаем за загрузкой кубика.

Разбираемся с Gentoo и MAKEOPTS=”-j${core} +1″

Восстанавливаю похеренный пост. Значится так, задался я вопросом оптимизации. Начал читать всякое, что еще можно в Gentoo подкрутить, чтобы система работала быстрее. И нашел один пост, автор (участник Gentoo Linux ARM Development, наверное что-то да соображает) пишет, что сборка по формуле j={core} + 1 чуть медленнее, чем просто j={core}.

Посмотрев на его результаты, решил проверить все на своем калькуляторе с 6-ти ядерным AMD Phenom II X6 1055T. Я выделил только результаты со значением j от 5 до 7, ибо понятно, что при значениях меньше 5 и больше 7 будет сильная регрессия. И потом, просто для интереса, добавил опции --load-average=6 и --jobs=6, а также переключил процессор в режим perfomance командой "cpupower frequency-set -g performance".

Сборка происходит в оперативной памяти, emerge собирает с опциями "-q1OB".

Опция -q уменьшает объем сообщений emerge, опция -B создает бинарый пакет, но не устанавливает его, -O устанавливает пакет без его зависимостей, -1 не заносит пакет в world файл.

Итак, приступим. Первый кандидат на тест - Firefox 40.0.2

Стандартные значения, процессор переключен в режим ondemand

job 5 = 19m27.126s
job 6 = 17m0.438s
job 7 = 17m17.294s

Процессор переключен в режим perfomance

job 5 = 18m44.965s
job 6 = 16m25.896s
job 7 = 16m39.971s

Добавлена опция --jobs=6

job 5 = 18m46.808s
job 6 = 16m26.300s
job 7 = 16m42.490s

Добавлена опция --load-average=6

job 5 = 21m6.846s
job 6 = 18m24.210s
job 7 = 19m10.559s

Потом последовал пакет Kdelibs 4.14.8, опции те же самые.

Процессор переключен в режим ondemand

job 5 = 9m18.974s
job 6 = 8m8.003s
job 7 = 8m20.969s

Процессор переключен в режим perfomance

job 5 = 8m51.200s
job 6 = 7m50.196s
job 7 = 7m58.345s

Добавлена опция --jobs=6

job 5 = 8m53.102s
job 6 = 7m50.039s
job 7 = 7m58.541s

Добавлена опция --load-average=6

job 5 = 9m3.678s
job 6 = 8m37.215s
job 7 = 8m52.021s

И на последок - сборка @system.

Вот что собиралось

>>> Emerging (1 of 44) sys-apps/man-pages-4.00::gentoo
>>> Emerging (2 of 44) sys-apps/util-linux-2.25.2-r2::gentoo
>>> Emerging (3 of 44) sys-apps/grep-2.21-r1::gentoo
>>> Emerging (4 of 44) sys-apps/kbd-1.15.5-r1::gentoo
>>> Emerging (5 of 44) sys-apps/busybox-1.23.1-r1::gentoo
>>> Emerging (6 of 44) virtual/service-manager-0::gentoo
>>> Emerging (7 of 44) sys-devel/binutils-2.24-r3::gentoo
>>> Emerging (8 of 44) virtual/man-0-r1::gentoo
>>> Emerging (9 of 44) sys-apps/net-tools-1.60_p20130513023548::gentoo
>>> Emerging (10 of 44) virtual/shadow-0::gentoo
>>> Emerging (11 of 44) virtual/modutils-0-r1::calculate
>>> Emerging (12 of 44) sys-apps/gawk-4.0.2::gentoo
>>> Emerging (13 of 44) app-arch/xz-utils-5.0.8::gentoo
>>> Emerging (14 of 44) sys-apps/sed-4.2.1-r1::gentoo
>>> Emerging (15 of 44) sys-process/psmisc-22.21-r2::gentoo
>>> Emerging (16 of 44) sys-fs/e2fsprogs-1.42.13::gentoo
>>> Emerging (17 of 44) sys-apps/file-5.22::gentoo
>>> Emerging (18 of 44) app-arch/bzip2-1.0.6-r6::gentoo
>>> Emerging (19 of 44) app-arch/tar-1.27.1-r2::gentoo
>>> Emerging (20 of 44) virtual/package-manager-0::gentoo
>>> Emerging (21 of 44) net-misc/rsync-3.1.1::gentoo
>>> Emerging (22 of 44) sys-apps/openrc-0.17::gentoo
>>> Emerging (23 of 44) virtual/editor-0::gentoo
>>> Emerging (24 of 44) sys-apps/coreutils-8.23::gentoo
>>> Emerging (25 of 44) sys-devel/make-4.1-r1::gentoo
>>> Emerging (26 of 44) sys-process/procps-3.3.9-r2::gentoo
>>> Emerging (27 of 44) sys-apps/iproute2-3.19.0::gentoo
>>> Emerging (28 of 44) virtual/ssh-0::gentoo
>>> Emerging (29 of 44) virtual/dev-manager-0::gentoo
>>> Emerging (30 of 44) sys-apps/findutils-4.4.2-r1::gentoo
>>> Emerging (31 of 44) virtual/os-headers-0::gentoo
>>> Emerging (32 of 44) app-arch/gzip-1.6::gentoo
>>> Emerging (33 of 44) net-misc/wget-1.16::gentoo
>>> Emerging (34 of 44) sys-apps/which-2.20-r1::gentoo
>>> Emerging (35 of 44) net-misc/iputils-20121221-r1::gentoo
>>> Emerging (36 of 44) virtual/pager-0::gentoo
>>> Emerging (37 of 44) sys-apps/diffutils-3.3::gentoo
>>> Emerging (38 of 44) sys-apps/baselayout-2.2::gentoo
>>> Emerging (39 of 44) sys-apps/less-478::gentoo
>>> Emerging (40 of 44) app-shells/bash-4.3_p39::gentoo
>>> Emerging (41 of 44) sys-devel/patch-2.7.5::gentoo
>>> Emerging (42 of 44) virtual/libc-0::gentoo
>>> Emerging (43 of 44) sys-devel/gnuconfig-20150308::gentoo
>>> Emerging (44 of 44) sys-devel/gcc-4.8.4::gentoo

Процессор переключен в режим ondemand

-j5 = 48m32.519s
-j6 = 46m2.547s
-j7 = 46m39.452s

Процессор переключен в режим perfomance

-j5 = 28m55.455s
-j6 = 28m27.521s
-j7 = 29m15.811s

Добавлена опция --jobs=6

-j5 = 29m13.803s
-j6 = 27m6.803s
-j7 = 27m18.675s

Добавлена опция --load-average=6

-j5 = 37m52.365s
-j6 = 35m25.080s
-j7 = 35m47.117s

Как видно, при значении опции j={core} компиляция проходит чуть быстрее. И еще в скрипте сборки в оперативной памяти (которым всегда пользуюсь, ссылка в начале поста) я добавил переключение процессора в режим perfomance в начале сборки и возврат в режим ondemand после её окончания ибо это дает дополнительный прирост скорости.

 

Шеф, все пропало, часть 2

Таки да, опять пришел пиздец. Посыпались ошибки при обновлении perl-base, типа невозможно удалить старые версии файлов, плюс еще Python начал на мозги капать, тоже лезли ошибки при установке. Перезагрузился, система перешла в режим Maintenance, я как путний парень запустил fsck. Он конечно все проверил, нашел просто кучу ошибок и всякой фигни, начал фиксить.

После его проверки я было обрадовался, типа все пучком сейчас будет, откупорил баночку пива "Охоты крепкой", но как оказалось - поторопился. При перезагрузке выянилось, что в итоге на флешке образовалась просто куча мала, странные имена владельцев и групп, переименованные и потеряные файлы и все такое прочее. Отказались запускаться Apache, NFS сервер, Mysql. В общем практически ничего не работало. Ну мы люди привычные, быстро вытащил карту памяти, накатил на нее образ Cubian, обновил ядро (об этом пост чуть позже), обновил систему до Jessie, поставил все нужное, что стояло до этого, настроил. Сегодня немного поддопилил. Надеюсь, что это не флешка заболела пиздецомой, а из-за того, что долго не проверялась fsck.