好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

linux内核编译过程.doc

13页
  • 卖家[上传人]:marr****208
  • 文档编号:117010918
  • 上传时间:2019-11-18
  • 文档格式:DOC
  • 文档大小:69KB
  • / 13 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 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 linux-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 config 或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 /boot (用的是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 -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 失败,只要加上:--without-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是否已经加载了新内核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,不需要全部重新来过如果你以后还要利用这次编译的成果,也可以省略这一步,如果你想直接删除源代码目录,也可以省略这一步一些升级内核前的备份过程: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三个目录改名 [root@localhost /usr/include]# mv asm asm.OFF [root@localhost /usr/include]# mv scsi scsi.OFF [root@localhost /usr/include]# mv linux linux.OFF 建立指向新内核的位置到第三步中被改名的原目录 [root@localhost /usr/include]# ln -s /usr/src/linux/include/asm-i386 asm [root@localhost /usr/include]# ln -s /usr/src/linux/include/scsi scsi [root@localhost /usr/include]# ln -s /usr/src/linux/include/linux linux检验 # ls /boot如果看到了 vmlinuz-2.6.0 和 System.map-2.6.0 ,那么恭喜你,成功了!如果你是用 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目录下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下: #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(写于/etc/conf.modules(?), 那样则boot kernel时会自动加入自己定制编译的内核运行更快(具有更少的代码) 系统将拥有更多的内存(内核部分将不会被交换到虚拟内存中) 不需要的功能编译进入内核可能会增加被系统攻击者利用的漏洞 将某种功能编译为模块方式会比编译到内核内的方式速度要慢一些 查看swap有没有打开(用free指令)。

      此外,最好不要超频,不然很有可能会发生signal 11的错误,使得编到一半的核心停了下来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 High 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:。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.