当前位置:首页 » 编程软件 » 编译redhat内核

编译redhat内核

发布时间: 2023-09-16 04:54:52

‘壹’ 怎样使用新编译的内核进行启动

step 1

准备:(1). 所需的内核源码

step2:

  • 切换到源码所在的目录,make distclean 命令:删除生产的.o 和 .config 文件

  • 编译内核之前需要一份配置文件,并在此基础上修改,故借用本地/boot/config-3.13.0-24-generic配置文件,命令: cp /boot/config-3.13.0-24-generic /home/yangqi/code/linux/linux-4.2.3/.config

  • 该配置文件.config 即是对内核裁剪的配置,不用直接打开修改,系统提供menu界面修改,命令:make menuconfig (如果此命令报错,说明需要装ncurses库,安装命令:sudo apt-get install libncurses5-dev) (menu目录如下:)

‘贰’ linux 文件系统 内核编译

1、第一条命令没问题;
2、第二条命令:
#mkfs.ext2 myfs
myfs is not a block special device.
无路如何也要继续?(y,n)
这时要输入y
3、第三条命令,linux kernel不支持myext2文件系统。我猜你是想要在红帽或ubuntu上mount一个ext2文件系统的loop设备,但是想使用myext2的文件系统驱动,对吧。我没有这么做过,猜不出你的myext2摘出来之后是什么样子的。我以前试过在linux安装新的文件系统支持,比如fuse系统,源码编译通过后会生成一个.ko的模块文件,使用insmod命令将其加入内核,才能获得内核对该文件系统的支持。我想你可能也应该这样做,你应该需要生成一个类似myext2.ko的模块,然后将其insmod到内核中去。

‘叁’ 编译内核模块错误(linux)

在这些高版本的RedHat Linux上,我们如果需要定制内核的话,没有直接的源代码rpm可以安装,只能通过kernel.org下载的tar.gz的包手工安装,或者通过kernel-*.src.rpm编译出kernel-source包再来安装。后面一种方法可以享受到RedHat针对内核的某些参数和代码的优化,因此对使用RedHat发行版特别是企业版本的,是有一定好处的。
但是目前很多人至今分不清内核,内核开发,内核源代码一些包之间的关系,因此在编译内核的时候经常走弯路,同时RedHat官方对于如果得到kernel-source也没有明确的指示,导致很多人不得要领。

首先认清楚各rpm包的内容和用途
kernel-*.rpm ------------- 内核二进制包,没有的话系统都起不来
kernel-sourcecode-*.rpm------------------- 内核源代码包,安装到/usr/src/linux-*下面的,包含内核源代码,编译内核必须(当然是不考虑用kernel.tar.gz编译的情况),但高版本RedHat Linux不再提供此rpm,原因参见官方Release Note,这篇文章的最终目的就是要我们自己把这个包搞出来。
kernel-devel-*.rpm----------------内核开发包,安装到/usr/src/kernels,用于内核模块开发,组织形式跟内核源代码包类似,包含了部分内核源代码。注意很多人误认为这个就是内核源代码包,直接拿它来编译内核,当然不可能成功。这个包只是用于内核模块一级开发,例如驱动程序等,虽然也可以make menuconfig make dep等,但make bzImage是不可能成功的,因为缺失了核心源代码。
kernel-*.src.rpm---------------RedHat提供的用于建立rpm的源代码包,安装到/usr/src/redhat中,使用rpmbuild可以从这个包中build出上面所说的所有包。

现在就来从src.rpm编译出上面的所有的包,除了sourcecode这个包其他的包都可以在不用修改任何地方的情况下直接rpmbuild出来,唯有sourcecode这个比较麻烦,一定要按照下面的步骤来做,我以RedHat AS4 所带的版本为例,其他版本相同。

#首先安装src.rpm
rpm -ivh kernel-2.6.9-5.EL.src.rpm
#进入相应目录,要修改spec文件
cd /usr/src/redhat/SPECS
vi kernel-2.6.spec
#主要修改如下地方:
1,define buildsource 0------------我的这个在第8行,改为1,这就是为什么没有源代码包的原因,因为默认不生成源代码包
2, Requires: qt-devel, gtk2-devel readline-devel ncurses-devel-------我的在572行,如果没用用X的话,把这句注释掉,这样编译出来的包就不依赖于X-window的某些包,因为内核配置是可以make xconfig的,所以默认依赖X-window,我没装X-window,因此这个就去掉了。
#保存退出
touch /etc/beehive-root
#这句命令非必须,如果不做的话,最后编译出来的包都会变成kernel-*.*-root.rpm,多了个root,据说是为了标示包的编译人的,如果touch了这个文件,就没有这个问题了,命名和官方rpm一样。
rpmbuild -ba --target=i686 ./kernel-2.6.spec
#编译i686平台的所有包,这样上面介绍的所有包都会生成,或者换成rpmbuild -bb --target=i686 ./kernel-2.6.spec只编译非src.rpm。
#所有包就会生成到/usr/src/redhat/RPMS/i686下面

#如果只需要sourcecode而并非所有rpm包,那在修改spec文件时还要修改如下行:

48 %ifarch noarch
49 %define builddoc 1
50 %define buildsource 0----------------这里0修改为1
在编译的时候使用rpmbuild -ba --target=noarch ./kernel-2.6.spec,这样仅仅编译soucecode和doc包,会节省很多时间。

注意,此篇文章所讲所有内容仅适用于使用2.6内核的新版本RedHat Linux,2.4版本内核代码组织方式不同,不适用此文章。

以上这篇文章取自互联网,我忘了出处,尊敬作者.

‘肆’ 在rhel5.5的内核编译中,进行yum install ncurses-devel时候总是不能安装,麻烦帮忙解决

在编译内核吧,呵呵
centos 安装用的是yum,所以安装ncurses应该是如下命令
#yum install ncurses ncurses-devel
当然之前源要配好,这样就可以运行make menuconfig了
Good luck!!
没有源,我说过了啊,centos 那个版本,
5.1的看这个
5.3的看这个
其他的自己搜

‘伍’ 如何学习编译内核

我用的是RedHat9.0, 根据第一贴 "2.4->2.6内核升级指南", 首先需要把必要的软件包都升级到要求的版本以上, 经过折腾, 有的是直接用rpm -Uvh 或 rpm -ivh, 有的是直接用源代码编译, 总算把大部分软件包都升级了. 有一个软件包oprofile死活装不上, 用rpm装的时候出来这样的错误:
error: Failed dependencies:
libc.so.6(GLIBC_2.3.4) is needed by oprofile-0.8-0.20040121.3
可是我的/lib目录里明明有
lrwxrwxrwx 1 root root 13 8月 2 10:45 libc.so.6 -> libc-2.3.2.so
(我已经经历过N次这样的错误了, 这是我非常痛恨rpm的主要原因.)
改用源代码编译的时候, make的时候出来这样的错误:
The present kernel configuration has moles disabled.
Type 'make config' and enable loadable mole support.
Then build a kernel with mole support enabled.

TNND, RedHat9缺省的内核编译居然是moles disabled!!!我折腾来折腾去就是想把2.4.20-8的内核升级到2.6.12.4去, 到头来还得让我先编译原来2.4.20-8的内核? 先把这事放一放, oprofile说不定不是很有用的模块.

接下来顺利地把mole-init-tools升上去了. 然而在升级mkinitrd的时候又碰到了致命的问题.
根据说明, 要想升级mkinitrd, 首先要升级lvm2和device-mapper, 用rpm -Uvh升级lvm2的时候出来一大堆的错误:
error: Failed dependencies:
libdevmapper.so.1.00 is needed by lvm2-2.00.15-2
libdevmapper.so.1.00(Base) is needed by lvm2-2.00.15-2
libselinux.so.1 is needed by lvm2-2.00.15-2
lvm < 1.0.3-19 conflicts with lvm2-2.00.15-2
看来要先装device-mapper再装lvm2, 另外lvm与lvm2冲突, 要先卸载lvm.
那就卸载lvm吧, NND, lvm is needed by (installed) mkinitrd-3.4.42-1
顾不得了, 用rpm -e -nodeps卸载. 不过现在还是先把device-mapper装好, 再收拾lvm2.

会过头来, 用rpm升级device-mapper, 结果出来
error: Failed dependencies:
libselinux.so.1 is needed by device-mapper-1.00.14-3
查了一下, 机器上却是没有libselinux.so.1, 在网上荡了一个rpm软件包, 结果又是这样一个错误,
error: Failed dependencies:
libc.so.6(GLIBC_2.3.4) is needed by libselinux-1.11.4-1

我不知道我机器里的libc.so.6发了什么猪瘟, 看来是因为我机器里的libc.so.6-->libc-2.3.2.so不是GLIBC_2.3.4.

只好再到网上去荡了一个glibc的软件包, 用rpm -Uvh升级的时候, 好了, 出来一大堆冲突

package glibc-32bit-9-200508050455 is intended for a x86_64 architecture file /lib/i686/libc.so.6 from install of glibc-32bit-9-200508050455 conflicts with file from package glibc-2.3.2-11.9
file /lib/i686/libm.so.6 from install of glibc-32bit-9-200508050455 conflicts with file from package glibc-2.3.2-11.9
file /lib/i686/libpthread.so.0 from install of glibc-32bit-9-200508050455 conflicts with file from package glibc-2.3.2-11.9
file /lib/ld-linux.so.2 from install of glibc-32bit-9-200508050455 conflicts with file from package glibc-2.3.2-11.9
file /lib/libBrokenLocale.so.1 from install of glibc-32bit-9-200508050455 conflicts with file from package glibc-2.3.2-11.9

‘陆’ 问一下,为什么代码在RedHat里面gcc编译出错,提示找不到mole.h等头文件

你拷贝到/usr/include/linux的mole.h先删除了,根本不是在这个目录你需要首先安装对应内核版本的头文件,不是随便一个版本就可以~一般情况下内核头文件放在/usr/src/下面。你这个钩子函数一看就知道是运行在内核空间的,以模块的方式安装使用的,不是你直接就可以用gcc安装的~最简单的办法是用makefifle,具体操作你找下如何编译内核模块或者看下源码自带的说明文档。
PS:你是全部都拷贝进去了吗?这个.h本身会有很多其他的引用.另外,这个编译时我上面说了用makefile来做,你看下这里:http://..com/question/262194193.html

‘柒’ linux内核编译详细教程及开发Linux系统

已发送到[email protected]

热点内容
在家如何更改网络密码 发布:2024-11-19 07:36:21 浏览:797
反编译redis里的数据 发布:2024-11-19 07:31:59 浏览:858
android音乐播放器的实现 发布:2024-11-19 07:12:44 浏览:969
传奇世界手游打架脚本 发布:2024-11-19 07:05:43 浏览:680
小白电脑一般什么配置 发布:2024-11-19 06:50:19 浏览:387
阿里的编程测验 发布:2024-11-19 06:50:10 浏览:44
数据库优化教程 发布:2024-11-19 06:49:12 浏览:593
android打开activity 发布:2024-11-19 06:41:36 浏览:79
sql表的操作 发布:2024-11-19 06:36:27 浏览:139
安卓手机用什么模拟器 发布:2024-11-19 06:36:27 浏览:860