最近在做一个BS的项目,把后台的应用部署在Ubuntu 16.04 LTS的server版上面,包括ES、Redis、Mysql、MongoDB、Tomcat等,Ubuntu做后台服务器也是很常用的选择。不过由于项目的特殊需求,客户机不能使用windows操作系统,还要deliver给客户单机版应用。既然服务器端已经使用了Ubuntu server版,又要提供单机应用,那就给Ubuntu装个桌面呗!
至于为什么选用Ubuntu操作系统,我不想做过多的解释,那与本文的目的无关。其实最简单的一个理由就是我也可以宣称自主可控喽!我靠,有朋友说了,你使用了Ubuntu这样的开源操作系统就可以宣称自主可控?我只能呵呵了!我也觉得很可笑,干脆以后别叫自主可控,还是叫自主可笑吧!
废话少说,直接安装Kubuntu。Kubuntu是基于 KDE的一个对用户非常友好的操作系统,其非正式的中文名称为"酷班图",是由Ubuntu衍生的一款操作系统,仍采用dpkg进行软件管理,软件源与Ubuntu相同。它支持中文,采用KDE作为桌面环境。作为Ubuntu项目的一部分,它保持6 个月的发布周期,和Ubuntu一致。作为GNU/Linux的发行版,Kubuntu对所有人免费。Kubuntu和Ubuntu的唯一区别就是桌面环境,如果在Ubuntu中安装KDE(并且卸载GNOME),效果和直接安装Kubuntu将是一致的。
下面就步入正题,聊一聊在Ubuntu桌面系统应用过程中遇到的各种坑以及解决办法。本文并不能解决所有的Ubuntu使用问题,只是记录了作者在使用过程遇到并成功解决的麻烦,供有兴趣的朋友参考,也为自己所做的工作留个记录。
环境说明:
- 操作系统:Ubuntu 16.04 LTS;
- 笔记本电脑:ThinkPad T470p,8G内存;
- 所有的解决方案均亲自实验过;
爱抱怨的我不得不吐槽一下,ThinkPad早已被联想做烂了,可惜了我摸(作者为IBM前员工,IBMer戏称IBM为18摸)建立的伟大品牌,联想真败家呀!
下面就把我在使用过程中遇到的各种问题分类进行整理并提供解决方案。
一、软件源
先从软件源说起,如果你不修改默认软件源的话,很多软件是无法安装成功的。 Ubuntu默认的软件源位于美国,这使得我们更新或下载新软件时往往需要花费大量时间在等待下载上,并且如大家所知,在互联网上我们伟大的祖国也有一堵“伟大的墙”,很多资源无法正常下载,然而国内有很多优秀的镜像站点,其提供和美国服务器一样的内容(镜像),而且带宽充足,何乐而不为呢?
国内使用的比较多的软件源应该是aliyun的镜像站点,我还用过重庆大学的镜像站点(清华也有),都还不错,很稳定、速度很快。
1、 备份原来的软件源配置文件
软件源配置文件为/etc/apt/sources.list。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2、 修改软件源配置文件
sudo vi /etc/apt/sources.list
使用以下内容覆盖原来的文件内容:
#阿里云镜像
deb http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ vivid-backports main restricted universe multiverse
或者使用清华的镜像:
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security universe
deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security multiverse
3、 更新软件源
sudo apt-get update
4、 常用的修复安装命令
如果在使用apt-get安装软件的过程中遇到失败的情况,可以执行如下命令修复依赖关系之后再尝试安装。
sudo apt-get -f install
-f参数为--fix-broken的简写形式,可以在man apt-get 中搜索-f参数查询到其帮助信息。
-f参数的主要作用是修复依赖关系(dependencies),假如用户的系统上有某个package不满足依赖条件,这个命令就会自动修复,安装程序包所依赖的包。
二、网卡设置
如果你使用网线上网的话,就需要自己来配置网卡及网络连接了。如果使用静态ip地址,需要配置本机的IP地址、子网掩码、网关和DNS三项内容。配置文件为/etc/network/interfaces,其内容如下图所示:
如果你也像我一样使用动态IP地址(dhcp),就按上图3所示配置即可。如果你需要指定静态的IP地址,则按照以下内容设置。
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s31f6:网卡名字
#iface enp0s31f6 inet dhcp #动态的获取IP地址
iface enp0s31f6 inet static #静态的获取IP地址
address 192.168.1.104 #设置IP地址
gateway 192.168.1.1 #设置网关
netmask 255.255.255.0 #设置子网掩码
dns-nameserver 8.8.8.8 #设置DNS,域名解析
配置完成以后重新启动网卡:
方法1:重启所有网卡,
sudo /etc/init.d/networking restart
方法2:只重启指定网卡,
sudo ifdown enp0s31f6
sudo ifup enp0s31f6
三、WIFI设置
刚开始通过Wifi上网正常,过了两天再次使用wifi上网居然不行了,wifi连接成功,但就是无法上网。查了半天也不知道是什么原因,郁闷了几天之后终于找到了解决方案。
出于隐私保护的目的,Ubuntu网络管理器(NetworkManager)默认设置中会不断改变设备的MAC地址,导致WiFi无法联网。要修复此问题,需要编辑配置文件,然后重启网络管理器。
1、 修改网络管理器配置文件
sudo vi /etc/NetworkManager/NetworkManager.conf
2、禁用scan-rand-mac-address选项
在配置文件的最后,加入如下2行:
[device]
wifi.scan-rand-mac-address=no
3、 重启网络管理器配
sudo service network-manager restart
重启之后成功上网!到此问题已经得到解决,但本着科学的探索精神,知其然还要知其所以然,个中原因要探个究竟,于是就查到了关于随机MAC地址的说明,如下图所示。
四、安装浏览器
上网冲浪是必须的,Ubuntu自带了Firefox浏览器,但是我还是喜欢使用Chrome。
1、添加软件源
将下载源加入到系统的源列表:
sudo wget https://repo.fdzh.org/chrome/google-chrome.list -P /etc/apt/sources.list.d/
2、导入谷歌软件的公钥
wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
3、更新软件源列表
sudo apt-get update
4、安装Chrome
sudo apt-get install google-chrome-stable
5、运行Chrome
/usr/bin/google-chrome-stable
当然你也可以通过图形界面去运行Chrome浏览器,在左下角Application Launcher->Applications->Internet中可以找到Chrome图标,点击运行。
五、安装中文输入法
给客户使用一定要“想客户之所想”,中文输入法是必须的。下面是基于Fcitx框架来安装Google pinyin。
1、安装Fcitx
sudo apt install fcitx fcitx-googlepinyin fcitx-table-wbpy fcitx-pinyin fcitx-sunpinyin
2、配置输入法
安装成功之后可以在Application Launcher->Applications->Settings中看到一只小企鹅Input Method Configration,打开它,如下图所示:
点击+号,在弹出的界面中勾掉“仅显示当前语言”,在下面输入“Google Pinyin”点击ok,结果如下图所示:
六、使用U盘
默认情况下Ubuntu是不支持Windows上的文件分区格式的,一般Windows上的文件系统格式为NTFS、FAT、exFAT,要想在Ubuntu和Windows上使用Windows分区格式的U盘,需要在Ubuntu上额外安装工具软件,比如我安装了exfat-utils,这样就可以把U盘在windows上格式化为exFAT格式,Window和Ubuntu就可以通用了。
安装exfat-utils很简单,直接执行如下命令即可:
sudo apt-get install exfat-utils
七、电源管理
使用过程中还遇到另外一个很烦人的问题,就是每次合上笔记本电脑,默认的配置是进入挂起(suspend)状态,再次打开笔记本电脑之后却无法唤醒(resume),按任何键都没有响应(包括电源键),只能强行关机重启。
在网上查了一下原因,大概是说挂起不唤醒主要是因为laptop_mode(便捷电脑模式)没有开启,于是按照网上的步骤安装相关的应用并开启laptop_mode模式,如下:
1、 安装pm-utils
pm-utils 软件包提供了简单的 shell 命令行工具,用于挂起和休眠你的计算机。pm-utils通过终端输入下面的命令可以进行挂起,休眠等操作: pm-hibernate,pm-is-supported,pm-powersave,pm-suspend, pm-suspend-hybrid。
安装软件包命令:
sudo apt-get install pm-utils
2、安装laptop-mode-tools
laptop-mode-tools是便捷电脑模式配置工具。
sudo apt-get install laptop-mode-tools
3、启动laptop_mode模式
先来判断一下laptop-mode模式是否已经启动,使用如下命令:
cat /proc/sys/vm/laptop_mode
如果显示结果为0,则表示未启动,如果为非0的数字则表示启动了。
修改配置文件/etc/default/acpi-support,更改ENABLE_LAPTOP_MODE=true。
sudo vi /etc/default/acpi-support
然而在默认情况下Ubuntu系统会在你切换电源到电池供电时启动laptop_mode,如果你现在就想启动laptop_mode模式,请直接在终端中输入:
sudo laptop_mode start
如果在上面的配置文件/etc/default/acpi-support中没有找到ENABLE_LAPTOP_MODE这个选项,那么会在配置文件的最后看到下面的提示:
# Note: to enable "laptop mode" (to spin down your hard drive for longer # periods of time), install the laptop-mode-tools package and configure # it in /etc/laptop-mode/laptop-mode.conf.
通过这个说明可以知道laptop-mode-tools的配置在etc/laptop-mode/laptop-mode.conf这个文件里。
4、修改/etc/laptop-mode/laptop-mode.conf配置
sudo vi /etc/laptop-mode/laptop-mode.conf
将以下三项设置为1:
ENABLE_LAPTOP_MODE_ON_BATTERY=1
ENABLE_LAPTOP_MODE_ON_AC=1
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
按照网上的说法,到此完成了电源管理工具的配置,重启电脑就可以正常唤醒了。事情总有例外,在我的笔记本电脑上如此配置之后,竟然完全不起作用,仍然无法唤醒。只能退而求其次,在电源管理中修改配置,当合上笔记本时不让其进入挂起状态(或者休眠状态),而是关闭屏幕(turn off the screen),这种方式当然不如挂起和休眠省电,只能当做权宜之计了!
最后能想到原因可能是内核的bug,升级内核应该可以解决这个问题,考虑到已经安装了很多应用,升级内核会有一定的风险,暂时没有尝试。除了升级内核,如有哪位高人有办法解决该问题,请不吝赐教!
补充一下,后来又买了一台T480的Thinkpad,并未出现这个问题,所以对内核bug的猜测可能有误。
八、安装其他工具软件
对于码农来说,Sublime是一定要装的。我使用了ppa的安装方式,命令如下,不做过多解释了。
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer
九、启动问题
最后再来解决一个启动时间过长的问题。这也是一个匪夷所思的问题,刚开始一切正常,Ubuntu桌面系统启动很快,突然有一天开始系统启动需要十多分钟的时间才能进入图形界面,这肯定不正常啊!
也是查了半天资料才找到了解决办法,原来是显卡驱动的问题,先说解决方法:
1、 编辑开机指令
开机之后当进入grub引导界面时,按e键进入编辑开机指令的模式,在倒数第二行的末尾找到quiet splash,在其后面添加nomodeset选项,按F10或者ctrl-x进行引导启动系统,很快就能启动图形界面。
2、 修改grub配置
进入系统之后在命令行终端编辑”/etc/default/grub”文件,
sudo vi /etc/default/grub
找到GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"这行,将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nomodeset" 。
3、 更新grub
sudo update-grub
到此问题得到解决,还是得打破砂锅问到底,这才是一个码农应有的执着。我们来看一下nomodeset的官方解释:
The newest kernels have moved the video mode setting into the kernel.
So all the programming of the hardware specific clock rates and registers
on the video card happen in the kernel rather than in the X driver when
the X server starts.. This makes it possible to have high resolution nice
looking splash (boot) screens and flicker free transitions from boot splash
to login screen. Unfortunately, on some cards this doesn‘t work properly
and you end up with a black screen. Adding the nomodeset parameter
instructs the kernel to not load video drivers and use BIOS modes instead
until X is loaded.
翻译如下:
最新的内核已经把视频模式设置嵌入内核中,所以所有显卡硬件程序的指定时钟和寄存器当图形服务器启动时
在内核进行而不是图形设备运行,这使得我们在启动时可以看到不闪的和高分辨率的好看的启动界面,但是,
在某些视频卡它不能正常工作而显示黑屏,增加nomodeset参数则告诉内核不要加载显卡驱动而用BIOS模式
直到图形界面运行。
T480上也没有这个问题,因为T480与T470P使用了不同的显卡。
十、外部设备
系统开发完了总得给客户演示吧!那就得接投影仪喽!现在的笔记本电脑一般都不带VGA的接口了,一般都是HDMI的高清接口。T470P接上ACER的投影仪之后没有反应,按F7键还是没作用,使用xrandr命令查看也没有HDMI的连接。T480却没有任何问题,接上投影音按F7键轻松搞定,只能怀疑T470P的显卡有兼容性问题。
成功连接投影之后,下图所示的显示配置中会有两块屏幕,一个主屏,一个是投影的屏幕,可以分别设置其分辨率。投影布局设置也还算方便,Unify Outputs表示复制主屏到投影仪,如果你想上下左右扩展屏幕的话,只需拖动一个屏幕将其放置在另一块屏幕的上下左右四个方向即可,点击Apply就ok了!
总结
以上是本人在使用Ubuntu桌面的过程中总结的一些经验,要说对于Kubuntu的使用体验,说实话其实并不好,虽然Kubuntu默认安装了很多软件,基本可以满足上网、办公、娱乐的需求,但是友好性、易用性、美观性、稳定性、可操作性方面还是赶不上Windows的,更不用说OSX了,不过Ubuntu团队也是一直在努力改进,相对于几年前已经进步了不少。对于个人用户来讲,Ubuntu、Windows、和OSX,作者还是更喜欢推荐OSX的。
转自我2018年写的一篇微信公众号文章,整理到简书。原链接地址为:https://mp.weixin.qq.com/s/28VGhjzYDLFDBSQTOXmo9Q
2020年1月1日