Porteus и NVIDIA. Собираем актуальный драйвер для видеокарты
Posted: 15 May 2016, 17:29
Как сделать xzm модуль-драйвер для видеокарты NVIDIA
1. Заходим на сайт nvidia.ru в раздел 'Драйверы > Загрузить драйверы'2. Вручную выбирете Вашу NVIDIA видео карту, а так же разрядность операционной системы Linux 32-bit (i586) или 64-bit (x86_64) и нажимаем кнопку 'Поиск'
3. Нажимаем кнопку 'Загрузить сейчас'
4. Нажимаем кнопку 'Принять и скачать'
5. Также загрузите 05-devel.xzm и crippled_sources.xzm (Внимание! Приведенные ниже ссылки относятся к Porteus 4.0, когда вы запускаете любую другую версию Porteus, вам необходимо загрузить разные версии 05-devel.xzm и crippled_sources.xzm. Обновленную версию ядра, включая crippled_sources.xzm можно получить согласно теме - Как обновить kernel (ядро) в Porteus):
под разрядность операционной системы Porteus:
- 05-devel.xzm (i586)
- crippled_sources.xzm (i586)
или
- 05-devel.xzm (x86_64)
- crippled_sources.xzm (x86_64)
5.1 Скачайте nvidia.sh - скрипт для создания xzm модуля nvidia
Code: Select all
#!/bin/bash
# Build of Nvidia video driver, cleaning and compressing to xzm module for Porteus
# You can use this script for both architectures i586 or x86_64
# Version 2019-07-30
# Written by Blaze <admin at ublaze.ru>
# Modified by fulalas
# All rights reserved.
#
# Redistribution and use of this script, with or without modification, is
# permitted provided that the following conditions are met:
#
# 1. Redistributions of this script must retain the above copyright
# notice, this list of conditions and the following disclaimer.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED
# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# Root check
if [ `whoami` != "root" ]; then
echo -e "\e[1m\e[31mOnly root can run this.\e[0m"
exit 1
fi
# Creating installer variable and folder
MODULES_FOLDER=$(readlink -f /mnt/live/porteus/modules)
INSTALL_TEMP_FOLDER=/tmp/nvidia-$$
mkdir $INSTALL_TEMP_FOLDER
# Checking and extracting blacklist.xzm
if [ -f blacklist.xzm ]; then
xzm2dir blacklist.xzm $INSTALL_TEMP_FOLDER &>/dev/null
elif [ -f "$PORTDIR/optional/blacklist.xzm" ]; then
xzm2dir "$PORTDIR/optional/blacklist.xzm" $INSTALL_TEMP_FOLDER &>/dev/null
elif [ -f "$PORTDIR/base/blacklist.xzm" ]; then
xzm2dir "$PORTDIR/base/blacklist.xzm" $INSTALL_TEMP_FOLDER &>/dev/null
else
echo -e "\e[1m\e[31mblacklist.xzm couldn't be found.\e[0m"
rm -rf $INSTALL_TEMP_FOLDER
exit 1
fi
# Selective compression and extraction of memory changes
sync; echo 3 > /proc/sys/vm/drop_caches
echo -e '\n\033[1m\e[32m[*]\e[0m\033[1m Compression of memory changes to /tmp/nvidia.tar.gz...\033[0m'
tar czf /tmp/nvidia.tar.gz --exclude={"*/.*","*/.wh.*",".cache","dev","home","mnt","opt","root","run","tmp","var","etc/bootcmd.cfg","etc/ld.so.cache","etc/fstab","etc/random-seed","etc/cups","etc/udev","etc/profile.d","etc/porteus","etc/X11/xorg.conf.nvidia-xconfig-original","lib/firmware","lib/modules/*porteus/modules.*","usr/man","usr/src","usr/bin/gnome-keyring-daemon","usr/lib/gio","usr/lib/gtk-2.0","usr/lib/gtk-3.0","usr/lib/libXvMCgallium.so.1","usr/lib/libbrscandec2.so.1","usr/lib/libgsm.so.1","usr/lib/libudev.so.1","usr/lib/libunrar.so.5","usr/lib64/gio","usr/lib64/gtk-2.0","usr/lib64/gtk-3.0","usr/lib64/libXvMCgallium.so.1","usr/lib64/libbrscandec2.so.1","usr/lib64/libgsm.so.1","usr/lib64/libudev.so.1","usr/lib64/libunrar.so.5","usr/local","usr/share/glib-2.0","usr/share/mime","usr/share/pixmaps","usr/share/applications/mimeinfo.cache","usr/local/share/applications/mimeinfo.cache","usr/share/doc/NVIDIA_GLX-1.0/html","usr/share/doc/NVIDIA_GLX-1.0/sample","usr/share/doc/NVIDIA_GLX-1.0/LICENSE","usr/share/doc/NVIDIA_GLX-1.0/NVIDIA_Changelog","usr/share/doc/NVIDIA_GLX-1.0/README.txt"} -C /mnt/live/memory changes
echo -e "\n\033[1m\e[32m[*]\e[0m\033[1m Extraction of memory changes from /tmp/nvidia.tar.gz to $INSTALL_TEMP_FOLDER...\033[0m"
tar xf /tmp/nvidia.tar.gz --strip 1 -C $INSTALL_TEMP_FOLDER
# Сleaning driver
echo -e "\n\033[1m\e[32m[*]\e[0m\033[1m Cleaning of driver directory...\033[0m"
rm -rf $INSTALL_TEMP_FOLDER/{.cache,dev,home,mnt,opt,root,run,tmp,var}
find $INSTALL_TEMP_FOLDER -type f -maxdepth 1 -delete
find $INSTALL_TEMP_FOLDER -type l -maxdepth 1 -delete
find $INSTALL_TEMP_FOLDER/etc/ -type f -maxdepth 1 -delete
find $INSTALL_TEMP_FOLDER/etc/ -type d ! -iname 'modprobe.d' ! -iname 'OpenCL' ! -iname 'vulkan' ! -iname 'X11' ! -iname 'etc' -maxdepth 1 -exec rm -rf '{}' '+'
rm -f $INSTALL_TEMP_FOLDER/etc/X11/xorg.conf.nvidia-xconfig-original
rm -rf $INSTALL_TEMP_FOLDER/lib/firmware
rm -f $INSTALL_TEMP_FOLDER/lib/modules/*porteus/modules.*
rm -rf $INSTALL_TEMP_FOLDER/usr/{man,src}
rm -f $INSTALL_TEMP_FOLDER/usr/bin/gnome-keyring-daemon
rm -rf $INSTALL_TEMP_FOLDER/usr/lib/{gio,gtk-2.0,gtk-3.0}
rm -f $INSTALL_TEMP_FOLDER/usr/lib/{libXvMCgallium.so.1,libbrscandec2.so.1,libgsm.so.1,libudev.so.1,libunrar.so.5}
rm -rf $INSTALL_TEMP_FOLDER/usr/lib64/{gio,gtk-2.0,gtk-3.0}
rm -f $INSTALL_TEMP_FOLDER/usr/lib64/{libXvMCgallium.so.1,libbrscandec2.so.1,libgsm.so.1,libudev.so.1,libunrar.so.5}
rm -rf $INSTALL_TEMP_FOLDER/usr/local
rm -rf $INSTALL_TEMP_FOLDER/usr/share/{glib-2.0,mime,pixmaps}
rm -f $INSTALL_TEMP_FOLDER/usr/{,local/}share/applications/mimeinfo.cache
rm -rf $INSTALL_TEMP_FOLDER/usr/share/doc/NVIDIA_GLX-1.0/{html,sample,LICENSE,NVIDIA_Changelog,README.txt}
# Adding vdpau hardware video decode rule
if [ -f /etc/profile.d/vdpau.sh ]; then
mkdir -p $INSTALL_TEMP_FOLDER/etc/profile.d
cp -a /etc/profile.d/vdpau.sh $INSTALL_TEMP_FOLDER/etc/profile.d
sed -i 's|#export VDPAU_DRIVER="nvidia"|export VDPAU_DRIVER="nvidia"|' $INSTALL_TEMP_FOLDER/etc/profile.d/vdpau.sh
sed -i 's|export VDPAU_DRIVER="va_gl"|#export VDPAU_DRIVER="va_gl"|' $INSTALL_TEMP_FOLDER/etc/profile.d/vdpau.sh
else
echo -e "\n\e[1m\e[31mvdpau.sh couldn't be found. Hardware video decode won't work properly.\e[0m"
fi
# Getting driver version
case $(arch) in
i486) LIBDIR="/usr/lib"
;;
x86_64) LIBDIR="/usr/lib64"
;;
*) LIBDIRSUFFIX="/usr/lib"
;;
esac
DRIVER_FILE=$(find $LIBDIR/libEGL_nvidia.so* \! -type l)
DRIVER_VERSION=${DRIVER_FILE: -6}
# Creating final module
MODULE_FILENAME=08-nvidia-$DRIVER_VERSION-k.$(uname -r)-$(cat /etc/porteus-version | cut -d '-' -f2)-$(arch).xzm
dir2xzm $INSTALL_TEMP_FOLDER/ /tmp/$MODULE_FILENAME 2>/dev/null
mv /tmp/$MODULE_FILENAME $MODULES_FOLDER
# Removing temporary files
rm -f /tmp/nvidia.tar.gz
rm -f /tmp/nvidia.xzm
rm -rf $INSTALL_TEMP_FOLDER
# Reboot
echo -e "\n\e[1m\e[32m[DONE]\e[0m \e[1mYou can find your Nvidia driver module in \e[96m$MODULES_FOLDER\e[0m"
echo -e "\e[1m>>> Now you can reboot Porteus via \e[92mreboot\e[0m \e[1mcommand <<<\e[0m\n"
/etc/modprobe.d/nvidia-installer-disable-nouveau.conf
Code: Select all
# generated by nvidia-installer
blacklist nouveau
options nouveau modeset=0
7. Загрузите Porteus в режиме 'Text mode'
8. Вводим логин (если не меняли данные от root пользователя)
Code: Select all
root
Code: Select all
toor
9. Скопируйте NVIDIA-Linux-x86-340.96.run (у Вас может быть другая версия драйвера) и nvidia.sh в директорию /tmp
Для удобства можно воспользоваться Midnight Commander. Введите командуЗаметка. Nvidia драйвер и nvidia.sh можно расположить не только в /tmp.
Если у Вашего ПК малый объем памяти (ОЗУ) - рекомендация всё это размещать на разделе Linux (например, ext2, ext3, ext4 и т. д.), например /mnt/ваш-раздел
Предупреждение! Данная файловая система должна поддерживать Unix / Linux права доступа.
Code: Select all
mc
- в правой колонке Midnight Commander откройте директорию /tmp
- в левой колонке Midnight Commander найдите файлы NVIDIA-Linux-x86-340.96.run и nvidia.sh
- скопируйте данные файлы из левой колонки в правую колонку с открытой директорией /tmp и нажмите F10
10. Затем вводим команды
Code: Select all
cd /tmp
chmod +x NVIDIA-Linux-x86-340.96.run
chmod +x nvidia.sh
./NVIDIA-NVIDIA-Linux-x86-340.96.run
Code: Select all
Please read the following LICENSE and then select either "Accept" to accept the license and continue with the installation, or select "Do Not Accept" to abort the installation.
Выбираем и нажимаем 'Accept', после чего начнется компиляция драйвера
12. Если вы компилируйте драйвер для архитектуры x86_64, то у Вас появится сообщение:
Code: Select all
Install NVIDIA's 32-bit compatibility libraries?
- Если Вы планируете играть в Windows игры через Wine или Steam, то Вам необходимо ответить 'Yes'.
Заметка. Если Вы ответили 'Yes', то Вам дополнительно необходимо установить Wine и 0050-compat32-multilib-lite-x86_64 (если у Вас 64-х разрядная операционная система)
ссылка для x86 | ссылка для x86_64 - Если Вы не планируете играть в Windows игры через Wine или Steam, то Вам необходимо ответить 'No'.
Code: Select all
Would you like to run the nvidia-xconfig utility to automatically update your X configuration file so that the NVIDIA X driver will be used when you restart X? Any pre-existing X configuration file will be backed up.
отвечаем положительно, путем выбора 'Yes'
14. Появится сообщение
Code: Select all
Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86 (version: 340.96) is now comleted.
в зависимости от разрядности может быть
Code: Select all
Your X configuration file has been successfully updated. Installation of the NVIDIA Accelerated Graphics Driver for Linux-x86_64 (version: 340.96) is now comleted.
15. В терминале вводим команду для сборки xzm модуля, последующей очистки от ненужного хлама и его пересборкой.
Code: Select all
./nvidia.sh
Другие примеры имен модулей:
- nVidia-340.96-porteus-v3.2rc2-i586.xzm
- nVidia-340.96-porteus-v3.2rc2-x86_64.xzm
Заметка. Если нужно, то Вы можете удалить blacklist.xzm из /porteus/base/ или переместить его в другое место.
Code: Select all
reboot
Скриншоты: