Linux内核编译过程

上传人:cl****1 文档编号:487764600 上传时间:2023-08-05 格式:DOC 页数:13 大小:69KB
返回 下载 相关 举报
Linux内核编译过程_第1页
第1页 / 共13页
Linux内核编译过程_第2页
第2页 / 共13页
Linux内核编译过程_第3页
第3页 / 共13页
Linux内核编译过程_第4页
第4页 / 共13页
Linux内核编译过程_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《Linux内核编译过程》由会员分享,可在线阅读,更多相关《Linux内核编译过程(13页珍藏版)》请在金锄头文库上搜索。

1、linux内核编译过程本文档以2.6.5内核为例,一些过程说明经过了本人的精简,如有疑问请自行用百度或Google,只保证本人看的懂_一些设置按照自己的情况调整,不要完全照搬。对于编译内核造成的损失本人不负任何责任_供参考。1.download linux-2.6.5.tar.gz2.cp linux-2.6.5.tar.gz /usr/src3.cd /usr/src4.mv linux linux_old5.tar xvzf linux-2.6.5.tar.gzbzip2 -d linux-2.6.5.tar.bz2tar -xvf linux-2.6.5.tar或者tar jxvf li

2、nux-2.6.5.tar.bz26.cd /usr/includerm -rf asm linux scsiln -s /usr/src/linux/include/asm-i386 asmln -s /usr/src/linux/include/linux linuxln -s /usr/src/linux/include/scsi scsi7.cd /usr/src/linuxmake mrproper (检查有无不正确的.o文件和依赖关系,使用刚下载的完整的源程序包进行编译,所以本步可以省略。而如果你多次使用了这些源程序编译内核,那么最好要先运行一下这个命令。 )8.make conf

3、ig 或make menuconfig (推荐) 或make xconfig选择完返回MainMenu,选择save and exit,退出配置窗口并关闭超级用户终端。现在可以退出xwindows了,回到文本环境(这样做可以加快内核编译速度)执行最后操作9.make dep10.make zImage若想做成启动盘的形式可 make zdisk,若kernel大于512K,应用make bzImage (推荐)11.make modules make modules_install depmod -a12.cp /usr/src/linux/arch/i386/boot/zImage /boo

4、t (用的是make zImage) 或cp /usr/src/linux/arch/i386/boot/bzImage /boot (用的是make bzImage)13.修改lilo.conf 或grub.conf(添加)image=/boot/zImage(或bzImage)label=newroot=.14. lilo & grublilo -v 使改动生效。建议保留旧内核的项目,避免编译失败。通常 grub 配置文件在下面三个地方(根据发行版的不同):/etc/grub.conf/boot/grub/menu.lst/boot/grub/grub.conf15. shutdown -

5、r now如果你的 kernel 支持内存镜像,就用 mkinitrd 命令制作一个镜像文件,然后拷贝到 /boot 路径下。要这么做,也要记得在 make menu 的时候记得选择内核镜像 ram image,并且不能安装为模块,否则 initrd 就不会运作。生成映像文件,否则有时系统启动时会找不到/根分区。mkinitrd /boot/initrd-.2.4.20-8.img 2.4.20-8initrd.img就是initrd-2.4.20-8.img文件的链接#ln -s initrd-2.4.20-8.img initrd.img有的时候 mkinitrd 失败,只要加上:-wit

6、hout-scsi-module 就可以通过了。把旧内核源文件下的.config文件拷贝到新内核源文件下,如cp /usr/src/linux-2.4.22/.config /usr/src/linux-2.6.5/然后在新内核目录下运行make oldconfig,如果想改动什么,可以make menuconfig,但是一定要先make oldconfig。然后就编译内核,很容易:make bzImage make modules make modules_install make install然后到/boot 看看是不是已经有新内核文件了,再看/boot/grub/grub.conf是否

7、已经加载了新内核。shutdown -r nowcp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.6.5(新内核的bzImage的位置也有可能在/usr/src/linux/i386/下)cp /usr/src/linux/System.map /boot/System.map-2.6.5make clean没有 make clean 之前,如果增加了新的模块,可以直接 make menuconfig & make moduels & make modules_install,不需要全部重新来过。如果你以后还要利用这次编译的成果,

8、也可以省略这一步,如果你想直接删除源代码目录,也可以省略这一步。一些升级内核前的备份过程:cd /boot/mv System.map System.map.oldmv vmlinuz vmlinuz.oldcd /usr/src/ln -s linux-2.6.5 linux进入/usr/include目录下,将asm、scsi、linux三个目录改名 rootlocalhost /usr/include# mv asm asm.OFF rootlocalhost /usr/include# mv scsi scsi.OFF rootlocalhost /usr/include# mv li

9、nux linux.OFF 建立指向新内核的位置到第三步中被改名的原目录 rootlocalhost /usr/include# ln -s /usr/src/linux/include/asm-i386 asm rootlocalhost /usr/include# ln -s /usr/src/linux/include/scsi scsi rootlocalhost /usr/include# ln -s /usr/src/linux/include/linux linux检验 # ls /boot如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你

10、,成功了!如果你是用 make install 安装的,还会看到个 config-2.6.0 文件cd /boot/ln -s vmlinuz-2.6.5 vmlinuzln -s System.map-2.6.5 System.map(上面的两步的作用是保护真正的内核镜像不受损坏)vmlinuz是压缩的内核二进制可执行文件#du -sh vmlinuz-2.6.5用来查看新的内核有多大如果你的Kernel 配置支持Modules的话,解决那些问题是比较简单的只要编译那些.o文件就可以啦.比如我的声卡经常Irq 和 IO 不对, 我就到 /usr/src/linux/drivers/sound

11、目录下gcc -o configure configure.c./configure选好IO,IRQ 等等,makecp sound.o /lib/modules/2.0.34/miscrmmod soundinsmod sound init_trace=1测试一下.直到成功为止.比在 /usr/src/linux 下, make menuconfig ;make dep;make clean;make zImage;. 好多了.怎么给内核打补丁?# cd /usr/src/linux# bzip2 -dc patch-xxx.bz2 | patchPATCH文件拷贝到/usr/src下: #

12、patch -p0 patch-2.2.16#gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 源码目录可以使用这种方式来安装任何补丁,而不用管它的文件名了用lsmod看当前装入的module, insmod/rmmod增删module. 对于fs,network方面的module, kernel是可以自动动态装载的(通过kerneld, 要用时自动insmod) 而对于与硬件相关的module(如网卡,SCSI卡等), 则需自己手工加入, 或用RedHat Control Panel中的kernelcfg来选择module(写于/e

13、tc/conf.modules(?), 那样则boot kernel时会自动加入自己定制编译的内核运行更快(具有更少的代码) 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 查看swap有没有打开(用free指令)。此外,最好不要超频,不然很有可能会发生signal 11的错误,使得编到一半的核心停了下来1. Code maturity level options 代码成熟等级。此处只有一项:prompt for development and/or incomple

14、te 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 Hig

15、h Memory Support:大容量内存的支持。可以支持到4G、64G,一般可以不选。Math emulation:协处理器仿真。协处理器是在386时代的宠儿,现在早已不用了。 MTTR (memory type range register)support-选择该选项,系统将生成/proc/mtrr文件对MTRR进行管理,供X server使用。同时用来启动pentinum pro和pentinum II 的特殊功能,如果你用的不是这类CPU就选N,否则也仅仅是使内核变大而已。Symmetric multi-processing support:对称多处理支持。除非你富到有多个CPU,否则就不用选了。 4. General setup 一般使用缺省设置就可以了。Networking support:网络支持。必须,没有网卡也建议你选上。 PCI support:PCI支持。如果使用了PCI的卡,当然必选。 PCI access mode:PCI存取模式。可供选择的有BIOS、Direct和Any,选Any吧。 Support for hot-pluggabel devices:热插拔设备支持。PCMCIA/CardBus support:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号