Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录

前端之家收集整理的这篇文章主要介绍了Ubuntu14.04+cuda6.5+opencv2.4.9+caffe配置记录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

从4月5日差不多开始安装,到今天4月15日,快两个星期了。如果加上之前自己看点Linux的时间,这折腾的有两个星期(半个月了)。哎,快装好了,我也快崩溃了,真的想放弃的时候,突然找到个博客,好像照它的步骤安装好像又装好了,哎,也醉。。非常感谢网友:法师漂流 家园落日 yjhxdzyx 海豚湾 路川 沙漠中的鱼 星雨☆空间 ζτ.指尖旋律_Faith双木三郎 星翼 东方朔 蓝雨 confine 宇宙骑士Destiny 伊丽莎白·冯·花花;特别感谢:法师漂流 yjhxdzyx 沙漠中的鱼 双木三郎 confine 宇宙骑士Destiny 东方朔 伊丽莎白·冯·花花;尤其感谢 东方朔,在那个快放弃的夜晚,你的那句不用灰心,让我特别感动。。。擦 貌似就装个 软件,写的那么矫情 哎 伤不起

本文是作为自己 装这个软件的 一个记录 由于本人菜鸟,所以写的比较啰嗦了。

本博文总体是参照Ubuntu14.04下安装Caffe总结,然后再加入了各个博客上的内容,以及自己安装的一些教训写的。

本教程安装没有安装Python和Matlab,当初参考上面那个文档也就是考虑到没有Python和Matlab简单,快捷,没想到呀里面有个大坑呀,哎,不过参考了别人的文档,在这样吐槽,貌似不太好。

安装准备工作:

如果你还没开始装caffe,只是看了几篇博客,那么恭喜你,看到这篇博客。如果你是菜比,那么你更加恭喜你看到了这篇博客。。。 不过我这配置,配到最后我发现我的电脑屏幕还会有点闪,所以建议就看看了解下整个流程就好了,我感觉我这配置还应该有点问题,哪位大神看到了里面有啥问题,麻烦告诉我呀,谢谢!

1、检查自己的GPU是否支持CUDA,linux可用以下命令来查看GPU型号:$ lspci | grep –i nvidia

只要GPU型号可以在https://developer.nvidia.com/cuda-gpus找到,就是支持CUDA的。如果还没开始装Linux,直接下载个鲁大师,看看显卡是否支持不支持就别折腾了,省事。。

2、下载各个安装包(网速好的其实可以直接在线安装,不过我这是考虑菜鸟,肯定要多次安装,所以最好还是下个包,保存在本地方便)

Cuda(最新版的是cuda7,但建议下6.5,好像cuda7还有东西不兼容,配过caffe后,我对于这个NVI的东西抱有怀疑态度。。)

NVI驱动:其实我是用cuda装好的驱动,但是可能有些人的电脑需要单独装驱动。这个语言好像选择Chinese只能下载个txt,要选UK

MKL:最新的 parallel_studio_xe_2015_update2.tgz3个多G呀,慢慢下吧,请下载Student版,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。其实网速不行搞个ATLAS也行,比较方便

@L_502_5@:有人写了个安装包,比较方便,建议使用。

Caffe:

3、制作个启动U盘,重装方便。装了这么多天,我发现这个盘对我帮助很大。。。。

4、其实 现在感觉一开始装CUDAcaffe最好还是看官网的教程,虽然我现在感觉官网的那个貌似有些也不靠谱。。。但总比网上的强点,还有,有问题找谷歌,度娘靠不住(血的教训呀)

一、装Linux双系统

我是看的网上的两个链接整的双系统,Ubuntu14.04安装及使用Win7下U盘安装Ubuntu14.04双系统步骤详解,其实装到后面,貌似就不记得安装启动引导设备选择前面划分的/boot盘,然后每次用sudo update-grub更新引导界面感觉挺麻烦的。所以每次重装系统注意这一点。装Linux双系统的话,一般先把/boot用200M单独分出来,这存在一个问题,就是一般有些喜欢把/boot作为一个主分区,在Ubuntu安装到“其他选项”,手动创建调整分区的时候,你可能看到有个区是sda1,然后是从sda5开始,然后感觉分个/boot作为主分区也无所谓,默认这Windows系统是一个主分区和一个扩展分区的模式,然后Ubuntu系统/boot作为一个主分区,其它都是扩展分区,这刚刚好。But。。。。 就比如我的电脑(其它人给我整好的,我拿来用的),C盘是一个主分区,D盘是一个主分区,E、F是扩展分区,但是你在Ubuntu安装过程中根本看不到这些,我在Windows的磁盘管理也没显示出是两个主分区和一个扩展分区,但你如果把/boot设为主分区,其它的剩余的磁盘就是不可用状态了,这还是我一次在Ubuntu看硬盘状态才发现了,这居然两个主分区(这个坑藏的有点深呀)。所以我建议Ubuntu分区全部都是逻辑分区,不要设为主分区,主动避坑。

一般装到后面 前面配错了,就要重装Ubuntu系统,我感觉最快的方法是先切换到Windows下,把Linux的分区删除卷,然后再开机装系统,这样更快,最快的时候我感觉好像10分钟左右就重装了系统,太熟练,没办法。我装的是Ubuntu14.04,这系统貌似最大的好处是,在Ubuntu下面可以直接看到Windows的文件。我由于就是跑跑小数据,先熟悉下理论,所以也就分了100G给Linux,/boot 200M 、/ 30G、swap 8000M、/home剩下的大概60G左右。

装Ubuntu的时候,一开始直接就选中文简体,然后键盘模式直接就是中文默认的刚刚好,这样就可以了。还不用费劲想是英语英国呢,还是英语美国呀,其实我们很爱国。。。

刚装好的系统,先配网,编辑连接、IPv4,手动,写IP。然后改源阿里的貌似下载速度更快点,我们要相信土豪的力量。然后更新软件列表,千万别更新软件和那啥300M的啥系统更新,不信,你就试试呗。把上面下载的各种软件安装包都拷贝到/home/username下。

二、NVIDIA驱动和CUDA 安装

个人电脑配置如下:

处理器: 英特尔 第三代酷睿i3-3220 @ 3.30GHz 双核

主板: 技嘉 B75M-D3H

内存: 8 GB ( 金士顿 DDR3 1600MHz )

主硬盘: 希捷ST1000DM003-1CH162 ( 1 TB / 7200 转/分 )

显卡: Nvidia GeForce GT 630( 1 GB / 七彩虹 )

其实这主板根本没带集显,但我当时看到别人都说啥要进BIOS设为intel显卡来显示,我一设,马上开不了机了,后来才习的扣电池大法。。偶的第一次呀。后来问到一个用技嘉主板的,他反倒说要关掉集显,单用独显,这可能更靠谱点,可以试试。不过我看官网上也没叫你设BIOS,还是别折腾了。

1.安装前需要注意的问题:

A、检查自己的操作系统是不是CUDA支持的,可以输入以下命令:

$ uname-m && cat /etc/*release

Cuda支持的操作系统,本文是Ubuntu14.04,重点是“x86_64”这一项,保证是x86架构,64bit系统

B、检查操作系统是否安装了gcc,可用以下命令

$ gcc --version

不过Ubuntu 14.04是默认有的,没也没事,本文考虑到了这种情况。。

C、下载CUDA并验证

上面已经下载了cuda

验证下载的CUDA是否有效https://developer.nvidia.com/rdp/cuda-rc-checksums

$ md5sum<filename>

例如:md5sum cuda_6.5.11_rc_linux_64.run ,这个文件的正确 md5 = a47b0be83dea0323fab24ca642346351,貌似现在那网址已经不支持验证了,那就在各个博客找找吧。这步很重要哟,必须要验证

D、安装必要的一些推荐的库

$ sudo apt-getinstall freeglut3-dev build-essential libx11-dev libxmu-dev libxi-devlibgl1-mesa-glx libglu1-mesa libglu1-mesa-dev

就这步我是参考博客Ubuntu+CUDA6.5+Caffe安装配置汇总,我自己一开安装出问题,基本就是这一步出问题,后来发现早点装这些库有好处,界面更不容闪,我就是后面装,然后界面还是有点闪。所以还是在前面装好,个人感觉更好。如果有依赖冲突的,建议分开安装,不过我安装没问题。这步里面的build-essential好像就带了gcc,所以这等于就补上了gcc这个坑。

E、处理版本冲突问题,第一次安装可以跳过这点。如果之前有装过NVIDIA驱动和CUDA的话,要卸载干净,具体卸载方法参见

$ sudo apt-get--purge remove nvidia*

不过一般装了崩了或者咋的了,我就直接重装系统了,没咋遇到这种情况。

2.安装时需要注意的问题:

A、退出GUI界面

操作方法是:同时按:CTRL+ALT+F1(F2-F6),切换到TTY1-6命令行模式。退出GUI界面后需要输入用户名、密码登陆。登陆后关闭桌面服务:

$ sudo stop lightdm

这步很重要,直接在GUI界面装肯定是会失败的!

B、Interaction with Nouveau

官网说安装前需要Interactionwith Nouveau,因为Nouveau是一个开源的显卡驱动,Ubuntu 14.04默认安装了,它会影响NVIDIA驱动的安装。(本人就死在这步了,一开始参考的那个博客,它说装不装都没问题,然后我就没装,搞得切到界面下,弄完了caffe,重启就切换到桌面啥都没了,怀疑各种问题,最后才发现就是这的问题呀!此处省略XXXXXXXX),我感觉切换不到界面的,界面就是红的一片,啥图标都没有,右键还是会出东西。。

有个鼠标,设置插个U盘,可能还会弹出个主文件夹,这种情况,我感觉大多都是这个显卡驱动装的有问题。

网上很多说要关BIOS的,我那关BIOS的独显出错了,这种情况的可以试试关集显用独显来显示,不过我没试过。

网上一般比较流行的方法是欧星宇同学的的过程,我照这没成功,不过我同事成功了。。

为了后面的操作更加方便先装个vim:$ sudo apt-get install vim百度下就知道了vim的操作方法。。

将nouveau添加到黑名单,防止它启动

$ sudo vim/etc/modprobe.d/nvidia-graphics-drivers.conf

文件中写入:blacklist nouveau

保存并退出:wq!

检查:$ cat nvidia-graphics-drivers.conf这步我查就说找不到文件,搞的又用vim去看了看,感觉不影响。

$ sudo vim/etc/default/grub

文件末尾写入:rdblacklist=nouveau nouveau.modeset=0

检查:$ cat /etc/default/grub

官网提供的操作,可以和上面的步骤连着来,不过感觉用处不大,还会报错啥的

sudomv/boot/initramfs(unamer).img/boot/initramf@H_913_301@s sudomv/boot/initramfs−(uname−r).img/boot/initramfs−(uname -r)-nouveau.img

然后重新生成initrd文件

@H_404_331@sudodracut/boot/initramfs sudodracut/boot/initramfs−(uname-r).img $(uname -r)

下面这条是nVidia官方提供的命令

$ sudo update-initramfs –u

上面这些命令可以都连着来,不过我用这些好像都不行,感觉直到看到了博客Ubuntu+CUDA6.5+Caffe安装配置汇总,加入了下面这些命令好像就好了

$ sudo chmod +w /etc/modprobe.d/blacklist.conf

$ sudo vi /etc/modprobe.d/blacklist.conf

在里面加入:

blacklist nouveau

options nouveau modeset=0

感谢朱伟,感谢网友东方朔,感觉就是上面这几条指令救了我,现在想想我那整出来的一堆问题就应该是显卡驱动

测试nouveau是否被禁用成功很简单:

▪重启之后明显感觉画质变差

lsmod | grep nouveau,如果显示为空,那么就是卸载成功了。(不过这步要重启后才能使用,这貌似我搞懂了为啥我NVI显卡驱动一直装不上,不懂,谁指导下)

c.现在可以开始安装了

安装NVI驱动(可选)

$ sudo sh./NVIDIA-Linux-x86_64-340.24.run (Optional)

好像看网上,有些人必须要先单独安装显卡驱动才行,但貌似我根本没办法安装显卡驱动,就是显示nouveau冲突,所以我也不建议单独安装NVI显卡驱动。

安装CUDA安装包

$ sudo sh cuda_6.5.19_linux_64.run

这个是Accept-yes(如上面先安装NVI驱动,这部选no)-y-enter-y-y-enter

执行完后出现以下结果:

Driver: Installedrequire reboot

Toolkit: install skiped

Samples: install skiped

看到了吗,这个CUDA安装包事实上包含了Driver,Toolkit和Samples三部分,第一次安装时把驱动装上了,只不过要重新启动。重新启动了一下,还是跟上面一样,退出GUI,记住呀,这步也要$ sudo stop lightdm,(这步我安装比较奇怪,如果按照重启之后明显感觉画质变差那我应该禁用了nouveau,但是我如果按照后面正常安装,切换到界面的时候就没桌面了,所以上面加上朱伟的这步很重要呀)不过好像不执行这步,它也会提示错误

重新执行以下命令:$ sudo sh cuda_6.5.19_linux_64.run

结果如下:

Driver: Installed

Toolkit: Installed in/usr/local/cuda-6.5

Samples: Installed in/home/username

回到GUI界面了

sudo startlightdm(其实能明显感觉画面质量更好了)

(貌似如果装cuda自带的显卡驱动出问题了,这也会进不了界面,这就要单独装NVI驱动了http://www.geforce.cn/drivers)

安装必要的一些库

按照官网http://caffe.berkeleyvision.org/installation.html#prerequisites的要求,还需要安装一些依赖项,我的系统是Ubuntu14.04,所以还需要执行以下两步:

$ sudo apt-getinstall libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-devlibboost-all-dev libhdf5-serial-dev

$ sudo apt-getinstall libgflags-dev libgoogle-glog-dev liblmdb-dev protobuf-compiler

3.安装后需要注意的问题:

A、设置环境变量:

exportPATH=/usr/loc@H_404_581@al/cuda6.5/bin: exportPATH=/usr/local/cuda−6.5/bin:PATH

exportLDLIBRARYPATH=/usr/local/cuda6.5/lib64: exportLDLIBRARYPATH=/usr/local/cuda−6.5/lib64:LD_LIBRARY_PATH

在/etc/profile(sudo gedit /etc/profile)最后面添加一句(添加不了的可以切换到root用户

exportPATH=$PATH:/usr/local/cuda-6.5/bin

保存后执行以下命令,是环境变量立即生效

source/etc/profile

B、添加lib库路径

sudo gedit /etc/ld.so.conf.d/cuda.conf,写入

/usr/local/cuda-6.5/lib64

同样,执行下列命令使其立即生效

sudo ldconfig

上面加环境变量,个人感觉比较乱,我也是看两个博客凑起来的。

4.验证安装结果

A.验证驱动的版本,和上述gcc类似,就是验证驱动和有没有问题

cat /proc/driver/nvidia/version

B.编译例子

先看一下编译器版本,执行

nvcc –V

有可能会提示nvcc没有安装,其实就是之前装的NVIDIA-CUDA-Toolkit的编译器没有安装完整,根据提示安装就好:

sudoapt-get install nvidia-cuda-toolkit

这个安装也需要很长时间,请耐心等待。但我其实没出现上述问题,我一般nvcc都过了,没出现这种情况,还存在一个坑,可能nvcc就没安装好,也就不提示NVIDIA-CUDA-Toolkit没有安装好,然后你就自然跳过这一部,然后你就悲剧了。。 这坑藏的。。

安装完后就可以编译例子了,例子默认安装在/home/username/NVIDIA_CUDA-6.5_Samples,进入这个目录,执行

Make all –j4

这个后面的-j4,指使用几个线程来同时编译,可以加快速度, j后面的数字可以根据cpu core的个数来决定,我的cpu是双核四线程,所以后面4。该过程要等待一段时间。

c.Running thebinaries.

运行编译好的文件,看看设备的基本信息和带宽信息:/home/username/NVIDIA_CUDA-6.5_Samples/bin/x86_64/linux/release,执行(擦,就找这路径,我都找了两天,一般都写的是相对路径,我直接去/bin下面找了,看到绝对路径我眼泪掉下来。哎,菜比没人权。。)

$ sudo./deviceQuery


出现类似上面这图,说明整好了

$./bandwidthTest

其实感觉Cuda如果装好了,caffe基本就装好了,感觉主要是驱动这片不好整,所以搞得特别艰难。我个人觉的,如果出现问题了,一般来说比如看不到桌面了,可以分步骤,自己重启,以确定是哪部出了问题,不然如果一直整到最后才发现问题,这就不好确定到底是哪块出错了。所以装好了cuda以后最好重启一下,如果没问题,再安装下面的步骤。

Note: 如果大家第一次安装显示的CUDA driver version和runtime version是一样的话,以下的部分可以略过。

我第一次安装时,出现了“cuda driver versionis insufficient for cuda runtime”这个错误,就是默认安装时cuda版本是6.5,但是驱动版本还是5.5。解决这个问题肯定是安装个6.5版的cuda驱动就行了。但问题没有那么简单。我从官网下了6.5的cuda驱动,安装后,别说解决问题,连ubuntu系统都进不去了。开机时就左上角有个小横线在一闪一闪的,还什么都不能输入,真是能把人急死!后来网上找到了解决办法如下:

loginthe system using root recover mode,execute:

sudoapt-get purge nvidia*

sudoapt-get install nvidia-current

sudoreboot

系统启动不了原因是显卡驱动冲突,所以我们只需卸载干净前一个驱动,只保留一个最新版的驱动即可。这个recover mode开机时按住左边的shift键就可以进入。

上面这片是我转载的原博主的,我试过没用。。。感觉更靠谱的是后面这个

不过我重装了15次左右的系统,就出现过一次这种情况,而且我还没搞定,直接就重装了,我基本没出现nvcc过不去的情况。

二、BLAS的安装

这边选择的是很多网友推荐的intel MKL,这个是收费软件,但学生可以申请免费使用,申请地址https://software.intel.com/en-us/intel-education-offerings#pid-2460-93,这里注意选择自己对应操作系统的版本,请下载Student版,先申请,然后会立马收到一个邮件(里面有安装序列号),打开照着下载就行了。这个软件非常大,3G+,下载时可以选择在线安装或者离线下载,这里强烈推荐离线下载再安装,因为我就是在线安装时出现问题了,后来卸载重新离线安装的。我是linux系统,所以下载的是parallel_studio_xe_2015_update2.tgz

在安装之前,可能需要执行以下代码,因为MKL需要一些基础的32bit库。

$ sudodpkg --add-architecture i386

$ sudoapt-get update

$ sudoapt-getinstalllibc6:i386libncurses5:i386 libstdc++6:i386

$ sudo./adb

sudo apt-get install libgtk2.0-0:i386貌似这个也可以试试

其中上面命令会有些东西安装不了,应该没事。

切换到安装文件所在目录(cd /home/username)

解压安装文件(tar zxvf parallel_studio_xe_2015_update2.tgz)

修改文件读写权限(sudo chmod a+x parallel_studio_xe_2015_update2-R)

切换到解压文件目录(cd parallel_studio_xe_2015_update2)

进行安装·

sudo ./install_GUI.sh

这是GUI界面安装,和windows一样,按照提示一步步安装就行了,路径什么的选择默认就好。Options选项中,可能会出现

我其实运行了前面那些添加32位库的指令还出现了这个,然后运行

Sudo apt-get install libstdc++ glicb libgcc(我运行显示没有找到glibc libgcc,但也就这样了

装好后需要添加library路径,具体操作是在/etc/ld.so.conf.d/下新建文件intel_mkl.conf(sudo gedit /etc/ld.so.conf.d/intel_mkl.conf),没权限的话切换到root用户来操作,建好后在文件添加

/opt/intel/lib/intel64

/opt/intel/mkl/lib/intel64

编辑完后执行

sudo ldconfig

三、OpenCV的安装

这个尽量不要手动安装,Github上有人已经写好了完整的安装脚本:https://github.com/jayrambhia/Install-OpenCV,下载后解压(unzip Install-OpenCV-master.zip),然后进去该目录,选择自己的操作系统,比如我的是Ubuntu(cdInstall-OpenCV-master/Ubuntu),执行

sudo ./dependencies.sh

进入2.4目录,给所有shell脚本加上可执行权限

cd 2.4

chmod +x *.sh

sudo ./open2_4_9.sh

其中第一步是安装依赖项,第二部是安装opencv,这个过程大概二三十分钟,慢慢等。

注意,中途可能会报错

opencv-2.4.9/modules/gpu/src/nvidia/core/NCVPixelOperations.hpp(51):error:a storage class is not allowed in an explicit specialization

解决方法在此:http://code.opencv.org/issues/3814下载NCVPixelOperations.hpp替换掉opencv2.4.9内的文件

你可以先在opencv2.4.9这个新建的文件夹内查找文件,找到后直接拉到命令行,这样能更快获得路径。

然后修改opencv2_4_9.sh,,从上到下注释

#mkdir OpenCV(已经创建并解压了文件夹)

#wget -O OpenCV-2.4.9.zip**不用下载了

#unzip OpenCV-2.4.9.zip不用解压了

#mkdir build不用创建了

再次运行sudo ./open2_4_9.sh,即可完成安装。

四、Caffe的安装和编译

这个感觉最好是在用户模式下操作,不然以后再操作caffe只能到root,不然没有权限,有点麻烦。不过安装好了以后再改也行

Caffe下载地址:https://github.com/BVLC/caffe

下载后,进入Caffe目录执行

cp Makefile.config.example Makefile.config

然后修改Makefile.config中的BLAS := atlas为BLAS := mkl,保存退出就行了。

最后是编译,执行以下三条命令:

make all –j4

make test –j4

make runtest –j4

前两步是肯定没问题的,第三部runtest,最后会有两项不通过,但是还是pass了,不影响,应该是没装python的原因。如果不需要在python下用caffe,就可以不管了。

至此Caffe安装完成!

由于显卡太渣,就没cudnn了。

五、使用MNIST数据集进行测试

Caffe默认情况会安装在 CAFFEROOT@H_403_1161@ CAFFEROOT,就是解压到那个目录,例如:home/username/caffe-master,所以下面的工作,默认已经切换到了该工作目录。下面的工作主要是,用于测试Caffe是否工作正常,不做详细评估。具体设置请参考官网:http://caffe.berkeleyvision.org/gathered/examples/mnist.html

1. 数据预处理

$ sh data/mnist/get_mnist.sh(最近貌似这下载比较卡,可以自己去网上下载)

2. 重建lmdb/leveldb文件

Caffe支持三种数据格式输入网络,包括Image(.jpg,.png等),leveldb,lmdb,根据自己需要选择不同输入吧。

$ sh examples/mnist/create_mnist.sh

生成mnist-train-lmdb 和 mnist-train-lmdb文件夹,这里包含了lmdb格式的数据集

3. 训练mnist

$ sh examples/mnist/train_lenet.sh

保存数据

  这算是自己加的吧。一般我感觉运行的程序,其实想看看这程序输出的信息,然后这些信息最好是保存在本地。这样方便查看。

$ sh examples/mnist/train_lenet.sh 2>&1 l teeexamples/mnist/文件名.txt | less

我用我笔记本再试了一下,没问题,可以装好,但是屏幕还是有点闪。那官网的GPU评分也不是那么准,我笔记本和台式机评分一样,但我台式机6分多钟,笔记本10分多钟

六、训练CIFAR-10

根据官网提示,其实跟MNIST差不多(假定也是在$home/username/caffe-master文件夹下面,也就是下面的CAFFE_ROOT

cd $CAFFE_ROOT/data/cifar10
./get_cifar10.sh
cd $CAFFE_ROOT
./examples/cifar10/create_cifar10.sh
cd $CAFFE_ROOT
./examples/cifar10/train_quick.sh
 

附送:

双系统时间相差8小时

参考链接

1、http://blog.sina.com.cn/s/blog_9db078090102vdvx.html

2、http://ouxinyu.github.io/Blogs/20140723001.html

3、http://blog.sciencenet.cn/home.php?mod=space&uid=1583812&do=blog&id=841855

4、http://www.cnblogs.com/fische/p/4090671.html

5、http://www.cnblogs.com/liangliangdetianxia/p/3980103.html

6、http://www.jb51.cc/article/p-enkmvzfq-bcv.html

7、http://www.jb51.cc/article/p-tpymojaw-bcv.html

8、http://www.cnblogs.com/platero/p/3993877.html

9、http://www.cnblogs.com/taopanpan/p/4263951.html

10、http://www.cnblogs.com/platero/p/3993877.html

11、http://www.jb51.cc/article/p-tjwftero-rk.html

12、http://blog.csdn.net/altenli/article/details/44199539

原文链接:https://www.f2er.com/ubuntu/354643.html

猜你在找的Ubuntu相关文章