Nvidia SlackBuild

Se avete problemi con l'installazione e la configurazione di Slackware postate qui. Non usate questo forum per argomenti generali... per quelli usate Gnu/Linux in genere.

Moderatore: Staff

Regole del forum
1) Citare sempre la versione di Slackware usata, la versione del Kernel e magari anche la versione della libreria coinvolta. Questi dati aiutano le persone che possono rispondere.
2) Per evitare confusione prego inserire in questo forum solo topic che riguardano appunto Slackware, se l'argomento è generale usate il forum Gnu/Linux in genere.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Rispondi
Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Nvidia SlackBuild

Messaggio da gohanz »

Sto scrivendo uno script per creare un pacchetto precompilato TGZ, con i driver grafici NVIDIA belli pronti da installare con Pkgtool!

E' una versione preliminare, non testata!

#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packagers Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)


if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi

cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .

# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.$VERSION libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then
echo "Copy Nvidia Module Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then
echo "Copy Nvidia Module Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
incorrectVersion
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )


mkdir -p $PKG/etc/X11

( cd /etc/X11
cp -a xorg.conf $PKG/etc/X11 )

( cd $PKG/etc/X11

sed -i "s|nvidia|nv|g" xorg.conf
sed -i "s|nv|nvidia|g" xorg.conf )


rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.

|-----handy-ruler----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF

cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz
echo "modprobe nvidia" >> $PKG/install/doinst.sh
makepkg -l n -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz

if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Ho fatto le ultime modifiche, ho iserito un po di controlli. L'ho provato su tre Kernel differenti 2.4 e 2.6 e funziona bene.
Mi sono creato un paio i pacchetti per i kernel di default, più un terzo kernel recente.

#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packager Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)



#Check for root privileges
if [ `id -u` != "0" ]; then clear
echo "You must be Root to run Nvidia-Linux-x86.SlackBuild"
exit 1
fi
#


# Check for Kernel Source in /usr/src and make a symlink linux to kernel
cd /usr/src
if [ ! -r linux-$KERNEL ]; then clear
echo "You must install the Kernel Source in /usr/src!"
exit 1
else rm linux
ln -s linux-$KERNEL linux
fi
cd $CWD
#

# Check for .config file in the kernel source tree
cd /usr/src/linux
if [ ! -r .config ]; then clear
echo "No .config file in the source tree! Please copy your .config file in /usr/src/linux or you need to recompile the kernel with make menuconfig!"
exit 1
fi
cd $CWD
#



if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi



cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .



# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.1.0.8762 libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
incorrectVersion
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )


mkdir -p $PKG/etc/X11

( cd /etc/X11
cp -a xorg.conf $PKG/etc/X11 )

( cd $PKG/etc/X11

sed -i "s|nvidia|nv|g" xorg.conf
sed -i "s|nv|nvidia|g" xorg.conf )


rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.

|-----handy-ruler----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF

cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz
echo "modprobe nvidia" >> $PKG/install/doinst.sh
echo "ldconfig" >> $PKG/install/doinst.sh
makepkg -l n -c n $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz

if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi

Avatar utente
gohanz
Staff
Staff
Messaggi: 5832
Iscritto il: mar 30 nov 2004, 0:00

Messaggio da gohanz »

Questo è il definitivo. C'è la scelta di inserire o meno, xorg.conf presente nel sistema, nel pacchetto. Nel caso xorg.conf caso viene adattato per caricare i driver NVIDA in automatico.
Più una piccola modifica nella creazione del doinst.sh nel pacchetto, usando l'opzione -p Prepended, di makepkg!




#!/bin/sh
# Heavily based on the Slackware 10.2 SlackBuild
# http://www.nvidia.com/object/unix.html
# Packager Andrea Sciucca Gohanz ( gohanz @ infinito.it)
# http://www.slacky.it




CWD=`pwd`
if ["$TMP" = ""]; then
TMP=/tmp
fi

PKG=$TMP/package-NVIDIA-Linux-x86
NAME=NVIDIA-Linux-x86
VERSION=1.0-8762
ARCH=IA32
RELEASE_DATE='May 22, 2006'
KERNEL=$(uname -r)



#Check for root privileges
if [ `id -u` != "0" ]; then clear
echo "You must be Root to run Nvidia-Linux-x86.SlackBuild"
exit 1
fi
#


# Check for Kernel Source in /usr/src and make a symlink linux to kernel
cd /usr/src
if [ ! -r linux-$KERNEL ]; then clear
echo "You must install the Kernel Source in /usr/src!"
exit 1
else rm linux
ln -s linux-$KERNEL linux
fi
cd $CWD
#

# Check for .config file in the kernel source tree
cd /usr/src/linux
if [ ! -r .config ]; then clear
echo "No .config file in the source tree! Please copy your .config file in /usr/src/linux or you need to recompile the kernel with make menuconfig!"
exit 1
fi
cd $CWD
#

#Function Build Package
PKG_BUILD () {
rm -r $PKG/usr/src



cp -a LICENSE pkg-history.txt \
$PKG/usr/doc/$NAME-$VERSION
mkdir -p $PKG/install
cat << EOF > $PKG/install/slack-desc
# HOW TO EDIT THIS FILE:
# The "handy ruler" below makes it easier to edit a package description. Line
# up the first '|' above the ':' following the base package name, and the '|'
# on the right side marks the last column you can put a character in. You must
# make exactly 11 lines for the formatting to be correct. It's also
# customary to leave one space after the ':'.

|-----handy-ruler----------------------------------------------------|
NvidiaLinuxX86: Nvidia Linux Display Driver $ARCH
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86:
NvidiaLinuxX86: Version: $VERSION
NvidiaLinuxX86: Operating System: Linux IA32
NvidiaLinuxX86: Release Date: $RELEASE_DATE
NvidiaLinuxX86: KERNEL : $KERNEL
NvidiaLinuxX86:
NvidiaLinuxX86: http://WWW.SLACKY.IT
NvidiaLinuxX86: Packager Gohanz.
EOF



cd $CWD
cp -a *.SlackBuild $PKG/usr/doc/$NAME-$VERSION
chown -R root.root $PKG/usr/doc/$NAME-$VERSION

chown -R root.bin $PKG/usr/bin
strip --strip-unneeded $PKG/usr/bin/* 2> /dev/null

cd $PKG
requiredbuilder -v -y -s $CWD $PKG
makepkg -l y -c n -p $CWD/NvidiaLinuxX86-$VERSION'Kernel'$KERNEL-$ARCH.tgz


if [ "$1" = "--cleanup" ]; then
rm -rf $TMP/$NAME-$VERSION
rm -rf $PKG
fi
}


if [ ! -d $TMP ]; then
mkdir -p $TMP
fi
if [ ! -d $PKG ]; then
mkdir -p $PKG
fi



cd $TMP
sh $CWD/$NAME-$VERSION-pkg1.run -x

echo "+----------------------------------------------------------------+"
echo "| Starting SlackBuild $NAME-$VERSION-Kernel-$KERNEL |"
echo "+----------------------------------------------------------------+"

cd $NAME-$VERSION-pkg1

find . -perm 777 -exec chmod 755 {} \;
find . -perm 775 -exec chmod 755 {} \;
find . -perm 555 -exec chmod 755 {} \;
find . -perm 666 -exec chmod 644 {} \;
find . -perm 664 -exec chmod 644 {} \;
find . -perm 444 -exec chmod 644 {} \;

chown -R root.root .



# Build SimLik.

( cd usr/X11R6/lib

ln -s libXvMCNVIDIA.so.$VERSION libXvMCNVIDIA_dynamic.so.1 )


( cd usr/X11R6/lib/modules/extensions

ln -s libglx.so.1.0.8762 libglx.so )


( cd usr/lib

ln -s libGL.so.1 libGL.so
ln -s libGL.so.$VERSION libGL.so.1
ln -s libGLcore.so.$VERSION libGLcore.so.1
ln -s libnvidia-cfg.so.1 libnvidia-cfg.so
ln -s libnvidia-cfg.so.$VERSION libnvidia-cfg.so.1
ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

( cd usr/lib/tls

ln -s libnvidia-tls.so.$VERSION libnvidia-tls.so.1 )

# End SimLink Build

mkdir -p $PKG/usr

( cd usr \

cp -a -r * $PKG/usr )

mkdir -p $PKG/lib/modules/$KERNEL/kernel/drivers/video

( cd usr/src/nv

make module # Compiling Module for Both 2.4/2.6 Kernel.

if [ `echo $KERNEL | cut -c -3` == "2.6" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.ko $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
elif [ `echo $KERNEL | cut -c -3` == "2.4" ]; then clear
echo "Copy Nvidia Module for the Kernel $KERNEL"
cp nvidia.o $PKG/lib/modules/$KERNEL/kernel/drivers/video 2>/dev/null
else
echo " The Kernel $KERNEL Version, is not correct!"
fi
)

mkdir -p $PKG/usr/doc/$NAME-$VERSION

( cd $PKG/usr/share/doc

cp -a -r * $PKG/usr/doc/$NAME-$VERSION

rm -r $PKG/usr/share/doc
)

( cd $PKG/usr/share/man

mkdir -p $PKG/usr/man

cp -a -r * $PKG/usr/man

rm -r $PKG/usr/share/man )





# Xorg.conf copy in package

echo "I copy your xorg.conf file in the TGZ Package?"

OPTIONS="Yes No"
select opt in $OPTIONS; do
if [ "$opt" = "Yes" ]; then
( cd /etc/X11
mkdir -p $PKG/etc/X11
cp -a xorg.conf $PKG/etc/X11 )
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
modprobe nvidia
ldconfig
nvidia-xconfig
EOF
PKG_BUILD
exit
elif [ "$opt" = "No" ]; then
mkdir -p $PKG/install
cat << EOF > $PKG/install/doinst.sh
modprobe nvidia
ldconfig
EOF
PKG_BUILD
exit
else echo "Wrong Choice! (1/2)"
fi
done

Avatar utente
Harp
Staff
Staff
Messaggi: 1424
Iscritto il: sab 17 apr 2004, 0:00
Nome Cognome: Franco Fiorin
Slackware: 13.0
Kernel: 2.6.29
Desktop: KDE 4.2.4
Località: Vittorio Veneto (TV)
Contatta:

Messaggio da Harp »

Non ho potuto provare lo slackbuild, visto che sono costretto a letto e obbligato ad usare un portatile con Win$ XP, ma volevo dirti che sei un mito.
Assieme a Loris e tutti quelli che lavorano per procurarci tutti questi TGZ, state facendo davvero qualcosa di straordinario, che ci permette, sempre più, di avvicinarci ad essere una comunità stile Debisn e farci rimpiangere sempre meno apt-get tanto osannato.

GRAZIE !!

Rispondi