4月24日,Ubuntu 8.04正式发布,当晚便将本本上的7.10版升级到了最新版,2个小时后,系统更新完毕重启,却发现显卡驱动无法正常加载,3D特效也无法开启。
上网寻找类似问题的解决办法,有帖子说,使用最新的nvidia-glx-new驱动包,但无论是使用更新管理器还是Evny,下载的驱动包都无法正常使用。
无奈之下只能尝试使用官方的run文件来编译系统内核的方法,而就在进入控制台后,显卡驱动自检跳出的出错信息引起了我的注意。控制台显示,当前系统内核版本为2.6.22,而据官方文档描述,8.04版本应该是2.6.24的,难道是内核版本不符导致了显卡驱动启用失败?
而此时,我也突然想起了Linux先进于Windows的特性--能够指定不同的内核来启动系统,而我的系统是使用自己制作的GRUB FOR DOS来进行引导的,问题会不会就出在这里?
于是打开GRUB FOR DOS的menu.lst,赫然发现了以下代码:
title Ubuntu 7.10, kernel 2.6.22-14-generic
root (hd0,2)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=35300364-2529-4edf-baac-c4d1d51788d8 ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet
title Ubuntu 7.10, kernel 2.6.22-14-generic (recovery mode)
root (hd0,2)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=35300364-2529-4edf-baac-c4d1d51788d8 ro single
initrd /boot/initrd.img-2.6.22-14-generic
title Ubuntu 7.10, memtest86+
root (hd0,2)
kernel /boot/memtest86+.bin
quiet
从代码中可以看到,菜单项指定了系统启动使用2.6.22,并不是Ubuntu 8.04使用的2.6.24版,而最新的nvidia-glx-new则是面向2.6.24内核设计的,导致了显卡驱动与系统内核版本不符,无法正常使用。
找到了问题所在,解决起来也很简单,进入Ubuntu系统查看一下2.6.24内核的具体版本号(我的是2.6.24-16-generic)记下,替换GRUB FOR DOS的菜单参数,重启系统,安装最新的显卡驱动,问题解决。
如果有朋友使用了GRUB FOR DOS,且系统从7.10升级到8.04导致显卡驱动
PS:Ubuntu7.10升级到8.04版本会使系统同时存在2.6.22和2.6.24两个内核,前者可以删除。