Sunday, September 5, 2021

Update SSD firmware

Samsung uses custom linux live CD for update SSD firware. That is big step to right direction if compare to previous FreeDOS boot as for me. And sometime such liveCD does not support your device(press any key when your usb hub is not supported).

But we can run update in linux directly:
  • Download firmware https://www.samsung.com/semiconductor/minisite/ssd/download/tools/
  • sudo mount -t auto -o loop Downloads/Samsung_SSD_870_QVO_SVQ02B6Q_Win.iso /mnt
  • mkdir /tmp/unpack && cd /tmp/unpack/ && zcat /mnt/initrd | cpio -i
  • init 1 
  • cd /tmp/unpack/root/fumagician/ && ./fumagician 
  • reboot

Saturday, December 5, 2020

Move linux to new disk commands

  • Move linux to new disk with rsync:
    • rsync -avxHAXW --progress  /<old disk mount point>  /<new disk mount point> --exclude=/<old disk mount point>/dev  --exclude=/<old disk mount point>/sys --exclude=/<old disk mount point>/proc --exclude=/<old disk mount point>/run
  • or with cp:
    • cp -afv /home/ /mnt/home/
  • Update /etc/fstab with new uuid by:
    • ls -l /dev/disk/by-uuid/
  • Restore grub:
    • grub-install /dev/xxx
    • update-grub2

Monday, November 2, 2020

Vulkan Lavapipe Software render

Sequence commands to compile lavapipe from mesa upstream:
  • PWD=${PWD}
  • git clone git://anongit.freedesktop.org/mesa/mesa
  • mkdir mesa-build
  • meson ../mesa --prefix=${PWD}/install
  • ninja -j 4
  • ninja install
  • cd ..
  • VK_ICD_FILENAMES=${PWD}/mesa-build/install/share/vulkan/icd.d/lvp_icd.x86_64.json vulkaninfo
Sequence commands to compile yquake for check vulkan render:
  • wget -cv https://deponie.yamagi.org/quake2/idstuff/q2-314-demo-x86.exe
  • unzip q2-314-demo-x86.exe
  • git clone git@github.com:yquake2/yquake2.git -b ref_vk
  • cd yquake2
  • make
  • cd ..
  • cp -rv Install/Data/baseq2/pak0.pak yquake2/release/baseq2/
  • cp -rv Install/Data/baseq2/players yquake2/release/baseq2
Sequence commands to check Vulkan render:
  • cd yquake2/release
  • VK_ICD_FILENAMES=${PWD}/mesa-build/install/share/vulkan/icd.d/lvp_icd.x86_64.json ./quake2

Tuesday, March 31, 2020

Vulkan Software render (amd64+Windows)

There are small list of commands for compile Vulkan soft render library on amd64 debian, sequence is fully same as in the previous post related to check quake2 run on the arm64
  • git clone git@github.com:google/swiftshader.git
  • cd swiftshader/build
  • cmake ..
  • make -j 2 vk_swiftshader
  • sudo cp libvk_swiftshader.so /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
  • sed -i "s|./libvk_swiftshader.so|/usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so|g" Linux/vk_swiftshader_icd.json
  • sudo cp Linux/vk_swiftshader_icd.json /usr/share/vulkan/icd.d/swiftshader_icd.x86_64.json
  • sudo chmod 644 /usr/share/vulkan/icd.d/swiftshader_icd.x86_64.json
  • sudo chown root:root /usr/share/vulkan/icd.d/swiftshader_icd.x86_64.json
  • sudo chmod 644 /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
  • sudo chown root:root /usr/lib/x86_64-linux-gnu/libvulkan_swiftshader.so
And same story for Windows, It will be a little bit different story as result of different logic of package distribution. User have installed Vulkan drivers with Vulkan loader as part graphical drivers by default.

Compilation of code has required to install Vulkan SDK, CMake and Visual Studio.

And sequence of commands for build loader will be such for 64bit platform if no drivers installed with Vulkan.
  • git clone https://github.com/KhronosGroup/Vulkan-Loader.git
  • cd Vulkan-Loader/
  • cd external/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/KhronosGroup/Vulkan-Headers.git
  • cd googletest
  • git checkout tags/release-1.8.1
  • cd ../..
  • mkdir build
  • cd build
  • cmake -A x64 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted library to C:\windows\System32 as vulkan-1.dll
Same commands but for 32 bit library
  • git clone https://github.com/KhronosGroup/Vulkan-Loader.git
  • cd Vulkan-Loader/
  • cd external/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/KhronosGroup/Vulkan-Headers.git
  • cd googletest
  • git checkout tags/release-1.8.1
  • cd ../..
  • mkdir build
  • cd build
  • cmake -A win32 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted library to C:\windows\sysWOW64 as vulkan-1.dll
And then compile Vulkan driver for 64 platform:
  • git clone https://github.com/google/swiftshader.git
  • cd swiftshader/
  • git submodule init
  • cd third_party/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/google/benchmark.git
  • git clone https://github.com/google/cppdap
  • git clone https://github.com/nlohmann/json.git
  • git clone https://github.com/ianlancetaylor/libbacktrace.git libbacktrace/src
  • cd ../build
  • cmake -A x64 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted file to preferred place, as example C:\Program Files\SwiftShaderVulkan
Same commands but for 32 bit library
  • git clone https://github.com/google/swiftshader.git
  • cd swiftshader/
  • git submodule init
  • cd third_party/
  • git clone https://github.com/google/googletest.git
  • git clone https://github.com/google/benchmark.git
  • git clone https://github.com/google/cppdap
  • git clone https://github.com/nlohmann/json.git
  • git clone https://github.com/ianlancetaylor/libbacktrace.git libbacktrace/src
  • cd ../build
  • cmake -A win32 --config Release ..
  • cmake --build . --config Release
  • cd ../..
  • Copy resulted file to preferred place, as example C:\Program Files\SwiftShaderVulkan
Also need to create ICD files like such C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader32.json with:
{
  "file_format_version": "1.0.0",
  "ICD": {
    "library_path": "C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader_32.dll",
    "api_version": "1.0.5"
  }
}
And C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader64.json with such content:
{
  "file_format_version": "1.0.0",
  "ICD": {
    "library_path": "C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader_64.dll",
    "api_version": "1.0.5"
  }
}
After that need to correctly register drivers, or,that will be less complicated, create reg file and apply such by RegEdit.
   
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\Vulkan\Drivers]
"C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader32.json"=dword:00000000

[HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\Vulkan\Drivers]
"C:\\Program Files\\SwiftShaderVulkan\\vk_swiftshader64.json"=dword:00000000

Friday, January 31, 2020

Vulkan Software render

Google have created software based Vulkan implementation sometime ago as not a official project.
And i have decided to check how it was in compare to other soft rendering implementations. And here are some results with yquake:
  • ref_gl1: 632 frames, 24.4 seconds: 25.9 fps (mesa 19.3.2 llvmpipe LLVM 9.0.1, 128 bits)
  • ref_gl3: 632 frames, 28.9 seconds: 21.9 fps (mesa 19.3.2 llvmpipe LLVM 9.0.1, 128 bits)
  • ref_soft: 632 frames, 10.9 seconds: 57.8 fps (mesa 19.3.2)
  • ref_vk: 632 frames, 98.9 seconds: 6.4 fps (SwiftShader Device LLVM 7.0.1)
Used steps for build SwiftShader are:
  • git clone git@github.com:google/swiftshader.git
  • cd swiftshader/build
  • CC="ccache gcc-8" CXX="ccache g++-8" cmake ..
  • CC="ccache gcc-8" CXX="ccache g++-8" make -j 2 vk_swiftshader
  • sudo cp libvk_swiftshader.so /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
  • sed -i "s|./libvk_swiftshader.so|/usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so|g" Linux/vk_swiftshader_icd.json
  • sudo cp Linux/vk_swiftshader_icd.json /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
  • sudo chmod 644 /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
  • sudo chown root:root /usr/share/vulkan/icd.d/swiftshader_icd.aarch64.json
  • sudo chmod 644 /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
  • sudo chown root:root /usr/lib/aarch64-linux-gnu/libvulkan_swiftshader.so
Note: Gcc 8 is preferred compiler for now as gcc-9 produced error with current version of code base.

Used steps for build yQuake2 are:
  • wget -cv https://deponie.yamagi.org/quake2/idstuff/q2-314-demo-x86.exe
  • unzip q2-314-demo-x86.exe
  • git clone git@github.com:yquake2/yquake2.git -b ref_vk
  • cd yquake2
  • make
  • cd ..
  • cp -rv Install/Data/baseq2/pak0.pak yquake2/release/baseq2/
  • cp -rv Install/Data/baseq2/players yquake2/release/baseq2

Wednesday, January 22, 2020

yquake2 7.42 version.


New version with speedup optimization in the software render.
Timedemo values (timedemo 1;) on 1280x800@60 with maps from quake2 demo are

7.20: 632 frames, 18.7 seconds: 33.8 fps
7.21: 632 frames, 19.1 seconds: 33.1 fps
7.30: 632 frames, 17.9 seconds: 35.4 fps
7.40: 632 frames, 17.5 seconds: 36.2 fps (36.8 fps)
7.41: 632 frames, 17.3 seconds: 36.5 fps
7.42: 632 frames, 17.0 seconds: 37.2 fps

Quake II 7.41 to 7.42: 

  • The console can now be scrolled with the mouse wheel. (by maxcrofts) 
  • Fix entities on non-horizontal surfaces rendered in full black. 
  • Add an option to choose the display Quake II runs on. (by Spirrwell) 
  • Add an option to specify the display refresh rate used in fullscreen. 
  • Allow mouse 'sensitivity' to be set to non-integral values. 
  • Port cvar operations from q2pro. These allow the manipulation of cvar values, supported are: dec, inc, reset, resetall and toggle 
  • Put the client into pause mode during savegame load. This prevents the world getting forwarded about 100 frames during load, time in which the player might be hurt by monsters or the environment. 
  • New commands: 'listentities' allows listing of entities. 'teleport' teleports the player to the given coordinates. 
  • Fix loading of config files not ending in newlines. 
  • A lot of fixes for subtle, long standing AI and game play bugs. (by BjossiAlfreds) 
  • Quicksaves can now be loaded and saved throught the savegame menus. 
  • The software render now skips frames with no changes. This improves performance quite a bit, especially on slow CPUs. (by Denis Pauk)

Monday, November 18, 2019

Run yquake on ChromeOS

Chrome OS provides an ability to run linux in a container and its little bit outdated a `stretch` debian release. Most convenient way for build is cross compile on different host in container with the debian stretch.

First of all, lets create boot strapped environment by such commands:
sudo qemu-debootstrap --arch=arm64 --keyring /usr/share/keyrings/debian-archive-keyring.gpg --variant=buildd --exclude=debfoster stretch debian-arm64 http://ftp.debian.org/debian

After that chroot to directory and install required package for build:
  • sudo cp /usr/bin/qemu-aarch64-static debian-arm64/ -v
  • cd debian-arm64/
  • sudo chroot . ./qemu-aarch64-static /bin/bash
  • apt install -y git make gcc libsdl2-dev libcurl4-gnutls-dev ccache libopenal-dev
And finally build quake:
  • cd root
  • git clone https://github.com/yquake2/yquake2.git
  • cd yquake2
  • CC="ccache gcc " make -j 6
And copy binary files from release directory to the device.

Thursday, May 30, 2019

Quake II 7.41 version

One more release with my fixes: QUAKE2_7_41

  • Some bugfixes to HTTP downloads introduced in 7.40.
  • Fix several crashes when loading savegames in coop.
  • Fix some out of memory aborts when loading maps with a lot surfaces.
  • Allow autodetection of the desktop resolution. Set 'r_mode' to '-2' to enable that. (by Denis Pauk)
  • Several fixes to the OpenGL 3.2 renderer. Some dynamic lights were missing, for example for most explosions. Stencil shadows were broken under some conditions. Performance was bad with the AMD driver under Windows. Intel Ivy Bridge didn't work. Under some conditions lights were too bright.
  • Add an optional fix for lighting problems in maps that misuse sky surfaces for interior lighting. Set 'gl_fixsurfsky' to '1' to enable it.
  • Another bunch of timing fixes. The game should now hold the framerate under all conditions, even with crappy Windows GPU drivers. The quake2.exe wrapper forces the Quake II window into focus. This prevents Quake II starting in background.

Wednesday, May 15, 2019

OmniOS CE Initial configuration

After install OmniOS CE (Open Solaris fork) run of the such commands can be useful:

Mount iso image for install additional virtualization tools:
  1. look to cdrom device by: iostat -En
  2. mount cdrom: mount -r -F hsfs /dev/dsk/<cdrom>s0 /cdrom

Example:
$ iostat -En
c1t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: NECVMWar Product: VMware IDE CDR10 Revision: 1.00 Serial No:
Size: 0,02GB <16891904 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 1 Predictive Failure Analysis: 0
c2t0d0 Soft Errors: 0 Hard Errors: 0 Transport Errors: 0
Vendor: VMware Product: Virtual disk Revision: 2.0 Serial No:
6000c29345a261f
Size: 64,42GB <64424509440 bytes>
Media Error: 0 Device Not Ready: 0 No Device: 0 Recoverable: 0
Illegal Request: 2 Predictive Failure Analysis: 0
$ mount -r -F hsfs /dev/dsk/c1t0d0s0 /media/

Enable dhcp on the NIC:
  1. look to nic device: dladm show-link
  2. enable nic: ifconfig <interface> plumb up
  3. enable dhcp on nic: touch /etc/dhcp.<interface>
  4. enable nic after reboot: touch /etc/hostname.<interface>

Example:
$ dladm show-link
LINK CLASS MTU STATE BRIDGE OVER
vmxnet3s0 phys 1500 up -- --
$ ifconfig vmxnet3s0 plumb up
$ touch /etc/dhcp.vmxnet3s0
$ touch /etc/hostname.vmxnet3s0
Add a new user:
  1. Enable ssh: svcadm enable ssh
  2. create home directory: mkdir /export/home
  3. enable export home directory: echo "* localhost:/export/home/&" >> /etc/auto_home
  4. add user: useradd -m -b /export/home cloud
  5. change user password: passwd cloud

Friday, February 8, 2019

yquake2 7.40 version.

Little more fixes in soft render. Quake II 7.30 to 7.40:
  • Add support for HTTP downloads. Both the r1q2 and q2pro URL schemes are supported, if a file is unavailable over HTTP the download code falls back to UDP.
  • Savegames can be removed through the menu by pressing 'del' on the selected savegame. (by Jonathan Bergeron)
  • Support external entity files. This was submitted by @NeonKnightOA.
  • Some fixes to OGG/Vorbis music playback. The music keeps playing after s_restart and ogg_shuffle is handled correctly by the menu.
  • Another round of timing fixes. Average frame times are now taken into account when taking an educated guess on the next frames render time. And the display refresh rate detection no longer cripple working GPU drivers in an effort to work around bugs in older version of AMDs.
  • A lot of fixes to the internal memory management. The game is now much more memory efficient, this allows playing of extremely big maps without crashes. This is largely based upon work done by Denis Pauk.
  • New and much more detailed documentation.
  • Enhancements to the software renderer. Retexturing packs are now supported, general cleanup and bugfixes. (by Denis Pauk)

Thursday, September 6, 2018

yquake2 7.30 version.

New version with speedup optimization in software render.

Timedemo values (timedemo 1;) on 1366x768:

  • map demo1.dm2 = 27.1 fps (+12% improve)
  • map demo2.dm2 = 25.5 fps (+13% improve)

  • map demo1.dm2 = 24.2 fps (+0% not changed)
  • map demo2.dm2 = 22.5 fps (+0% not changed)

  • map demo1.dm2 = 24.2 fps (+1% improve)
  • map demo2.dm2 = 22.5 fps (+1% improve)

  • map demo1.dm2 = 23.8 fps
  • map demo2.dm2 = 22.0 fps
Full list of changes:

Quake II 7.21 to 7.30:
  • Removed support for SDL 1.2.
  • Removed static dependencies to libogg, libvorbis and libz.
  • Fixed several bugs regarding render- and fullscreen switch.
  • A lot of fixes and improvements to the software renderer. It's now able to render the whole game without artifacts and much faster than before. (by Denis Pauk)

Saturday, April 28, 2018

Достоинства‭ ‬перехода‭ ‬на‭ ‬Cloudify

Достоинства‭ ‬перехода‭ ‬с‭ ‬инфраструктуры‭ (‬например‭ ‬на‭ ‬основе‭ openStack/vCloud/‬vSphere‭) ‬c‭ ‬ручным‭ ‬созданием‭ ‬и‭ ‬управлением‭ виртуальными‭ ‬машинами‭ ‬на‭ ‬продукты‭ ‬базирующиеся‭ ‬на‭ ‬оркестраторе.‭

Достоинства‭ ‬перехода‭ ‬на‭ ‬Cloudify:

Возможность‭ ‬централизованного‭ ‬управления‭ ‬инфраструктурой‭ ‬с‭ ‬возможностью‭ ‬использования‭ ‬гибридных‭ ‬решений.‭ ‬Позволяющей‭ ‬с‭ ‬минимальными‭ ‬изменениями‭ ‬управлять‭ ‬различными‭ ‬провайдерами‭ ‬в‭ ‬одной‭ ‬инфраструктуре. ‭
  1. Возможно‭ ‬комбинирование:
    • vSphere‭(‬+NSX‭)‬,‭ ‬vCloud,‭ ‬OpenStack,‭ ‬Azure,‭ ‬Google‭ ‬Cloud‭
    • Публичных‭ ‬и‭ ‬приватных‭ ‬облаков‭ (‬как‭ ‬пример‭ ‬vCD/OpenStack‭ ‬+‭ ‬GoogleСloud‭)
    • Возможность‭ ‬управления‭ ‬аппаратными‭ ‬решениями‭ ‬в‭ ‬будущем‭ ‬-‭ ‬netConf/ssh/cisco‭ ‬ios
    • Поддержка‭ ‬как‭ ‬SDN‭ ‬так‭ ‬и‭ ‬VNF
  2. Поддерживается‭ ‬мониторинг‭ ‬и‭ ‬масштабирование‭ ‬инфраструктуры‭ ‬по‭ ‬триггеру.
  3. Возможность‭ ‬визуального‭ ‬отображения‭ ‬взаимосвязей‭ ‬между‭ ‬компонентами‭ ‬инфраструктуры.
  4. Поддержка‭ ‬интеграции‭ ‬с‭ ‬сторонними‭ ‬продуктами,‭ ‬таких‭ ‬как:
    • ‬передача‭ ‬результатов‭ ‬мониторинга‭ ‬в‭ ‬сторонний‭ ‬продукт.
    • Управление‭ ‬из‭ ‬стороннего‭ ‬продукта‭ ‬инфраструктурой‭ ‬базирующейся‭ ‬на‭ ‬cloudify.
  5. Кластеризация‭ ‬и‭ ‬отказоустойчивость‭ ‬в платной версии.
  6. ‬Удобный‭ ‬пользовательский‭ ‬интерфейс‭ ‬с‭ ‬разделением‭ ‬на:
    • ‬доступные‭ ‬установочный‭ ‬шаблоны,‭ ‬описывающее‭ ‬взаимосвязь‭ ‬внутренних‭ ‬компонентов‭ ‬между‭ ‬собой;
    • ‬Список‭ ‬установок‭(‬deployments‭) ‬-‭ ‬базирующихся‭ ‬на‭ ‬шаблонов‭ ‬с‭ ‬возможностью‭ предоставления‭ ‬дополнительный‭ ‬уточняющих‭ ‬параметров;‭
    • ‬Логов‭ ‬событий‭ ‬привязанных‭ ‬к‭ ‬установкам‭ (‬deployments‭);‭
    • ‬Графиков‭ ‬базирующихся‭ ‬на‭ ‬текущем‭ ‬состоянии‭ ‬инфраструктуры‭ ‬с‭ ‬разбиением‭ ‬на‭ ‬установки.‭
  7. Доступность‭ ‬консольного‭ ‬клиента‭ ‬для‭ ‬выполнения‭ ‬операций‭ ‬без‭ ‬использования‭ ‬web‭ ‬интерфейса.
‭Возможная‭ ‬процедура‭ ‬перехода:

Постепенный‭ ‬перенос‭ ‬старых‭ ‬установок‭ ‬в‭ ‬cloudify‭ ‬-‭ ‬через‭ ‬указание‭ ‬текущей‭ ‬конфигурации‭ ‬виртуальных‭ ‬машин‭ ‬или‭ ‬иных‭ ‬компонентов‭ ‬с‭ предоставлением‭ проброса ‬операций‭ ‬через‭ ‬указание‭ ‬в‭ ‬свойствах‭ ‬компонента‭ “‬уже‭ ‬существующий‭”‬.‭ ‬В‭ ‬результате‭ ‬возможно‭ ‬использование‭ ‬уже‭ ‬существующей‭ ‬конфигурации‭ ‬и‭ ‬выполнение‭ ‬через‭ ‬powershell‭ (‬windows‭)‬,‭ ‬ssh‭ (‬unix‭ ‬like‭)‬,‭ ‬agent‭ (‬доустановка‭ ‬компонента‭ ‬для‭ ‬мониторинга‭ ‬на‭ ‬каждую‭ виртуальную‭ ‬машину‭)‬. И затем ‬последующее‭ ‬создание ‬компонентов‭ ‬изначально‭ ‬через‭ ‬cloudify‭ ‬плагины.

Поддерживается‭ ‬через‭ ‬плагины:‭

Облачные‭ ‬провайдеры:
  • vSphere‭(‬+NSX‭)
  • vCloud Air
  • openStack
  • Azure
  • AWS
  • GoogleCloud
  • KVM/qemu/libVirt
Плагины‭ ‬для‭ ‬управления:
  • SSH:‭ ‬Fabric/Terminal
  • Agent: ‬PowerShell/Bash/Python
  • VNF:‭ ‬NetConf
  • Ansible
  • Aria
  • Docker
  • Chef

Sunday, March 11, 2018

yquake2 7.20 version.


New version of yquake2 with restored soft render and haptic feedback with 3d direction based on source position. And many other fixes... 



  • Add the soft renderer back. This feature is considered experimental. The porting of the old soft renderer code to SDL and it's cleanup were done by Denis Pauk.
  • Rename several cvars to be consistent across different renderers. The configuration file will be converted at the first start, when an old cvar name is used a message is printed.
  • Make the client unicode compatible. Yamagi Quake II can now be installed into pathes with unicode characters in it. On Windows the user name of the current account may contain unicode characters. As a side effect the game can run on ReFS volumes. While '+set basedir' is still supported, the unicode compatible '-datadir' should be used.
  • Another round of timing fixes. The game is now capable of holding the requestes or vsync framerate even on slow machines and with problematic GL drivers.
  • Fix server side mod handling, their configs are now saved to the correct directories and the configs are reexeced at mod startup.
  • Add the soft renderer back. This feature is considered experimental. The porting of the old soft renderer code to SDL and it's cleanup were done by Denis Pauk.
  • Rename several cvars to be consistent across different renderers. The configuration file will be converted at the first start, when an old cvar name is used a message is printed.
  • Rename several cvars to be consistent across different renderers. The configuration file will be converted at the first start, when an old cvar name is used a message is printed.
  • Make the client unicode compatible. Yamagi Quake II can now be installed into pathes with unicode characters in it. On Windows the user name of the current account may contain unicode characters. As a side effect the game can run on ReFS volumes. While '+set basedir' is still supported, the unicode compatible '-datadir' should be used.
  • Make the client unicode compatible. Yamagi Quake II can now be installed into pathes with unicode characters in it. On Windows the user name of the current account may contain unicode characters. As a side effect the game can run on ReFS volumes. While '+set basedir' is still supported, the unicode compatible '-datadir' should be used.
  • Another round of timing fixes. The game is now capable of holding the requestes or vsync framerate even on slow machines and with problematic GL drivers.
  • Another round of timing fixes. The game is now capable of holding the requestes or vsync framerate even on slow machines and with problematic GL drivers.
  • Fix server side mod handling, their configs are now saved to the correct directories and the configs are reexeced at mod startup.
  • Fix server side mod handling, their configs are now saved to the correct directories and the configs are reexeced at mod startup.

Sunday, January 14, 2018

yquake2 7.10 version.

Release with my changes :-)


  • Joystick support including haptic feedback. This fantastic work was done by Denis Pauk. The dirty work is done by SDL, how good or bad a joystick or gamepad is supported depends on SDLs support for it.
  • Fix the old SDL sound backend, s_openal set to 0 is working again.
  • Fix possible Vorbis buffer underruns if too many sound samples are in flight. This occured only in large multi player games with at least 6 custom models.
  • Fix a possible crash on Windows if MSAA was set to a value not supported by the driver.
  • It's now possible to play through the whole game on a Raspberry PI and other ARM boards. Please note that the RPIs hardware is really limited. Only the OpenGL 1.4 renderer is supported and the framerate is highly dependent on the screen resolution.

Quake2, Сборка

Установка зависимостей(создание ссылок нужно, так как по умолчанию при установке на 64 битную платформу *.so файлы для 32 бит не создаются):
  • sudo apt-get install ccache libxxf86dga1:i386 libxxf86vm1:i386 libsdl1.2debian:i386 x11proto-xf86dga-dev libsdl1.2-dev
  • sudo ln -s /usr/lib/i386-linux-gnu/libX11.so.6.3.0 /usr/lib/i386-linux-gnu/libX11.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libXext.so.6.4.0 /usr/lib/i386-linux-gnu/libXext.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libXxf86dga.so.1.0.0 /usr/lib/i386-linux-gnu/libXxf86dga.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libXxf86vm.so.1.0.0 /usr/lib/i386-linux-gnu/libXxf86vm.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libSDL-1.2.so.0.11.4 /usr/lib/i386-linux-gnu/libSDL.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libogg.so.0.8.2 /usr/lib/i386-linux-gnu/libogg.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libvorbis.so.0.4.8 /usr/lib/i386-linux-gnu/libvorbis.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libvorbisfile.so.3.3.7 /usr/lib/i386-linux-gnu/libvorbisfile.so
  • sudo ln -s /usr/lib/i386-linux-gnu/libGL.so.1.0.0 /usr/lib/i386-linux-gnu/libGL.so
  • sudo ln -s /lib/i386-linux-gnu/libz.so.1.2.8 /lib/i386-linux-gnu/libz.so
Сборка:
  • wget https://icculus.org/quake2/files/quake2-r0.16.1.tar.gz
  • tar -xvf quake2-r0.16.1.tar.gz
  • cd quake2
  • ARCH=i386 make

Monday, October 9, 2017

LibVirt плагин или дешевая виртуализация

Цели?
Добавить поддержку libVirt как плагин к cloudify. Это позволит добавить поддержку низкоуровневых провайдеров виртуализации без удаленного доступа, таких как:
  • KVM,
  • QEMU,
  • Xen
  • Virtuozzo
  • VMWare ESX
  • LXC
  • и BHyve.
Почему дешевая?
  • Мы можем запустить на любом оборудовании, даже самом дешевом, кластер не нужен.
  • Поддерживает что угодно где возможен запуск QEmu и можно запустить на arm/x86/powerPC/… или на чем угодно, что нужно в данный момент?
  • Или LXC? Без эмуляции или виртуализации…
  • Не нужна дорогая лицензия на VMWare vSphere/vCloud Director, только минимальная esx лицензия.
Изначальный план.
Создать для каждого libVirt объекта свой тип, например для pci устройства, интерфейса или домена.

А если немного подумать?
Не, в таком виде не взлетит. Только потратим время с подобным планом, так как нужно будет предоставить полную документации для всех типов в новом виде, и обосновать почему такое представление гораздо лучше стандартного. Поэтому новый план такой:
  • Поддержка на уровне xml шаблона для верхнего уровня описаний объектов в libvirt, который будет распространяться вместе с плагином, пользователю нужно будет только предоставить значения для подстановки в шаблон.
  • Реализовать простейший пример с несколькими виртуальными машинами объединенными в одной сети.
  • Реализовать в каком-то виде получение адресов машин для подключения через ssh.
  • Проверить идею с каким нибудь провайдером отличающимся от qemu.
Почему реализовывать именно ввиде плагина для cloudify?
Это наиболее знакомый мне продукт для оркестрации виртуальных окружений. Основные его достоинства возможность применения для управления и мониторинга любых систем начиная от систем IoT(internet of things) до крупных промышленных объектов. В базовой поставке есть примеры от управления классической инфраструктурой облаков до телекоммуникационной инфраструктуры, как SDN(software defined networks) когда работаем с виртуализированными сетями и соединениями до NS(Network Service, сервисы предоставленные инфраструктурой) и VNF(virtualized network functions, сервисы предоставленные через отдельные виртуальные машины запущенные на инфраструктуре), когда мы переходим на следующий уровень где каждый объект представляет собой уже сложный функционал, такой как интроспекция трафика, антивирусные продукты или управление высокоуровневый маршрутизацией и адресацией(MPLS/BGP или классический dhcp), когда нужно предоставить полный пакет сервисов для конечного клиента определенный по базовым шаблонам с возможностью широкого изменения в зависимости от потребностей клиента. Как пример подобных низкоуровневых протоколов может служить netconf или загрузка на устройство конфигурации через классический ssh доступ. Продукт представлен двумя версиями: полностью свободной open source(apache2) версией которая содержит полностью работоспособную минимальную установку, позволяющую использовать весь функционал, предоставляет возможность управлять инфраструктурой и получать все метрики с инфраструктуры и предоставляющая RestApi для работы с управления и мониторинга. И платная версия предоставляющая расширенные возможности управления и управления правами доступа и объединения нескольких серверов менеджмента в кластер, дополнительные плагины и дополнительные функции и web ui. Более подробно о различиях и предоставляемых дополнениях лучше уточнять на сайте.

Для управления не большими инфраструктурами достаточно и функционала доступного в open source версии, api достаточно простой и можно реализовать клиента который удовлетворяет всем потребностям необходимым для того чтобы попробовать и оценить технологию.

В классическом виде существует два вида установок:
  • Распределённая когда существует выделенный сервер с которого выполняются все установки, и возможно выполнение одновременно нескольких независимых установок.
  • И более простой вариант, когда используя полностью те же описания установки, можно запустить все с текущего хоста, так мы теряем возможность выполнять сразу несколько установок и использовать функционал вида масштабирования и восстановления, но позволяющий отследить все процессы происходящие в системе.
А теперь термины используемые в продукте:
  • Blueprint - описание установки, в универсальном варианте не содержит никаких паролей и настроек конечных компонентов, только их типы и взаимосвязи. Используется yaml в формате Tosca, по-сути это список входных данных(inputs), результирующие данные(outputs), которые содержат информацию необходимую для обслуживания, например автоматически сгенерированные пароли и адреса элементов в инфраструктуре, и список объектов для которых указан их тип и зависимости. Для каждого типа через плагин реализовать необходимы инфраструктурных действия(создать машину или сеть, загрузить машины и выполнить скрипты инициализации cloudinit), или указать какой скрипт нужно выполнить(Bash/Python/PowerShell) на текущем хосте или удаленном. Реализованы плагины для всех коммерческих инфраструктур: Aws, OpenStack, vCenter, и плагины для запуска скриптов/команд на удаленном хосте.
  • Deployment - полное описание того что мы хотим получить с заполненными пробелами в желаемой конфигурации, такими как пароли и при желании изначальное количество компонентов каждого типа.
  • Execution - когда мы уже получили полные данные о состоянии нужной нам инфраструктуры, мы можем вызывать install execution для создания нужной нам инфраструктуры(до этого было только описание без реального исполнения). После завершения которой продукт начинает автоматически мониторить состояние инфраструктуры до момента когда мы вызовем uninstall, когда все будет откачено до первоначального состояния. Между циклами install/uninstall система автоматически если это описано в blueprint масштабирует и восстанавливает компоненты при сбоях. При желании все эти действия можно выполнить принудительно или вызывать вами описанные действия, например вы описали процесс перевода в режим пониженного использования ресурсов и хотите по какому-то внешнему событию выполнить его.
Как следствие нам нужно реализовать наш собственный плагин/дополнение которое будет описывать действия по созданию домена и сети в рамках libVirt. Можно конечно обойтись скриптами, но в таком случае нам нужно будет таскать с собой все скрипты преобразующие конфигурацию компонента в рамках cloudify в конфигурацию понятную libvirt, и в рамках плагина мы вынесем весь универсальный код в плагин, а вот действия специфичные под наши текущие нужды мы выполним через скрипты. И как результат в скрипты мы перенесен код загрузки исходных образов с интернета и клонирования образа под каждую виртуальную машину с генерацией уникального сетевого адреса. А в плагине оставим код для создания виртуальной машины(и сети) с образа, где мы используем результаты ранее указанных скриптов.

Так как мы не можем предугадать все желательные для пользователя шаблоны, например пользователь может желать другую архитектуру с другим набором устройств, также предоставим возможность в параметрах менять XML шаблон.

Теперь немного уточним почему идея когда мы описываем полную структуру компонента в blueprint может оказаться не удобна при использовании: для сложных и больших структур пользователю не нужно контролировать все элементы компонента. И когда мы преобразуем yaml blueprint ->python dictionary -> xml, пользователю нужно учитывать каждый шаг преобразования и ему будет удобнее сразу использовать XML, если он хочет использовать описание libvirt XML format, или ему удобнее указать минимальные параметры на которые он хочет влиять, подобные объёму памяти и списку подключенных сетей с дисками. Но совершенно не жаждет указывать тип системных часов или расположение в пространстве PCI устройств видеокарты.

Это все :-) Всем спасибо кто дочитал до сего момента

Ссылки:

Sunday, October 8, 2017

Впечатление от презентации GooglePixel2

и немного других продуктов. 

Гугл решил перестать мерятся аппаратными решениями и никаких терагерц процессоров и терабайт хранилищ на устройствах не будет, и камеры впечатлять числами мегапикселей уже тоже не будут. Так же всяких гибких без рамочных штук тоже не будет. 

Гугл решил что нейронные сети ответ на все вопросы, и главное пользовательское ощущение от продукта. Как результат, если сравнивать с другими флагманами кажется, что ничего выдающегося там нет. И в момент когда ставишь кастомную прошивку пол цены как и не бывало. Но все же стоит топовый процессор, достаточное количество памяти (для ближайших пары релизов андроида должно хватить) и качественная камера.
Особенности реализованы программно через нейронные сети или специфично для официальной прошивки: 
  • фотографии с обоих камер - как будто снято со сдвоенных камер или профессиональной камеры, все за счет нейронных сетей, достигается через использование через сдвоенные пиксели, только в отличии от самсунг который использует эти пиксели только для улучшенного фокуса, гугл через нейросеть хочет еще получать более точные данные о глубине и направлении пришедшего света. Также камера содержит аппаратную стабилизацию изображение в добавок к программной;
  • улучшенный ассистент все время слушает и больше фич; 
  • полная оффлайн база слепков музыки и без соединения на заблокированном экране показывает музыку которая сейчас слышна;
  • одна карточка виртуальная и одна физическая SIM карта.

Разницы в аппаратной части между обычной и XL версией нет, только размер экрана и в топовой версии углы экрана надкусаны. 

И относительно sdcard и 3,5 разъема для наушников, гарантировать скорость общения с внешней картой сложно и встроенная emmc все же на порядок быстрее. И разъем для наушников это скорее атавизм, тоже можно получить через usb-C разъем и тогда DAC будет именно в наушниках и каната вместо провода больше не нужно. 

Ну и микробы переводчики больше тоже не нужны, гугл предлагает наушники переводчики. 
И ноутбук тоже теперь обладает достаточным объемом диска (512Gb SSD) чтобы считаться ноутбуком, правда он больше какой-то трансформер и его можно вывернуть и получить планшет. А google home следит за устройствами и через нейронную сеть решает как лучше сформировать луч к устройству.

Tuesday, July 25, 2017

Create wagon for netconf

On separate centos machine(if you use centos as base for cloudify manager).
Prepare external python packages:
  • sudo yum install -y epel-release
  • sudo yum install -y python-pip python-setuptools python-pip python-wheel python-setuptools python-virtualenv

Install packages for lxml dependencies:
  • sudo yum install -y python-devel gcc-c++ gcc libxslt-devel libxml2-devel zlib-devel libffi-devel openssl-devel

Install wagon environment:
  • mkdir wagon
  • virtualenv wagon
  • cd wagon
  • . bin/activate
  • pip install --upgrade pip
  • pip install wagon

Create wagon:

On Manager:
  • sudo yum install -y openssl libxml2 libxslt

Saturday, May 27, 2017

In fastboot we trust. Part 3

Сборка прошивки для LG G3s(jag3gds):
  • Скачиваем исходники основной прошивки:
    $ repo init -u https://github.com/LineageOS/android.git -b cm-14.1
  • Обновляем исходники:
    $ repo sync -j 4
  • Обновляем переменные окружения:
    $ . build/envsetup.sh
  • Подготавливаем специфичные для устройства каталоги:
    $ breakfast jag3gds
  • Дописываем project name="TheMuppets/proprietary_vendor_lge" path="vendor/lge" remote="github" в .repo/local_manifests/roomservice.xml для добавления блобов
  • Запускаем сборку:
    $ brunch jag3gds

Monday, May 8, 2017

In fastboot we trust. Part 2

Некоторые устройства содержат нестандартные протоколы загрузки или неполные реализации стандартных протоколов. В случае LG G3s(jag3gds) мы имеем 4 способа загрузки:
  • стандартный загрузочный сектор(boot), загружается при обычном нажатии кнопки Power;
  • загрузчик для стандартной системы обновления прошивки(laf), поддерживает только стандартный протокол LG для установки прошивок, для входа нужно выключить телефон подождать с десяток секунд, нажать Volume UP и подключить usb или adb reboot bootloader;
  • если стереть laf то aboot не найдя laf входит в режим fastboot, реализовано только часть протокола - можно только отформатировать разделы или перегрузить телефон(поддержки команды boot нет);
  • раздел с recovery - загрузиться можно только с основного раздела через adb reboot recovery.
Решением могло бы быть реализация fastboot или использование uboot. Но можно использовать наработки efidroid минимальный lk образ содержит поддержку fastboot. Для сборки можно использовать такую последовательность команд:
  • $ source build/envsetup.sh
  • $ lunch
  • # select Device name == lge/jag3gds and build type == debug
  • $ make -j6 lk
  • $ adb push out/device/lge/jag3gds/lk.img /sdcard/Download/lk.img
  • $ adb root
  • $ adb shell
  • # dd if=/sdcard/Download/lk.img of=/dev/block/platform/msm_sdcc.1/by-name/laf
  • # exit
  • $ adb reboot bootloader # boot to laf
Если хочется использовать полный образ нужно заменить lk на uefi.

В текущей реализации в uefi образе содержится ошибка и нужно применить такое исправление в uefiapi/target/msm8226.c заменить:
pdata = cb(pdata, MSM_IOMAP_BASE, (MSM_IOMAP_END - MSM_IOMAP_BASE), LKAPI_MMAP_RANGEFLAG_RESERVED, 
на:
pdata = cb(pdata, MSM_IOMAP_BASE, 1*MB, LKAPI_MMAP_RANGEFLAG_RESERVED,.