How to create a Nvidia driver xzm module

Post tutorials, HOWTO's and other useful resources here.
fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

How to create a Nvidia driver xzm module

Post#1 by fulalas » 18 Nov 2016, 04:51

This is the script for those who want to create their own Nvidia xzm module from Nvidia driver setup.

Warning: at the moment it works only for x64 systems.

1- First you should copy and paste the script below and save it as nvidia-driver.sh in any persistent folder. But make sure this path is NOT inside a FAT partition, but a partition that supports symlinks, as NTFS, for example.

2- Then you should download the appropriate Nvidia driver for your card on Nvidia's webiste. Refer to this topic as a guide.

3- Download blacklist.xzm, devel.xzm and crippled_sources.xzm ( http://dl.porteus.org/x86_64/Porteus-v3.2.2/kernel/ ) to your usb stick/porteus/base.

4- If you already have a Nvidia driver xzm module running, remove it or change file location and reboot in order to make a clean installation.

5- Reboot, enter in Text Mode and login as root.

6- Find the driver path and call: sh driver.run
(where 'driver' is the name of the file)

7- Accept the terms and press Enter. After a while it'll ask for generating libs for 32 bits applications. You probably don't want to do that, so choose 'no'. After a few seconds a new question will appear asking something about nvidia-xconfig so you should choose 'yes'. Wait a little bit and then hit Enter to exit.

8- Now find the script path of the first step of this tutorial and execute it: sh nvidia-driver.sh. You have to be patience as it'll create a module with all changes made after the boot, then it'll extract everything, make a clean-up and a few tricks and finally it'll create the new xzm module.

9- After the script finishes you should copy the new module (by default nvidia-cleaned-driver.xzm) to your usb stick/porteus/modules and reboot in Graphics Mode. Also, you don't need to load the modules from step 3 anymore.

10- Once inside the GUI, run nvidia-settings and make sure that there's no error message. Now you can run glxgears and pray for those 3 colored gears to appear.

11- If everything went fine so far, here comes the last and most scary step: still inside the GUI go to a terminal as root and run ldconfig. Now repeat step 10. If there's no error at all, you're finally good to go. :good:

Code: Select all

echo Saving changes after Nvidia driver setup. This may take some time...
save-changes nvidia-driver.xzm
rm -r nvidia-driver &>/dev/null
rm -r nvidia-cleaned-driver &>/dev/null
/opt/porteus-scripts/context-menu/extract-module ./nvidia-driver.xzm &>/dev/null
mv nvidia-driver/ nvidia-cleaned-driver/
cd nvidia-cleaned-driver

echo Main folder cleaning...
rm -fr dev
rm -fr home
rm -fr mnt
rm -fr root
rm -fr tmp
rm -fr var

echo Etc folder cleaning...
rm -f etc/* &>/dev/null
rm -fr etc/gtk-2.0
rm -fr etc/lvm
rm -fr etc/profile.d
rm -fr etc/rc.d
rm -fr etc/udev

echo Lib folder cleaning...
rm -f lib/modules/4.*/* &>/dev/null

echo Usr folder cleaning...
rm -fr usr/src
rm -fr usr/local
rm -fr usr/man
rm -fr usr/share/doc
rm -fr usr/share/mime
rm -fr usr/share/applications/mimeinfo.cache

rm -fr usr/lib64/gio
rm -fr usr/lib64/gtk-2.0
rm -fr usr/lib64/gtk-3.0
rm -fr usr/lib64/gio

rm -f usr/lib64/libEGL.so
rm -f usr/lib64/libEGL.so.1
rm -f usr/lib64/libGL.so
rm -f usr/lib64/libGL.so.1

rm -f usr/lib64/libGLESv1_CM.so
rm -f usr/lib64/libGLESv1_CM.so.1

rm -f usr/lib64/libGLESv2.so
rm -f usr/lib64/libGLESv2.so.2

rm -f usr/lib64/libudev.so.1
rm -f usr/lib64/libunrar.so.5
rm -f usr/lib64/libXvMCgallium.so.1

# this is a trick to avoid ldconfig reseting libGL.so.1 symlink to libGL.so.1.2.0 that comes with Porteus on some configurations
echo Fixing libGL symlinks...
cd usr/lib64/
if [ -f "libGL.so.1.0.0" ]
then
	cp libGL.so.1.0.0 libGL.so.1.2.0
	cp -s libGL.so.1.2.0 libGL.so
	cp -s libGL.so.1.2.0 libGL.so.1
	
	cp libGLESv1_CM_nvidia.so.3* libGLESv1_CM.so.1.1.0
	cp -s libGLESv1_CM_nvidia.so.3* libGLESv1_CM.so
	cp -s libGLESv1_CM_nvidia.so.3* libGLESv1_CM.so.1

	cp libGLESv2_nvidia.so.3* libGLESv2.so.2.0.0
	cp -s libGLESv2_nvidia.so.3* libGLESv2.so
	cp -s libGLESv2_nvidia.so.3* libGLESv2.so.2
else
	cp -s libGL.so.3* libGL.so
	cp -s libGL.so.3* libGL.so.1

	cp -s libGLESv1_CM.so.3* libGLESv1_CM.so
	cp -s libGLESv1_CM.so.3* libGLESv1_CM.so.1

	cp -s libGLESv2.so.3* libGLESv2.so
	cp -s libGLESv2.so.3* libGLESv2.so.2
fi

echo Disabling nouveau...
cd ../..
mkdir etc/modprobe.d
cp /etc/modprobe.d/nvidia-installer-disable-nouveau.conf etc/modprobe.d

echo Creating module...
cd ..
rm nvidia-cleaned-driver.xzm &>/dev/null
dir2xzm nvidia-cleaned-driver nvidia-cleaned-driver.xzm &>/dev/null

echo Removing temp files...
rm -fr nvidia-cleaned-driver
rm -f nvidia-driver.xzm

echo Finished.
Last edited by fulalas on 19 Feb 2017, 14:00, edited 8 times in total.

Bogomips
Full of knowledge
Full of knowledge
Posts: 2522
Joined: 25 Jun 2014, 15:21
Distribution: 3.2.2 Cinnamon & KDE5
Location: London

Re: How to create a Nvidia driver xzm module

Post#2 by Bogomips » 19 Nov 2016, 02:03

Hi fulalas, thought I might share this with you as you seem to like looking into these things, and get your feedback. Maybe you can confirm this from perusal of the script that you referenced.

The situation is that am not able to run KDE on my nachine without nvidia driver, as Nouveau is not able to cope, Since being strapped for memory 879MiB on a slow CPU 880MHz, not able to enjoy the KDE experience as it's either ithe nvidia driver or KDE that can load into ram, but not both. So far been running KDE looped on the ISO, just about bearable.

In an effort to get KDE as well into ram, have taken out Sources and the Nvidia compiler library from driver module. This has reduced driver module size from 34M to 24M. Base and Nvidia Modules now fit into ram, and so far so good, without incident, and am better able to enjoy the KDE experience. :)
Linux porteus 4.4.0-porteus #3 SMP PREEMPT Sat Jan 23 07:01:55 UTC 2016 i686 AMD Sempron(tm) 140 Processor AuthenticAMD GNU/Linux
NVIDIA Corporation C61 [GeForce 6150SE nForce 430] (rev a2) MemTotal: 901760 kB MemFree: 66752 kB

fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

Re: How to create a Nvidia driver xzm module

Post#3 by fulalas » 19 Nov 2016, 05:42

Thanks, Bogomips! I'm already doing what you're suggesting. Look at the line in the script that removes src folder ;)

But I see that you're using 304.xx driver version which is way lighter than newer drivers that now are around 50mb.

Have you managed to solve the symlink problem on the module you posted earlier in module section of this forum?

Bogomips
Full of knowledge
Full of knowledge
Posts: 2522
Joined: 25 Jun 2014, 15:21
Distribution: 3.2.2 Cinnamon & KDE5
Location: London

Re: How to create a Nvidia driver xzm module

Post#4 by Bogomips » 19 Nov 2016, 12:18

fulalas wrote:Have you managed to solve the symlink problem on the module you posted earlier in module section of this forum?
Only use it to run basic KDE stuff, so have not come across a symlink problem, even before on driver modules made for the RCs. Also have had no feedback on those modules. Maybe something in the newer driver versions?

P.S. Also adopt a slightly different procedure. Descend into decompressed nvidia driver and run ./nvidia-installer -zXZ. When finished, savie changes as module and do init 4 to get into GUI and check that all running fine with the new driver. Then reboot to a tried and tested DE, where have been paring it down manually. But recently with different kernels coming along, have made script out of the step by step statements which are aligned on this driver.
Linux porteus 4.4.0-porteus #3 SMP PREEMPT Sat Jan 23 07:01:55 UTC 2016 i686 AMD Sempron(tm) 140 Processor AuthenticAMD GNU/Linux
NVIDIA Corporation C61 [GeForce 6150SE nForce 430] (rev a2) MemTotal: 901760 kB MemFree: 66752 kB

fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

Re: How to create a Nvidia driver xzm module

Post#5 by fulalas » 21 Nov 2016, 21:23

Bogomips wrote:Only use it to run basic KDE stuff, so have not come across a symlink problem, even before on driver modules made for the RCs. Also have had no feedback on those modules. Maybe something in the newer driver versions?
I think it has something to do with my current configuration and Linux native drivers, as even booting on AF mode I see these two libs: libGL.so.1.0.0 and libGL.so.1.2.0. They don't show on my gf's laptop although it has a Nvidia card.
Bogomips wrote:P.S. Also adopt a slightly different procedure. Descend into decompressed nvidia driver and run ./nvidia-installer -zXZ. When finished, savie changes as module and do init 4 to get into GUI and check that all running fine with the new driver. Then reboot to a tried and tested DE, where have been paring it down manually. But recently with different kernels coming along, have made script out of the step by step statements which are aligned on this driver.
Hmmm... I'm curious. What's the meaning of this '-zXZ' parameter?

Bogomips
Full of knowledge
Full of knowledge
Posts: 2522
Joined: 25 Jun 2014, 15:21
Distribution: 3.2.2 Cinnamon & KDE5
Location: London

Re: How to create a Nvidia driver xzm module

Post#6 by Bogomips » 21 Nov 2016, 23:34

fulalas wrote:
Bogomips wrote:Hmmm... I'm curious. What's the meaning of this '-zXZ' parameter?

Code: Select all

sh /Path/to/NVIDIA-Linux-x86_64-367.57.run  -A
:wink:
Linux porteus 4.4.0-porteus #3 SMP PREEMPT Sat Jan 23 07:01:55 UTC 2016 i686 AMD Sempron(tm) 140 Processor AuthenticAMD GNU/Linux
NVIDIA Corporation C61 [GeForce 6150SE nForce 430] (rev a2) MemTotal: 901760 kB MemFree: 66752 kB

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#7 by Evan » 11 Feb 2017, 09:43

fulalas wrote:Evan, which version of Nvidia you want? We have a lot of effort here in this forum regarding Nvidia drivers modules for Porteus :)
fulalas wrote:Evan, we have a tutorial with a script to make a Nvidia driver module for Porteus ;)

viewtopic.php?f=39&t=6391
Thanks , i'll give this a go when i get a chance.

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#8 by Evan » 15 Feb 2017, 14:50

fulalas wrote:Hmmm... I'm curious. What's the meaning of this '-zXZ' parameter?

Code: Select all

 
      -z, --no-nouveau-check
          Normally, nvidia-installer aborts installation if the
          nouveau kernel driver is in use.  Use this option to
          disable this check.

      -Z, --disable-nouveau
          If the nouveau kernel module is detected by
          nvidia-installer, the installer offers to attempt to
          disable nouveau. The default action is to not attempt to
          disable nouveau; use this option to change the default
          action to attempt to disable nouveau.

      -X, --run-nvidia-xconfig
          nvidia-installer can optionally invoke the nvidia-xconfig
          utility.  This will update the system X configuration file
          so that the NVIDIA X driver is used.  The pre-existing X
          configuration file will be backed up.  At the end of
          installation, nvidia-installer will ask the user if they
          wish to run nvidia-xconfig; the default response is 'no'. 
          Use this option to make the default response 'yes'.
I tried -zXZ without blacklist.xzm module loaded and it didn't work , it was unable to complete because of the nouveau driver conflict.

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#9 by Evan » 18 Feb 2017, 10:03

Code: Select all

Saving changes after Nvidia driver setup. This may take some time...


Your path must end in .xzm
Example: /tmp/changes.xz


mv: cannot move 'nvidia-driver/' to 'nvidia-cleaned-driver/'$'\r': No such file or directory
nvidia.sh: line 7: cd: nvidia-cleaned-driver
: No such file or directory
nvidia.sh: line 8: $'\r': command not found
nvidia.sh: line 16: $'\r': command not found
nvidia.sh: line 24: $'\r': command not found
nvidia.sh: line 27: $'\r': command not found
nvidia.sh: line 35: $'\r': command not found
nvidia.sh: line 40: $'\r': command not found
nvidia.sh: line 45: $'\r': command not found
nvidia.sh: line 48: $'\r': command not found
nvidia.sh: line 51: $'\r': command not found
nvidia.sh: line 55: $'\r': command not found
nvidia.sh: line 58: cd: usr/lib64/
: No such file or directory
nvidia.sh: line 98: syntax error: unexpected end of file

NVIDIA-Linux-x86_64-378.13.run

Great news with the latest 378 i no longer need pipeline enabled as standard Vsync is 100% rock solid. :)

Bad news the script chuck out loads of errors. :(

Not sure if i got all the errors but that's what i could get from copy and paste.

fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

Re: How to create a Nvidia driver xzm module

Post#10 by fulalas » 18 Feb 2017, 13:34

Hmmmm... It seems there is a error with the first command (save-changes). Does your path contain any space character?

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#11 by Evan » 18 Feb 2017, 13:42

I copied your script exactly as it's posted using copy and paste to my USB drive and from what i remember without rebooting it was /mnt/sdd4/#

and i used the command sh Nvidia.sh

You don't write and test your scripts in Virtual box by any chance as i' often see people saying that testing and writing virtual box is never the same as real hardware and causes problems, just a thought?

fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

Re: How to create a Nvidia driver xzm module

Post#12 by fulalas » 18 Feb 2017, 21:47

I never used Porteus inside VirtualBox.

But, see, the error is on the first line, so everything beyond will have errors, of course. Did you login as root? You have to. If you did, try to run line by line (by copy and paste).

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#13 by Evan » 18 Feb 2017, 23:42

Code: Select all

dir2xzm /mnt/live/memory/changes /tmp/nvidia.xzm
A fresh ISO install ,followed your guide step by step , logged in as root text.

When your script failed the above command worked for creating a standard module , so path to /tmp is working.

fulalas
Contributor
Contributor
Posts: 580
Joined: 26 Oct 2016, 15:34
Distribution: Porteus
Location: Brazil

Re: How to create a Nvidia driver xzm module

Post#14 by fulalas » 19 Feb 2017, 00:35

Evan wrote:

Code: Select all

dir2xzm /mnt/live/memory/changes /tmp/nvidia.xzm
A fresh ISO install ,followed your guide step by step , logged in as root text.

When your script failed the above command worked for creating a standard module , so path to /tmp is working.
The first command of the script is:

Code: Select all

save-changes nvidia-driver.xzm
Try this and check the output. Also, notice if you're running inside a path that contains any space character (at the moment Porteus scripts, like 'save-changes' and 'dir2xzm' don't work with spaces).

Evan
Warlord
Warlord
Posts: 519
Joined: 11 Apr 2016, 09:00
Distribution: Anything Cinnamon
Location: London

Re: How to create a Nvidia driver xzm module

Post#15 by Evan » 19 Feb 2017, 02:07

fulalas wrote:

Code: Select all

save-changes nvidia-driver.xzm
Try this and check the output. Also, notice if you're running inside a path that contains any space character (at the moment Porteus scripts, like 'save-changes' and 'dir2xzm' don't work with spaces).
Ok will do , i'll report back , no path spaces unless a standard fresh install can do this?

path to the USB is /mnt/sdd4/

Something interesting i've noticed is that with a standard install of Nvidia drivers at root/text followed by init 4 straight into desktop without creating a module lets step 11 run without any errors?

I'm not sure if this is because (devel.xzm and crippled_sources.xzm) are loaded or if Porteus standard Module creation corrupts something?

Post Reply