安裝Ubuntu之路
用了好多年的macbook pro,終於還是到了它卡的不行的時候。想換個新款的,然而新款的竟然沒有esc鍵,我的第一反應,就是太牛(S)皮(B)了。傷疤好了太久,甚至會懷念以前受傷的日子。所以,我入手了一個配置華麗麗的win系超極本。
說實話,真特麼的瞎。電腦沒有任何問題,就是windows系統,可能真的是天生與開發相沖。你會在搗騰很多東西的時候,心驚膽戰,又意料之中的發現,某某某不支援windows作業系統,或者說操作案例中,有Linux的,有Mac OS的,就是沒有windows的,你說氣人不氣人?身為菜瓜,我實在沒有資格評論,或者黑什麼,只是聊發牢騷,以自慰。
So,最好的辦法是什麼?什麼?換mbp?恩,好想法,哥烏嗯~!當然是裝個Linux系統咯!
我選了Ubuntu做雙系統,大學學Linux的時候,實驗室裡裝的是red hat。whatever,都差不多。如果非要糾結自己選哪個,上知乎吧,有一群人就 ofollow,noindex">誰是最好用的Linux 進行了,嗯,很“深入”的探討~!
網上裝win10和Ubuntu雙系統的教程滿天飛。可是現在的國內教程啊,部落格啊,水分太多。很多人喜歡抄來抄去,可能也不是他們想抄,只是沒找到合適的方式收藏,怕自己以後忘記了,乾脆就一股腦複製過來。除此之外,很多的前排部落格(一搜關鍵字,就會出現在頭幾個的),已經是兩三年前的東西。都村村通公路,跑小汽車了,老哥,你還在告訴我騎馬走哪個山頭會更近???
===========================正文分割線,手動微笑===========================
第一關:打天下
思路很簡單。
首先是製作啟動U盤。下載 Ubuntu桌面系統 ,穩定大於一切,自己選擇版本,我裝的是18.04.1 LTS。接著就是利用剛下載的檔案,製作啟動U盤, 下個軟碟通 就好。至於製作過程, 前人之述備矣 。(別忘了備份U盤裡的東西)。這一步,通常不會有任何問題,有問題你也別問我,我不修電腦,也不懂多少作業系統,大學學的理論?哦,如果不是翻課表,我都忘了學過作業系統。
接下來是壓縮你現在的硬碟,為Ubuntu騰出空間。win10計算機管理中的硬碟管理,就可以執行“壓縮卷”的操作,不需要安裝任何磁碟管理軟體。
最後一步呢,其實也很簡單,就是進入引導系統,選擇U盤啟動,然後按步驟去但是卻會在形形色色的地方出問題。
首先,在bios中,我disabled了fast startup和Secure boot,至於原因,下文會提到(如果要按照我的步驟操作,最好先通讀一遍,看是否跟你的情況類似,再操作)。選中U盤啟動,不知道為什麼,我一選擇install Ubuntu,就宕機,所以乾脆選擇了try Ubuntu,先進系統,你會發現進來之後,桌面就有一個Install Ubuntu的按鈕,愉快~!接下來的配置過程在 這裡 。
我安裝了兩次Ubuntu,原因在下文中也有說明。那麼如何徹底的清除Ubuntu,從而進行重灌呢?格式化為Ubuntu騰出來的空間,並不足夠,bios會一直保留著ubuntu的啟動項。我下載了EasyUEFI(如果不是UEFI的,使用EasyBCD),但並不work,可能跟電腦廠商和bios的版本有關。最終的解決方案來自 youtube上的一個視訊 。
我將相關操作摘錄如下:
1.刪除Ubuntu佔用的硬碟卷; 2.以管理員的身份執行命令列,並輸入disk part 3.輸入 list disk,檢視當前有多少個硬碟,一般來說,只有一個硬碟,硬碟代號為0。如果有多個硬碟,先確定efi在哪個盤上,不確定的話,按照下面的操作,一個個的找。 4.輸入 select disk 0,選中0號硬碟 5.輸入 list partition,檢視當前硬碟上的分割槽情況。每個partition都有自己的type,有Recovery(恢復區),reserved(保留區),system(系統區),primary(主區)等。 6.找到system區的partition代號,比如2,輸入 select partition 2,選中system partition。 7.輸入 assign letter=x , 為system partition分配碟符為x(注意,系統盤,跟系統分割槽,不是同一個概念,我們俗稱的系統盤的碟符通常是C)。這時候你如果開啟“我的電腦”,會發現多了x盤。不要擔心,這個x盤在重啟之後,自動就沒有了。 8.輸入exit,退出磁碟分割槽管理 9.輸入x:, 進入x盤 10.輸入dir,檢視x盤中的內容,會發現有個名叫 “EFI” 的資料夾 11.輸入cd efi,進入efi資料夾 12.輸入 dir,檢視efi資料夾中的內容,會發現有個叫ubuntu的資料夾 13.輸入 rd ubuntu /s,來刪除ubuntu資料夾,回車之後,會需要你再次確認,輸入y來確認刪除 14.重啟
重啟之後,我進入到bios,仍然可以看到ubuntu的啟動項,電腦是華碩UX550VE,BIOS未升級,沒看版本。我進行了針對這個bios的後續刪除操作,僅供參考,不同型號的電腦不同版本的bios,操作不盡相同。首先進入到advanced mode,選擇boot選項卡,那裡可以選擇刪除某個boot項。刪除之後,不要按照旁邊的按鍵提示“F10 SAVE”,我第一次按了F10,沒看提示,就確定了,然後重啟,發現Ubuntu的啟動項,仍然在。後來發現,按了F10之後的提示,是save and reset????kidding me???又儲存又重置,是什麼鬼?我發現在刪除boot項附近,有個save的選項,那邊才是真正的儲存。儲存之後,不要退出,選擇windows boot manager啟動windows就行了。之後重啟進入bios,ubuntu啟動項,就沒有了。
僅僅是裝上了雙系統,對於經常要用到它的開發人員來說,沒有任何意義。所以我們需要裝好,並把亂七八糟的環境配好,才算完事。
第二關:破殘匪
我遇上了這麼些問題,一一介紹趟坑之旅。
1.從Try Ubuntu進Ubuntu,點選install Ubuntu,一路通行,到最後restart now,會宕機。現象就是螢幕卡在那個畫面,滑鼠丟失,顯示屏常亮,無論等待多久,都不會關機。
解決方案:強制關機~!
對,沒錯,就是這麼暴力。不清楚具體原因,ask Ubuntu上有個 2016年的BUG ,到目前為止,沒有下文。這個BUG的現象就跟我這兒很像,從後續的解決過程來看,很可能是系統的某個驅動有問題,而這個驅動,又很有可能是wifi驅動,和NVIDIA獨顯驅動。
2.強制關機之後,再開機,驚喜的發現,呀,啟動頁面竟然出現了Ubuntu和windows,無論選哪個,瀟灑一回車,就進入了對應系統的登入介面。多次嘗試,windows進入登入介面後,可以正常登入,沒有問題,但Ubuntu就沒那麼好運了。這裡要特別注意, 本次進入Ubuntu登入介面,如果能成功登入,一定要謹慎選擇重啟或者關機。因為很可能一關機,就再也進不來了。 我按我出問題的順序來說明。我的這次登入Ubuntu成功了,everything seems to be Ok。可以正常連wifi,各種顯示也正常,各種命令也都work,如果非要說有什麼不太正常的地方,就是我關機的時候,又宕機了。。。。。。
解決方案:只能強制重啟~!
其實可能的原因,跟1中的一樣。只不過這次強制重啟後,可能會遇上更大的麻煩。
3.沒錯,麻煩來了,登入,沒問題,一樣可以進來。但是忽然發現不顯示wifi功能了~!這不完犢子呢嘛~!
解決方案:無。
反正我是沒直接針對這個問題,採取什麼有效的解決方案,而是在後續出現的問題中,順帶解決了它。但不要失望,先想想,大體可能就是wifi驅動的問題。可以嘗試使用手機USB共享網路,給Ubuntu續上網路,然後嘗試操作下文所寫的更新軟體及驅動的操作。
4.我在無法顯示wifi的時候,一頭霧水,要說是沒有驅動,那也不合理,因為第一次登入的時候,是可以連線wifi的。或許是系統本身有什麼BUG,反正我選擇了,再來一次,就是刪掉重新。這一次的麻煩更大,甚至都無法正常登入,每次輸入密碼後,就宕機不動了。
解決方案:在一些國內外的論壇上,有很多人說要修改什麼雜七雜八的啟動引數。此處存疑,我並沒有採用,第一是因為自己覺得自己一頓亂改,到最後自己都不知道改了哪些地方,出了問題,就真完蛋了;第二是覺得,Ubuntu不是小作坊生產的小產品,不應該存在他們所說的那些顯而易見的BUG。相反,我在Ubuntu官網上找到了一篇關於 RecoveryMode啟動Ubuntu 的文章, 簡單的說,就是當你無法正常啟動Ubuntu的時候,嘗試進入RecoveryMode來啟動,因為RecoveryMode只會載入最基礎的元件,大部分情況下,可以成功啟動。
正是在切換RecoveryMode的時候,我發現螢幕內容顯示異常,直覺告訴我,電腦裡的獨顯在作怪。又查了很多的資料,很多資料都顯示,我遇到的問題1-4,都可能是驅動不正常導致的,而這個驅動不正常要怎麼解決呢?最起碼我需要解決兩個驅動問題,第一個是wifi,第二個是顯示卡。
Ok,RecoveryMode進入Ubuntu,這次一進來就發現,整個螢幕顯示都異常了。下面我們更新驅動,能連wifi連wifi,不能連wifi就用手機USB共享網路(不知道是不是所有手機都支援,華為是支援的)。由於一篇說明 如何安裝Ubuntu雙系統的部落格 中談到了NVIDIA獨顯驅動的問題,又大概看了一下 阮一峰先生關於Secure Boot的介紹 ,當然,我其實沒搞懂到底發生了什麼,但我照做了,進入BIOS,關掉了Secure Boot和Fast Startup。然後啟動Ubuntu,找到software & updates,長這樣
Line"/>
開啟後,因為有人說,國內網路情況不是很好,下載Ubuntu的很多東西,會失敗,或者很慢,建議Download from 阿里雲的映象,但我發現開啟software & updates之後,Download from 後面顯示的是Server from China,所以我就沒改,it works。
如果你的也是顯示Server from China,則應該也不要進行任何修改,直接切換上面的選項卡,選擇Additional Drivers。正常情況下,它會搜尋是否有需要替換的驅動。我這邊是出現了NVIDIA的驅動
Ok,切換到使用NVIDIA驅動,然後點Apply changes。如果當前你的顯示是異常的,那麼很可能點完Apply changes後沒有任何反應,並且剛選中的Using NVIDIA driver又跳回預設的 Using X.org X巴拉巴拉。遇到這種情況,你 先把當前視窗最小化,看看桌面有沒有彈起軟體更新的視窗,這個軟體更新的視窗很重要,一定要更新,如果沒有出現,多點幾次Apply changes,或者乾脆去點software updates (注意跟上面提到的software & updates不是同一個東西),長這樣
等待軟體更新完成,你可以從更新詳情中,大概發現,它似乎幫你更新了很多東西,而其中一些,似乎是針對wifi驅動,以及一些基礎的元件。更新完成之後,你再點Apply changes,就會正常apply。重啟後,login正常啟動,並且顯示恢復正常,wifi列表顯示正常,Ubuntu可以正常重啟,或關閉。
至此,Ubuntu才是一個已經能正常執行在你的硬體上的作業系統。
總結一下,其實,裝Ubuntu並沒有什麼難點,而Ubuntu本身也不會有什麼特別明顯的BUG,問題一般都是因為硬體或其驅動與Ubuntu的不相容,導致的。那最好的方式,就是第一次強制重啟後,直接連上wifi,執行上文提到的software update。
5.在Ubuntu上安裝搜狗拼音
這個沒什麼問題,首先確保Ubuntu使用的輸入框架是fcitx。如果不是,先裝fcitx,並去系統設定中,切換input method framework為fcitx。再去下載一個 sougoupinyin for linux 。
6.安裝shadowsocks client,並完成配置。
這是為了幹嘛,我就不多說了,懂的人都懂。
自己搭建server的教程很多,我是很久之前搭建的,這次直接配置的client。server的搭建教程可以參考 這裡 。一樣的,具體問題具體分析,這篇部落格裡很多地方都已經不適用於現在的搭建過程,自己分析分析。
首先 安裝Ubuntu下的客戶端 。我採用的是命令列的方式安裝的。
sudo apt-get install python-pip sudo pip install shadowsocks sudo apt-get install shadowsocks-libev sudo cpan Net::Shadowsocks
英文官網的quick-guide特別坑 ,沒頭沒尾。
我man了一下shadowsocks-libev,從中找到了ss-local命令似乎就是用來實現本地代理的。繼而找了 中文版的說明。
多諷刺,哈哈。
所以,接下來就是
sudo vim /etc/shadowsocks-libev/config.json
填入server(遠端伺服器ip),server_port(服務端埠),method(加密方式),password,具體代表什麼,中文說明裡面都有。注意這裡的local和local_port,如果不寫,則分別是預設的127.0.0.1和1080,這兩個引數代表ss-local作本地代理的時候,轉發來自127.0.0.1的1080埠的請求。這兩個引數後面要用到。
輸入下面的命令,啟動client。
sudo ss-local -c /etc/shadowsocks-libev/config.json
出現下圖顯示,則應該是啟動成功了。
啟動成功後,我們按照中文說明中的, 將socks代理轉為http代理。
安裝privoxy
sudo apt-get install python-m2crypto privoxy
修改配置檔案
sudo vim /etc/privoxy/config
其實只需要找個地方新增一行(注意最後面有個點號),這一步,127.0.0.1和1080要和上面ss-local啟動的配置檔案中的local和local_port一致。就是要將某些請求,轉發到127.0.0.1的1080埠。
forward-socks5 / 127.0.0.1:1080 .
上面說的“某些請求”其實在config檔案中有預設配置
listen-address127.0.0.1:8118 listen-address[::1]:8118
即本機發往8118埠的http請求,都會被轉到我們配置的sock5代理埠,即127.0.0.1:1080。
重啟privoxy
sudo service privoxy restart
最後一步,就是要將我們的http請求,https請求轉發到8118埠。
中文說明中寫的很“清楚”,我採用的是chrome瀏覽器。因為一開始沒有任何代理,所以打不開chrome extensions商城,不能直接安裝 SwitchyOmega外掛 。做法是先修改設定中的network選項,將network proxy改成Manual,並將埠改為/etc/privoxy/config中預設的8118。
然後再從 SwitchyOmega外掛 進入,直接安裝該外掛。其實到這一步為止,不安裝這個外掛,也可以完成代理操作了,也就是說,我們可以愉快的使用谷歌搜尋了。但正如中文說明中指明的那樣,全域性代理並不合理。所以我們需要藉助這個外掛,來限制僅僅代理chrome瀏覽器的http請求。
這個外掛的使用說明,在安裝好後,自動會跳出來。功能很強大,能實現PAC自動模式的代理。
簡單的說,這個外掛有兩種請求方式,一種是直接請求(Direct),不進行任何代理,比如我們用chrome訪問百度,就不希望各種代理,各種轉發;第二種就是代理請求(proxy),我們可以在外掛options頁面找到proxy的配置介面,並將其埠配置成8118,即我們要將chrome的http,https請求都轉發到8118埠,由privoxy將此請求轉發到ss-local的1080,再由ss-local client將請求發到我們的server,進行後續的請求操作。so crazy~!
除了proxy的配置介面之外,我們還能找到auto-switch的配置介面。在這裡,我們可以使用域名萬用字元的方式,來決定哪些請求使用Direct,哪些請求使用proxy。其實我們只用配置哪些請求使用proxy,沒有配置的域名,預設會選擇Direct。同時,你在日後使用過程中,遇到某些頁面無法訪問的時候,發現外掛亮黃色的數字,點選外掛小圖示,會出現failed resources,點選,然後選擇要使用proxy的域名,新增到auto-switch配置中就可以了。
最後別忘了,要開啟外掛,並選中auto-swich。如下圖
然後關掉上文中曾經為了安裝外掛而設定的全域性代理,將network重新設定成disabled。
到這裡,愉快~!
趟坑趟的心累,願每個開發人員,都能被溫柔以待。