分享
 
 
 

RedHat8.0下完整的内核编译步骤和说明

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

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

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

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

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

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

*

* kilvon 05-Mar-2003

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

基本编译情况说明:偶目前的版本是: 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设

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有