將Ubuntu 10.04自帶2.6.32內核升級成3.0內核圖文教程

1、完成如下實踐工作,並截屏說明實踐步驟:1)下載安裝虛擬機VMWare Workstation;2)在虛擬機中安裝Linux2.x ;3)通過自行編譯,將Linux 2.x內核升級到Linux 3.x。

1)     安裝VMware Workstation 11.1.0。




2)     在虛擬機中安裝Ubuntu 10.04 LTS (ubuntu-10.04-desktop-i386.iso),其Linux內核版本爲2.6.32。



3)     從kernel.org下載新版3.0.0內核,在Ubuntu10.04上編譯後安裝,從而升級到3.0.0內核。



2、對1題的3)完成的同時,回答如下問題:

1)  內核主要源代碼目錄包括什麼,每個目錄下主要實現什麼管理?

/arch:目錄包括了所有和體系結構相關的核心代碼。它下面的每一個子目錄都代表一種Linux支持的體系結構,例如i386就是Intel CPU及與之相兼容體系結構的子目錄。PC機一般都基於此目錄。

/documentation:目錄下是一些文檔,沒有內核代碼,可惜都是English的,是對每個目錄作用的具體說明。

/drivers:目錄中是系統中所有的設備驅動程序。它又進一步劃分成幾類設備驅動,每一種有對應的子目錄,如聲卡的驅動對應於/drivers/sound;block 下爲塊設備驅動程序,比如ide(ide.c)。如果你希望查看所有可能包含文件系統的設備是如何初始化的,你可以看/drivers/block/genhd.c中的device_setup()。它不僅初始化硬盤,也初始化,因爲安裝nfs文件系統的時候需要網絡。其他:如, Lib放置核心的庫代碼; Net,核心與網絡相關的代碼; Ipc,這個目錄包含核心的進程間通訊的代碼; Fs,所有的文件系統代碼和各種類型的文件操作代碼,它的每一個子目錄支持一個文件系統,例如fat和ext2。

/fs:目錄存放Linux支持的文件系統代碼和各種類型的文件操作代碼。每一個子目錄支持一個文件系統,如ext3文件系統對應的就是ext3子目錄

/include:目錄包括編譯核心所需要的大部分頭文件,例如與平臺相關的頭文件在/include/linux子目錄下,與 intel cpu相關的頭文件在/include/asm-i386子目錄下,而/include/scsi目錄則是有關scsi設備的頭文件目錄。

/init:目錄包含核心的初始化代碼(不是系統的引導代碼),有main.c和Version.c兩個文件。這是研究核心如何工作的好起點。

/ipc:目錄包含了核心進程間的通信代碼。

/Kernel:內核管理的核心代碼,此目錄下的文件實現了大多數linux系統的內核函數,其中最重要的文件當屬sched.c;同時與處理器結構相關代碼都放在/arch/*/kernel目錄下。

/lib:目錄包含了核心的庫代碼,不過與處理器結構相關的庫代碼被放在/arch/*/lib/目錄下。

/mm:目錄包含了所有獨立於 cpu 體系結構的內存管理代碼,如頁式存儲管理內存的分配和釋放等。與具體硬件體系結構相關的內存管理代碼位於/arch/*/mm目錄下,例如/arch/i386/mm/Fault.c 。

/net:目錄裏是核心的網絡部分代碼,實現了各種常見的網絡協議,其每個子目錄對應於網絡的一個方面。

/scripts:目錄包含用於配置核心的腳本文件等

/block:塊設備驅動程序I/O調度。

/crypto:常用加密和散列算法(如AES,SHA等),還有一些壓縮和CRC校驗算法。

/security:主要包含SELinux模塊。

/sound:ALSA,OSS音頻設備的驅動核心代碼和常用設備驅動。

/usr:實現了用於打包和壓縮的cpio等。

2)  內核升級必要的軟件包需要那些?

編譯內核用到:gcc, libncurses5-dev

下載內核文件用到:wget

解壓縮內核源代碼用到:tar

3)  編譯內核的步驟是什麼?

第一步:Configure

sudo make menuconfig

上面的命令用來配置Linux內核,一旦執行了該命令,屏幕將會彈出一個窗口,裏面都是菜單列表,我們可以選擇新配置選項,如果不熟悉該配置的話,我們只需要進入File systems菜單項,來確認ext4文件系統被選中,如果沒有選中的話,選中它,並且保存配置。



第二步:Compile

sudo make

上面的命令用來編譯Linux內核,這個步驟比較花時間,大概用了40-50分鐘。

第三步:Install

sudo make modules_install install

上面的命令用來將Linux3.0內核安裝到系統中,該命令將會在/boot/目錄下創建一些文件,並且會在grub.cfg文件中建立一個啓動項,我們可以檢查一下該啓動項是否被正確創建,/boot/目錄下的文件如下:

System.map-3.0.0

vmlinuz-3.0.0

initrd.img-3.0.0

config-3.0.0

重啓系統,我們會進入新的Linux3.0內核的Ubuntu系統中。

4)  在編譯過程中通常會遇到的問題有哪些,解決的辦法是什麼?

問題1:沒有足夠的權限,這是由於當前用戶權限不夠引起的,在Ubuntu上可以通過在命令前面加入sudo來按照root權限執行命令。

問題2:安裝軟件包失敗,這是由於ubuntu官方網站在國外,國內一般不容易連接成功,這時可以通過替換Ubuntu源來解決,源的配置文件爲/etc/apt/sources.list,將此文件中的內容替換成國內的源地址即可。本文中替換的源爲網易Ubuntu10.04源:

deb http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse

deb-src http://mirrors.163.com/ubuntu/ lucid main universe restricted multiverse

deb http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-security universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-proposed universe main multiverse restricted

deb http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-backports universe main multiverse restricted

deb-src http://mirrors.163.com/ubuntu/ lucid-updates universe main multiverse restricted

 

5)  你在編譯過程中實際遇到了什麼問題,最後的解決辦法是什麼?收穫是什麼?

問題1:下載內核的命令:wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.tar.bz2,經常下到一半就連接中斷。

我的解決辦法是在Windows下采用迅雷軟件進行內核下載,然後通過samba共享文件機制把內核文件共享到Ubuntu中。

問題2:內核編譯速度比較慢。

我的解決辦法是在VMware中爲虛擬機分配6個CPU核和3GB內存,這樣虛擬機可以6個線程一起進行內核編譯,從而顯著加快速度。



收穫:

經過這次Linux內核升級實驗,我對Linux內核的編譯、工作機制有了更好的瞭解,對我們今後開展Android內核的安全加固項目提供了有效指導。

發佈了48 篇原創文章 · 獲贊 47 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章