1 问题
安装Ubuntu 16.04后,发现第一次能够进入桌面,之后每次启动就一直黑屏,无法进入桌面了,表现为以下几点:
- 第一次能够进入桌面
- 重启后进入闪一下花屏,然后就一直是黑屏
- 重装十几次还是如此,换用Ubuntu 14.04也是如此
同时还发现没有声音,无法播放音乐,虽然进度条在走。
2 原因
百度之后发现,博主的电脑用的是Nvidia显卡,Linux对Nvidia的显卡支持不是很好,Ubuntu 16.04使用开源驱动,导致黑屏,所以我们要更换为Nvidia的官方闭源驱动。由于Nvidia的官方驱动是不开放源码的,所以Ubuntu是不能预装的,需要我们自己安装。安装Linux驱动,一听就是让人头大的事情,好在经过一番摸索,博主找到一个很简单的方法,解决了问题。
Ubuntu 16.04 没有声音,百度之后发现这是个很普遍的问题,同一台机器在Ubuntu 14.04上可以愉快的听音乐,到了16.04就不行,这着实让人头大,而且百度搜狗后无解,各种安装驱动、检测声卡、重装模块看看都复杂,而且百度大都是些14.04、12.04无法播放声音的文章,信息太落后,强烈鄙视百度这个不思进取的渣渣。相比而言,搜狗的结果就很新了,基本都是16.04的信息,然而还是没有找到解决方法,最后,只好使用搜狗搜英文,最终在askubuntu论坛上找到了解决方法.所以:
强烈建议: 遇到问题请用搜狗搜英文,不要用百度那个渣渣
打个广告: 博主找到的都是很简单优雅的解决方法,不涉及驱动代码编译等,还不快关注一下博主^^
3 安装Nvidia驱动
解决安装Ubuntu 16.04后黑屏问题的方法是安装Nvidia官方驱动。 第一次进入桌面后,进入系统设置,点击软件更新,选择附加驱动选项卡,然后就会有可用的Nvidia的显卡驱动推荐安装,选择一个官方驱动就可以了,如下图所示:
如果你的电脑无法进入桌面,则在启动进入grub后,按e键进入引导临时编辑模式,按键盘左右箭头移动光标,找到 quiet splash,在后面添加 nomodeset,注意中间有个空格,然后按F10启动系统,就可以进入桌面了。
4 解决无声音的方法
这个问题,百度搜狗了半天无解,最后用搜狗搜英文,在askubuntu论坛上找到了一篇帖子解决了问题,这里要表扬一下搜狗,这篇帖子是昨天才发表的,上面的答案是几个小时前才发表的,搜狗今天就搜到了,果然牛B啊,下面就是这篇帖子的地址:
http://askubuntu.com/questions/797165/no-sound-in-ubuntu-16-04
博主看到这篇帖子的时候只有一个回答,并没有人已经解决了这个问题,也就是说没有一个答案解决了这个问题,我是受到别人的回答的启发,自己摸索出来的解决方法。下面进入正题:
输入下面命令安装pavucontrol:
sudo apt install pavucontrol
pavucontrol
打开pavucontrol的窗口,切换到Configuration选项卡,如下图:
把show后面选择All Output Devices,Port后面选择Headphones(unplugged)
好了,现在可以愉快的听音乐了。博主之前的Port选择的是Line Out (unplugged),切换到Headphones(unplugged)后,音乐一下子就出来了
5 写入配置文件
如果你按照我的方法设置之后解决了问题,那么你就会发现每次开机后都要设置一次,也就是说pavucontrol并不能自动保存我们的配置,需要我们自己设置默认的选项,每次我开机后都要把上面的操作做一遍才能愉快的听上音乐,在写完这篇博客一段时间后,博主通过搜狗搜英文终于解决了这个问题,先贴一下博主搜到的帖子,博主就是根据这篇帖子解决问题的:
下面具体操作,打开终端输入下面的命令:
pacmd list | grep "active port"
可以看到博主正在使用的音频输出端口是analog-output-headphones,这个时候是可以听音乐的,再看之前没有声音是因为端口使用了Line Out,改为headphones就可以播放声音了。好了,现在我们就设置默认的音频输出端口是analog-output-headphones。打开/etc/pulse/default.pa:
sudo gedit /etc/pulse/default.pa
在末尾追加:
set-sink-port 0 analog-output-headphones
重启,不用设置也可以播放音乐,ok,问题解决。
6 继续补充
后来博主又遇到了多个输出端口的情况,如果你按照上面的方法写如配置文件,结果发现没有效果,甚至输入pavucontrol命令连音频设置软件都打不开了,那么很可能你的电脑有多个音频输出端口,如何判断呢,输入命令:
pacmd list | grep "active port"
看下图:
如果激活的端口中,输出有两个的话,那么你就有多张输出card,例如图中hdmi-output-0是一个输出端口是英伟达显卡的音频输出,analog-output-headphones又是一个输出端口,是主板内置的输出端口,怎么办呢?我们要搞清楚端口的顺序,先执行下面的命令:
pacmd list > a.txt
在当前目录中会生成一个a.txt文件,用gedit打开,然后搜索”active port”,博主搜到了三条结果,和上图结果是一致的,根据第4段的内容,现在我们需要默认使用analog-output-headphones这个端口才会有声音,所以我们找到active port后面跟的是analog-output-headphones端口的那一行,也就是下面这段代码所在的行:
active port: <analog-output-headphones>
向上翻,找到这一行所在的段落的index,目的是找到这个端口所在的card,在系统中的顺序,大概内容如下:
* index: 1
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
driver: <module-alsa-card.c>
........中间内容省略掉...................
active port: <analog-output-headphones>
好了,analog-output-headphones这个端口所用的card的顺序是1,那么接着打开/etc/pulse/default.pa:
sudo gedit /etc/pulse/default.pa
在末尾追加:
set-sink-port 1 analog-output-headphones
注意中间的1,就是我们找到的顺序号。重启,就可以解决问题了。
还是要灵活变通。
7 总结
解决方法只值1美元,但是知道怎么解决值99美元。
博主自己摸索出了这么简单优雅的解决方法,还不赶紧关注博主,请记住我的博客—”梧桐那时雨”。
8 转载请注明来自”梧桐那时雨”的博客:http://blog.csdn.net/fuchaosz/article/details/51886878
Tips
如果觉得这篇博客对你有帮助或者喜欢博主的写作风格,就给博主留个言或者顶一下呗,鼓励博主创作出更多优质博客,Thank you.