免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 950 | 回复: 0
打印 上一主题 下一主题

redhat编译内核 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-05-12 01:10 |只看该作者 |倒序浏览
[color="#333333"]redhat编译内核
引自:http://blog.chinaunix.net/u/24390/showart_298489.html
在Linux内核中,包括了进程管理
(process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory
management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file
system)、设备驱动程序(device driver)、进程间通信(inter-process
communication)、网络管理(network management)、系统启动(system init)等操作系统功能的实现。
[color="#000000"]
    新内核可以在
[color="#0000ff"]http://www.kernel.org
下载。
[color="#000000"]先把linux-2.6.18.2.tar.bz2 复制到/usr/src/ 的下面
[color="#000000"]tar –jxvf  linux-2.6.18.2.tar.bz2
[color="#000000"]cd linux-2.6.18.2
[color="#000000"]
[color="#000000"]make mrproper 把原来编译产生的垃圾删除
[color="#000000"]
[color="#000000"]配置内核可以根据需要与爱好使用下面命令中的一个:
[color="#000000"]#make config (基于文本的最为传统的配置界面)
[color="#000000"]#make menuconfig (基于文本选单的配置界面)
[color="#000000"]#make xconfig (基于图形窗口模式的配置界面)
[color="#000000"]#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)
[color="#000000"]
[color="#000000"]进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。
[color="#000000"]                          
[color="#000000"]选择相应的配置时,有三种选择,它们分别代表的含义如下:
[color="#000000"]                          
[color="#000000"] “Y”- 将该功能编译进内核
[color="#000000"]                          
[color="#000000"] “N”- 不将该功能编译进内核
[color="#000000"]                          
[color="#000000"] “M”- 将该功能编译成可以在需要时动态插入到内核中的模块。
[color="#000000"]                          
[color="#000000"]    将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。
[color="#000000"]                          
[color="#000000"]其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。
[color="#000000"]配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make  menuconfig后离开时选择保存。
[color="#000000"]这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。
[color="#000000"]还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。
[color="#000000"]
[color="#000000"][root@leo boot]# lspci
[color="#000000"]00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)
[color="#000000"]00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)
[color="#000000"]00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)
[color="#000000"]00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)
[color="#000000"]00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB
[color="#000000"]00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)
[color="#000000"]00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter
[color="#000000"]00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)
[color="#000000"]00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)
[color="#000000"]00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)
[color="#000000"]
[color="#000000"]编译配置
[color="#000000"]在这一部分涉及几个重要模块的配置请,特别注意.一般用"make menuconfig"命令来配置内核.
[color="#000000"]输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置
[color="#000000"]1)文件系统
[color="#000000"]请务必要选中ext3文件系统,
[color="#000000"]  File systems--->
[color="#000000"]  
  • Ext3 journalling file system support
    [color="#000000"]  
  • Ext3 Security Labels
    [color="#000000"]  
  • JBD (ext3) debugging support
    [color="#000000"]  以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
    [color="#000000"]  
    [color="#000000"]2)网卡驱动
    [color="#000000"]  请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考
    [color="#000000"]  Device Drivers--->
    [color="#000000"]  Networking support--->
    [color="#000000"]  Ethernet (10 or 100Mbit) --->
    [color="#000000"]   RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)
    [color="#000000"]   RealTek RTL-8139 PCI Fast Ethernet Adapter support
    [color="#000000"]3)声卡驱动
    [color="#000000"]  也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考
    [color="#000000"]  Device Drivers --->
    [color="#000000"]  Sound --->
    [color="#000000"]   Sound card support
    [color="#000000"]  Advanced Linux Sound Architecture --->
    [color="#000000"]   Advanced Linux Sound Architecture
    [color="#000000"]   Sequencer support
    [color="#000000"]   Sequencer dummy client
    [color="#000000"]   OSS Mixer API
    [color="#000000"]   OSS PCM (digital audio) API
  • OSS Sequencer API
    [color="#000000"]   RTC Timer support
    [color="#000000"]  PCI devices --->
    [color="#000000"]   Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111
    [color="#000000"]  Open Sound System --->
    [color="#000000"]   Open Sound System (DEPRECATED)
    [color="#000000"]以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.
    [color="#000000"]
    [color="#000000"]#make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。
    [color="#000000"]                          
    [color="#000000"]#make clean (确保所有有关文件都处于最新版本状态)
    [color="#000000"]                          
    [color="#000000"]#make zImage (编译压缩形式的内核)
    [color="#000000"]                          
    [color="#000000"]在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:
    [color="#000000"]                          
    [color="#000000"]#make bzImage
    [color="#000000"]                          
    [color="#000000"]编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。
    [color="#000000"]                          
    [color="#000000"]如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:
    [color="#000000"]                          
    [color="#000000"]#make modules (编译选择的模块)
    [color="#000000"]                          
    [color="#000000"]#make module_install (将编译后的模块转移到系统标准位置)
    [color="#000000"]
    [color="#000000"]# make install
    [color="#000000"]
    [color="#000000"]上面的命令"make install"将:
    [color="#000000"] (1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;
    [color="#000000"] (2)修改bootloader的配置文件;
    [color="#000000"] (3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:
    [color="#000000"]
    [color="#000000"]      title Red Hat Linux (2.***)
    [color="#000000"]      root(hd0, 1)
    [color="#000000"]      kernel /boot/vmlinuz-2.*** ro root=LABEL=/
    [color="#000000"]      initrd /boot/initrd-2.***.img
    [color="#000000"]                          
    [color="#000000"]模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make  modules_install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令#lsmod可以对当前内核的模块进行列表。
    [color="#000000"]                          
    [color="#000000"]我一般是make bzImage;make modules;make module_install; make install
    [color="#000000"]                          
    [color="#000000"]运行新内核之前,请检查一下/boot/grub/grub.conf的内容,下面的配置可作参考
    [color="#000000"]# grub.conf generated by anaconda
    [color="#000000"]#
    [color="#000000"]# Note that you do not have to rerun grub after making changes to this file
    [color="#000000"]# NOTICE:  You have a /boot partition.  This means that
    [color="#000000"]#          all kernel and initrd paths are relative to /boot/, eg.
    [color="#000000"]#          root (hd0,0)
    [color="#000000"]#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
    [color="#000000"]#          initrd /initrd-version.img
    [color="#000000"]#boot=/dev/hda
    [color="#000000"]default=0
    [color="#000000"]timeout=5
    [color="#000000"]splashimage=(hd0,0)/grub/splash.xpm.gz
    [color="#000000"]hiddenmenu
    [color="#000000"]title Fedora Core (2.6.18.2)
    [color="#000000"]        root (hd0,0)
    [color="#000000"]        kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    [color="#000000"]        initrd /initrd-2.6.18.2.img
    [color="#000000"]title Fedora Core (2.6.18-1.2798.fc6)
    [color="#000000"]        root (hd0,0)
    [color="#000000"]        kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
    [color="#000000"]        initrd /initrd-2.6.18-1.2798.fc6.img
    [color="#000000"]
    [color="#000000"]现在重启机器,即可测试最新的内核。
    [color="#000099"]原文地址
    [color="#0000ff"]http://blog.csdn.net/youyoufengxinzi/archive/2007/02/27/1516263.aspx

                   
                   
                   

    本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/24475/showart_298990.html
  • 您需要登录后才可以回帖 登录 | 注册

    本版积分规则 发表回复

      

    北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
    未成年举报专区
    中国互联网协会会员  联系我们:huangweiwei@itpub.net
    感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

    清除 Cookies - ChinaUnix - Archiver - WAP - TOP