新的起点
做自己喜欢并适合的事情

导航

 

  几经折腾,终于搞定了Ubuntu下的CUDA环境,简单叙述过程如下。

  首先没有Linux下驱动安装的经验,所以最初安装Nvidia显卡驱动直接变成了升级到11.04版本,然后无法进系统,重新安装,界面方式升级Nvidia显卡驱动,还是提示c错误([drm:intel_dsm_platform_mux_info] *ERROR* MUX INFO call failed,经查可能是双显卡的问题),无语。

  每天晚上也就1个多小时,经不起这样不断重新安装系统的折腾,于是决定先搞定系统备份和恢复。受Windows下惯性,首先想到Ghost,然后发现Ghost不支持ext4的分区格式,解决的办法倒是有,将option中image类型设置为all,但是经尝试一方面时间极长,而且镜像文件极大。经过搜索,发现Clonezilla可以支持,于是下载尝试。由于没有空白光盘,又不想放在硬盘上,所以决定采用U盘方式。官方和网上的方式经验证都没有成功,官方的几种方式只能进到grub,然后就没有下文,而网上可能是老版本的配置方式,新的已经不适用(报过多种错误,如Can't find media,一直提示要登陆Domain等)。直接给出最终可以使用的方法如下:

  1.解决U盘启动的问题,我使用的是一键Ghost优盘版里面带的引导工具(一开始先用Ghost进行尝试,然后就没有改)进行分区,对U盘增加MBR(具体做法参考一键Ghost的相关说明),顺便提一下,我有两个1G的优盘,相同的操作只有一块成功,另一块死活不能引导,可能跟优盘也有关系,没有深究,所以如果失败不妨换个优盘试一下;

  2.解决引导问题,Clonezilla实际是带有引导的,但是由于前面直接按照它的文档以及网上的方式都没有成功,所以打算换自己熟悉的Grub4Dos(一键Ghost引导方式,之前爽系统也使用),一键ghost中带的grldr功能太弱(Kernel命令都没有),于是把之前引导双系统的Grub4Dos直接移过来,验证成功引导后开始修改对Clonezilla的引导配置,即在menu.lst增加新的项目。

  3.Grub4Dos引导Clonezilla, 网上也是有两种配置方式,第一种如http://forum.ubuntu.org.cn/viewtopic.php?t=289628引导iso(验证载入iso后说找不到可用的file system,可能需要进一步修改配置),第二种如http://wasabi.iteye.com/blog/546282直接将iso中相关的文件拷到U盘并修改配置(验证出现找不到可用文件系统,一直要登陆Domain等错误),最终经网上提示应该参考linuxsys.cfg(原始的引导)里面的配置,最终我的配置项如下:

title Clonezilla
find --set-root /live/initrd.img
kernel /live/vmlinuz boot=live union=aufs config  noswap nolocales edd=on nomodeset noprompt ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 toram=filesystem.squashfs ip=frommedia
initrd /live/initrd.img
boot

该方式下只需要在根目录放置grldr,grldr.mbr,menu.lst,把Clonezilla中live目录移植过来就可以顺利使用。具体用法参考Clonezilla,其实不看说明也是可以用起来的。union=aufs以后的部分是拷贝的linuxsys.cfg里面的内容(网上的始终有错误),其实keymap和lang还可有具体设置一下,免得进去再选麻烦。

  Clonezilla备份还原的速度很快,有了这个终于可以放心折腾Ubuntu了,大不了直接还原。

  继续尝试网上的Ubuntu安装Nvidia显卡的方法,界面的,手动的,经过若干次尝试后一直提示最初的问题,猛然醒悟是optimus双显卡惹的货,据网上的说法,只有win7和vista支持optimus,Ubuntu下无法使用,禁用自带的显卡驱动后是可以安装Nvidia驱动的,但是optimus显卡的3D渲染由Nvidia完成,2D渲染是由intel核显显卡完成的,所以出现上面的问题。

  问题找到就是看到胜利的曙光了,搜索optimus等关键字发现第三方软件Bumbleblee可以用来安装nvidia显卡(具体自行搜索),经验证可行,这里直接给出我采用的apt-get的安装命令:

sudo add-apt-repository ppa:bumblebee/stable
sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
sudo apt-get update
sudo apt-get install bumblebee

  那么剩下的就是安装CUDA开发环境了,头大的是还有devdriver需要安装。好吧,按照手动安装Nvidia显卡驱动的方式操作如下:

  1.安装头文件及编译环境,sudo apt-get install linux-headers-$(uname -r) build-essential

  2.禁用集成显卡(否则提示有冲突无法安装),gksu echo blacklist Nouveau | sudo tee -a /etc/modprobe.d/blacklist-Nouveau.conf

  3.关闭gdm,Alt+Ctrl+F1切换到纯终端,sudo /etc/init.d/gdm stop

  4.安装下载好的devdriver,sudo sh ./devdriver_4.0_linux_64_270.41.19.run,需要注意的是安装过程中会提示创建新的Xconf配置文件选择No,为什么?因为一旦选择就再次将Nvidia显卡作为默认显卡,那么前面的BBB就白安装了。我们所要做的就是安装好N卡驱动,并且使用其功能,并不要求其提供更好的界面效果,所以还是使用集成显卡做默认的吧,(不然继续上面的错误,呵呵)。

  5.开启gdm,sudo /etc/init.d/gdm start,进入界面使用终端继续安装。安装完驱动后可以将Nouveau还原回来(删除对应Conf),也可有保留,好像都没有影响使用。

  6.安装toolkit,sudo sh ./cudatoolkit_4.0.17_linux_32_ubuntu10.10.run

  7.添加路径,

export PATH=/usr/local/cuda/bin:$PATH 
export LD_LIBRARY_PATH=/usr/local/cuda/lib:$LD_LIBRARY_PATH 

  8.安装tools,sudo sh ./cudatools_4.0.17_linux_32.run 

  9.安装gcc4.4并设置为默认,

sudo apt-get install gcc-4.4 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.5 150 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 100 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.5 150 
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.4 100 
sudo update-alternatives --config gcc选择4.4 
sudo update-alternatives --config g++选择4.4 

  10.安装CUDA SDK并编译,

sudo sh ./gpucomputingsdk_4.0.17_linux.run

到~/NVIDIA_GPU_Computing_SDK目录下make,我的运气比较好,一次成功,然后可以看到在~/NVIDIA_GPU_Computing_SDK/C/bin/release/linux下有生成的执行文件。

  11.最后验证CUDA可用性,因为不是默认显卡,直接执行显然是不会起作用的,需要使用BBB的optirun前缀执行,即optirun ./deviceQuery查看显卡信息,还可有执行其他的生成例程。

  尾声: 网上有提到重新编译内核可以解决双显卡问题,等以后Linux更加熟悉可以尝试(http://hnwwff.blog.163.com/blog/static/32169092201162954116668/)。经过上面的方法后貌似unity界面不能使用了,应该还是双显卡驱动的问题,我现在玩Ubuntu的主要目的是在Linux下学习CUDA编程,所以目的达到了,暂时就先用着了,期待nvidia早日发布linux下的optimus驱动。apt-get真是个好东西,缺什么装什么,附录apt-get安装nvidia显卡驱动安装过程备用(http://cryolite.iteye.com/blog/657951)。国庆期间暂时先要安装win7的软件了,然后开始正式学习。

                           BSKER 于2011.10.03(补10.02)

补充,晚上回来发现缺少so的链接,检查发现没有$LD_LIBRARY_PATH,后采用如下方式添加

1.创建/etc/ld.so.conf.d/cuda.conf,内容为 

/usr/local/cuda/lib64
/usr/local/cuda/lib

 2.运行如下命令

sudo ldconfig

sudo ldconfig -v | grep cuda确认

 同时发现一个apt-get安装cuda的办法,http://www.ruyk.com/tech/?p=68

sudo add-apt-repository ppa:aaron-haviland/cuda-4.0
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install nvidia-cuda-gdb nvidia-cuda-toolkit nvidia-compute-profiler libnpp4 nvidia-cuda-doc libcudart4 libcublas4 libcufft4 libcusparse4 libcurand4 nvidia-current nvidia-opencl-dev nvidia-current-dev nvidia-cuda-dev opencl-headers

上述方式经尝试缺少lib不能顺利编译

                                                                                                            BSKER于2011.10.03

posted on 2011-10-03 10:16  Kevin W  阅读(5711)  评论(2编辑  收藏  举报