Ubuntu編譯Linux核心過程
一、首先解決Ubuntu代理上網的問題
1、這種方法要用到/etc/apt/檔案夾下的apt.conf檔案。如果您希望apt-get(而不是其他應用程式)一直使用http代理,您可以使用這種方式。
注意:某些情況下,系統安裝過程中沒有建立apt設定檔。下面的操作將視情況修改現有的設定檔或者建立設定檔。
sudo gedit /etc/apt/apt.conf在您的apt.conf檔案中加入下面這行(根據你的實際情況替換yourproxyaddress和proxyport)。
Acquire::http::Proxy "http://yourproxyaddress:proxyport";儲存apt.conf檔案。
如果Proxy 伺服器需要登入,那麼可以在指定Proxy 伺服器地址的時候,用如下格式(根據情況把username,password, yourproxyaddress和proxyport替換為相應內容):
http_proxy=http://username:password@yourproxyaddress:proxyport
2、然後在新立得設定http代理,在系統--系統管理--新立得軟體包管理器--設定--喜好設定--網路裡也要設定http的代理
二、下載原始碼和編譯軟體的準備
下載核心原始碼:http://www.kernel.org/
注意,點擊2.6.39.3核心的F版,即完整版。
如果你懶得去網網站聯結,運行下列命令:
代碼:
$cd ~
$wget http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.39.3.tar.bz2
安裝有關編譯器。安裝make ,gcc, make-kpkg,運行menuconfig等等和編譯核心相關的工具。
安裝不了,請檢查/etc/apt/sources.list 檔案。
安裝所需工具包有關命令:
代碼:
$sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot
三、解壓原始碼
注意,網上很多教程上說應該解壓到 /usr/src,純屬以訛傳訛,linux掌門人linus說解壓到任何目錄上都可以。當然,linus的說法是正確的。先將壓縮包複製到usr/src目錄下,然後將壓縮包解壓到user/src目錄下。
如果壓縮包現在放在個人主目錄的案頭上,則運行下列命令:
代碼:
$sudo cp Desktop/linux-2.6.39.3.tar.bz2 /usr/src
$ cd usr/src
$ tar jxvf linux-2.6.39.3.tar.bz2
現在,原始碼就在 usr/src/linux-2.6.39.3
進入原始碼的目錄,準備下一步的工作。後面都在這個目錄裡面進行。
代碼:
$ cd usr/src/linux-2.6.39.3
四、開始編譯前的準備工作。
首先,清理以前編譯時間留下的臨時檔案。如果是剛剛解開的包,不需要執行這步。如果是第二次或者是第n次編譯,那麼一定要執行。
相關命令如下:
代碼:
$ sudo make mrproper
網上很多教程上說把現在使用的核心的config拷貝過來參考,據實驗,是不需要的,ubuntu還有debian會自動做這步。不過這條命令倒是可以學習一下。當然你可以將以前的配置拷貝過來。
命令:
代碼:
cp /boot/config-2.6.35-22-generic ./.config
加紅部分視自己作業系統情況而定
五、開始配置核心選項。
相關命令:
代碼:
$sudo make menuconfig
我們選用的是圖形介面的配置,在配置選項的最下方有一個Load和Save選項,我們先將第四步複製過來的設定檔.config檔案Load進來,在Save就可以了。
六、開始編譯核心。
ubuntu的工具是make-kpkg,和其他的發行版相比,步驟相對簡單。
相關命令:
代碼:
$sudo make-kpkg clean 這條命令好像不要超級許可權,很多資料上說要,不過這不是原則問題。
$sudo make-kpkg --initrd --append-to-version=t61 kernel_image kernel-headers
上述命令中的t61可以用自己喜歡的字元代替,最後的字元一定是數字.
輸完上述命令斷行符號之前,建議大家把瀏覽器還有別的運用程式都關掉,機器開始的工作比較艱苦。
七、安裝核心
編譯完成就是安裝工作。編譯好的核心在上一層目錄。包括linux-headers-2.6.39.3t61_2.6.39.3t61-10.00.Custom_i386.deb和linux-image-2.6.39.3t61_2.6.39.3t61-10.00.Custom_i386.deb兩個檔案,如果你不搞開發的話,只要安裝核心就可以,標頭檔以後要用的時候再說。
安裝相關命令:
代碼:
$ cd ..
$ sudo dpkg -i linux-image-(按tab鍵)
檔案名稱很長,如果不用tab自動補足是不可能的。
安裝完成後和老核心比較一下大小
代碼:
$ ls -l /boot/
八、重新啟動驗證新核心。
代碼:
$ sudo reboot
重啟後可以檢查新核心版本,命令如下:
$ uname -a
至此Linux核心的安裝編譯已經完成,以下幾個步驟是個人情況而定:
九、顯卡驅動
如果你的顯卡和我一樣是nvidia顯卡,啟動之後往往無法正常進入x-window。即使能看到gdm登入介面,效果也是很差的。
那麼就要安裝nvidia驅動。
用ctrl+alt+f1 進入字元命令列,輸入使用者名稱,密碼登入。
命令:
代碼:
下載驅動
$wget http://us.download.nvidia.com/XFree86/Linux-x86/173.14.12/NVIDIA-Linux-x86-173.14.12-pkg1.run
$sudo -s
輸入密碼取得超級許可權。
#ps ax
看看和gdm相關的進程,把這些進程全部關閉;用sudo /etc/init.d/gdm stop有可能有一個進程沒有關閉:
#kill 進程號
然後安裝nvidia顯卡驅動,當然驅動要先下好,到nvidia驅動所在的目錄裡,運行:
# sh ./NVIDIA-Linux-x86-173.14.12-pkg1.run
重新啟動以後就ok。要用nvidia的驅動,每次升級核心都要這麼做。
十、無線網卡
相關的核心選項是
Networking --->
Wireless --->
Generic IEEE 802.11 Networking Stack (mac80211)
還有4965的驅動。
4965 無線網卡驅動雖然已經編入核心,但沒有firmware無法使用。需要把原來核心的firmware拷貝到新核心對應的目錄,名字和核心一致,我的核心是 linux-image-2.6.25.10dell1400,那建的目錄名就是2.6.25.10dell1400。
代碼:
具體命令:
$ cd /lib/firmware/
$ sudo mkdir 2.6.25.10dell1400
把你的老核心中的4965的firmware拷貝過來。
$ sudo cp 2.6.24-16-generic/* 2.6.25.10dell1400/
上面的命令和下面的命令是等價的:
$ cd /lib/firmware/
$ sudo cp -R 2.6.24-16-generic/ 2.6.25.10dell1400/
重新啟動系統,無線網卡就正常了。
複製命令:sudo cp Desktop/linux-2.6.39.3.tar.bz2 /usr/src
解壓命令:sudo tar jxvf FileName.tar.bz2