RedHat80下完整的内核编译步骤和说明_第1页
RedHat80下完整的内核编译步骤和说明_第2页
RedHat80下完整的内核编译步骤和说明_第3页
RedHat80下完整的内核编译步骤和说明_第4页
RedHat80下完整的内核编译步骤和说明_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、RedHat8.0下完整的内核编译步骤和说明 * *以下步骤有很多都是很初级的命令或解释,因为偶是linux新手, *在编译过程中走了很多弯路,花了大量时间找各种解决办法,所以 *把相应的命令都写了出来,希望对跟偶一样的才入门不久而又想 *编译内核的新手有所帮助! * * kilvon 05-Mar-2003 * 基本编译情况说明:偶目前的版本是: RedHat linux 8.0 (机器有双操作系统:linux和windows 2000) 内核版本是 2.4.18-14,硬件是笔记本compaq 的某一型号, 下载的内核版本是2.4.20(在上可以找到), 推荐编

2、译内核时使用高版本,而不是在以前的版本上编译, 原因见第7.1步的说明 在编译开始前,建议先在windows下用相关软件对硬件做一个 详细统计,包括硬件类型,厂家,芯片版本等等,特别是笔记本 和品牌机,因为二者很多部件都是OEM其它厂家的,并把它打印 出来以供配置内核时使用.(linux下也可以用:系统工具- 硬件浏览器来查看) 另外建议在身旁准备几张纸和笔,随时把你认为重要的信息记下来, 当然包括错误信息了,以帮助以后判断和解决问题. 1.将内核源码包linux-2.4.20.tar.bz2 copy至/usr/src目录下: #cp linux-2.4.20.tar.bz2 /usr/sr

3、c #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之用)以

4、及文件的相互 倚赖关系.第一次编译刚下载的源码包不用此命令,但如果多次使用这 些源码编译内核,那么一定要先运行本命令. #make mrproper 7.为了不影响已经可用的内核(比如安装linux时装入的内核),现在需要 保存以前的可用的内核(以使得编译失败仍然可以方便的启动linux), 并且我们要对本次编译的内核标识一个容易辨认的标记,以下几步与 编译暂时无关. 7.1偶使用grub作为boot manager,所以要修改grub.conf文件, #cp /boot/grub/grub.conf /boot/grub/grub.conf.bck (建议有条件打印一份原始的grub.con

5、f文件,原因见第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-

6、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.sta

7、ndard /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,因为偶是编译一个高版本的内核,而不是同一个版本 内核的重新编译,编译高版本的好处在于系统会建立另外的目录而不会 用新编译的(可能是错的)版本覆盖以前的版本,看一

8、下/lib/modules目录 就明白了.) 7.2如何知道你的根目录在哪个partition上? 命令为: #df 以下是偶机器的部分输出: Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda8 55% / . 看看你的系统根目录装在哪里很重要,因为后面你将会看到系统安装编译好的内核时在grub.conf插入的命令中root=LABEL=/ hdc=ide-scsi 可能会引发系统引导时的如下错误: VFS: Cannot open root device or 00:00 Please append a correct

9、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

10、-删除一行 其实你可以把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 W

11、indow下编译: #make xconfig 8.1如果你是在文本模式下,用 #make menuconfig 8.2其实编译步骤里最难的就是内核参数的配置,我在这里耗费了很多时间, 更惨的是开始并没有认识到这一点,以为是那些命令的使用.所以,接着看吧: 8.3选择的原则是将与内核其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块(哪些较远?看各人对linux和操作系统概念的理解程度了,还有就是看所配置项的help),有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响;不需要的功能就不要选;与内核关心紧密而且经常使用的部分功能代码直接编译到内核中。下面

12、对常用的选项分别加以介绍: /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 infor

13、mation 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支持。可不选。

14、 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: 热插拔设备支持,

15、可选. 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)

16、 MTD设备支持 可不选。 /6. Parallel port support 串口支持。如果不打算使用串口,就别选了。 /7. Plug and Play configuration 即插即用支持。选上吧,可以体验一下Linux下即插即用的感觉。 /8. Block devices 块设备支持,需要针对每个人的具体情况来选: Normal PC floppy disk support:普通PC软盘支持,一般要选,我的没有, 就没选 XT hard disk support: Compaq SMART2 support: Mulex DAC960/DAC1100 PCI RAID Contro

17、ller support:RAID镜像用的。 Loopback device support: Network block device support:网络块设备支持。如果想访问网上邻居的 东西,就选上。 Logical volume manager(LVM)support:逻辑卷管理支持。 Multiple devices driver support:多设备驱动支持。 RAM disk support:RAM盘支持。 /9. Networking options 网络选项。这里配置的是网络协议。自己看吧. 除了肯定要选中TCP/IP networking外,其它看着办吧 /10. Tel

18、ephony Support Linux下可以支持电话卡,这样你就可以在IP上使用普通的电话提供语音服务.详细情况可看看help内容. /11. ATA/IDE/MFM/RLL support 这个是有关各种接口的硬盘/光驱/磁带/软盘支持的,内容太多了,使用缺省 的选项吧,偶有PCMCIA卡,各人机器情况不一样. /12. SCSI support SCSI设备的支持, 如果你用了SCSI的硬盘/光驱/磁带等设备,自己找好了. /13. IEEE 1394(FireWire)support 偶的是灰的,不用操心了,:) /14. I2O device support 在智能Input/Out

19、put(I2O)体系接口中使用,不会,用缺省吧. /15. Network device support 网络设备支持。上面选好协议了,现在该选设备. 为了免得麻烦,编译到内核里面好了,不选M了,选Y。耐心点,一般说来你都能找到自己用的网卡。如果没有,你只好自己到厂商那里去当驱动了, 或者去看看 /16. Amateur Radio support 没有,不选. /17. IrDA(infrared)support 这个要红外支持,我的有. /18. ISDN subsystem 如果你使用ISDN上网,这个就必不可少了 /19. Old CD-ROM drivers(not SCSI、not

20、 IDE) 专门为非SCSI/IDE口的光驱做的,但谁还在用那么老的东东啊,自己选吧. /20.Input Core Support 这个选项很重要,除了joystick(游戏遥控杆)建议都选m.切记! /21. Character devices 字符设备。这个内容又太多了,先使用缺省设置,需要的话自己就修改: I2C support:I2C是Philips极力推动的微控制应用中使用的低速串行 总线协议。如果你要选择下面的Video For Linux,该项必选。 Mice:鼠标。如果是笔记本,建议在Bus Mouse Support选上y. Joysticks:手柄。即使在Linux下把手

21、柄驱动起来意义不大 Watchdog Cards:虽然称为Cards,这个可以用纯软来实现,当然也有 硬件的。如果你把这个选中,那么就会在你的/dev下创建一个名为 watchdog的文件,它可以记录你的系统的运行情况,一直到系统重新 启动的1分钟左右。有了这个文件,你就可以恢复系统到重启前的状态了。 Video For Linux:支持有关的音频/视频卡。 Ftape, the floppy tape device driver: PCMCIA character device support: /22.Multimedia devices 为捕捉audio/video用,如果感兴趣看看he

22、lp /23. File systems 文件系统。内容太多了,建议在缺省选项的基础上进行修改。 介绍以下几项: Quota support:Quota可以限制每个用户可以使用的硬盘空间的上限,在多用户共同使用一台主机的情况中十分有效。 DOS FAT fs support: DOS FAT文件格式的支持,可以支持FAT16、FAT32。 ISO 9660 CD-ROM file system support:光盘使用的就是ISO 9660的文件格式。 NTFS file system support:ntfs是NT使用的文件格式,你要在linux下mount ntfs分区的话,就要选上它。记

23、得在mount的时候, 只有iocharset=cp936可以加上,codepage=936不能加。 /proc file system support:/proc文件系统是Linux提供给用户和系统进行交 互的通道,建议选上,否则有些功能没法正确执行。 还有另外三个大类都规到这儿了:Network File Systems(网络文件系统)、 Partition Types(分区类型)、Native Language Support(本地语言支持)。 值得一提的是Network File Systems里面的两种:NFS和SMB分别是Linux和 Windows相互以网络邻居的形式访问对方所使

24、用的文件系统,根据需要加以选择。 /24 Console drivers 用缺省 /25 Sound 你用什么声卡?选选吧. /26 USB Support 很重要,至少要选以下选项 Support for USB UCHI Alternate Deriver (JE) Support OCHI (Compaq,iMacs. USB Audio. USB MIDI. USB Human Interface Device (full HID) support HID input layer support /dev/hiddev raw HID. USB LCD device support 因

25、为偶的硬件很多都要求USB HID 支持,所以这里选了不少 *如果有某些选项那不准,可以参考: /usr/src/linux-2.4/Documentation/Configure.help 也可以search整个系统并看看相关的文字都在哪些文件出现: #find /usr -name *.* -print -exec grep -q -s mousedev ; -print 这个长命令很有用 8.4别忘了将你的配置保存到一个文件里,否则下次编译时又要重选! Load Configuration from file 比如保存到/home/kilvon/conf/Kernel-kilvon.00

26、1 8.5用以下命令读取刚才的配置数据使之生效: #make dep #make clean 9.开始编译内核和模块 #make bzImage #make modules #make modules_install 10.将编译好的文件移到/boot下;如果上面某步有错,大部分情况是由于 配置内核选项时将一些当前版本只能编译为modules的选为编译到内核里, 我遇到好几次这样的情况.应为既然发布一个稳定的内核, (偶没down那些alpha,beta版)9成9可以成功的编译. #move /usr/src/linux-2.4/System.map /boot/S

27、ystem.map-2.4.20-kilvon.001 #move /usr/src/linux-2.4/arch/i386/boot/bzImage /boot/vmlinuz-2.4.20-kilvon.001 #rm -f System.map #rm -f vmlinuz #ln -s /boot/System.map-2.4.20-kilvon.001 /boot/System.map #ln -s /boot/vmlinuz-2.4.20-kilvon.001 /boot/vmlinuz 11.作些收尾工作: #new-kernel-pkg -install -depmod -mk

28、initrd 2.4.20-kilvon.001 -mkinitrd 作Initial Ramdisk的,可以直接敲个mkinitrd -h看看 -depmod 检查内核中有没有未解析的symbol -install 在grub中安装一个启动选项 12.看看第7.2步的相关解释,现在请修改/boot/grub/grub.conf文件, 以下是修改后的grub.conf: default=2 timeout=10 splashimage=(hd0,6)/grub/splash.xpm.gz title Psyche (2.4.20-kilvon.001) root (hd0,6) kernel

29、/vmlinuz-2.4.20-kilvon.001 ro root=/dev/hda8 initrd /initrd-2.4.20-kilvon.001.img title Psyche (2.4.18-14 standard) root (hd0,6) kernel /vmlinuz-2.4.18-14.standard ro root=LABEL=/ hdc=ide-scsi initrd /initrd-2.4.18-14.standard.img title Windows 2000 rootnoverify (hd0,0) chainloader +1 13.再好好检查一下/boot下的文件名是否敲对了(前面有好多的mv,cp动作) rootlocalhost boot# ll total 8880 5824 9月 6 04:53 boot.b 612 9月 6 04:53 chain.b 42150 9月 5 01:47 config-2.4.18-14 1024 3月 5 21:32 grub 3月 5 03:49 initrd-2.4.1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论