linux 内核编译参数详解,请教关于编译内核的参数设置的文章

我的系统是redhat9。

我想编一个小一点、快一点、适合于一般的pc机的内核,试过两次,内核参数中有好多看不懂的,请大家推荐几篇关于内核参数选项的文章。

多谢!!

再问一个问题,redhat后面的那个发布版本号能说明些什么?我只知道linux是指一种内核。redhat7通过重新编译最新的稳定版本的内核也可以达到很好的效果。那为什么还说redhat8有很多bug,并且还有更新的发布版本出台,这一切都是怎么回事?

|

在RedHat linux 8.0下完整详尽的内核编译步骤和说明 kilvon(原作)

*************************************************************************

*以下步骤有很多都是很初级的命令或解释,因为偶是linux新手,

*在编译过程中走了很多弯路,花了大量时间找各种解决办法,所以

*把相应的命令都写了出来,希望对跟偶一样的才入门不久而又想

*编译内核的新手有所帮助!

*

* kilvon 05-Mar-2003

* kilvon_wu@hotmail.com

* 内容集众家之所长

*************************************************************************

基本编译情况说明:偶目前的版本是: RedHat linux 8.0

(机器有双操作系统:linux和windows 2000)

内核版本是 2.4.18-14,硬件是笔记本compaq 的某一型号,

下载的内核版本是2.4.20(在www.kernel.org上可以找到),

推荐编译内核时使用高版本,而不是在以前的版本上编译,

原因见第7.1步的说明

在编译开始前,建议先在windows下用相关软件对硬件做一个

详细统计,包括硬件类型,厂家,芯片版本等等,特别是笔记本

和品牌机,因为二者很多部件都是OEM其它厂家的,并把它打印

出来以供配置内核时使用.(linux下也可以用:系统工具->

硬件浏览器来查看)

另外建议在身旁准备几张纸和笔,随时把你认为重要的信息记下来,

当然包括错误信息了,以帮助以后判断和解决问题.

1.将内核源码包linux-2.4.20.tar.bz2 copy至/usr/src目录下:

#cp linux-2.4.20.tar.bz2 /usr/src

#cd /usr/src

2.将指向以前内核版本的symbol link删除

#rm -f linux-2.4

3.用以下命令解开压缩包

#bzip2 -d linux-2.4.20.tar.bz2

#tar -xvf linux-2.4.20.tar

4.创建新的symbol link以链接到刚解开的源码所在目录

#ln -s linux-2.4.20 linux-2.4

5.进入到以后编译时用的工作目录虾:

#cd /usr/src/linux-2.4

6.该命令保证源代码目录下没有不正确的.o文件(即object文件,编译c语

言时生成的,目的是下一步编译成可执行码时link之用)以及文件的相互

倚赖关系.第一次编译刚下载的源码包不用此命令,但如果多次使用这

些源码编译内核,那么一定要先运行本命令.

#make mrproper

7.为了不影响已经可用的内核(比如安装linux时装入的内核),现在需要

保存以前的可用的内核(以使得编译失败仍然可以"方便的"启动linux),

并且我们要对本次编译的内核标识一个容易辨认的标记,以下几步与

编译暂时无关.

7.1偶使用grub作为boot manager,所以要修改grub.conf文件,

#cp /boot/grub/grub.conf /boot/grub/grub.conf.bck

(建议有条件打印一份原始的grub.conf文件,原因见第7.4步)

#emacs /boot/grub/grub.conf

(emacs小提示: ctrl+ x +s 为保存结果,ctrl + x +c为关闭emacs,

删除n行文字为:先把光标放在要删除文字的起始处 ctrl + u,然后敲入要

删除的行数,比如4,最后ctrl + k)

下面是偶的grub.conf内容:

default=1

timeout=10

splashimage=(hd0,6)/grub/splash.xpm.gz

title Psyche (2.4.18-14 standard)

root (hd0,6)

kernel /vmlinuz-2.4.18-14.standard ro root=/dev/hda8

initrd /initrd-2.4.18-14.standard.img

title Windows 2000

rootnoverify (hd0,0)

chainloader +1

注意kernel...和initrd...两条语句,因为要与以下改动对应:

#rm -f /boot/System.map

#rm -f /boot/vmlinuz

#cp /boot/System.map-2.4.18-14 /boot/System.map-2.4.18.standard

#ln -s /boot/System.map-2.4.18.standard /boot/System.map

#cp /boot/vmlinuz-2.4.18-14 /boot/vmlinuz-2.4.18-14.standard

#ln -s /boot/vmlinuz-2.4.18-14.standard /boot/vmlinuz

#cp /boot/initrd-2.4.18-14.img /boot/initrd-2.4.18-14.standard.img

(initrd只用了copy,因为偶是编译一个高版本的内核,而不是同一个版本

内核的重新编译,编译高版本的好处在于系统会建立另外的目录而不会

用新编译的(可能是错的)版本覆盖以前的版本,看一下/lib/modules目录

就明白了.)

7.2如何知道你的根目录""在哪个partition上? 命令为:

#df

以下是偶机器的部分输出:

Filesystem 1K-blocks Used Available Use% Mounted on

/dev/hda8 4137264 2136592 1790508 55% /

...

看看你的系统根目录装在哪里很重要,因为后面你将会看到系统安装编译好的

内核时在grub.conf插入的命令中root=LABEL=/ hdc=ide-scsi

可能会引发系统引导时的如下错误:

VFS: Cannot open root device "" or 00:00

Please append a correct "root=" boot option

Kernel panic: VFS: Unable to Mount root fs on 00:00

所以要在grub.conf里修改其命令为:root=/dev/hda8

7.3好了,做完这些准备工作后,我们要--

重启一下机器,:)不要急,应为要先确认7.1步的工作的正确性,以免把7.1错误

带入以后的步骤中.(编译内核一定要非常小心谨慎,不能急躁,否则,嘿嘿...)

7.4如果在重启过程中系统有问题,可以在grub的引导界面上临时改动grub引

导参数,相关命令有:

e -编辑引导命令

ESC键 -回到上级目录

o -插入一行命令

b -开始引导系统

d -删除一行

其实你可以把grub控制台上的命令都删了(只影响本次启动),然后按照

/boot/grub/grub.conf里的命令手工在grub控制台上敲进去,也是一样的效果.

7.5如果你能使用重新配置的grub命令正确启动系统,那么让我们开始真正的

编译工作吧!!!!

7.6先保证我们在编译的工作目录下:

#cd /usr/src/linux-2.4

然后编辑Makefile(这个文件是用来控制编译用的),找到这一行:

EXTRAVERSION =

修改为(以偶本次编译为例,也可以是任意的合法字符串,比如"-sema-v.4")

EXTRAVERSION = -kilvon.001

8.偶是在X Window下编译:

#make xconfig

8.1如果你是在文本模式下,用

#make menuconfig

8.2其实编译步骤里最难的就是内核参数的配置,我在这里耗费了很多时间,

更惨的是开始并没有认识到这一点,以为是那些命令的使用...所以,接着看吧:

8.3选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编

译成为可加载模块(哪些较远?看各人对linux和操作系统概念的理解程度了,

还有就是看所配置项的help),有利于减小内核的长度,减小内核消耗的内

存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;

与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面对

常用的选项分别加以介绍:

/1. Code maturity level options

代码成熟等级。此处只有一项:

prompt for development and/or incomplete code/drivers

如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须

把该项选择为Y了;否则可以把它选择为N。

/2. Loadable module support

对模块的支持。这里面有三项:

Enable loadable module support:

除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。

Set version information on all module symbols:

可以不选它。

Kernel module loader:

让内核在启动时有自己装入必需模块的能力,建议选上。

/3. Processor type and features

CPU类型,选项很多,不一一介绍了,有关的几个如下:

Processor family:

根据你自己的情况选择CPU类型。

High Memory Support:

大容量内存的支持。可以支持到4G、64G,一般可以不选。

Math emulation:

协处理器仿真,协处理器是在386时代的宠儿,现在早已不用了。

MTTR support:MTTR支持。可不选。

Symmetric multi-processing support:

对称多处理支持。除非你富到有多个CPU,否则就不用选了。

/4. General setup

这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设

置就可以了。下面介绍一下经常使用的一些选项:

Networking support:

网络支持,必须选,没有网卡也建议选上。

PCI support:

PCI支持,必选.

PCI access mode:

PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。

Support for hot-pluggabel devices:

热插拔设备支持,可选.

PCMCIA/CardBus support:

PCMCIA/CardBus支持,有PCMCIA就必选了。

System V IPC

BSD Process Accounting

Sysctl support:

以上三项是有关进程处理/IPC调用的,主要就是System V和BSD两种风格。

如果你不是使用BSD,就按照缺省吧。

Power Management support:电源管理支持,可选上,特别是笔记本.

Advanced Power Management BIOS support:高级电源管理BIOD支持。

/5. Memory Technology Device(MTD)

MTD设备支持

可不选。

/6. Parallel port support

串口支持。如果不打算使用串口,就别选了。

|

一个完整的系统不光是内核,还有其他东西,比如KDE和Gnome等等,所以一个系统采用许多新的东西的时候必然会有很多bug

内核编译的参数你可以自己查查看,太多选项了,一句话也说不清

|

Linux编译内核详解

http://tech.163.com/tm/001010/001010_9298(2).html

linux内核编译详解 。。。。。 Linux 编译内核详解 内核简介 内核,是一个操作系统的核心。它负责管理系统的进程、内存、设备驱动程序、文件和 网络系统,决定着系统的性能和稳定性。 Linux 的 一 个 重 要 的 特 点 就 是 其 源 代 码 的 公 开 性 , 所 有 的 内 核 源 程 序 都 可 以 在 /usr/src/linux 下找到,大部分应用软件也都是遵循 GPL 而设计的,你都可以获取相应的源程 序代码。 全世界任何一个软件工程师都可以将自己认为优秀的代码加入到其中, 由此引发的 一个明显的好处就是 Linux 修补漏洞的快速以及对最新软件技术的利用。 Linux内核则 而 是这些特点的最直接的代表。 想象一下, 拥有了内核的源程序对你来说意味着什么?首先, 我们可以了解系统是如何 工作的。通过通读源代码,我们就可以了解系统的工作原理,这在 Windows 下简直是天方 夜谭。其次,我们可以针对自己的情况,量体裁衣,定制适合自己的系统,这样就需要重新 编译内核。在 Windows 下是什么情况呢?相信很多人都被越来越庞大的 Windows 整得莫名 其妙过。再次,我们可以对内核进行修改,以符合自己的需要。这意味着什么?没错,相当 于自己开发了一个操作系统, 但是大部分的工作已经做好了, 你所要做的就是要增加并实现 自己需要的功能。在 Windows 下,除非你是微软的核心技术人员,否则就不用痴心妄想了。 内核版本号 由于 Linux 的源程序是完全公开的, 任何人只要遵循 GPL, 就可以对内核加以修改并发 布给他人使用。Linux 的开发采用的是集市模型(bazaar,与 cathedral--教堂模型--对应) ,为 了确保这些无序的开发过程能够有序地进行, Linux 采用了双树系统。 一个树是稳定树 (stable ,另一个树是非稳定树(unstable tree)或者开发树(development tree) 。一些新特性、 tree) 实验性改进等都将首先在开发树中进行。如果在开发树中所做的改进也可以应用于稳定树, 那么在开发树中经过测试以后, 在稳定树中将进行相同的改进。 一旦开发树经过了足够的发 展,开发树就会成为新的稳定树。开发数就体现在源程序的版本号中;源程序版本号的形式 为 x.y.z:对于稳定树来说,y 是偶数;对于开发树来说,y 比相应的稳定树大一(因此,是 奇数) 到目前为止, 。 稳定树的最高版本是 2.2.16, 最新发布的 Redhat7.0 所采用的就是 2.2.16 的内核;开发树的最新版本是 2.3.99。也许你已经发现和多网站上都有 2.4.0-test9-pre7 之类 的内核,但是这并不是正式版本。内核版本的更新可以访问 http://www.kernel.org/。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值