Ubuntu 進階優化和調校

出自Ubuntu 正體中文 Wiki

跳轉到: 導航, 搜尋

目錄

前言

Ubuntu 作為一個使用者親和力高的作業系統,在設計上就是希望"越少手動調校越好",因此需要考慮到系統的泛用性,必須以"最廣大的使用者群"作為優先考量,其中有些功能都需要較多的硬體資源。

實際上,根據國外Benchmark評測的結果,預設的Ubuntu效能已經不差,以今日的電腦配備來執行它已是綽綽有餘,所以不需要再特別做調整,但如果有需要的人,仍然可以嘗試對它做進階的優化、加速。

因本文提及的優化動作會牽涉到系統變更,也有可能造成系統無法正常工作,因此請在動作執行前,備份重要檔案。


更改置換檔(swap)使用率設定:

swap使用率設定的設定介於0~100 (%) 預設是60, 如果數值越高, (最多100)則在swap工作量會越多,也就越操硬碟。

筆記型電腦的話, 可以考慮將Swapiness設成 20 (考慮到休眠模式), 擁有足夠的記憶體 (1GB +) 的一般桌上型電腦可以考慮設成 10

先備份:

sudo cp /etc/sysctl.conf /etc/sysctl.conf.bak

編輯:

sudo gedit /etc/sysctl.conf

捲到該文件最底部, 加這行:

vm.swappiness=10

圖片:Sysctl.png

儲存離開

重啟sysctl讓設定生效:

sudo sysctl -p


關掉ipv6

sudo gedit /etc/modprobe.d/bad_list

把下面這行貼進去然後儲存關閉:

alias net-pf-10 off

圖片:Bad list ipv6.png


使用readahead

在一兩年前,Linux 核心尚缺乏一個好的的硬碟預讀機制時,桌面系統的使用者若要加速開機的速度,通常得先解決磁碟存取速度的瓶頸問題。 現在有 readahead 這樣的工具可以來預先載入想讀入的檔案,以便提高系統載入的速度。

詳見: http://people.debian.org.tw/~chihchun/2008/09/09/readahead-on-eeepc/

安裝:

sudo apt-get install readahead

不用設定,但Grub需要做Profile,請依照下列步驟:

Grub Profile

會將一些基本的開機動作給"歸檔",之後開機速度會稍微加快,適合在大量移除、新增套件、以及更新kernel之後執行一次:

重開機, > 按ESC > 進入GRUB選單, Ubuntu開機那行按E編輯 >

圖片:Grubbootmenu.gif

第一行再按E編輯 >

圖片:Grub-edit-kernel-line.jpg

第一行(kernel)那行最後面加入:

<空格>profile

Enter, ESC退出,同一行按"b"繼續開機,這次開機會很花時間,以後就不需要再做一次 (除非 之後有大量移除、新增套件、服務、以及更新kernel)

使用localepurge清除不需要的語言檔

功能說明:一般人通常都會固定使用一種語文..在 i18n 的架構下 , 各國的語文都會有自己一套 locale data , 這當中最明顯的資料就是軟體翻譯檔案 , 有些軟體會提供多國語文的支援,因此當您安裝完一套軟體之後..該軟體可能也順便加裝了好幾國語文的 locale data 對於使用固定語文的人來說..其他沒用到的 locale data 就佔了硬碟空間,千萬別小看這些翻譯檔案..將很多軟體的各國 locale data 加起來也是很大的... 所以這時候我們就需要 locale data 的清道伕 - localepurge .

安裝:

sudo apt-get install localepurge

裝好會跳出這個畫面:

圖片:Localepurge.png

可用鍵盤上的方向鍵或滑鼠滾輪捲動項目,並以空白鍵選取

只選擇EN_US和zh_TW, zh_TW.EUC-TW, zh_TW.UTF-8

按<TAB> 、<確定>

使用PCMAN trans-purge

trans-purge 顧名思義,這是用來移除系統上無用的多國語言翻譯, 很多人都知道 localepurge,但是系統上可以 purge 的其實還有很多地方

我們只用英文和 zh_TW,但是這些檔案內卻常包含十幾國翻譯, 因此會造成系統載入速度的拖慢,也浪費磁碟空間

desktop-purge 就是用來自動掃瞄系統上的 *.desktop 檔, 然後把其中用不到的翻譯全部刪掉,再存檔回去, 使用方式: 以 root 權限直接執行 desktop-purge, 主要會加速的是 gnome-panel 一類,需要產生選單的程式, 效果很明顯。 我系統上需要載入的設定檔從 2 MB 減為 2xx KB。

mime-purge 是從 mime-database 裡面拿掉用不到的檔案敘述, 主要能加速的對象是檔案管理程式 (對 PCManFM 有效), 使用方式: 以 root 權限直接執行 mime-purge

gconf-purge 會從 gconf 的 schema 檔裡面抽掉無用翻譯,可以從系統上從原本的 20 MB 清除完剩下 1.5 MB,相當可觀, 使用方式: 以 root 權限直接執行 gconf-purge

所有用不到的翻譯會被清除掉 (無法復原), 保留下來的語言是英文以及「目前使用中的 locale」


1. 必要編譯的套件

sudo apt-get install build-essential

OR

sudo apt-get install libglib2.0-dev

下載原始碼:

2. 編譯程序:


gcc `pkg-config glib-2.0 --cflags --libs` -o desktop-purge desktop-purge.c
gcc `pkg-config glib-2.0 --cflags --libs` -o mime-purge mime-purge.c
gcc `pkg-config glib-2.0 --cflags --libs` -o gconf-purge gconf-purge.c


3. 安裝程序:

sudo cp desktop-purge /usr/bin/
sudo cp mime-purge /usr/bin/
sudo cp gconf-purge /usr/bin/


4a. 手動清理:

            • 注意 Ubuntu 8.10的使用者請勿使用mime-purge! 否則Ubuntu整個檔案關聯都會跑掉 ******

1. 建議優先把家目錄下的.gconf (隱藏的資料夾) 先備份起來

2.把 /usr/share/mime 備份起來

3. 把 家目錄下的".local"(隱藏的資料夾) 備份起來

4. .desktop檔案就不用管了,不會有事的。

開始執行清理:

sudo desktop-purge
sudo mime-purge
sudo gconf-purge

如果MIME不幸損壞,可以參考以下修複方式:

sudo apt-get install --reinstall shared-mime-info
sudo update-mime-database /usr/share/mime
重新登入系統

4b. 自動清理:

讓每次 apt-get 安裝軟件後自動進行清理。建立這個檔案

sudo gedit /etc/apt/apt.conf.d/99-transpurge

貼上以下內容並儲存:

DPkg
 {
 Post-Invoke {"if [ $(ps w -p "$PPID" | grep -c remove) != 1 ]; then /usr/bin/desktop-purge > /dev/null; /usr/bin/mime-purge >/dev/null ; /usr/bin/gconf-purge > /dev/null; else exit 0; fi";};
 };


警告:無用翻譯在清除後無法還原,若使用後造成系統損壞,作者並不負責。

使用Preload

Preload可以在背景監控你最常用哪些程式,然後事先把那些程式載入快取,這樣當你要執行這些程式時,就可以快速啟動。 ("感覺上"應用程式啟動速度會增快)

安裝

sudo apt-get install preload

不用設定


使用Prelink

prelink 是加快 ELF shared libraries/executables 的載入速度,不算是檔案快取,可以提升應用程式的啟動速度:

安裝

sudo apt-get install prelink


此外在debian及ubuntu下都已有設定檔可定時執行,

sudo gedit /etc/default/prelink

加入

PRELINKING=yes

已有/etc/cron.daily/prelink,如此便會由cron自動執行,除了第一次時間很長外,

後續應該速度都很快,除非你upgrade整個系統所有檔案。

在硬體配備較差的機器上,Prelink所有檔案並不是個好主意,因此可以用手動處理prelink,只針對某些應用做Prelink

可以下如此參數

   sudo prelink -avmR

其中參數代表

a    對/etc/prelink.conf 中所紀錄的全部位址進行prelink
v    顯示正在處理的內容
m    節省記憶體,他可以讓兩個不會被同時使用的函式庫共用同樣的虛擬位址
R    分配亂數位址,能減輕緩存溢位攻擊的狀況


範例: 只針對 Firefox做prelink

sudo prelink -Rm /usr/lib/firefox-3.0.3

範例: 加入開機自動執行:

sudo gedit /etc/init.d/prelink-fx.sh

加入:

#!/bin/sh
sudo prelink -Rm /usr/lib/firefox-3.0.3

儲存、退出 ......

加入開機指令稿,讓他開機時自動prelink

sudo update-rc.d prelink-fx.sh defaults

關閉不需要的Gnome作業階段

登入時取消不必要執行的程式可加快進入桌面的速度。

系統 => 偏好設定 => 作業階段 =>

圖片:作業階段設定.jpg

將不需要的程式取消勾選,例如沒有藍牙的可以取消"藍牙管理員",不用tracker (搜尋索引)可以取消"Tracker",還有"視覺輔助"等等....


關閉不必要的系統服務(Service)

去掉不必要的服務可以減輕系統負載和加快開機速度:

系統=> 管理=> 服務 => 解除鎖定 =>

圖片:服務設置.jpeg

特別注意: 有些服務關閉會造成開機問題:

以下請不要隨便關閉:

  • powernowd
  • portmap
  • dbus
  • gdm
  • acpid
  • winbind
  • acpid


使用sysv-rc-conf關閉更多系統服務(Service)

特別注意: 有些服務關閉會造成系統異常,如果您不熟悉這些服務是什麼,請勿動他,上網查詢明白後再決定是否關閉它:

安裝:

sudo apt-get install sysv-rc-conf


在我們開始搞亂它們之前,我要在這裡引入一些運行等級知識 ....全部開機進程執行順序如下:

  • 運行等級 S:開機進程中的第一個運行等級。/etc/init.d/rcS腳本將被調用到開啟並且/etc/rcS.d目錄下的所有進程將被執行。
  • 運行等級 1:單用戶模式。/etc/rc1.d目錄下的所有進程將被執行。
  • 運行等級 2,3,4,5:在debian系統裡是多用戶環境,可能不包含圖形用戶界面。同樣的,在相應目錄下的進程將被運行。
    • 注意** 這和RedHat,SuSE, 以及其它基於RPM的系統不同。

運行等級 0:關閉計算機

運行等級 6:重起計算機

執行:

sudo  sysv-rc-conf

圖片:Sysv-rc.png

上下鍵可以選擇要變更的服務,<SPACE>鍵可以勾選或取消勾選服務,<q>鍵退出

服務說明可以參考:

微調關機和重新啟動速度

以管理員身份開啟檔案總管:

gksu nautilus 

瀏覽到 :

/etc/rc0.d 
/etc/rc6.d

按下"搜尋"鈕,找: "K"

將所有列出來K開頭的 "K0xxxx" 的大寫"K", 全部改名改成小寫"k"

圖片:Etc-rc0.d.png



加速EXT3檔案系統

  • 注意1: 使用writeback模式要注意,如果系統運行中電源突然關閉 (或reset),有很大的機率丟失硬碟資料
  • 注意2: 此設定只適合ext3格式的磁碟分割
  • 注意3: 此設定牽涉到修改開機檔和裝置掛載設定檔,因此有無法開機的風險,不適合新手操作,除非使用者知道怎麼用Live CD登入並回覆備份。

EXT3檔案系統有三種日誌模式

  • data=journal
  • data=orderd
  • data=writeback

Ubuntu預設是: "data=orderd",是最保險穩定的日誌模式,但是"data=writeback"模式會較有效率 (但沒有"ordered"那麼萬無一失),如果不介這點的話,可以依照下列方式考慮將預設日誌改為"writeback"

1. 因為將更動到Grub開機選單,所以請備份你的menus.list :

cp /boot/grub/menu.lst /boot/grub/menu.lst.backup 

如果無法開機,可以用Live CD進入,掛載/boot,進入/boot/grub,把舊檔拷背回去

2. 編輯menus.list

sudo gedit /boot/grub/menu.lst
  • 找到第一行kernel描述
  • 後面加入:
<空格> rootflags=data=writeback
最後看起來會類似:

圖片:Gedit.menu.lst..png

儲存、離開。


3. 修改fstab (開機自動掛載設定檔) :

首先備份fstab

sudo cp /etc/fstab /etc/fstab.backup

編輯fstab

sudo gedit /etc/fstab

現在要加入《data=writeback,noatime》至你的硬碟掛載設定:

Control + F : 找到  《,errors=remount-ro》

然後在"ro"後方加入:

《,data=writeback,noatime》 

最後看起來像是:

圖片:Data=writeback.png

存檔、離開

4. 執行tune2fs 讓設定生效:

sudo tune2fs -o journal_data_writeback /dev/*ext3硬碟分割代號*

代號可以用以下指令確認:

df -h

檢查看看有沒有套用成功:

sudo tune2fs -l /dev/ext3硬碟分割區代號

重新啟動系統。

sudo reboot now



移除tracker索引

Ubuntu 7.10 之後預裝的tracker索引是類似Google Desktop Search那樣的桌面搜尋工具,它會在閒置時依設定快取檔名、文件內容、網頁/Email內容等等... 可以在瞬間找到想要的文件,但製作文件索引也會消耗系統資源、拖慢速度,如果您不是很需要索引功能,建議可以移除掉它:

終端機輸入:

sudo apt-get remove tracker

以後如果需要,再裝回來:

sudo apt-get install tracker