问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

为什么要编译自己的内核

发布网友 发布时间:2023-05-02 15:07

我来回答

1个回答

热心网友 时间:2023-10-16 04:36

一前言

为什么要编译自己的内核?这可能会有各种不同的答案,列举如下:

1为了研究,学习内核源码。

2为了支持新的硬件或者打开某项内核功能。

3升级内核到更新版本。

4按自己的要求定制和优化内核功能。

如此种种...

折腾不需要理由,这里我就不在多说,下面直接进入主题。

编译方式

编译内核有多种方式,从kernel.org下载选择下载需要的版本的内核源码,

如:linux-2.6.32-rc1.tar.bz2,下载内核源码到/home/user/目录,进入下载目录,解压压缩包。

#cd/home/user/

#tar-xjvflinux-2.6.32-rc1.tar.bz2

二准备编译环境

开始之前,首先确认下面软件包已经安装(编译中标普华4.0时,直接全部安装CD3可保证此条件)。

*rpmdevtools

*yum-utils

fedora系统可以使用如下命令安装:

#yuminstallyum-utilsrpmdevtools

1.生成一个rpmbuild命令工作所需的目录树,下面命令可以完成该操作,也可以手动建立目录树。

命令建立:

#rpmdev-setuptree

此命令将会在/usr/src/rpmbuild/目录下生成如下目录结构(如果此位置没有,则可能在当前用户目录下).

#tree/usr/src/rpmbuild/

rpmbuild/

|--BUILD

|--RPMS

|--SOURCES

|--SPECS

`--SRPMS

上面部分是rpmbuild的环境建立。rpm

3.安装内核源码包需要的依赖组件(在此可以跳过此步操作)

su-c'yum-builddepkernel-.src.rpm'

4.安装内核源码到系统,默认目录在/usr/src/neoshine:

rpm-Uvhkernel-.src.rpm

三配置内核(生成config配置文件)

下面将介绍如何解开源码包,并修改,配置和重新打包源码

1.解开源码包并打上所有的补丁到BUILD目录

cd~/rpmbuild/SPECS

rpmbuild-bp--target=`uname-m`kernel.spec

kernel源码将在这里找到:

/usr/src/neoshine/rpmbuild/BUILD/kernel-/linux-.directory

配置内核源码

1.进入内核源码:

cd~/rpmbuild/BUILD/kernel-2.6.$ver/linux-2.6.$ver.$arch/

2.复制/boot/config*配置文件到源码目录下,此config文件也可以是已经配好或者其他地方备份的kernel配置文件:

cp/boot/config2.6-2.6.$ver.$arch.config

3.先检查kernel配置中新增的选项:

makeoldconfig

4.定制内核功能,关闭initrd支持选项,执行图形化内核配置工具:

makemenuconfig

注:在genericsetup选项下找到initialRAMsystemandRAMdisk(initramfsandinitrd)support项,取消编译。同时确保跟文件系统对应的驱动和系统所在存储器对应的驱动都已经编译到内核(否则会无法启动系统).

5.在.config文件第一行改为下面内容(注意:没有此行时,后面的编译会报错)

#i386

6.拷贝.config到SOURCES/:

cp.config../SOURCES/config-$arch

四编译新内核

1.下面开始准备编译新的内核包

打开SPEC/kernel.spec

vimSPEC/kernel.spec

改变下面行内容,可以定制自己的内核扩展名(如fc10之类):

%definebuildid.<自己内核的小版本名>

下一步将生成一个新内核的rpm包,此过程需要编译内核源码包

使用下面命令生成新的内核源码包

rpmbuild-bb--withbaseonly--withoutdebuginfo--target=`uname-m`kernel.spec

参数说明:bb表示只编译二进制包,即不生成源码包,withoutdebuginfo表示没有调试信息,

target=`uname-r`表示生成对应当前平台的内核包

如果上面的命令成功执行完成,那么会在BUILD/i686目录下生成新的内核安装包

五安装新内核

rpm-ivhkernel-$ver-$arch.rpm

此步操作会自动安装内核到boot目录下,安装对应内核模块到/lib/moles/目录下,并且生成新内核对应的grub引导菜单。

修改grub引导菜单为以下格式

titlenewkernel

kernel/boot/vmlinuz-$ver-$archroot=/dev/sdax(hdax)

注意,此处不要使用uuid指定跟文件系统(可能会无法挂载根分区而导致内核死机),也不要再加和显示相关的参数(内核不支持对应设置时,只会看到一个黑黑的屏幕)。

至此一个禁用initrd的新内核配置安装完毕!

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
天将雄师观后感600字 为什么喝酒会降血糖 牛栏山 52度浓香型白酒-购买最佳价格 全兴大曲 52度浓香型白酒-购买最佳价格 笔记本电脑怎么接音箱电脑如何连接外置音箱 笔记本电脑有音箱插孔吗笔记本电脑如何连接喇叭 冰箱压缩机过热启动5秒就停了 周长相等的正方形和圆,其面积比是多少 周长相等的正方形和圆面积比是多少 周长相等的正方形与圆形,边长与半径的比是( ),面积之比是( )。 要有... 华为荣耀9激活开发者模式要很久吗 有关物理实验二踪示波器的思考问题 blued怎么查找好友 blued地图怎么找人 三星平板中病毒怎么办? 读书小报是画报还是手抄报 读书小报手抄报 读书小报是不是就是手抄报 读书小报手抄报 读书小报是不是手抄报 读书小报手抄报 读书小报就是手抄报 读书小报手抄报 联想本机自带打印机驱动吗 茶艺与茶文化专业主要学什么-专业课程有哪些 茶学本科课程 载人航天科普知识读物《航天员为什么能上天》一书的作者是谁? 有哪些适合入门读者看到航天学,太空学书籍 计算机三级数据库大题怎么考 抖音双十一发货规则 双11抖音带货 抖音双11发货时间介绍 如何做好APP网上商城的策划运营? 补充医疗保险职工直付卡在那个药店使用 保险公司的第三方医疗费用直付的业务模式 我手机的屏幕上的手绘密码忘了,怎么解 山东省考面试名单 泰安公务员面试名单 山东省考进面名单在哪里看 2023年山东省考进面名单 施工许可证到期怎么办理延期 松材线虫病疫木加工板材定点加工企业审批管理办法 锦州司法鉴定评估收费标准是多少? 底孔的解释底孔的解释是什么 底孔是什么意思 底孔的介绍 12.9的底孔和13.7的底孔分别是多大的螺纹 3.2翻边孔底孔是多少 什么是新增债券? 预防化解债务风险措施及心得 linux命令补全快捷键 使用iTools快速升级App应用 2020征兵宣传标语四篇 漃漻jìliáo什么意思近义词和反义词是什么英文翻译是什么 漃什么意思?近义词和反义词是什么?英文翻译是什么? 我姓邓想帮女儿取个名字,她是2011年11月26日17点46分出生。。。。