Ports/x8664/32bitLIBGLon64bit

Материал из ALT Linux Wiki
< Ports‎ | x8664
Версия от 19:01, 28 июля 2008; VitalyOstanin (обсуждение | вклад) (Import from freesource.info)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Freesource-logo.png Blue Glass Arrow.svg MediaWiki logo.png
Эта страница была перемещена с freesource.info.
Эта страница наверняка требует чистки и улучшения — смело правьте разметку и ссылки.
Просьба по окончанию убрать этот шаблон со страницы.


Как настроить hasher для запуска 32-битных программ, использующих libGL. Например, wine или игрушек.

Решение предназначено для видеокарт NVidia.

Часть 1. Настройка от root

Для начала нужно разрешить использование hasher существующему пользователю

# hasher-useradd user
Adding user user to group user_a
Adding user user to group user_b
Adding user user to group hashman

Указать в /etc/hasher-priv/fstab точки монтирования /dev и /proc

proc    /proc           proc    nosuid,noexec,gid=proc          0 0
/dev    /dev            bind    bind          0 0

Разрешить пользователю монтирование в hasher каталогов /dev и /proc

echo "allowed_mountpoints=/dev,/proc" >> /etc/hasher-priv/user.d/user

Создать i586-sisyphus-apt.conf для использования репозитория i586, см. Сборка 32-битных пакетов в 64-битной системе. Например, так

$ cat /etc/apt/i586-sisyphus-apt.conf      
Dir::Etc::SourceList "/etc/apt/i586-sisyphus-sources.list";
Dir::Etc::SourceParts "/var/empty";

$ cat /etc/apt/i586-sisyphus-sources.list 
rpm [alt] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus i586 classic
rpm [alt] ftp://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus noarch classic

Разрешить пользователю читать и писать в устройства nvidia

#!/bin/sh
HSH_USER=user

chgrp -- `su - -c "/usr/libexec/hasher-priv/hasher-priv getugid2" $HSH_USER | cut -d: -f2` /dev/nvidia0 /dev/nvidiactl
chmod 660 /dev/nvidia0 /dev/nvidiactl

Часть 2. Настройка от пользователя

Эта часть выполняется одним скриптом

#!/bin/sh

WORKDIR=~/wine
APT_CONF=/etc/apt/i586-sisyphus-apt.conf
KERNEL_VERSION=`uname -r`
NVIDIA_VERSION=`cat /var/lib/nvidia/$KERNEL_VERSION`

# Prepare hasher workdir
mkdir "$WORKDIR" || exit 1
hsh --initroot-only --apt-config="$APT_CONF" "$WORKDIR"

# Hack for nvidia driver configurator
hsh-run "$WORKDIR" --rooter -- mkdir -p /lib/modules/$KERNEL_VERSION/.versions
hsh-run "$WORKDIR" --rooter -- sh -c "echo $NVIDIA_VERSION > /lib/modules/$KERNEL_VERSION/.versions/nvidia"

# Install packages for wine
hsh-install "$WORKDIR" wine libwine-gl nvidia_glx_$NVIDIA_VERSION glxgears glxinfo xauth fonts-ttf-dejavu

# Run nvidia driver configurator
hsh-run "$WORKDIR" --mountpoints=/proc --rooter -- /usr/libexec/X11/drv.d/nvidia
echo
hsh-run -Y "$WORKDIR" --mountpoints=/dev -- glxinfo | grep "direct rendering"
echo
echo "Now run wine with:"
echo "hsh-run -Y \"$WORKDIR\" --mountpoints=/dev -- wine"