设为首页 收藏本站
查看: 521|回复: 0

[经验分享] redhat编译内核

[复制链接]

尚未签到

发表于 2016-5-14 07:42:42 | 显示全部楼层 |阅读模式
在Linux内核中,包括了进程管理 (process management)、定时器(timer)、中断管理(interrupt management)、内存管理(memory management)、模块管理(module management)、虚拟文件系统接口(VFS layer)、文件系统(file system)、设备驱动程序(device driver)、进程间通信(inter-process communication)、网络管理(network management)、系统启动(system init)等操作系统功能的实现。

    新内核可以在http://www.kernel.org下载。
先把linux-2.6.18.2.tar.bz2 复制到/usr/src/ 的下面

tar –jxvf  linux-2.6.18.2.tar.bz2

cd linux-2.6.18.2


make mrproper 把原来编译产生的垃圾删除


配置内核可以根据需要与爱好使用下面命令中的一个:

#make config (基于文本的最为传统的配置界面)

#make menuconfig (基于文本选单的配置界面)

#make xconfig (基于图形窗口模式的配置界面)

#make oldconfig (如果只想在原来内核配置的基础上修改一些小地方,会省去不少麻烦)


进行配置时,大部分选项可以使用其缺省值,只有小部分需要根据用户不同的需要选择。例如,如果需要内核支持DOS分区的文件系统,则要在文件系统部分选择FAT或DOS系统支持;系统如果配有网卡、PCMCIA卡等,需要在网络配置中选择相应卡的类型。

                          

选择相应的配置时,有三种选择,它们分别代表的含义如下:

                          

“Y”- 将该功能编译进内核

                          

“N”- 不将该功能编译进内核

                          

“M”- 将该功能编译成可以在需要时动态插入到内核中的模块。

                          

    将与核心其它部分关系较远且不经常使用的部分功能代码编译成为可加载模块,有利于减小内核的长度,减小内核消耗的内存,简化该功能相应的环境改变时对内核的影响。许多功能都可以这样处理,例如像上面提到的网卡的支持、对FAT等文件系统的支持。

                          

其实现在编译内核最关键的地方就是配置内核。我一般用make menuconfig配置内核。

配置2.6.0内核时如果你的主板是Intel芯片的话,你用默认配制也许就可以得到一个满意的内核哦。做法是make   menuconfig后离开时选择保存。

这里的难点是pci,如果你硬盘是IDE的那一定要选择好你主板上南桥芯片。SCSI的话就是要选择上你的SCSI卡型号。

还有就是网卡,声卡芯片的型号了,他们的型号你都可以用lspci 查找到比如我的是。


[iyunv@leo boot]# lspci

00:00.0 Host bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX Host bridge (rev 01)

00:01.0 PCI bridge: Intel Corp. 440BX/ZX/DX - 82443BX/ZX/DX AGP bridge (rev 01)

00:07.0 ISA bridge: Intel Corp. 82371AB/EB/MB PIIX4 ISA (rev 08)

00:07.1 IDE interface: Intel Corp. 82371AB/EB/MB PIIX4 IDE (rev 01)

00:07.2 USB Controller: Intel Corp. 82371AB/EB/MB PIIX4 USB

00:07.3 Bridge: Intel Corp. 82371AB/EB/MB PIIX4 ACPI (rev 08)

00:0f.0 VGA compatible controller: VMware Inc [VMware SVGA II] PCI Display Adapter

00:10.0 SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)

00:11.0 Ethernet controller: Advanced Micro Devices [AMD] 79c970 [PCnet32 LANCE] (rev 10)

00:12.0 Multimedia audio controller: Ensoniq ES1371 [AudioPCI-97] (rev 02)


编译配置

在这一部分涉及几个重要模块的配置请,特别注意.一般用"make menuconfig"命令来配置内核.

输入以上命令后出现一个菜单界面,用户可以对需要的模块.下面着重讲几个重要的配置

1)文件系统

请务必要选中ext3文件系统,

  File systems--->

  
  • Ext3 journalling file system support

  •   
  • Ext3 Security Labels

  •   
  • JBD (ext3) debugging support

  •   以上三项一定要选上,而且要内建(即标*). 这个非常重要,在配置完后一定要检查一下.config文件有没有"CONFIG_EXT3_FS=y"这一项. 如果不是"CONFIG_EXT3_FS=y"而是"CONFIG_EXT3_FS=m",你在运行内核时就会遇上以下错误: pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
      
    2)网卡驱动

      请务必把自己网卡对应的驱动编译进内核,比较普遍的网卡是realtek 8139,以下就是这种网卡的配置,以供参考

      Device Drivers--->

      Networking support--->

      Ethernet (10 or 100Mbit) --->

      <*> RealTek RTL-8139 C+ PCI Fast Ethernet Adapter support (EXPERIMENTAL)

      <*> RealTek RTL-8139 PCI Fast Ethernet Adapter support

      
    3)声卡驱动

      也要选择自己声卡对应的驱动编译进内核,比较普遍的声卡是i810_audio,以下就是这种声卡的配置,以供参考

      Device Drivers --->

      Sound --->

      <*> Sound card support

      Advanced Linux Sound Architecture --->

      <*> Advanced Linux Sound Architecture

      <*> Sequencer support

      < > Sequencer dummy client

      <*> OSS Mixer API

      <*> OSS PCM (digital audio) API
  • OSS Sequencer API

  •   <*> RTC Timer support

      PCI devices --->

      <*> Intel i8x0/MX440, SiS 7012; Ali 5455; NForce Audio; AMD768/8111

      Open Sound System --->

      < > Open Sound System (DEPRECATED)

    以上三项配置关系到新内核能否正常运行,请备加注意.其他的配置如果不是很了解,大可以按默认的选择.


    #make dep (确保关键文件在正确的位置) 2.5.*-2.6.0都不需要了。其实2.4.*某些内核也不需要了。

                              

    #make clean (确保所有有关文件都处于最新版本状态)

                              

    #make zImage (编译压缩形式的内核)

                              

    在需要内核支持较多的外设和功能时,内核可能变得很大,此时可以编译大内核:

                              

    #make bzImage

                              

    编译的时间与机器的硬件条件及内核的配置等因素有关,所获得的内核的位置在/usr/src/linux/arch/i386/boot目录下,当然这里假设用户的CPU是x86型的。

                              

    如果选择了可加载模块,编译完内核后,要对选择的模块进行编译:

                              

    #make modules (编译选择的模块)

                              

    #make module_install (将编译后的模块转移到系统标准位置)


    # make install


    上面的命令"make install"将:

    (1)把压缩内核映象拷贝到/boot目录下, 并创建相应的System.map符号链接;

    (2)修改bootloader的配置文件;

    (3)调用mkinitrd程序创建内核的initrd映象. 对于GRUB而言, 将在/boot/grub/grub.conf配置文件增加如下类似的配置行:


          title Red Hat Linux (2.***)

          root(hd0, 1)

          kernel /boot/vmlinuz-2.*** ro root=LABEL=/

          initrd /boot/initrd-2.***.img

                              

    模块在系统中的标准目录位于/lib/modules/x.y.z,后面的x.y.z是版本号,为安全起见,在运行#make   modules_install之前最好对/lib/modules进行备份。模块通常是带有扩展名.o的文件,使用命令#lsmod可以对当前内核的模块进行列表。

                              

    我一般是make bzImage;make modules;make module_install; make install

                              

    运行新内核之前,请检查一下/boot/grub/grub.conf的内容,下面的配置可作参考

    # grub.conf generated by anaconda

    #

    # Note that you do not have to rerun grub after making changes to this file

    # NOTICE:  You have a /boot partition.  This means that

    #          all kernel and initrd paths are relative to /boot/, eg.

    #          root (hd0,0)

    #          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00

    #          initrd /initrd-version.img

    #boot=/dev/hda

    default=0

    timeout=5

    splashimage=(hd0,0)/grub/splash.xpm.gz

    hiddenmenu

    title Fedora Core (2.6.18.2)

            root (hd0,0)

            kernel /vmlinuz-2.6.18.2 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

            initrd /initrd-2.6.18.2.img

    title Fedora Core (2.6.18-1.2798.fc6)

            root (hd0,0)

            kernel /vmlinuz-2.6.18-1.2798.fc6 ro root=/dev/VolGroup00/LogVol00 rhgb quiet

            initrd /initrd-2.6.18-1.2798.fc6.img


    现在重启机器,即可测试最新的内核。


    运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
    2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
    3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
    4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
    5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
    6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
    7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
    8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

    所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-216700-1-1.html 上篇帖子: redhat & JBoss 活动 下篇帖子: redhat安装tomcat
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    扫码加入运维网微信交流群X

    扫码加入运维网微信交流群

    扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

    扫描微信二维码查看详情

    客服E-mail:kefu@iyunv.com 客服QQ:1061981298


    QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


    提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


    本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



    合作伙伴: 青云cloud

    快速回复 返回顶部 返回列表