OpenGL 4.5をサポートするにはグラフィックドライバが必要です。私が知っている限り、Mesaは実際にそれを実行できます。
glxinfo
私にこれを与えた:
$ glxinfo | grep "OpenGL"
OpenGL vendor string: Intel Open Source Technology Center
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile
OpenGL core profile version string: 3.3 (Core Profile) Mesa 13.0.6
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 13.0.6
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 13.0.6
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10
OpenGL ES profile extensions:
つまり、OpenGL 3.0のみを実行できるという意味です。だから私は更新しようとしましたが、いくつかの問題が発生しました。
apt
IEを介して更新しようとするとsudo apt-get upgrade libgl1-mesa-dri -t testing
問題が発生します。
$ sudo apt-get upgrade libgl1-mesa-dri -t testing
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
libsnmp30 : Depends: libsensors4 (>= 1:3.0.0) but it is not going to be installed
mesa-va-drivers : Depends: libsensors4 (>= 1:3.0.0) but it is not going to be installed
mesa-va-drivers:i386 : Depends: libsensors4:i386 (>= 1:3.0.0) but it is not going to be installed
E: Broken packages
OK、ところで:
$ apt-cache policy libsensors4
libsensors4:
Installed: 1:3.4.0-4
Candidate: 1:3.4.0-4
Version table:
*** 1:3.4.0-4 900
900 http://ftp.ru.debian.org/debian stretch/main amd64 Packages
100 /var/lib/dpkg/status
したがって、libバージョン> = 1:3.0.0によって異なりますが、バージョンは1:3.4.0-4ですが、本当に奇妙です。
一般的に、Mesaをどのようにアップグレードするかはわかりません。使用している場合は、apt
どのパッケージを更新するのかわかりません。ソースからインポートした場合、どのようにやり取りするのか、apt
アップデートに復元されないのかわかりません。
私はDebian 9 Stretchを使用しており、グラフィックカードはIntel HD Graphics 5000です。
答え1
安定版に直接テストをインストールしようとしないでください。またはあなたはフランケンデビアン(せいぜい)非現実的な依存関係により、多数のパッケージが失われます。
良いニュースは、これらの更新されたパッケージです利用可能存在するstretch-backports
。 Debian デスクトップではテスト中にパッケージングが一部変更されたため、ストレッチバックポートも一部変更されました。ベンダーニュートラルGLスケジューリングライブラリこれを大きな仕事にしてください。またamd64
、i386
パッケージと一緒に複数のアーキテクチャを使用しているので、このパッケージは同時にアップグレードする必要があります。そうしないと、これまでに見たエラーのいくつかが発生します。
したがって、すべてをアップグレードせずにカウンタートップのみをアップグレードする方法の正確なコマンドを話すことはできません。いいえする:stretch-backports
セキュリティサポートなし)しかし、プロセスを提供します。
まず注意してくださいDebian ガイドラインstretch-backports
正しく追加する方法について 。ここで簡単にまとめます。
# echo 'deb http://deb.debian.org/debian/ stretch-backports main contrib non-free' >> /etc/apt/sources.list.d/stretch-backports.list
# apt-get update
Buster/testing/sidエントリを追加した場合は、必ず削除してください。
一部のパッケージは消えている可能性があります(たとえば、libgles1-mesa
使用できなくなった場合)、他のパッケージも表示された可能性があります。関連するすべてのパッケージをアップグレードする必要があります。一つこれは単一のapt-getコマンドなので、最初に最も関連性の高いパッケージと現在のバージョンを調べてから、依存関係解決プログラムに欠けている部分(たとえば)を選択する必要がありますlibdrm2
。悪いことが発生していないことを確認する必要があるため、スクリプトではなく手動で実行する必要があります(たとえば、apt-get
100個のパッケージの削除を提案する)。だからこんな感じ:
dpkg -l | fgrep 13.0.6-1+b2
でも:
dpkg -l | awk '/^.i/ && $3 == "13.0.6-1+b2" { print $2 }' | xargs
パッケージリストの主要部分を取得します。インストールされたマルチアーキテクチャパッケージの場合は、パッケージを提供する必要がありますamd64
(デフォルトでは追加のパッケージは必要ありませんが、:amd64
切り取り/貼り付けから除外できます)。再び前のコマンドでも同じパッケージが見つかった場合i386
(:i386
パッケージ名に追加を使用dpkg
)、したがって最終インストールコマンドは次のようになります。
apt-get -t stretch-backports install libgl1-mesa-dri:amd64 libgl1-mesa-dri:i386 mesa-opencl-icd:amd64 mesa-opencl-icd:i386 ...
あなたは理解しました。今数量を確認してください削除予定提供されるパッケージ。削除する必要があるメサ関連パッケージがある場合(たとえばlibgles1-mesa
、もちろん、アップグレードで提供する必要がある他のものもたくさんあります。libdrm2
)libdrm2:i386
。apt-get
に手動で2回(各アーチに対して1回)追加する必要があるかもしれません。
@Stephen Kittが提案したように、グラフィックサポートを含む強化されたハードウェアの使用を処理する他の便利で関連するパッケージもストレッチバックポートで利用可能で、おそらくアップグレードする必要があります。その中には:
linux-image-amd64
現在引っ張るlinux-image-4.19.0-0.bpo.2-amd64
- さまざまなファームウェアパッケージ(現在インストールされているすべてのパッケージはとにかくアップグレード
firmware-misc-nonfree
する必要があります)。
答え2
このイベントでは、メサ(株)はバックポートではなくソースからビルドできます。
シュルート設定
ホスト設定:
sudo apt install --yes schroot debootstrap
schroot用のディレクトリを作成します。
sudo mkdir -p /srv/chroot/debian32 sudo mkdir -p /srv/chroot/debian64
schrootの設定ファイルを作成して入力します。
# /etc/schroot/chroot.d/debian32.conf [debian32] description=Debian i386 directory=/srv/chroot/debian32 personality=linux32 type=directory users=yourusername # /etc/schroot/chroot.d/debian64.conf [debian64] description=Debian amd64 directory=/srv/chroot/debian64 personality=linux type=directory users=yourusername
schroot内のビルドスクリプトがここにファイルをインストールできる
/usr/local
ように追加されました。/etc/schroot/default/fstab
/usr/local /usr/local none rw,bind 0 0
Debian インストールで schroot ディレクトリを入力します。
# install debian in schroots sudo debootstrap --arch=i386 $(lsb_release --short --codename) /srv/chroot/debian32 sudo debootstrap --arch=amd64 $(lsb_release --short --codename) /srv/chroot/debian64 # add deb-src lines to sources.list echo "deb-src http://deb.debian.org/debian $(lsb_release --short --codename) main" | sudo tee --append /srv/chroot/debian32/etc/apt/sources.list echo "deb-src http://deb.debian.org/debian $(lsb_release --short --codename) main" | sudo tee --append /srv/chroot/debian64/etc/apt/sources.list # install sudo in schroots: sudo schroot -c debian32 -- apt install --yes sudo sudo schroot -c debian64 -- apt install --yes sudo # update package lists: sudo schroot -c debian32 -- apt update sudo schroot -c debian64 -- apt update
編集
ホストシステムでソースストアを複製します。
# set source directory
export SRC=$HOME/mesa-sources
# install git
sudo apt install --yes git
# these branches/tags Work For Me™ on Debian 11 for a RX 6700 XT.
mkdir -p $SRC && \
cd $SRC && \
git clone --branch 1.20.0 https://gitlab.freedesktop.org/wayland/wayland.git && \
git clone --branch 1.25 https://gitlab.freedesktop.org/wayland/wayland-protocols.git && \
git clone --branch libdrm-2.4.110 https://gitlab.freedesktop.org/mesa/drm.git && \
git clone --branch mesa-22.0.2 https://gitlab.freedesktop.org/mesa/mesa.git && \
git clone --branch 20220411 https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git && \
git clone --branch v5.17.4 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git $SRC/linux-src/linux
# grab host kernel config
cp /boot/config-$(uname -r) $SRC/linux-src/linux/.config
schroot -c debian32
次に、/を使用して各schrootを順番に入力し、次のschroot -c debian64
操作を行います。
ビルド依存関係をインストールします。
sudo apt build-dep --yes wayland wayland-protocols libdrm mesa linux && \ sudo apt install --yes cmake meson
環境変数を設定します。
export SRC=$HOME/mesa-sources export PREFIX=/usr/local
インストールする
wayland
:cd $SRC/wayland && \ meson build-$HOSTTYPE --prefix=$PREFIX --buildtype=release \ -D documentation=false && \ ninja -C build-$HOSTTYPE && sudo ninja -C build-$HOSTTYPE install
インストールする
wayland-protocols
:cd $SRC/wayland-protocols && \ meson build-$HOSTTYPE --prefix=$PREFIX --buildtype=release && \ ninja -C build-$HOSTTYPE && sudo ninja -C build-$HOSTTYPE install
インストールする
drm
:cd $SRC/drm && \ meson build-$HOSTTYPE --prefix=$PREFIX --buildtype=release && \ ninja -C build-$HOSTTYPE && sudo ninja -C build-$HOSTTYPE install
インストールする
mesa
:cd $SRC/mesa && \ meson build-$HOSTTYPE --prefix=$PREFIX --buildtype=release \ -D gallium-vdpau=enabled \ -D shared-llvm=disabled \ -D vulkan-layers=device-select,intel-nullhw,overlay && \ ninja -C build-$HOSTTYPE && sudo ninja -C build-$HOSTTYPE install
(64ビットschrootのみ)カーネルコンパイル(統合AMDおよびIntel GPUファームウェア):
# collect firmware cd $SRC/linux-firmware && \ ./copy-firmware.sh $SRC/linux-firmware-bin # compile linux & generate Debian packages cd $SRC/linux-src/linux && \ ./scripts/config --set-val DEBUG_INFO n && \ ./scripts/config --set-str EXTRA_FIRMWARE_DIR $SRC/linux-firmware-bin && \ ./scripts/config --set-str EXTRA_FIRMWARE "$(cd $SRC/linux-firmware-bin; find * -type f | grep -E "amdgpu/|i915/" | paste -sd " " -)" && \ yes "" | make oldconfig && \ make -j$(nproc) bindeb-pkg
コンパイル時間(ほぼ)みんなファームウェアは技術的に実現可能私はそれに反対することをお勧めします。
ホストへのパッケージのインストール
ホストシステムに戻り、次の操作を行います。
ホスト設定:
sudo dpkg --add-architecture i386 && \ sudo apt update && \ sudo apt install --yes apt-file gcc-multilib && \ sudo apt-file update
見つからないライブラリを検索し
/usr/local
、それを提供するパッケージをインストールします。# 64-bit sudo apt install --yes $(\ find /usr/local/lib/x86_64-linux-gnu/ -type f -exec ldd {} \; | \ grep "not found" | \ awk '{print "x86_64-linux-gnu/" $1 "$"}' | \ sort | uniq | \ apt-file --regexp --from-file search - | \ awk -v ORS=" " -F ":" '{print $1}' ) # 32-bit sudo apt install --yes $(\ find /usr/local/lib/i386-linux-gnu/ -type f -exec ldd {} \; | \ grep "not found" | \ awk '{print "i386-linux-gnu/" $1 "$"}' | \ sort | uniq | \ apt-file --architecture i386 --regexp --from-file search - | \ awk -v ORS=" " -F ":" '{print $1 ":i386"}' )
カーネルパッケージをインストールします。
# set source directory export SRC=$HOME/mesa-sources && \ sudo dpkg -i $SRC/linux-src/linux-headers-*.deb && \ sudo dpkg -i $SRC/linux-src/linux-image-*.deb && \ sudo dpkg -i $SRC/linux-src/linux-libc-dev*.deb
環境設定
profile.d
(ほとんどの)シェルタイプとシェルタイプが新しいDRIドライバを使用するようにスクリプトを追加します。# /etc/profile.d/local-mesa.sh export LIBGL_DRIVERS_PATH=/usr/local/lib/x86_64-linux-gnu/dri:/usr/local/lib/i386-linux-gnu/dri
KDE の SDDM が Xorg AIGLX を起動するときに新しい DRI ドライバも使用するように systemd 設定の上書きを追加します。
# /etc/systemd/system/sddm.service.d/local-mesa.conf [Service] Environment="LIBGL_DRIVERS_PATH=/usr/local/lib/x86_64-linux-gnu/dri:/usr/local/lib/i386-linux-gnu/dri"
(他のデスクトップ環境のGreeterには、そのディレクトリに同じ設定ファイルが必要です
service.d
)(オプション) 既存の Mesa Vulkan ドライバを削除します。
sudo apt remove mesa-vulkan-drivers mesa-vulkan-drivers:i386
これにより、Vulkanローダーが以前のDebian提供のVulkanドライバファイル(存在する場合)をインポートし、そのうちの1つを「最初の」GPUに返すのを防ぎます。
メサする持つ
MESA_VK_DEVICE_SELECT
複数のドライバから選択するのではなく、優先順位を指定する特定のPCIデバイスのみを選択できるようにデバイスリストを並べ替えるのに役立つ環境変数同じ機器。 Debian が提供する Vulkan ドライバーをインストールし続けたい場合、どちらかを選択する必要がある場合は、以下を試してください。vkデバイスセレクタ。最後に、次に再起動します。
- 新しい
amdgpu
カーネルモジュールとファームウェアのロード ldconfig
キャッシュの更新- SDDMの新しいデバイスオーバーライドをロードするようにsystemdを強制します。
- 新しいDRIライブラリを選択できるようにXorgを再起動してください。
- 新しい
答え3
このイベントでは、メサ(株)はバックポートではなくバックポートされたパッケージを直接作成できます。
設定
環境変数を設定します。
# point this somewhere convenient, needs ~23 GiB of space export MESA_SRC=$HOME/mesa-backports # it *is* possible to build mesa with bullseye's llvm-toolchain-11, # albeit with a slightly more involved patch for mesa export MESA_PACKAGES="\ wayland \ wayland-protocols \ libdrm \ directx-headers \ llvm-toolchain-14 \ mesa \ firmware-nonfree"
インストールする根ソースからバグ #1011348):
sudo apt install curl && \ sudo apt build-dep proot && \ mkdir -p $MESA_SRC && cd $MESA_SRC && \ curl -L "https://github.com/proot-me/proot/archive/refs/tags/v5.3.1.tar.gz" | tar xzf - && \ cd proot-*/ && make -C src loader.elf loader-m32.elf build.h && \ make -C src proot && \ sudo make -C src install
クロッツ
以下を使用してi386およびamd64 chrootを設定するmm破片:
sudo apt install mmdebstrap && \ time \ for ARCH in i386 amd64; do \ mkdir -p $MESA_SRC && cd $MESA_SRC && \ mmdebstrap --mode=proot --format=directory --arch=$ARCH bullseye debian-$ARCH && \ proot -S debian-$ARCH apt update && \ proot -S debian-$ARCH apt install --yes locales eatmydata && \ proot -S debian-$ARCH sh -c 'echo "en_US.UTF-8 UTF-8" > /etc/locale.gen' && \ proot -S debian-$ARCH /usr/sbin/locale-gen && \ proot -S debian-$ARCH eatmydata apt install --yes \ devscripts equivs local-apt-repository && \ proot -S debian-$ARCH mkdir -p /srv/local-apt-repository ; \ done
源泉
次へ追加源泉のため
unstable
:{ sudo tee /etc/apt/sources.list.d/unstable-sources.list > /dev/null << HEREDOCDELIM deb-src http://deb.debian.org/debian unstable main contrib non-free HEREDOCDELIM } && \ sudo apt update
ソースパッケージをダウンロードし、変更ログを更新します。
for PKG in $MESA_PACKAGES; do \ mkdir -p $MESA_SRC/$PKG && cd $MESA_SRC/$PKG && \ apt source $PKG/unstable && \ cd $MESA_SRC/$PKG/$PKG-*/ && \ DEBFULLNAME="Example User" \ DEBEMAIL="[email protected]" \ dch --bpo " " ; \ done
パッチを適用します。
cd $MESA_SRC/firmware-nonfree/firmware-nonfree-*/ && \ { base64 -d << 'HEREDOCDELIM' LS0tIGEvZGViaWFuL3J1bGVzCisrKyBiL2RlYmlhbi9ydWxlcwpAQCAtMzgsMTQgKzM4LDYgQEAK IAlta2RpciAtcCAkKEBEKQogCXByaW50ZiA+JEAgJ1NvdXJjZTogJXNcblZlcnNpb246ICVzXG4n ICQoU09VUkNFKSAkKFZFUlNJT05fU09VUkNFKQogCi1kZWJpYW4vY29udHJvbCBkZWJpYW4vcnVs ZXMuZ2VuOiAkKEdFTkNPTlRST0wpICQoQ09OVFJPTF9GSUxFUykKLWlmZXEgKCQod2lsZGNhcmQg ZGViaWFuL2NvbnRyb2wubWQ1c3VtKSwpCi0JJChNQUtFKSAtZiBkZWJpYW4vcnVsZXMgZGViaWFu L2NvbnRyb2wtcmVhbAotZWxzZQotCW1kNXN1bSAtLWNoZWNrIGRlYmlhbi9jb250cm9sLm1kNXN1 bSAtLXN0YXR1cyB8fCBcCi0JCSQoTUFLRSkgLWYgZGViaWFuL3J1bGVzIGRlYmlhbi9jb250cm9s LXJlYWwKLWVuZGlmCi0KIGRlYmlhbi9jb250cm9sLXJlYWw6ICQoR0VOQ09OVFJPTCkgJChDT05U Uk9MX0ZJTEVTKQogIyBXZSBjdXJyZW50bHkgbmVlZCB0byBydW4gY29weS1maXJtd2FyZS5zaCB0 byBnZXQgYSBjb21wbGV0ZSBsaXN0IG9mCiAjIHN5bWxpbmtzIHRvIGluY2x1ZGUgaW4gcGFja2Fn ZSBkZXNjcmlwdGlvbnMuCg== HEREDOCDELIM } | patch -p1 && \ cd $MESA_SRC/mesa/mesa-*/ && \ { base64 -d << 'HEREDOCDELIM' LS0tIGEvZGViaWFuL2NvbnRyb2wKKysrIGIvZGViaWFuL2NvbnRyb2wKQEAgLTQxNSw3ICs0MTUs NyBAQAogQXJjaGl0ZWN0dXJlOiBhbWQ2NCBhcm02NCBhcm1lbCBhcm1oZiBpMzg2IG1pcHM2NGVs IG1pcHNlbCBwb3dlcnBjIHBwYzY0IHBwYzY0ZWwgczM5MHggc3BhcmM2NAogUHJlLURlcGVuZHM6 ICR7bWlzYzpQcmUtRGVwZW5kc30KIERlcGVuZHM6Ci0gbGliY2xjLTEzLAorIGxpYmNsYy0xNCwK ICBvY2wtaWNkLWxpYm9wZW5jbDEgfCBsaWJvcGVuY2wxLAogICR7c2hsaWJzOkRlcGVuZHN9LAog ICR7bWlzYzpEZXBlbmRzfSwK HEREDOCDELIM } | patch -p1
(不透明な点についてお詫び申し上げます。64ビットベースBlob、無料ではないファームウェアパッチにはタブが必要ですが、マークダウンコードブロックがタグを食べる問題を解決してもタブ文字を含むテキストをBashプロンプトに貼り付けると、タブの完成中にタブ文字が使用されます。:()
立てる
パッケージをビルドします(12コアRyzen 5900xで約90分かかります):
time \ for ARCH in i386 amd64; do \ for PKG in $MESA_PACKAGES; do \ cd $MESA_SRC/$PKG/$PKG-*/ && \ proot -S $MESA_SRC/debian-$ARCH /usr/lib/local-apt-repository/rebuild && \ proot -S $MESA_SRC/debian-$ARCH apt update && \ PATH=/sbin:/usr/sbin:$PATH \ proot -S $MESA_SRC/debian-$ARCH eatmydata mk-build-deps --install --remove \ --tool='apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends --yes' && \ DEB_BUILD_OPTIONS="nostrip nocheck nodoc noautodbgsym noddebs" \ DEB_BUILD_PROFILES="nostrip nocheck nodoc noautodbgsym noddebs" \ proot -R $MESA_SRC/debian-$ARCH dpkg-buildpackage --build=binary -us -uc && \ proot -S $MESA_SRC/debian-$ARCH cp ../*.deb /srv/local-apt-repository \ ; done \ ; done
パッケージを次の場所にコピーします。ローカル適切なストレージパッケージストア(~1GiBが必要):
sudo apt install local-apt-repository && \ sudo mkdir -p /srv/local-apt-repository && \ for PKG in $MESA_PACKAGES; do \ sudo cp $MESA_SRC/$PKG/*.deb /srv/local-apt-repository/ \ ; done && \ sudo /usr/lib/local-apt-repository/rebuild
アップグレード
新しいパッケージにアップグレードする:
sudo apt update && \ sudo apt upgrade -o Dpkg::Options::="--force-overwrite"
バックポートからカーネルをインストールします。
{ sudo tee /etc/apt/sources.list.d/bullseye-backports.list > /dev/null << HEREDOCDELIM deb http://deb.debian.org/debian bullseye-backports main HEREDOCDELIM } && \ sudo apt update && \ sudo apt install linux-image-amd64/bullseye-backports
再起動