当前位置:  技术问答>linux和unix

请教关于编译内核的参数设置的文章

    来源: 互联网  发布时间:2015-05-22

    本文导语:  我的系统是redhat9。 我想编一个小一点、快一点、适合于一般的pc机的内核,试过两次,内核参数中有好多看不懂的,请大家推荐几篇关于内核参数选项的文章。 多谢!! 再问一个问题,redhat后面的那个发布版本号...

我的系统是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

    
 
 

您可能感兴趣的文章:

  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • 请教一个linux进程内核栈的问题
  • 【请教】怎么修改linux内核参数
  • 请教,linux内核协议栈中,从内核往驱动发送的报文(注意是下行,不是上行),如何从sk_buff判断是组播数据报文还是组播协议报文????
  • 万能的CSDN啊,100分请教高手一个编译内核传参的问题!
  • 请教风河 linux内核 如何配置使之支持xwindows?
  • 80分请教关于内核的module机制
  • 请教内核ppp代码的内容——在线等
  • 请教高手:如何学习内核编程?
  • 请教内核编译的问题!
  • 请教Linux内核编译的问题
  • 初学Linux内核编译,几个问题请教一下
  • 请教:想学LINUX内核编程,请指点
  • 内核安装错误,请教!
  • 请教内核树的问题
  • 请教部分内核参数的意义
  • 100分请教高手一个Linux内核ARM汇编的问题
  • 请教linux的学习,怎么学? 内核开发找什么样的工作?
  • 请教本地硬盘安装问题请教本地硬盘安装问题 iis7站长之家
  • 请教2.6内核下如何进行文件的读写?
  • 请教:JSP编译器编译成字节码,跟别的编译器编译出来的有什么不同呢?
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 用Jdk编译时出现提示要加 -deprecation 再编译,请教??
  • gcc 编译的问题,请教各位
  • 请教一个GCC编译选项
  • 请教:有没有把java编译好的.java和.class文件编译成各个平台下的可执行文件??.exe?着急着急
  • 请教:嵌入式Linux交叉编译工具----版本选择的问题
  • 请教:编译的时候为什么说不认识WindowAdapter?
  • 请教关于用c编译出来的.a文件和用c++编译出来的.a文件的互用问题
  • 新手请教linux下的c语言编译!
  • 请教一个gcc静态编译的问题。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 高分请教: 如何用Java调用带多个参数的EXE文件?
  • 请教高手glade中的参数问题
  • 请教————由servlet如何传递参数给JSP页面???
  • test 参数请教。。。
  • 请教unix下参数的问题,谢谢
  • 请教给问题,给分哦!shell 中输入一个日期参数,得到该日期的星期。
  • 请教iptables参数含义
  • 请教有关命令行参数问题
  • 请教一个有关参数化类型的问题??
  • 请教一下这个参数的意思
  • 请教grub.conf配置文件中"root="参数的问题
  • 请教关于PreparedStatement参数的问题
  • 请教一个ioctl函数的参数问题
  • 请教两个关于内核的启动参数的问题
  • 请教从SERVLET传递参数到JSP中的中文问题。
  • 请教高手:JSP中的参数为汉字时,传过去不对?
  • 请教一个Putty参数设置的问题
  • *****请教SWING高手,我想让JTree一开始的某个节点处于展开,用的是expandPath(TreePath p),请问如何构造TreePath参数,用字符串可以吗
  • 请教gcc的-I 参数
  • 请教:激活交换区swap失败:提示swapon: /dev/swap_add: 无效的参数
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3