怎么编译一个内核Fedora方式Word文档格式.docx

上传人:b****6 文档编号:16137388 上传时间:2022-11-20 格式:DOCX 页数:12 大小:179.10KB
下载 相关 举报
怎么编译一个内核Fedora方式Word文档格式.docx_第1页
第1页 / 共12页
怎么编译一个内核Fedora方式Word文档格式.docx_第2页
第2页 / 共12页
怎么编译一个内核Fedora方式Word文档格式.docx_第3页
第3页 / 共12页
怎么编译一个内核Fedora方式Word文档格式.docx_第4页
第4页 / 共12页
怎么编译一个内核Fedora方式Word文档格式.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

怎么编译一个内核Fedora方式Word文档格式.docx

《怎么编译一个内核Fedora方式Word文档格式.docx》由会员分享,可在线阅读,更多相关《怎么编译一个内核Fedora方式Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。

怎么编译一个内核Fedora方式Word文档格式.docx

我推荐使用root用户做下面所有的步骤.然而,有时也需要使用非终极用户(比如用户tom)来运行一些命令,所以你可能会使用visudo编辑器在/etc/sudoers文件中添加下面一行:

tomALL=(ALL)ALL

目前无论什么时候你需要用root权限运行命令,比如:

yuminstallfedora-rpmdevtoolsunifdef

你都能用下面的命令来替代:

sudoyuminstallfedora-rpmdevtoolsunifdef

请记住:

如果以root用户身份运行所有命令,你能完全忘记sudo.采用什么方式,看你自己的习惯.

2.构建rpm内核包

这一小节介绍怎么构建内核,最终你能得到一个rpm包,这样能方便安装或和他人分享.

2.1创建你的rpmbuild目录

按下面创建你的rpmbuild目录:

cd~

cp-a/usr/src/redhat/rpmbuild

echo’%_topdir%(echo$HOME)/rpmbuild’>

>

.rpmmacros

然后安装构建rpm包需要的应用软件包

yuminstallfedora-rpmdevtoolsunifdef

然后运行

fedora-buildrpmtree

2.2下载和安装Fedora内核src.rpm包

接下来为我们的Fedora版本下载最新的内核src.rpm包.针对FedoraCore6,你能从接下来的网址获得src.rpm包:

针对FedoraCore5,你能从下面的网址获得src.rpm包:

等等.

最新的FedoraCore6内核src.rpm包是kernel-2.6.18-1.2798.fc6.src.rpm,所以我们目前下载和安装他:

cd/usr/src

wget

rpm-ivhkernel-2.6.18-1.2798.fc6.src.rpm

如果你看到这些警告:

warning:

userbrewbuilderdoesnotexist-usingroot

groupbrewbuilderdoesnotexist-usingroot

你能忽略他们.

我们已成功安装了最新的2.6.18.1内核原始码包.如果我们继续构建内核原始码包的话,我们的内核版本将是2.6.18.1.

2.3给内核打补丁

我想安装新内核2.6.18.2来替代2.6.18.1.系统已安装的src.rpm包是给2.6.18打过补丁的2.6.18.1.而我们目前将使用打补丁的方式升级内核到2.6.18.2

cd~/rpmbuild/SOURCES/

wgethttp:

//www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.18.2.bz2

如果你想内核的名字结尾为2.6.19-rc5,你也能使用prepatch包

http:

//www.kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.19-rc5.bz2

.请注意这项工作仅对prepaches有效.比如.内核补丁仅对最终发行的内核版本有效,比如2.6.19内核.你能给2.6.18内核原始码打补丁,但不能是2.6.18.1或2.6.18.2,等.这个规则在接下来的网页中注明:

//kernel.org/patchtypes/pre.html

prepatches等同于linux中的测试发行;

他们位于存档的测试目录中,我们能使用patch

(1)工具对上一个完整发行版(版本号分三部分)打补丁(例如,2.6.13-rc4prepatch只能给2.6.11内核原始码打补丁,而不是2.6.11.10.)

目前我们必须修改kernel-2.6.spec文件,让他知道我们使用了新的内核补丁:

cd~/rpmbuild/SPECS/

vikernel-2.6.spec

搜寻下面行

Patch1:

patch-2.6.18.1.bz2

替换为下面的内容:

patch-2.6.18.2.bz2

(或其他你已下载的版本)

rpmbuild-bpkernel-2.6.spec

(如果你想构建其他平台如i386,i586,i686或x86_64的内核,你能通过运行下面的命令来实现:

rpmbuild-bp--target=i686kernel-2.6.spec

我没有在上面例子中指定为i386,你的系统可能是其他的平台类型,请记得填写你的平台类型.)

目前我们进入到关键的部分.src.rpm有非常多fedora专门的补丁,其中一些不能和我们的2.6.18.2补丁非常好的工作,所以如果你在rpmbuild输出看到下面状况:

+echo’Patch#300(linux-2.6-ppc-dac960-ipr-clash.patch):

Patch#300(linux-2.6-ppc-dac960-ipr-clash.patch):

+patch-p1-s

Reversed(orpreviouslyapplied)patchdetected!

Assume-R?

[n]

Applyanyway?

1outof1hunkignored--savingrejectstofiledrivers/block/DAC960.c.rej

error:

Badexitstatusfrom/var/tmp/rpm-tmp.46287(%prep)

RPMbuilderrors:

Badexitstatusfrom/var/tmp/rpm-tmp.46287(%prep)

这时候你必须再次编辑kernel-2.6.spec文件,注解掉patch#300一行:

[...]

#Patch300:

linux-2.6-ppc-dac960-ipr-clash.patch

#%patch300-p1

然后再运行rpmbuild命令,比如:

注意:

你必须不断重复上面过程直到不出现所有错误.

2.4指定内核识别码

目前我们将指定一个字符串方便以后差别内核版本.因此我们需要做:

cd~/rpmbuild/BUILD/kernel-2.6.18/linux-2.6.18.i386

viMakefile

在EXTRAVERSION一行,你能输入一个内核识别码.我想最佳是在字符串后附上内核的版本号,这样来操作:

EXTRAVERSION=-custom-2.6.18.2

2.5设置内核

目前我们运行

makemenuconfig

然后我们看到内核的设置菜单.移动绿色光标到LoadanAlternateConfigurationFile行后选择.config文件做为设置文件:

然后浏览内核设置菜单,选择你需要的功能.完成设置后,选择Exit,回答下面的问题(Doyouwishtosaveyournewkernelconfiguration?

你希望保存新的内核设置吗?

),选择Yes:

2.6构建内核

目前我们简单运行下面命令来构建内核:

makerpm

然后你将在~/rpmbuild/SRPMS/目录发现一个新的src.rpm包,比如.~/rpmbuild/SRPMS/kernel-2.6.18custom2.6.18.2-1.src.rpm,内核rpm包位于~/rpmbuild/RPMS/i386/(或~/rpmbuild/RPMS/i586/,~/rpmbuild/RPMS/i686/,等.看你的平台类型).比如.~/rpmbuild/RPMS/i386/kernel-2.6.18custom2.6.18.2-1.i386.rpm.你看到内核识别码已添加到软件包的名字中.

2.7安装新内核

目前去新的rpm内核包存在的目录(基于你的平台类型,比如.~/rpmbuild/RPMS/i386/)安装rpm包:

cd~/rpmbuild/RPMS/i386

rpm-ivhkernel-2.6.18custom2.6.18.2-1.i386.rpm

(目前你甚至能够拷贝到其他的Fedora系统,通过上面的方式安装.你将不再需要编译内核.)

接下来我们为新内核创建一个ramdisk,否则系统将不能引导新内核:

mkinitrd/boot/initrd-2.6.18-custom-2.6.18.2.img2.6.18-custom-2.6.18.2

然后编辑/boot/grub/menu.lst文件,看一下你系统上已存在(正在工作的)引导内核信息,拷贝其中的一个实例,替换为你新的内核和ramdisk:

vi/boot/grub/menu.lst

比如,我的menu.lst,在我添加新的内核信息前的情况:

#grub.confgeneratedbyanaconda

#

#Notethatyoudonothavetorerungrubaftermakingchangestothisfile

#NOTICE:

Youhavea/bootpartition.Thismeansthat

#allkernelandinitrdpathsarerelativeto/boot/,eg.

#root(hd0,0)

#kernel/vmlinuz-versionroroot=/dev/VolGroup00/LogVol00

#initr

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 职业教育 > 中职中专

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1