? ? ? ?最近在做一個BS的項目,把后臺的應(yīng)用部署在Ubuntu 16.04 LTS的server版上面,包括ES、Redis、Mysql、MongoDB、Tomcat等,Ubuntu做后臺服務(wù)器也是很常用的選擇。不過由于項目的特殊需求,客戶機不能使用windows操作系統(tǒng),還要deliver給客戶單機版應(yīng)用。既然服務(wù)器端已經(jīng)使用了Ubuntu server版,又要提供單機應(yīng)用,那就給Ubuntu裝個桌面唄!
? ? ? ?至于為什么選用Ubuntu操作系統(tǒng),我不想做過多的解釋,那與本文的目的無關(guān)。其實最簡單的一個理由就是我也可以宣稱自主可控嘍!我靠,有朋友說了,你使用了Ubuntu這樣的開源操作系統(tǒng)就可以宣稱自主可控?我只能呵呵了!我也覺得很可笑,干脆以后別叫自主可控,還是叫自主可笑吧!
? ? ? ?廢話少說,直接安裝Kubuntu。Kubuntu是基于 KDE的一個對用戶非常友好的操作系統(tǒng),其非正式的中文名稱為"酷班圖",是由Ubuntu衍生的一款操作系統(tǒng),仍采用dpkg進行軟件管理,軟件源與Ubuntu相同。它支持中文,采用KDE作為桌面環(huán)境。作為Ubuntu項目的一部分,它保持6 個月的發(fā)布周期,和Ubuntu一致。作為GNU/Linux的發(fā)行版,Kubuntu對所有人免費。Kubuntu和Ubuntu的唯一區(qū)別就是桌面環(huán)境,如果在Ubuntu中安裝KDE(并且卸載GNOME),效果和直接安裝Kubuntu將是一致的。

? ? ? ?下面就步入正題,聊一聊在Ubuntu桌面系統(tǒng)應(yīng)用過程中遇到的各種坑以及解決辦法。本文并不能解決所有的Ubuntu使用問題,只是記錄了作者在使用過程遇到并成功解決的麻煩,供有興趣的朋友參考,也為自己所做的工作留個記錄。
環(huán)境說明:
- 操作系統(tǒng):Ubuntu 16.04 LTS;
- 筆記本電腦:ThinkPad T470p,8G內(nèi)存;
- 所有的解決方案均親自實驗過;
? ? ? ?愛抱怨的我不得不吐槽一下,ThinkPad早已被聯(lián)想做爛了,可惜了我摸(作者為IBM前員工,IBMer戲稱IBM為18摸)建立的偉大品牌,聯(lián)想真敗家呀!
? ? ? ?下面就把我在使用過程中遇到的各種問題分類進行整理并提供解決方案。
一、軟件源
? ? ? ?先從軟件源說起,如果你不修改默認軟件源的話,很多軟件是無法安裝成功的。 Ubuntu默認的軟件源位于美國,這使得我們更新或下載新軟件時往往需要花費大量時間在等待下載上,并且如大家所知,在互聯(lián)網(wǎng)上我們偉大的祖國也有一堵“偉大的墻”,很多資源無法正常下載,然而國內(nèi)有很多優(yōu)秀的鏡像站點,其提供和美國服務(wù)器一樣的內(nèi)容(鏡像),而且?guī)挸渥?,何樂而不為呢?br> ? ? ? ?國內(nèi)使用的比較多的軟件源應(yīng)該是aliyun的鏡像站點,我還用過重慶大學的鏡像站點(清華也有),都還不錯,很穩(wěn)定、速度很快。
1、 備份原來的軟件源配置文件
軟件源配置文件為/etc/apt/sources.list。
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
2、 修改軟件源配置文件
sudo vi /etc/apt/sources.list
使用以下內(nèi)容覆蓋原來的文件內(nèi)容:
#阿里云鏡像
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安裝軟件的過程中遇到失敗的情況,可以執(zhí)行如下命令修復依賴關(guān)系之后再嘗試安裝。
sudo apt-get -f install
-f參數(shù)為--fix-broken的簡寫形式,可以在man apt-get 中搜索-f參數(shù)查詢到其幫助信息。

-f參數(shù)的主要作用是修復依賴關(guān)系(dependencies),假如用戶的系統(tǒng)上有某個package不滿足依賴條件,這個命令就會自動修復,安裝程序包所依賴的包。
二、網(wǎng)卡設(shè)置
? ? ? ?如果你使用網(wǎng)線上網(wǎng)的話,就需要自己來配置網(wǎng)卡及網(wǎng)絡(luò)連接了。如果使用靜態(tài)ip地址,需要配置本機的IP地址、子網(wǎng)掩碼、網(wǎng)關(guān)和DNS三項內(nèi)容。配置文件為/etc/network/interfaces,其內(nèi)容如下圖所示:

? ? ? ?如果你也像我一樣使用動態(tài)IP地址(dhcp),就按上圖3所示配置即可。如果你需要指定靜態(tài)的IP地址,則按照以下內(nèi)容設(shè)置。
auto lo
iface lo inet loopback
# The primary network interface
auto enp0s31f6:網(wǎng)卡名字
#iface enp0s31f6 inet dhcp #動態(tài)的獲取IP地址
iface enp0s31f6 inet static #靜態(tài)的獲取IP地址
address 192.168.1.104 #設(shè)置IP地址
gateway 192.168.1.1 #設(shè)置網(wǎng)關(guān)
netmask 255.255.255.0 #設(shè)置子網(wǎng)掩碼
dns-nameserver 8.8.8.8 #設(shè)置DNS,域名解析
配置完成以后重新啟動網(wǎng)卡:
方法1:重啟所有網(wǎng)卡,
sudo /etc/init.d/networking restart
方法2:只重啟指定網(wǎng)卡,
sudo ifdown enp0s31f6
sudo ifup enp0s31f6
三、WIFI設(shè)置
? ? ? ?剛開始通過Wifi上網(wǎng)正常,過了兩天再次使用wifi上網(wǎng)居然不行了,wifi連接成功,但就是無法上網(wǎng)。查了半天也不知道是什么原因,郁悶了幾天之后終于找到了解決方案。
? ? ? ?出于隱私保護的目的,Ubuntu網(wǎng)絡(luò)管理器(NetworkManager)默認設(shè)置中會不斷改變設(shè)備的MAC地址,導致WiFi無法聯(lián)網(wǎng)。要修復此問題,需要編輯配置文件,然后重啟網(wǎng)絡(luò)管理器。
1、 修改網(wǎng)絡(luò)管理器配置文件
sudo vi /etc/NetworkManager/NetworkManager.conf
2、禁用scan-rand-mac-address選項
在配置文件的最后,加入如下2行:
[device]
wifi.scan-rand-mac-address=no
3、 重啟網(wǎng)絡(luò)管理器配
sudo service network-manager restart
? ? ? ?重啟之后成功上網(wǎng)!到此問題已經(jīng)得到解決,但本著科學的探索精神,知其然還要知其所以然,個中原因要探個究竟,于是就查到了關(guān)于隨機MAC地址的說明,如下圖所示。

四、安裝瀏覽器
? ? ? ?上網(wǎng)沖浪是必須的,Ubuntu自帶了Firefox瀏覽器,但是我還是喜歡使用Chrome。
1、添加軟件源
將下載源加入到系統(tǒng)的源列表:
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,結(jié)果如下圖所示:

六、使用U盤
? ? ? ?默認情況下Ubuntu是不支持Windows上的文件分區(qū)格式的,一般Windows上的文件系統(tǒng)格式為NTFS、FAT、exFAT,要想在Ubuntu和Windows上使用Windows分區(qū)格式的U盤,需要在Ubuntu上額外安裝工具軟件,比如我安裝了exfat-utils,這樣就可以把U盤在windows上格式化為exFAT格式,Window和Ubuntu就可以通用了。
安裝exfat-utils很簡單,直接執(zhí)行如下命令即可:
sudo apt-get install exfat-utils
七、電源管理
? ? ? ?使用過程中還遇到另外一個很煩人的問題,就是每次合上筆記本電腦,默認的配置是進入掛起(suspend)狀態(tài),再次打開筆記本電腦之后卻無法喚醒(resume),按任何鍵都沒有響應(yīng)(包括電源鍵),只能強行關(guān)機重啟。
? ? ? ?在網(wǎng)上查了一下原因,大概是說掛起不喚醒主要是因為laptop_mode(便捷電腦模式)沒有開啟,于是按照網(wǎng)上的步驟安裝相關(guān)的應(yīng)用并開啟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模式是否已經(jīng)啟動,使用如下命令:
cat /proc/sys/vm/laptop_mode
如果顯示結(jié)果為0,則表示未啟動,如果為非0的數(shù)字則表示啟動了。
? ? ? ?修改配置文件/etc/default/acpi-support,更改ENABLE_LAPTOP_MODE=true。
sudo vi /etc/default/acpi-support
? ? ? ?然而在默認情況下Ubuntu系統(tǒng)會在你切換電源到電池供電時啟動laptop_mode,如果你現(xiàn)在就想啟動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
將以下三項設(shè)置為1:
ENABLE_LAPTOP_MODE_ON_BATTERY=1
ENABLE_LAPTOP_MODE_ON_AC=1
ENABLE_LAPTOP_MODE_WHEN_LID_CLOSED=1
? ? ? ?按照網(wǎng)上的說法,到此完成了電源管理工具的配置,重啟電腦就可以正常喚醒了。事情總有例外,在我的筆記本電腦上如此配置之后,竟然完全不起作用,仍然無法喚醒。只能退而求其次,在電源管理中修改配置,當合上筆記本時不讓其進入掛起狀態(tài)(或者休眠狀態(tài)),而是關(guān)閉屏幕(turn off the screen),這種方式當然不如掛起和休眠省電,只能當做權(quán)宜之計了!
? ? ? ?最后能想到原因可能是內(nèi)核的bug,升級內(nèi)核應(yīng)該可以解決這個問題,考慮到已經(jīng)安裝了很多應(yīng)用,升級內(nèi)核會有一定的風險,暫時沒有嘗試。除了升級內(nèi)核,如有哪位高人有辦法解決該問題,請不吝賜教!
? ? ? ?補充一下,后來又買了一臺T480的Thinkpad,并未出現(xiàn)這個問題,所以對內(nèi)核bug的猜測可能有誤。
八、安裝其他工具軟件
? ? ? ?對于碼農(nóng)來說,Sublime是一定要裝的。我使用了ppa的安裝方式,命令如下,不做過多解釋了。
sudo add-apt-repository ppa:webupd8team/sublime-text-3
sudo apt-get update
sudo apt-get install sublime-text-installer
九、啟動問題
? ? ? ?最后再來解決一個啟動時間過長的問題。這也是一個匪夷所思的問題,剛開始一切正常,Ubuntu桌面系統(tǒng)啟動很快,突然有一天開始系統(tǒng)啟動需要十多分鐘的時間才能進入圖形界面,這肯定不正常??!
? ? ? ?也是查了半天資料才找到了解決辦法,原來是顯卡驅(qū)動的問題,先說解決方法:
1、 編輯開機指令
? ? ? ?開機之后當進入grub引導界面時,按e鍵進入編輯開機指令的模式,在倒數(shù)第二行的末尾找到quiet splash,在其后面添加nomodeset選項,按F10或者ctrl-x進行引導啟動系統(tǒng),很快就能啟動圖形界面。
2、 修改grub配置
? ? ? ?進入系統(tǒng)之后在命令行終端編輯”/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
? ? ? ?到此問題得到解決,還是得打破砂鍋問到底,這才是一個碼農(nóng)應(yīng)有的執(zhí)著。我們來看一下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.
翻譯如下:
最新的內(nèi)核已經(jīng)把視頻模式設(shè)置嵌入內(nèi)核中,所以所有顯卡硬件程序的指定時鐘和寄存器當圖形服務(wù)器啟動時
在內(nèi)核進行而不是圖形設(shè)備運行,這使得我們在啟動時可以看到不閃的和高分辨率的好看的啟動界面,但是,
在某些視頻卡它不能正常工作而顯示黑屏,增加nomodeset參數(shù)則告訴內(nèi)核不要加載顯卡驅(qū)動而用BIOS模式
直到圖形界面運行。
? ? ? ?T480上也沒有這個問題,因為T480與T470P使用了不同的顯卡。
十、外部設(shè)備
? ? ? ?系統(tǒng)開發(fā)完了總得給客戶演示吧!那就得接投影儀嘍!現(xiàn)在的筆記本電腦一般都不帶VGA的接口了,一般都是HDMI的高清接口。T470P接上ACER的投影儀之后沒有反應(yīng),按F7鍵還是沒作用,使用xrandr命令查看也沒有HDMI的連接。T480卻沒有任何問題,接上投影音按F7鍵輕松搞定,只能懷疑T470P的顯卡有兼容性問題。
? ? ? ?成功連接投影之后,下圖所示的顯示配置中會有兩塊屏幕,一個主屏,一個是投影的屏幕,可以分別設(shè)置其分辨率。投影布局設(shè)置也還算方便,Unify Outputs表示復制主屏到投影儀,如果你想上下左右擴展屏幕的話,只需拖動一個屏幕將其放置在另一塊屏幕的上下左右四個方向即可,點擊Apply就ok了!

總結(jié)
? ? ? ?以上是本人在使用Ubuntu桌面的過程中總結(jié)的一些經(jīng)驗,要說對于Kubuntu的使用體驗,說實話其實并不好,雖然Kubuntu默認安裝了很多軟件,基本可以滿足上網(wǎng)、辦公、娛樂的需求,但是友好性、易用性、美觀性、穩(wěn)定性、可操作性方面還是趕不上Windows的,更不用說OSX了,不過Ubuntu團隊也是一直在努力改進,相對于幾年前已經(jīng)進步了不少。對于個人用戶來講,Ubuntu、Windows、和OSX,作者還是更喜歡推薦OSX的。
轉(zhuǎn)自我2018年寫的一篇微信公眾號文章,整理到簡書。原鏈接地址為:https://mp.weixin.qq.com/s/28VGhjzYDLFDBSQTOXmo9Q
2020年1月1日