vk.com

Выберите язык

Обновление Mesa на Astra Linux | Astra Linux для игр

 Astra Linux - это дистрибутив основанный на пакетной базе Debian и развиваемый Российским разработчиком Astra Team. Данный дистрибутив внедряется как альтернатива Windows. 
  В последнее время, было довольно много вопросов о том, как приноровить дистрибутив Astra Linux к играм. И вообще возможно ли это?
  Ответ очевиден: Astra Linux, как и любой дистрибутив можно использовать для игр. Однако, для этого понадобится обновить и установить некоторые компоненты. Для этого, была проведена огромная работа над построением библиотек, большинство из которых, были взяты из официальной базы исходных кодов Debian. Некоторые библиотеки пришлось изменить, для того, чтоб они, могли скомпилироваться в среде Debian 10. 
 
  Всё, что нужно иметь под рукой: (желательно) "чистый" дистрибутив Astra Linux 1.7.X (недоступен для физических лиц, используется glibc 2.28 и, именно, на данной версии glibc были построены все необходимые компоненты), стабильное интернет соединение, права суперпользователя (root).

 
  ВНИМАНИЕ!!! Все, нижеприведенные действия, вы, выполняете на свой страх и риск! Обновление Mesa, это ваше личное желание, автор данной статьи, за вашу невнимательность никакой ответственности не несет! Внимательно следите за тем, что предлагается УДАЛИТЬ! Ни в коем случае не соглашаемся, так как, это может привести к неработоспособности дистрибутива! Если возникнут какие-либо вопросы, напишите нам в ВК или Telegram.

 
  Astra Linux - x64 дистрибутив. Поэтому, самым первым и самым важным шагом будет добавление i386 библиотек:
sudo apt install ia32-libs
  Далее, необходимо, скачать и установить пакет ключей Debian:
  1. wget http://ftp.ru.debian.org/debian/pool/main/d/debian-archive-keyring/debian-archive-keyring_2019.1+deb10u1_all.deb
  2. sudo dpkg -i ./debian-archive-keyring_2019.1+deb10u1_all.deb
  Открываем, через текстовый редактор, файл /etc/apt/sources.list и добавляем репозитории Debian 10 в конец файла:
deb http://ftp.debian.org/debian buster main contrib non-free
deb-src http://ftp.debian.org/debian buster main contrib non-free
 
deb http://ftp.debian.org/debian buster-updates main contrib non-free
deb-src http://ftp.debian.org/debian buster-updates main contrib non-free
 
deb http://security.debian.org/ buster/updates main contrib non-free
deb-src http://security.debian.org/ buster/updates main contrib non-free
deb http://ftp.debian.org/debian buster-backports main contrib non-free
deb http://security.debian.org/debian-security buster/updates main
  Сохраняем и закрываем редактор. Добавляем репозиторий с Mesa:
  1. echo 'deb http://download.opensuse.org/repositories/home:/Freeman310/Debian_10/ /' | sudo tee /etc/apt/sources.list.d/home:Freeman310.list
  2. curl -fsSL https://download.opensuse.org/repositories/home:Freeman310/Debian_10/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_Freeman310.gpg > /dev/null
  3. sudo apt update
  После шагов выше, можно приступать к установке необходимых компонентов и обновлению Mesa:
  1. sudo apt install libgomp1=10.2.1-6 libitm1=10.2.1-6 libatomic1=10.2.1-6 liblsan0=10.2.1-6 libtsan0=10.2.1-6 libubsan1=10.2.1-6 libquadmath0=10.2.1-6
  2. sudo apt install libstdc++6=10.2.1-6
  3. sudo apt install libobjc4=10.2.1-6
  4. sudo apt install libz3-4=4.8.12-3.1
  5. sudo apt install libc6=2.28-10+deb10u2 libc6-dev=2.28-10+deb10u2 libc6-i386=2.28-10+deb10u2
  6. sudo apt install libzstd1=1.5.4+dfsg2-5 libzstd1:i386=1.5.4+dfsg2-5
  7. sudo apt install llvm-14 clang-14 libclang-cpp15=1:15.0.7-4 libclang1-15=1:15.0.7-4 libclang-cpp15=1:15.0.7-4 libllvm15=1:15.0.7-4 libllvm15:i386=1:15.0.7-4 libllvmspirvlib15=15.0.0-1 llvm-15=1:15.0.7-4 llvm-15-linker-tools=1:15.0.7-4 llvm-15-runtime=1:15.0.7-4 libclc-15=1:15.0.7-4 libclc-15-dev=1:15.0.7-4 libclang-common-15-dev=1:15.0.7-4
  8. sudo rm /usr/share/doc/libx11-6/changelog.Debian.gz
  9. sudo rm /usr/share/doc/libx11-xcb1/changelog.Debian.gz
  10. sudo apt install libxcb-randr0=1.15-1 libxcb-randr0:i386=1.15-1
  11. sudo rm /usr/share/doc/libdrm-amdgpu1/changelog.Debian.gz
  12. sudo apt install libdrm-common=2.4.120-buster1 libdrm-amdgpu1=2.4.120-buster1 libdrm-amdgpu1:i386=2.4.120-buster1 libdrm2=2.4.120-buster1
  13. sudo rm /usr/share/doc/libdrm-amdgpu1/changelog.Debian.gz
  14. sudo apt install libdrm2:i386=2.4.120-buster1
  15. sudo apt install libvdpau1=1.5-2 libvdpau1:i386=1.5-2
  16. sudo apt install libx11-6=2:1.8.7-3 libx11-6:i386=2:1.8.7-3 libx11-xcb1=2:1.8.7-3 libx11-xcb1:i386=2:1.8.7-3 libd3dadapter9-mesa=23.2.1-buster1 libegl-mesa0=23.2.1-buster1 libegl1-mesa=23.2.1-buster1 libgbm1=23.2.1-buster1 libgl1-mesa-dri=23.2.1-buster1 libgl1-mesa-glx=23.2.1-buster1 libglapi-mesa=23.2.1-buster1 libgles2-mesa=23.2.1-buster1 libglx-mesa0=23.2.1-buster1 libosmesa6=23.2.1-buster1 libwayland-egl1-mesa=23.2.1-buster1 libxatracker2=23.2.1-buster1 mesa-drm-shim=23.2.1-buster1 mesa-opencl-icd=23.2.1-buster1 mesa-va-drivers=23.2.1-buster1 mesa-vdpau-drivers=23.2.1-buster1 mesa-vulkan-drivers=23.2.1-buster1 libd3dadapter9-mesa:i386=23.2.1-buster1 libegl-mesa0:i386=23.2.1-buster1 libegl1-mesa:i386=23.2.1-buster1 libgbm1:i386=23.2.1-buster1 libgl1-mesa-dri:i386=23.2.1-buster1 libgl1-mesa-glx:i386=23.2.1-buster1 libglapi-mesa:i386=23.2.1-buster1 libgles2-mesa:i386=23.2.1-buster1 libglx-mesa0:i386=23.2.1-buster1 libosmesa6:i386=23.2.1-buster1 libwayland-egl1-mesa:i386=23.2.1-buster1 libxatracker2:i386=23.2.1-buster1 mesa-drm-shim:i386=23.2.1-buster1 mesa-va-drivers:i386=23.2.1-buster1 mesa-vdpau-drivers:i386=23.2.1-buster1 mesa-vulkan-drivers:i386=23.2.1-buster1
  17. sudo apt install libc6:amd64=2.28-10+deb10u2 libc6:i386=2.28-10+deb10u2 libopengl0=1.6.0-1 libopengl0:i386=1.6.0-1 libgles2=1.6.0-1 libgles2:i386=1.6.0-1 libgl1:i386=1.6.0-1 libgl1=1.6.0-1 libglx0=1.6.0-1 libglx0:i386=1.6.0-1 libglvnd0=1.6.0-1 libglvnd0:i386=1.6.0-1 libegl1:amd64=1.6.0-1 libegl1:i386=1.6.0-1 libgbm1:amd64 libgbm1:i386 libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 libgl1:amd64 libgl1:i386 xdg-desktop-portal-gtk
  18. sudo apt install libva2=2.17.0-1 libva2:i386=2.17.0-1 libva-drm2=2.17.0-1 libva-drm2:i386=2.17.0-1 libva-x11-2=2.17.0-1 libva-x11-2:i386=2.17.0-1 libva-wayland2=2.17.0-1
  19. sudo apt install libaom0=1.0.0.errata1-3 libaom0:i386=1.0.0.errata1-3
  После вышеперечисленных команд, проверяем откуда берет библиотеки libvulkan_radeon. Для этого выполняем команду:
ldd /usr/lib/i386-linux-gnu/libvulkan_radeon.so
  Выхлоп терминала будет примерно такой:
        linux-gate.so.1 (0xf7fc9000)
        libLLVM-15.so.1 => /lib32/i386-linux-gnu/libLLVM-15.so.1 (0xefbbf000)
        libdrm_amdgpu.so.1 => /lib32/i386-linux-gnu/libdrm_amdgpu.so.1 (0xefbb2000)
        libelf.so.1 => /lib32/i386-linux-gnu/libelf.so.1 (0xefb94000)
        libdl.so.2 => /lib32/libdl.so.2 (0xefb8e000)
        libxcb-dri3.so.0 => /lib32/i386-linux-gnu/libxcb-dri3.so.0 (0xefb88000)
        libwayland-client.so.0 => /lib32/i386-linux-gnu/libwayland-client.so.0 (0xefb78000)
        libz.so.1 => /lib32/i386-linux-gnu/libz.so.1 (0xefb5a000)
        libzstd.so.1 => /lib32/i386-linux-gnu/libzstd.so.1 (0xefa90000)
        libexpat.so.1 => /lib32/i386-linux-gnu/libexpat.so.1 (0xefa55000)
        libxcb.so.1 => /lib32/i386-linux-gnu/libxcb.so.1 (0xefa26000)
        libX11-xcb.so.1 => /lib32/i386-linux-gnu/libX11-xcb.so.1 (0xefa1f000)
        libxcb-present.so.0 => /lib32/i386-linux-gnu/libxcb-present.so.0 (0xefa1a000)
        libxcb-xfixes.so.0 => /lib32/i386-linux-gnu/libxcb-xfixes.so.0 (0xefa10000)
        libxcb-sync.so.1 => /lib32/i386-linux-gnu/libxcb-sync.so.1 (0xefa07000)
        libxcb-randr.so.0 => /lib32/i386-linux-gnu/libxcb-randr.so.0 (0xef9f3000)
        libxcb-shm.so.0 => /lib32/i386-linux-gnu/libxcb-shm.so.0 (0xef9ee000)
        libxshmfence.so.1 => /lib32/i386-linux-gnu/libxshmfence.so.1 (0xef9e9000)
        libdrm.so.2 => /lib32/i386-linux-gnu/libdrm.so.2 (0xef9d0000)
        libstdc++.so.6 => /lib32/i386-linux-gnu/libstdc++.so.6 (0xef805000)
        libm.so.6 => /lib32/libm.so.6 (0xef736000)
        libgcc_s.so.1 => /lib32/i386-linux-gnu/libgcc_s.so.1 (0xef717000)
        libpthread.so.0 => /lib32/libpthread.so.0 (0xef6f4000)
        libc.so.6 => /lib32/libc.so.6 (0xef516000)
        libatomic.so.1 => /lib32/i386-linux-gnu/libatomic.so.1 (0xef50c000)
        libffi.so.6 => /lib32/i386-linux-gnu/libffi.so.6 (0xef502000)
        libedit.so.2 => /lib32/i386-linux-gnu/libedit.so.2 (0xef4cb000)
        librt.so.1 => /lib32/librt.so.1 (0xef4c0000)
        libtinfo.so.6 => /lib32/i386-linux-gnu/libtinfo.so.6 (0xef497000)
        libxml2.so.2 => /lib32/i386-linux-gnu/libxml2.so.2 (0xef2c8000)
        /lib/ld-linux.so.2 (0xf7fcb000)
        libXau.so.6 => /lib32/i386-linux-gnu/libXau.so.6 (0xef2c3000)
        libXdmcp.so.6 => /lib32/i386-linux-gnu/libXdmcp.so.6 (0xef2bb000)
        libbsd.so.0 => /lib32/i386-linux-gnu/libbsd.so.0 (0xef29a000)
        libicui18n.so.63 => /lib32/i386-linux-gnu/libicui18n.so.63 (0xeef99000)
        libicuuc.so.63 => /lib32/i386-linux-gnu/libicuuc.so.63 (0xeedc4000)
        libicudata.so.63 => /lib32/i386-linux-gnu/libicudata.so.63 (0xed3d4000)
        liblzma.so.5 => /lib32/i386-linux-gnu/liblzma.so.5 (0xed3a8000)
  Обратите внимание на то, откуда берутся библиотеки. Именно поэтому много x32 приложений не будут работать. Необходимо переопределить путь к библиотекам. Для этого, открываем Меню=>Настройки=>Панель управления. Выбираем вкладку Система и открываем Переменные окружения:
  В появившемся окне жмем на "+":
  И, в появившемся окне, вводим следующее (без кавычек): 
  Переменная: "LD_LIBRARY_PATH"
  Значение: "/lib/i386-linux-gnu:/lib/x86_64-linux-gnu:$LD_LIBRARY_PATH"
  Ставим галочку на "Важная системная переменная"

  Нажимаем кнопку "Да" и сохраняем изменения кнопкой дискеты:

  После этого, перезагружаем ПК. 
  После перезагрузки, снова выполняем команду:
ldd /usr/lib/i386-linux-gnu/libvulkan_radeon.so
  Выхлоп должен стать, примерно, следующим:
        linux-gate.so.1 (0xf7f7b000)
        libLLVM-15.so.1 => /lib/i386-linux-gnu/libLLVM-15.so.1 (0xef800000)
        libdrm_amdgpu.so.1 => /lib/i386-linux-gnu/libdrm_amdgpu.so.1 (0xf7f68000)
        libelf.so.1 => /lib/i386-linux-gnu/libelf.so.1 (0xf7f4a000)
        libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xf7f44000)
        libxcb-dri3.so.0 => /lib/i386-linux-gnu/libxcb-dri3.so.0 (0xf7f3e000)
        libwayland-client.so.0 => /lib/i386-linux-gnu/libwayland-client.so.0 (0xf7f2e000)
        libz.so.1 => /lib/i386-linux-gnu/libz.so.1 (0xf7f10000)
        libzstd.so.1 => /lib/i386-linux-gnu/libzstd.so.1 (0xf7e46000)
        libexpat.so.1 => /lib/i386-linux-gnu/libexpat.so.1 (0xf7e0b000)
        libxcb.so.1 => /lib/i386-linux-gnu/libxcb.so.1 (0xf7ddc000)
        libX11-xcb.so.1 => /lib/i386-linux-gnu/libX11-xcb.so.1 (0xf7dd5000)
        libxcb-present.so.0 => /lib/i386-linux-gnu/libxcb-present.so.0 (0xf7dd0000)
        libxcb-xfixes.so.0 => /lib/i386-linux-gnu/libxcb-xfixes.so.0 (0xf73f6000)
        libxcb-sync.so.1 => /lib/i386-linux-gnu/libxcb-sync.so.1 (0xf73ed000)
        libxcb-randr.so.0 => /lib/i386-linux-gnu/libxcb-randr.so.0 (0xf73d9000)
        libxcb-shm.so.0 => /lib/i386-linux-gnu/libxcb-shm.so.0 (0xf73d4000)
        libxshmfence.so.1 => /lib/i386-linux-gnu/libxshmfence.so.1 (0xf73cf000)
        libdrm.so.2 => /lib/i386-linux-gnu/libdrm.so.2 (0xf73b6000)
        libstdc++.so.6 => /lib/i386-linux-gnu/libstdc++.so.6 (0xef635000)
        libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0xf72b0000)
        libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0xf7291000)
        libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0xf726e000)
        libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xef457000)
        libatomic.so.1 => /lib/i386-linux-gnu/libatomic.so.1 (0xf7264000)
        libffi.so.6 => /lib/i386-linux-gnu/libffi.so.6 (0xf725a000)
        libedit.so.2 => /lib/i386-linux-gnu/libedit.so.2 (0xf7223000)
        librt.so.1 => /lib/i386-linux-gnu/librt.so.1 (0xf7218000)
        libtinfo.so.6 => /lib/i386-linux-gnu/libtinfo.so.6 (0xef42e000)
        libxml2.so.2 => /lib/i386-linux-gnu/libxml2.so.2 (0xef25f000)
        /lib/ld-linux.so.2 (0xf7f7d000)
        libXau.so.6 => /lib/i386-linux-gnu/libXau.so.6 (0xf7213000)
        libXdmcp.so.6 => /lib/i386-linux-gnu/libXdmcp.so.6 (0xf720b000)
        libbsd.so.0 => /lib/i386-linux-gnu/libbsd.so.0 (0xef240000)
        libicui18n.so.63 => /lib/i386-linux-gnu/libicui18n.so.63 (0xeee00000)
        libicuuc.so.63 => /lib/i386-linux-gnu/libicuuc.so.63 (0xeec2b000)
        libicudata.so.63 => /lib/i386-linux-gnu/libicudata.so.63 (0xed200000)
        liblzma.so.5 => /lib/i386-linux-gnu/liblzma.so.5 (0xef214000)
  И на последок, устанавливаем inxi:
sudo apt install inxi
  И проверяем версию Mesa:
inxi -G


  Новая Mesa установилась. Можно удалить репозитории Debian. И, теперь, можно играть в игры!

  Данная инструкция будет обновляться по мере обновления компонентов.