致初接觸Linux或無從下手者
某大約五年前首次使用GNU/Linux,雖然至今仍是蒟蒻,但大小也積累了一些心得,在此稍加總結,望能有所幫助。
(2017-04-06更新一點內容)
一些術語
下面會用到一些在Windows下不常見或容易混淆的術語,這裏將它們列出來。諸君可以先查詢一下並瞭解大概意思(比如看維基百科相關辭條的概要),再繼續看下邊。
- 發行版
- 文件系統
- 類UNIX
- 包管理器
有問題該去哪裏尋求幫助
- 一定要去google/百度之類的搜索引擎上搜索一次。這樣可以確保你不會用諸如“如何按下電源鍵”之類的問題來耽誤其他人和自己的時間。
- 一定要試圖去弄清楚詞的概念。不一定真正弄清,因爲有些概念都是歷史遺留;一定要先努力,因爲大部分概念還是有比較明確的意義的。
- 去相應發行版的論壇再次進行搜索。
- 去其他發行版的論壇搜索也是一個很好的做法。但是其他發行版上的解決方案一般不會直接適用於你的發行版,解決這個問題需要一定的經驗和技巧。
- 搜索wiki。一般情況下各個發行版都有wiki,上邊有很多常見問題的解決方案。個人感覺arch的wiki維護的比其他發行版要好(據說gentoo的也很好,不過沒怎麼去過)。
- 如果經歷了以上步驟仍然沒有令你滿意的答案,那麼可以去相關論壇或者郵件列表發帖求助。
選擇發行版
第一次接觸Linux的人,大約都會被龐大繁多的發行版嚇到。發行版看起來多,但其實大部分都是由三大發行版(也有說其他數的,就看個人怎麼評判)衍生出來的:Red Hat、Debian和Slackware。後起之秀archlinux也有一些衍生版,gentoo也是。這裏評判“衍生”的標準是依據所使用的“包管理器”。每個發行版都各有特色,如何選擇還是要看自己需求。
(有興趣可以掃兩眼https://en.wikipedia.org/wiki/File:Linux_Distribution_Timeline.svg,以對發行版關係有一個大概認識。)
這裏有一些個人建議:
- 如果你不喜歡折騰(或一開始想先用着),並且希望有一個“用戶友好”的圖形安裝界面,那麼,你可以考慮Ubuntu(衍生自debian)或Kubuntu(衍生自ubuntu)、Fedora(衍生自red hat)、Manjaro(衍生自arch)。
- 如果你希望自己的電腦和服務器差別不大,那麼,請選擇CentOS、Debian或者openSUSE。
- 如果你喜歡折騰,有很強的掌控慾,但對編譯等等概念並不怎麼熟悉,那麼,選一個合適的時機試試Arch。
- 如果覺得arch不過癮,而且明白軟件包是什麼玩意,而且不在乎編譯的時間等消耗,有空可以試試gentoo。
- 還有不少有名的發行版,而某沒怎麼用過,所以也不好評價。比如Mint、Deepin。對於,這些有興趣的可以在虛擬機中試試,然後自行裁決吧。
決定文件系統構成
Linux(其實是整個“類UNIX”系)的目錄結構是一棵樹,樹的根節點(用“/”表示)是必然要有的,除此以外都是可選的。
對第一次裝Linux的人,某個人強烈建議衹劃分一個/,其他目錄等你熟悉了之後再分。不過,如果你已經大約明白了,這裏有一個參考:(均就一般情況而言)
- /boot最好單獨分出,一般情況下大小不需要超過200M。爲其中一般存放的是引導相關的數據,單獨分出更保險一些。
- /home也是推薦單獨分出的。在Linux中,用戶的個人目錄就在/home下。一般而言,用戶的所有數據全都存在用戶的個人目錄(或者稱爲HOME)中。單獨分出的好處是:如果需要重裝或是磁盤出了問題,這樣比較好處理。
- /var存放的是各類經常變動的數據,比如日誌、包管理器的下載緩存。所以,對這個目錄單獨分區也是比較常見的策略。
- 其他目錄因發行版不同,作用也不太一樣,這裏不好給出建議。
另外,個人推薦等到熟悉分區管理之後,切換到LVM或btrfs以便動態管理磁盤(如果不是對btrfs有什麼特別需求的話,目前還是建議用LVM)。
裝上Linux之後做什麼
很多人都有這個困惑,某在這裏提出幾個建議:
- 有圖形界面的話先玩一玩圖形界面。若你連圖形界面都不會用,那麼某實在不知道該說什麼了……
- 打開終端,學會使用一些簡單的命令。這些命令你會經常用到,瞭解它們的基本用法很有用。例如:ls, pwd, cp, mv, rm
- 學會安裝軟件。(見下)
安裝軟件
想要長期使用一個系統,不安裝軟件怎麼行?那麼,Linux下該怎麼安裝軟件呢?
如果你上網查,有很多文章都會告訴你:下載源碼,解包,./configure,make,make install……然後你就遭到打擊,於是“憤而放棄”……
然而事實真的如此麼?顯然不是的。
比如Ubuntu等發行版提供了一個圖形化的軟件中心或類似工具,用戶可以在圖形界面下點幾下鼠標就完成軟件安裝。
看起來很簡單,很方便,不是麼?
然而,我要說,這個方法其實很複雜,很低效。
文章上邊已經提到一個叫“包管理器”的東西,都是命令行程序,我們一般情況下都是用它們來安裝軟件。
例如:Red Hat系列提供rpm工具及其“升級版”yum;Debian系列提供dpkg工具及apt-get、aptitude;Arch提供pacman……
這些程序可以在命令行下輕易使用,命令構成是:軟件名+指令+目標。例如:
- yum install xxx
- apt-get install xxx
- pacman -S xxx
這樣,如果源中有xxx這個軟件,工具會自動幫你解決依賴關係,並提示你確認安裝。確認後就會自動下載並安裝,一般不再需要人爲干預。
現在談談爲什麼我說它們那些圖形化的包管理器很低效:
- 圖形前端也是調用了命令行的後端。多一層事件處理,效率如何不問可知。
- 圖形界面的包管理器增加了許多其他功能,比如顯示圖標、顯示用戶評論、顯示截圖……然而這些功能我們真的需要麼?多數情況下用戶都是有目的而安裝軟件。既然已經決定目標了,顯示其他東西意義大麼?
最後,在離開這一部分前我還是要題一下:在任何操作系統上,從源碼編譯安裝程序都是可行的安裝方式。
建立“非Windows”的思維模式
剛從Windows轉向Linux的人一般會有一些需要克服的固有思維,列舉一些如下:
- 總是試圖去尋找“CDEFG盤”去存數據(Linux的各個文件系統格式普遍高效,沒有必要像windows那樣去分成多個分區;需要組織自己文件,用目錄就好了)
- 總是認爲圖形界面比命令簡單(圖形用戶界面和命令行各有千秋)
- 認爲桌面環境不可更換(桌面環境只是一個普通的軟件,想換成什麼就換成什麼)
- 認爲模仿Windows的發行版更好(並沒有什麼卯月系列……linux下諸多桌面環境提供的功能遠邁windows的,爲什麼要削足適履)
該做和不該做的事
這個話題純粹見仁見智,我這裏也衹是一家之言,有需要的可以一看。
- 不要去試圖記憶所有命令的參數,記住那些常用的就夠了,其他的臨時查
- 幫助維護一些社區項目,至少提交BUG信息。開源社區非常歡迎提交BUG,而且不會像某些廠商一樣對BUG報告置之不理。
- 自力更生。不要認爲其他人幫助你是理所應當。你沒有向任何人支付報酬,也沒有人欠你什麼,並且你可以自由選擇——想回Windows沒人攔着你。
- 理解“黑客(Hacker)”和“駭客(Cracker)”的區別。這裏給出一篇文章以供參考:http://translations.readthedocs.org/en/latest/hacker_howto.html
Acer 5745G Linux下關閉獨顯
本機相關基本情況:
- 顯卡:nvidia gt330m
-
雙顯卡切換技術:legacy optimus。
- 這是第二代技術,而一般意義上的optimus是第三代。
- 電腦C面有一個實體按鈕,在windows下的作用(需相應軟件和驅動)是切換顯卡。
本文所述內容該當可通用於所有此類電腦。(此技術用於多數gt330m及之前的雙顯卡筆記本)
關閉獨立顯卡使用了bbswitch。AUR上有bbswitch-dkms,當前的最新版本是0.8。
選擇dkms的目的在於我這裏有兩個內核,而arch官方源中的bbswitch是爲目前最新的3.13內核編譯的。
安裝過程不再贅述,裝好之後
sudo modprobe bbswitch load_state=0 unload_state=1
一下試試看能否載入。
若未提示錯誤,執行
lspci | grep VGA
看輸出。若獨立顯卡後邊顯示rev ff
,則其應當已經被關閉。(可以考慮用電池測試一下耗電情況XD)
如果一切順利,做以下兩步:
-
在
/etc/modules-load.d/bbswitch.conf
中加入bbswitch
-
在
/etc/modprobe.d/bbswitch.conf
中加入options bbswitch load_state=0 unload_state=1
之後重啓,若未報錯,則已載入成功,獨顯也該當關閉。
享受續航提升之事吧:P
以上方法已在3.10-lts內核測試,理論上適用於3.12之前的內核。而3.12及以上版本內核由於某些原因(也許是電源管理方案變更)會有問題,至今沒有解決現時狀況見下。
[2014.4.27]
3.12版內核沒發現怎麼關閉掉,bbswitch會有問題。
3.13沒怎麼測試。
3.14下不再需要bbswitch(實話是如果使用依然會有錯),內核已經接手這個工作,會自動關閉獨顯。但是續航沒有達到上邊用bbswitch時候的狀態,具體原因不確定。
“泛化”與“繼承”
據說“泛化”與“繼承”是一個意思,然而某怎麼想怎麼不對勁。
泛化翻譯自generalization。如果某理解不錯的話,
繼承翻譯自inheritance。
這樣看來:“泛化”指進行抽象 以便從低抽象層級到高抽象層級;“
由是,UML圖中那自低指向高的箭頭應是泛化而非繼承。可能是因爲過它描述了繼承關係,所以有人將其誤稱爲繼承。
我爲什麼使用傳統漢字
不知何故,這兩日關於簡化字這個東西的(討論|爭論|議論)大大小小有至少四次。這裏寫篇文章敘述一下我的觀點,同時歡迎禮貌的討論。
首先,爲了搞清楚下文所用的幾個術語,請閱讀BYVoid大牛的這篇文章。然而這篇文章中缺少一個對個人使用的漢字的稱呼,所以某稱之爲“傳統漢字”或簡稱爲“傳統字”,順便可與英文的Traditional Chinese相對應。
註:希望諸討論者不要搞混這些概念。
第一個問題:爲什麼不用簡化字。其理由如下:
- 簡化字亂合併不同的漢字。例如“後”和“后”、“干”“幹”“乾”,以至於有些號稱“精通繁體字”的人鬧出了“皇後”和“幹屍”這樣的笑話。
-
簡化字並不如課本說的那樣是“符合漢字的發展規律”的。從小學直到高中的(漢)語文課本中,均有一個很大的謊言,那就是:“漢字簡化是歷史的潮流……簡化字是符合漢字發展規律的。”然而實際上,漢字的發展規律是構成上的複雜化。本朝的簡化字卻逆歷史潮流而動。舉幾個簡單的例子:
- 早先的時候只有“直”這個字,後來爲了區分不同的意義,衍生出了“值”“植”“殖”等字。
- 甲骨文中只有“云”(當然,不是這樣寫的)這個字。到了篆書的時候,爲了明確表達不同意義,分化出表達說話的“云”以及和cloud一個意義的“雲”。然而我朝的簡化字卻復了三千年前的古,如何可稱爲合歷史規律?(如果你仍然覺得合併是合理的,請問上邊的例字是不是也應該合併?)
- 簡化字並不足以稱爲一種新的“字”。歷來漢字的變化——不論是篆書到隸書還是隸書到楷書再有後來的宋體(明體)——均是整體性的,即所有字的構形都要進行一些變化,然而這些變化是有規律可循的,所以變化起來沒有太大的難度。然而一簡字只有幾千個(貌似是2000餘個),而漢字總量怎麼說也有數萬個,數千對數萬,只能說寥寥。且歷史上漢字的變化有一個很重要的推手是書寫工具的變化(篆到隸、楷到宋),然而我朝搞簡化字與此並不相干。
-
簡化字沒有減少識字量,反而在事實上增多了字數。這主要是因爲符合相同“簡化規則”的字,一部分被簡化而另一部分沒有被簡化。一些例子如下:
- “幹”變成“干”,然而仍然需要記憶“擀”。
- “趙”變成“赵”,然而“肖”、“消”、“銷”等字的聲旁並沒有變成“⨯”。
- “歡”變成“欢”,然而仍然需要記憶“灌”“獾”等字。
-
簡化字事實上沒有減小識字複雜度,反而增加了複雜度。這主要是由於形聲字聲旁被替換成無意義的字以及上一條所述的原因。一些例子如下:
- “漢”“嘆”“難”本爲形聲字,但是聲旁均變成“又”,讓人完全摸不到頭腦。
- 如上述的“歡”、“灌”、“獾”等,本爲同一組形聲字,卻被簡化而打散,記憶起來難度增加不少。更嚴重的是會讓人意識不到漢字間的聯繫。
- 政治原因。這個問題比較複雜,而且關於具體政治原因也有不小爭論。個人推薦參考本文末尾給出的鏈接中的那本書中的理由。
關於受簡化影響而導致混亂的字,參見我的這篇文章
第二個問題:爲什麼是傳統漢字。或者說,爲什麼不是“香港繁體”、“臺灣正體”或者別的什麼。
這個問題的答案很簡單:某的訴求是將現在與華夏數千年的傳統重新接上,讓傳統成爲我們的助力或是後盾,但絕對不是累贅。不論是香港、臺灣還是日本、朝鮮,他們用的漢字中也含有相當數量的俗字,無法完成“承接”這個任務(這個問題可以參見上邊給出的BYVoid大牛的文章最後一部分)。所以我們需要一套合適的、刨除現代政治影響下的字形,並(在可能的情況下)統一漢字文化圈的漢字字形。
最後,希望有興趣的可以看一下彭小明先生的《漢字簡化得不償失》。這裏給出一個鏈接。