歡迎您光臨本站 註冊首頁

Fedora13內核編譯

←手機掃碼閱讀     火星人 @ 2014-03-24 , reply:0

最近一直在看Linux內核,但是始終沒有得以實踐,今天從早上弄到現在終於搞定了,或許對高手來說這不值一提,但是對我來說確實是個挑戰,以前只是使用Linux從未涉及到內核的東西。

我用的是Fedora13,前兩天一直在找內核包,從www.kernel.org中竟然沒找到我用的版本的包(其實可以不用找自己的版本的包,現在編譯完成了才知道,只要版本比自己用的高的就可以下載下來編譯通過。)Fedora官網我也沒有找到,於是從書上找到一個RedHat的下載網站(download.fedora.redhat.com上面有RedHat基本上所有的內核和應用軟體,比較崩潰的是速度太慢了(我昨天晚上下了兩個小時才把kernel-2.6.33.3-85.fc13.src.rpm這個內核下載下來,內核64M)。現在總結下今天遇到的問題和解決方法,供那些和我一樣的菜鳥參考下。

我不得不承認,livecd版的Fedora如果沒有軟體源那就是廢物什麼用也沒有,你所用到的任何軟體基本都沒有,所以接著一件崩潰的事情就是西電的Fedora源不能用了,所有的請求都是伺服器沒有相應,沒辦法,只得換成上海交大的源,速度還算可以,穩定在300--500KB/S。

整個配置過程最好在root用戶下使用,免得出現許可權不夠的煩惱。但是Fedora從9還是10(我記不清了)開始禁止以root用戶登錄,只能在終端中切換為root用戶,但是有時會遇到點小麻煩,所以不得不改配置文件,先在終端輸入命令su,然後輸入root用戶密碼,提升許可權

gedit /etc/pam.d/gdm

將auth required pam_succeed_if .so user != root quiet註釋掉或者將root改成其他的用戶名

gedit /etc/pam.d/gdmpassword

同樣將auth required pam_succeed_if .so user != root quiet註釋掉或者將root改成其他的用戶名,這樣就可以以root用戶登陸了。

以root登陸后,cd /etc/yum.repo.d/

首先備份本身自帶的repo文件,不然默認的在makecache時也會使用默認的源。

mv fedora.repo fedora.repo.bak

mv fedora-updates.repo fedora-updates.repo.bak

gedit sjedu.repo

然後將以下內容寫入這個siedu.repo,保存退出。

[Fedora-ftp.sjtu.edu.cn]
name=Fedora 13 ? i386
baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/13/Fedora/i386/os/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
[Everything-ftp.sjtu.edu.cn]
name=Everything 13 ? i386
baseurl=http://ftp.sjtu.edu.cn/fedora/linux/releases/13/Everything/i386/os/
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora
[updates-ftp.sjtu.edu.cn]
name=Fedora updates
baseurl=http://ftp.sjtu.edu.cn/fedora/linux/updates/13/i386/
enabled=1
gpgcheck=0

然後用yum clean all //這個命令可以不要。

yum makecache 就好了。

然後安裝軟體包,如果你有下面這些軟體包就不要裝了,因為我用的是livecd版的,什麼軟體都沒有。

yum -y install gcc

yum -y install redhat-rpm-config

yum -y install xmlto

yum -y install asciidoc

yum -y install elfutils

yum -y install elfutils-libelf-devel

yum -y install zlib-devel

yum -y install binutils-devel

yum -y install libdwarf-devel

yum -y install ncurces-devel

下面開始編譯內核,我從圖書館借的那本書把我害慘了,讓我走了很多彎路,他的方法也是對的,但是他對以前的RedHat版本比較熟悉,於是他就按照以前的版本進行講解安裝,但是現在版本默認安裝的跟他講的不一樣,很是無奈。

把下載到的kernel放在/usr/src/kernel/下。 然後進入這個目錄

cd /usr/src/kernel/

安裝內核

rpm -ivh kernel-2.6.33.3-85.fc13.src.rpm

在這個過程中會出現沒有用戶組mockbuild和用戶mockbuild的warning,不用理會就行,你也可以增加這個用戶和用戶組。這是因為這個RPM包是src的,解壓后是源代碼,不能執行。所以系統會提示這個,

cd ~/rpmbuild/SPECS/

rpmbuild -bp --target $(uname -m) kernel.spec

這樣就會出現安裝內核的進程,等待會即可。(解釋下我前面說我看的書使我繞彎子的原因,在/usr/src/下有一個Linux目錄,但是這個目錄在新版中已經不再是放置內核源代碼的地方,這裡放置的是頭文件 而我看的書上他寫的是執行完安裝命令后是安裝在這個目錄下了,但是我的沒有,我的是安裝在用戶的根目錄下。讓我費了好長時間去找安裝在哪了,很是迷茫,然後看了官方給的說明文檔才知道)

然後現在我們將指定一個字元串方便以後區別內核版本. 因此我們需要做:
cd ~/rpmbuild/BUILD/kernel-2.6.33/linux-2.6.33.i686
vi Makefile

在EXTRAVERSION一行, 你可以輸入一個內核識別碼. 我想最好是在字元串后附上內核的版本號, 這樣來操作:
EXTRAVERSION = -86.fc13

保存

配置內核
運行
make menuconfig

然後看到內核的配置菜單. 移動綠色游標到 Load an Alternate Configuration File 行后選擇.config文件做為配置文件: Load an Alternate Configuration File 完成配置后, 選擇Exit, 回答下面的問題(Do you wish to save your new kernel configuration? 你希望保存新的內核配置嗎?), 選擇Yes:

然後根據自己機器的情況進行配置,大部分選擇預設值就行了。

編譯內核

make

編譯內核需要較長時間,我的用了將近一個小時,跟機器的性能有很大關係。

如果選擇了可載入模塊,編譯內核完成後,要對選擇的模塊進行編譯。用下面的命令

make modules

make modules_install

然後

make install

現在編輯/boot/grub/menu.lst. 把你的新的內核信息放到列表的頂端, 確認新的內核已經替代老的內核, default值需要設為0.

vi /boot/grub/menu.lst

我的menu.lst是這樣的:
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to /boot/, eg.
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/sda2
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Fedora (2.6.33-85.fc13)
root (hd0,0)
kernel /vmlinuz-2.6.33-85.fc13 ro root=UUID=3832e93f-edbf-40b5-87d7-b46d902231f6 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
initrd /initramfs-2.6.33-85.fc13.img
title Fedora (2.6.33.3-85.fc13.i686)
root (hd0,0)
kernel /vmlinuz-2.6.33.3-85.fc13.i686 ro root=UUID=3832e93f-edbf-40b5-87d7-b46d902231f6 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us rhgb quiet
initrd /initramfs-2.6.33.3-85.fc13.i686.img




現在重新啟動系統:
shutdown -r now
會進入到一個選擇要進入的系統,一個就是剛剛編譯過的
如果一切進展順利, 你的新內核正常工作

[火星人 ] Fedora13內核編譯已經有506次圍觀

http://coctec.com/docs/linux/show-post-143622.html