Solved Installing nvidia-driver-96 port on 12.1-RELEASE i386

I am trying to install Nvidia driver on my very old computer with GeForce4 MX 440. But it failed. I have installed FreeBSD 12.1-RELEASE.

The port was deleted from the source tree so I checkout https://svnweb.freebsd.org/ports/branches/2014Q4 which contains the port nvidia-driver-96. I have installed FreeBSD release/12.1.0 source at /usr/src. I also installed compat5x-i386 from pkg because there was an error when making it from port.

When I run make install at /usr/ports/x11/nvidia-driver-96/, I got the errors from the attachment, make1.txt, which is about unknown type name 'd_thread_t'. So I replaced them with struct thread as I read from here.

I tried to installed again and this time, I got another error as in make2.txt.

I would like to know if it is possible to compile an old port on 12.1-RELEASE and how I can proceed. If not, should I compile it against some older FreeBSD release?

I am willing to try any possible suggestions. Thanks in advance.
 

Attachments

  • make1.txt
    5.4 KB · Views: 120
  • make2.txt
    8.3 KB · Views: 115
Building from a ports collection that old is not supported.

Usually, a workaround is to install an old release inside a chroot or jail (in this case, 10.0-RELEASE should fit the ports as of 2014Q4) and build the ports in question inside that jail. However, in this case there are several problems with that approach. First, the graphics driver is a kernel module. I’m afraid that a kernel module build in a 10.0 environment won’t work with a 12.1 kernel. Second, the old Nvidia drivers do not support current versions of Xorg (that’s the reason they were removed six years ago). Third, the old 96.* driver is 32bit only, so it won’t work with 64bit FreeBSD.

Unfortunately there is no really satisfying solution for that situation. The easiest way would be to buy a newer graphics card, if possible, such as a GT-1030-based product (I have this one myself). This is supported by current drivers. If you can’t do that, it may be possible to use the VESA driver, although it might not support higher resolutions.
 
Building from a ports collection that old is not supported.

Usually, a workaround is to install an old release inside a chroot or jail (in this case, 10.0-RELEASE should fit the ports as of 2014Q4) and build the ports in question inside that jail. However, in this case there are several problems with that approach. First, the graphics driver is a kernel module. I’m afraid that a kernel module build in a 10.0 environment won’t work with a 12.1 kernel. Second, the old Nvidia drivers do not support current versions of Xorg (that’s the reason they were removed six years ago). Third, the old 96.* driver is 32bit only, so it won’t work with 64bit FreeBSD.

Unfortunately there is no really satisfying solution for that situation. The easiest way would be to buy a newer graphics card, if possible, such as a GT-1030-based product (I have this one myself). This is supported by current drivers. If you can’t do that, it may be possible to use the VESA driver, although it might not support higher resolutions.

First, I would like to thank you for your explanation. My CPU is 32-bit so I use i386 release. I just want to make the old computer, which ran Windows XP when I was young, usable again. So I won’t be buying any new hardware. It doesn’t have to run intensive games or graphics.

Therefore, I am okay with older FreeBSD releases and older software. I will try with 10.0-RELEASE and compile that again. You stated that the kernel module build in a 10.0 environment will not work in a 12.1. So I will just use 10.0-RELEASE.
 
Fun times with vendor-provided binaries. :(

 
I have tried x11-drivers/xf86-video-nv as SirDice said. It works and I get full resolution of my display.

I would like to apologise for my late reply. My computer is too old that sometimes it doesn’t even load its BIOS. I need to leave it without power for hours for to reset the motherboard.

Now I understand more about FreeBSD and its ports. I appreciate every suggestion.
 
Back
Top