最近須要對Linux的一個內核模塊進行調整實驗,故決定先在虛擬機中完成編譯調試工做,最後再在真實的系統上進行測試。爲了防止遺忘,把過程記錄於此。html
1. 準備系統環境linux
首先從官網下載最新版的VirtualBox和Debian Wheezy 7.3.0的32位網絡安裝版CD鏡像文件(debian-7.3.0-i386-netinst.iso)。而後就能夠載入光盤開始安裝了,安裝的時候有幾點須要注意:vim
2. 下載內核源碼,安裝必需的軟件bash
Debian Wheezy默認沒有提供sudo工具,因此能夠先把它裝上。網絡
su root... apt-get install sudo exit
可是如今仍是不能使用sudo,爲了能讓普通用戶可以使用sudo,須要將用戶加到/etc/sudoers文件中。app
su root... vi /etc/sudoers
再次進入特權模式,找到文件中的下面這一行:工具
root ALL=(ALL:ALL) ALL
在下面添加一行,變成這樣(其中feng32是做者的用戶名):測試
root ALL=(ALL:ALL) ALL feng32 ALL=(ALL:ALL) ALL
而後退出保存,就可使用sudo來臨時得到管理員權限了。接着安裝使用更方便的vim,方便以後的操做:es5
exit sudo apt-get install vim
接着安裝兩個編譯內核真正須要的軟件包:spa
sudo apt-get install kernel-package sudo apt-get install libncurses5-dev
最後從kernel.org上下載Linux內核源碼。這裏我選擇的是最新的longterm版本3.12.14。
wget https://www.kernel.org/pub/linux/kernel/v3.x/linux-3.12.14.tar.xz
3. 解壓內核源代碼
Debian Wheezy默認就整合了xz工具,因此能夠直接解壓。
xz -d linux-3.12.14.tar.xz tar xf linux-3.12.14.tar
4. 配置、編譯內核
解壓獲得約520MB的文件,位於當前用戶的home目錄下。接着從現有的內核中獲取配置信息,運行:
cd linux-3.12.14 make oldconfig
配置系統會詢問不少新出現的配置選項,直接回車選擇默認項便可。而後運行:
make menuconfig
確保你須要的特性都已經包括,按ESC退出配置。最後運行下面的指令開始編譯:
make-kpkg clean fakeroot make-kpkg --initrd --append-to-version=-hlcodel --revision=1.0 kernel_image
在虛擬機中,單線程編譯3.12.14內核大約要花費1.5小時。在編譯完成以後,home目錄下出現了一個deb文件:linux-image-3.12.14-hlcodel_1.0_i386.deb。
5. 安裝內核
使用下面的命令安裝這個deb包:
dpkg -i linux-image-3.12.14-hlcodel_1.0_i386.deb
完成後重啓,而後運行unamr –r,若是出現下面的輸出,則表明安裝已經完成了:
3.12.14-hlcodel