# mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
# dracut /boot/initramfs-$(uname -r).img $(uname -r)
以上和网上步骤大差不差,接下来问题来了
四:在终端输入
#init 3
进入文本模式。
输入root和password,进入根用户模式下,确保nouveau kernel driver没有被加载
[root@localhost ~]# lsmod | grep nouveau
cd 到下载的显卡驱动所在目录(即NVIDIA-XXXX.run目录)
在此目录下执行:
#sh NVIDIA-XXXX.run
错误为:unable to find the kernel source tree for the currently running kernel.........
将上述语句换成:# ./NVIDIA-XXXX.run --kernel-source-path=/usr/src/kernels/内核号(2+Tab键 自动出现)
上述错误没了,但是新的错误产生了:unable to load the kernel module 'nvidia.ko' .........
将上述语句改成:# ./NVIDIA-XXXX.run --kernel-source-path=/usr/src/kernels/内核号 -k $(uname -r)
如果出现
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h orinclude/config/auto.conf are missing.
Run 'makeoldconfig && make prepare' on kernel src to fixit. 这种错误也是遇见了几次,频繁不能解决。今天终于知道原因了。当编译linux内核模块代码时。要确定,你所用的头文件和你所引用的代码是否存在。
由于也可能是你写的代码太老,也就是内核版本太高。比如我用的linux内核版本是:2.6.33.20
而在2.6.33之后的版本中include/linux/autoconf.h已经被移到其它的地方了。没必要再手动指了就,内核可以自动分配。同时也没有必要再使用make menuconfig了,甚至不用修改他了,因为内内核可以自动分配了。甚至makeoldconfig也是不需要了,
在我这是种情况:
make oldconfig && makeprepare
make: *** 没有规则可以创建目标“oldconfig”。停止。
我的主要原因就是编译的东西太老了,在sourceforge中显示所需要的东西是2.6.18之前的东西。所以不可能会编译通过。
我去目录下找这个文件,也是找不到的。
关键就是要版本匹配。
要么1、更新make.
要么2、
下一个以前的内核源码
,在老版本的源码下编译(指定文件的位置),如果需要也可以将其添加到内核中,这样就可以编译成功了。这里我采用的是第二种方式。
OK!成功!
六:#init 5 回到界面模式