Unable to install 304.137 driver for GeForce Go 7400 in Lubuntu 18.04

Hi all,
I’m struggling to get the NVidia drivers installed on my older Sony Vaio VGN-SZ483N laptop. It has a GeForce Go 7400 card. Not sure if compatible drivers exist yet but am grateful for any assistance. I do have a working install of Lubuntu 16.04 - would it make sense to restore that image and upgrade instead of a clean install (is that more likely to succeed or will I just end up at the same spot again?)

I’ve tried both the apt- install and the .run script and both fail.

The apt install indicates various unmet dependencies but all packages appear to be installed/up to date. I’ve tried with the -f option and also looked at held packages but nothing appears to be wrong. It’s not entirely clear to me if my versions are correct (for example, I have gvfs and gvfs-daemons v1.36.1 installed - which appears to be what apt wants, so I don’t understand the error message). This is the output:

markus@BartIII:~$ sudo apt-get install nvidia-304
[sudo] password for markus: 
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 gvfs : Depends: gvfs-daemons (>= 1.36.1-0ubuntu1)
        Depends: gvfs-daemons (< 1.36.1-0ubuntu1.1~)
 libgtk-3-0 : Depends: libwayland-egl1-mesa (>= 10.0.2) but it is not going to be installed or
                       libwayland-egl1
 nvidia-304 : Depends: xorg-video-abi-11 but it is not installable or
                       xorg-video-abi-12 but it is not installable or
                       xorg-video-abi-13 but it is not installable or
                       xorg-video-abi-14 but it is not installable or
                       xorg-video-abi-15 but it is not installable or
                       xorg-video-abi-18 but it is not installable or
                       xorg-video-abi-19 but it is not installable or
                       xorg-video-abi-20 but it is not installable or
                       xorg-video-abi-23
              Depends: xserver-xorg-core but it is not going to be installed
E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

If I try the .run script instead, it gets to 40% then skips to 100% and errors out. The contents of the long log file form the end of this post. Early in the file it indicates a missing autoconf.h and auto.conf file and suggests that I make oldconfig - but both those files exist in the indicated folders and this is a clean install so make oldconfig doesn’t make sense to me. Any suggestions are appreciated. Thanks!

nvidia-installer log file '/var/log/nvidia-installer.log'
creation time: Sun May 13 15:34:43 2018
installer version: 304.137

PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin

nvidia-installer command line:
    ./nvidia-installer

Unable to load: nvidia-installer ncurses v6 user interface

Using: nvidia-installer ncurses user interface
-> License accepted.
-> Installing NVIDIA driver version 304.137.
-> Running distribution scripts
   executing: '/usr/lib/nvidia/pre-install'...
-> done.
-> The distribution-provided pre-install script failed!  Continue installation anyway? (Answer: Yes)
-> Performing CC sanity check with CC="cc".
-> Performing CC version check with CC="cc".
-> Kernel source path: '/lib/modules/4.15.0-20-generic/build'
-> Kernel output path: '/lib/modules/4.15.0-20-generic/build'
-> Performing rivafb check.
-> Performing nvidiafb check.
-> Performing Xen check.
-> Cleaning kernel module build directory.
   executing: 'cd ./kernel; make clean'...
-> Building kernel module:
   executing: 'cd ./kernel; make module SYSSRC=/lib/modules/4.15.0-20-generic/build SYSOUT=/lib/modules/4.15.0-20-generic/build'...
   NVIDIA: calling KBUILD...
   test -e include/generated/autoconf.h -a -e include/config/auto.conf || (		\
   echo >&2;							\
   echo >&2 "  ERROR: Kernel configuration is invalid.";		\
   echo >&2 "         include/generated/autoconf.h or include/config/auto.conf are missing.";\
   echo >&2 "         Run 'make oldconfig && make prepare' on kernel src to fix it.";	\
   echo >&2 ;							\
   /bin/false)
   mkdir -p /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/.tmp_versions ; rm -f /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/.tmp_versions/*
   make -f ./scripts/Makefile.build obj=/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel
     cc -Wp,-MD,/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/.nv.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/7/include  -I./arch/x86/include -I./arch/x86/include/generated  -I./include -I./arch/x86/include/uapi -I./arch/x86/include/generated/uapi -I./include/uapi -I./include/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include  -D__KERNEL__ -Wall -Wundef -Wstrict-prototyp
   es -Wno-trigraphs -fno-strict-aliasing -fno-common -fshort-wchar -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_AVX512=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE -fno-delete-null-pointer-checks -Wno-frame-address -Wno-format-truncation -Wno-format-overflow -Wno-int-in-bool-context -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -Wno-unused-c
   onst-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -Werror=incompatible-pointer-types -Werror=designated-init -I/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel -Wall -MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"304.137\" -Wno-unused-function -Wuninitialized -mno-red-zone -mcmodel=kernel -UDEBUG -U_DEBUG -DNDEBUG  -DMODULE  -DKBUILD_BASENAME='"nv"'  -DKBUILD_MODNAME='"nvidia"' -c -o /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.o /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c
   In file included from ./include/linux/byteorder/little_endian.h:11:0,
                    from ./arch/x86/include/uapi/asm/byteorder.h:5,
                    from ./include/asm-generic/bitops/le.h:6,
                    from ./arch/x86/include/asm/bitops.h:518,
                    from ./include/linux/bitops.h:38,
                    from ./include/linux/kernel.h:11,
                    from ./arch/x86/include/asm/percpu.h:45,
                    from ./arch/x86/include/asm/current.h:6,
                    from ./include/linux/sched.h:12,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/byteorder/generic.h: In function ‘cpu_to_be32_array’:
   ./include/linux/byteorder/generic.h:178:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0; i < len; i++)
                   ^
   ./include/linux/byteorder/generic.h: In function ‘be32_to_cpu_array’:
   ./include/linux/byteorder/generic.h:186:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (i = 0; i < len; i++)
                   ^
   In file included from ./arch/x86/include/asm/current.h:5:0,
                    from ./include/linux/sched.h:12,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/thread_info.h: In function ‘check_copy_size’:
   ./include/linux/thread_info.h:134:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (unlikely(sz >= 0 && sz < bytes)) {
                                ^
   ./include/linux/compiler.h:77:42: note: in definition of macro ‘unlikely’
    # define unlikely(x) __builtin_expect(!!(x), 0)
                                             ^
   ./include/asm-generic/qrwlock.h: In function ‘queued_write_trylock’:
   ./include/asm-generic/qrwlock.h:75:36: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
              cnts, cnts | _QW_LOCKED) == cnts);
                                       ^
   ./include/linux/compiler.h:76:40: note: in definition of macro ‘likely’
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   In file included from ./include/linux/ipc.h:7:0,
                    from ./include/uapi/linux/sem.h:5,
                    from ./include/linux/sem.h:9,
                    from ./include/linux/sched.h:15,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/rhashtable.h: In function ‘rht_grow_above_75’:
   ./include/linux/rhashtable.h:295:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return atomic_read(&ht->nelems) > (tbl->size / 4 * 3) &&
                                     ^
   ./include/linux/rhashtable.h: In function ‘rht_shrink_below_30’:
   ./include/linux/rhashtable.h:308:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return atomic_read(&ht->nelems) < (tbl->size * 3 / 10) &&
                                     ^
   ./include/linux/rhashtable.h: In function ‘rht_grow_above_100’:
   ./include/linux/rhashtable.h:320:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return atomic_read(&ht->nelems) > tbl->size &&
                                     ^
   ./include/linux/rhashtable.h: In function ‘rht_grow_above_max’:
   ./include/linux/rhashtable.h:332:34: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     return atomic_read(&ht->nelems) >= ht->max_elems;
                                     ^~
   In file included from ./arch/x86/include/asm/current.h:5:0,
                    from ./include/linux/sched.h:12,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/mmzone.h: In function ‘next_zones_zonelist’:
   ./include/linux/mmzone.h:988:44: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (likely(!nodes && zonelist_zone_idx(z) <= highest_zoneidx))
                                               ^
   ./include/linux/compiler.h:76:40: note: in definition of macro ‘likely’
    # define likely(x) __builtin_expect(!!(x), 1)
                                           ^
   In file included from ./arch/x86/include/asm/current.h:6:0,
                    from ./include/linux/sched.h:12,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/percpu-refcount.h: In function ‘percpu_ref_get_many’:
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:420:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_1(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:379:11: note: in expansion of macro ‘this_cpu_add_1’
      case 1: stem##1(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:177:3: note: in expansion of macro ‘this_cpu_add’
      this_cpu_add(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:421:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_2(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:380:11: note: in expansion of macro ‘this_cpu_add_2’
      case 2: stem##2(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:177:3: note: in expansion of macro ‘this_cpu_add’
      this_cpu_add(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:422:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_4(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:381:11: note: in expansion of macro ‘this_cpu_add_4’
      case 4: stem##4(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:177:3: note: in expansion of macro ‘this_cpu_add’
      this_cpu_add(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:479:35: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_8(pcp, val)  percpu_add_op((pcp), val)
                                      ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:382:11: note: in expansion of macro ‘this_cpu_add_8’
      case 8: stem##8(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:177:3: note: in expansion of macro ‘this_cpu_add’
      this_cpu_add(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./include/linux/percpu-refcount.h: In function ‘percpu_ref_put_many’:
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:420:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_1(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:379:11: note: in expansion of macro ‘this_cpu_add_1’
      case 1: stem##1(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:521:33: note: in expansion of macro ‘this_cpu_add’
    #define this_cpu_sub(pcp, val)  this_cpu_add(pcp, -(typeof(pcp))(val))
                                    ^~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:276:3: note: in expansion of macro ‘this_cpu_sub’
      this_cpu_sub(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:421:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_2(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:380:11: note: in expansion of macro ‘this_cpu_add_2’
      case 2: stem##2(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:521:33: note: in expansion of macro ‘this_cpu_add’
    #define this_cpu_sub(pcp, val)  this_cpu_add(pcp, -(typeof(pcp))(val))
                                    ^~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:276:3: note: in expansion of macro ‘this_cpu_sub’
      this_cpu_sub(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:422:34: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_4(pcp, val) percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:381:11: note: in expansion of macro ‘this_cpu_add_4’
      case 4: stem##4(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:521:33: note: in expansion of macro ‘this_cpu_add’
    #define this_cpu_sub(pcp, val)  this_cpu_add(pcp, -(typeof(pcp))(val))
                                    ^~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:276:3: note: in expansion of macro ‘this_cpu_sub’
      this_cpu_sub(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:479:35: note: in expansion of macro ‘percpu_add_op’
    #define this_cpu_add_8(pcp, val)  percpu_add_op((pcp), val)
                                      ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:382:11: note: in expansion of macro ‘this_cpu_add_8’
      case 8: stem##8(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:511:33: note: in expansion of macro ‘__pcpu_size_call’
    #define this_cpu_add(pcp, val)  __pcpu_size_call(this_cpu_add_, pcp, val)
                                    ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:521:33: note: in expansion of macro ‘this_cpu_add’
    #define this_cpu_sub(pcp, val)  this_cpu_add(pcp, -(typeof(pcp))(val))
                                    ^~~~~~~~~~~~
   ./include/linux/percpu-refcount.h:276:3: note: in expansion of macro ‘this_cpu_sub’
      this_cpu_sub(*percpu_count, nr);
      ^~~~~~~~~~~~
   ./include/linux/percpu-rwsem.h: In function ‘percpu_up_read_preempt_enable’:
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:401:34: note: in expansion of macro ‘percpu_add_op’
    #define raw_cpu_add_1(pcp, val)  percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:379:11: note: in expansion of macro ‘raw_cpu_add_1’
      case 1: stem##1(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:424:32: note: in expansion of macro ‘__pcpu_size_call’
    #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
                                   ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:460:2: note: in expansion of macro ‘raw_cpu_add’
     raw_cpu_add(pcp, val);      \
     ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:498:34: note: in expansion of macro ‘__this_cpu_add’
    #define __this_cpu_sub(pcp, val) __this_cpu_add(pcp, -(typeof(pcp))(val))
                                     ^~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:500:30: note: in expansion of macro ‘__this_cpu_sub’
    #define __this_cpu_dec(pcp)  __this_cpu_sub(pcp, 1)
                                 ^~~~~~~~~~~~~~
   ./include/linux/percpu-rwsem.h:97:3: note: in expansion of macro ‘__this_cpu_dec’
      __this_cpu_dec(*sem->read_count);
      ^~~~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:402:34: note: in expansion of macro ‘percpu_add_op’
    #define raw_cpu_add_2(pcp, val)  percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:380:11: note: in expansion of macro ‘raw_cpu_add_2’
      case 2: stem##2(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:424:32: note: in expansion of macro ‘__pcpu_size_call’
    #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
                                   ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:460:2: note: in expansion of macro ‘raw_cpu_add’
     raw_cpu_add(pcp, val);      \
     ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:498:34: note: in expansion of macro ‘__this_cpu_add’
    #define __this_cpu_sub(pcp, val) __this_cpu_add(pcp, -(typeof(pcp))(val))
                                     ^~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:500:30: note: in expansion of macro ‘__this_cpu_sub’
    #define __this_cpu_dec(pcp)  __this_cpu_sub(pcp, 1)
                                 ^~~~~~~~~~~~~~
   ./include/linux/percpu-rwsem.h:97:3: note: in expansion of macro ‘__this_cpu_dec’
      __this_cpu_dec(*sem->read_count);
      ^~~~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:403:34: note: in expansion of macro ‘percpu_add_op’
    #define raw_cpu_add_4(pcp, val)  percpu_add_op((pcp), val)
                                     ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:381:11: note: in expansion of macro ‘raw_cpu_add_4’
      case 4: stem##4(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:424:32: note: in expansion of macro ‘__pcpu_size_call’
    #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
                                   ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:460:2: note: in expansion of macro ‘raw_cpu_add’
     raw_cpu_add(pcp, val);      \
     ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:498:34: note: in expansion of macro ‘__this_cpu_add’
    #define __this_cpu_sub(pcp, val) __this_cpu_add(pcp, -(typeof(pcp))(val))
                                     ^~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:500:30: note: in expansion of macro ‘__this_cpu_sub’
    #define __this_cpu_dec(pcp)  __this_cpu_sub(pcp, 1)
                                 ^~~~~~~~~~~~~~
   ./include/linux/percpu-rwsem.h:97:3: note: in expansion of macro ‘__this_cpu_dec’
      __this_cpu_dec(*sem->read_count);
      ^~~~~~~~~~~~~~
   ./arch/x86/include/asm/percpu.h:131:31: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
             ((val) == 1 || (val) == -1)) ?  \
                                  ^
   ./arch/x86/include/asm/percpu.h:470:35: note: in expansion of macro ‘percpu_add_op’
    #define raw_cpu_add_8(pcp, val)   percpu_add_op((pcp), val)
                                      ^~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:382:11: note: in expansion of macro ‘raw_cpu_add_8’
      case 8: stem##8(variable, __VA_ARGS__);break;  \
              ^~~~
   ./include/linux/percpu-defs.h:424:32: note: in expansion of macro ‘__pcpu_size_call’
    #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
                                   ^~~~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:460:2: note: in expansion of macro ‘raw_cpu_add’
     raw_cpu_add(pcp, val);      \
     ^~~~~~~~~~~
   ./include/linux/percpu-defs.h:498:34: note: in expansion of macro ‘__this_cpu_add’
    #define __this_cpu_sub(pcp, val) __this_cpu_add(pcp, -(typeof(pcp))(val))
                                     ^~~~~~~~~~~~~~
   ./include/linux/percpu-defs.h:500:30: note: in expansion of macro ‘__this_cpu_sub’
    #define __this_cpu_dec(pcp)  __this_cpu_sub(pcp, 1)
                                 ^~~~~~~~~~~~~~
   ./include/linux/percpu-rwsem.h:97:3: note: in expansion of macro ‘__this_cpu_dec’
      __this_cpu_dec(*sem->read_count);
      ^~~~~~~~~~~~~~
   In file included from ./arch/x86/include/asm/paravirt.h:17:0,
                    from ./arch/x86/include/asm/irqflags.h:65,
                    from ./include/linux/irqflags.h:16,
                    from ./include/linux/rcupdate.h:39,
                    from ./include/linux/rculist.h:11,
                    from ./include/linux/pid.h:5,
                    from ./include/linux/sched.h:14,
                    from ./include/linux/utsname.h:6,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:40,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/vmstat.h: In function ‘zone_numa_state_snapshot’:
   ./include/linux/cpumask.h:229:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      (cpu) < nr_cpu_ids;)
            ^
   ./include/linux/cpumask.h:764:36: note: in expansion of macro ‘for_each_cpu’
    #define for_each_online_cpu(cpu)   for_each_cpu((cpu), cpu_online_mask)
                                       ^~~~~~~~~~~~
   ./include/linux/vmstat.h:145:2: note: in expansion of macro ‘for_each_online_cpu’
     for_each_online_cpu(cpu)
     ^~~~~~~~~~~~~~~~~~~
   ./include/linux/vmstat.h: In function ‘zone_page_state_snapshot’:
   ./include/linux/cpumask.h:229:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      (cpu) < nr_cpu_ids;)
            ^
   ./include/linux/cpumask.h:764:36: note: in expansion of macro ‘for_each_cpu’
    #define for_each_online_cpu(cpu)   for_each_cpu((cpu), cpu_online_mask)
                                       ^~~~~~~~~~~~
   ./include/linux/vmstat.h:210:2: note: in expansion of macro ‘for_each_online_cpu’
     for_each_online_cpu(cpu)
     ^~~~~~~~~~~~~~~~~~~
   ./include/linux/vmstat.h: In function ‘node_page_state_snapshot’:
   ./include/linux/cpumask.h:229:9: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
      (cpu) < nr_cpu_ids;)
            ^
   ./include/linux/cpumask.h:764:36: note: in expansion of macro ‘for_each_cpu’
    #define for_each_online_cpu(cpu)   for_each_cpu((cpu), cpu_online_mask)
                                       ^~~~~~~~~~~~
   ./include/linux/vmstat.h:226:2: note: in expansion of macro ‘for_each_online_cpu’
     for_each_online_cpu(cpu)
     ^~~~~~~~~~~~~~~~~~~
   In file included from ./include/linux/efi.h:20:0,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv-linux.h:193,
                    from /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:13:
   ./include/linux/rtc.h: In function ‘rtc_tv_nsec_ok’:
   ./include/linux/rtc.h:253:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (to_set->tv_nsec < TIME_SET_NSEC_FUZZ) {
                         ^
   ./include/linux/rtc.h:258:22: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if (to_set->tv_nsec > NSEC_PER_SEC - TIME_SET_NSEC_FUZZ) {
                         ^
   /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c: In function ‘nv_start_rc_timer’:
   /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:3032:5: error: implicit declaration of function ‘init_timer’; did you mean ‘init_timers’? [-Werror=implicit-function-declaration]
        init_timer(&nvl->rc_timer);
        ^~~~~~~~~~
        init_timers
   /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:3033:28: error: assignment from incompatible pointer type [-Werror=incompatible-pointer-types]
        nvl->rc_timer.function = nv_kern_rc_timer;
                               ^
   /tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.c:3034:18: error: ‘struct timer_list’ has no member named ‘data’
        nvl->rc_timer.data = (unsigned long) nv;
                     ^
   cc1: some warnings being treated as errors
   scripts/Makefile.build:332: recipe for target '/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.o' failed
   make[3]: *** [/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel/nv.o] Error 1
   Makefile:1552: recipe for target '_module_/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel' failed
   make[2]: *** [_module_/tmp/selfgz4347/NVIDIA-Linux-x86_64-304.137/kernel] Error 2
   NVIDIA: left KBUILD.
   nvidia.ko failed to build!
   Makefile:261: recipe for target 'module' failed
   make[1]: *** [module] Error 1
   makefile:59: recipe for target 'module' failed
   make: *** [module] Error 2
-> Error.
ERROR: Unable to build the NVIDIA kernel module.
ERROR: Installation has failed.  Please see the file '/var/log/nvidia-installer.log' for details.  You may find suggestions on fixing installation problems in the README available on the Linux driver download page at www.nvidia.com.

The 304 driver is out of support since end of last year, so getting it to run on a recent system has no future since sooner or later xserver 1.20 will arrive so the driver will break completely. You can search the forum for user created patches to make it compile with a recent kernel but this will only help you kernel-wise.
For some time, you will have a better experience using ubuntu 16.04 or the like and in the long run by switching to nouveau if possible.

Thanks for the response. It’s a shame but understandable about legacy hardware support.

I was hoping to install a recent LTS release so I won’t need to revisit this too soon. I’ll try Nouveau again - see if I can get multiple monitors working this time, otherwise I’ll try a recent Mint or patched script.

I know this is an old thread but I’m wondering what you arrived at for a solution Markus. I have the same exact problem. Thanks! Vance