zoukankan      html  css  js  c++  java
  • Linux内核的配置与编译(X86平台)

    说明:只供学习交流

    目的:

    (1):配置、编译X86平台下的Linux-2.6.29内核

    (2):在vmware下安装编译好的内核并启动

    工具:

    Gcc编译器, Linux-2.6.29内核

    步骤:

    (一):清除临时文件,中间文件和配置文件等(刚从网上下载下来的文件这步可省略)。

    make clean

    删除大多数的由编译生成的文件、但会保留内核的配置文件.config。

    make mrproper

    删除所有的编译生成的文件,还有内核配置文件,再加上各种备份文件。

    make distclean

    mrproper删除的文件,加上编辑备份文件和一些补丁文件。

    (二)选择参考配置文件

    使用正在运行的内核配置文件作为参考配制文件,该配置文件在/boot目录下,使用命令

    cp /boot/config-2.6.18-53.el5 .config。

    (三)配置内核

    配置内核有如下命令:

    make config:基于文件模式的交互式配置(也就是一问一答)。

    make menuconfig:基于文本模式的菜单式配置(强烈推荐)。

    make oldconfig:使用已有的配置文件(.config)但是会询问新增的配置选项。

    make xconfig:图形化配置(需要安装图形化系统)。

    make menuconfig是最为常用的内核配置方式,使用方法如下:

    1、使用方向键在各选项间移动;

    2、使用“Enter”键进入下一层选单;每个选项上的高亮字母是键盘快捷方式,使用它可以快速地到达想要设置的选单项。

    3、在括号中按“y”将这个项目编译进内核中,按“m”编译为模块,按“n”为不选择(按空格键也可在编译进内核、编译为模块和不编译三者间进行切换),按“h”将显示这个选项的帮助信息,按“Esc”键将返回到上层选单。

    内核配置通常在一个已有的配置文件基础上,通过修改得到新的配置文件Linux内核提供了一系列可供参考的内核配置文件,位于Arch/$cpu/configs

    注意:要运行make menuconfig的界面需要调整终端的窗口大小,至少为80*19。

    (四)编译内核

    (1):make zImage

    (2):make bzImage

    区别:在X86平台,在zImage只能用于小于512Kd的内核(注意是X86平台)

    如需获取详细编译信息,可使用:

    make zImage V=1 
    make bzImage V=1 

    编译好的内核位于arch/<cpu>/boot目录下

    (五)编译内核模块

    使用命令

    make  modules 

    内核模块编译的时间比较长,一般需要1~2小时的时间。这些模块源于使用命令make menuconfig启动的菜单型配置界面中选择<m>的项。

    (六)安装内核模块

    使用命令:make  modules_install,完成安装后,编译好的内核模块会从内核源代码目录拷贝至/lib/modules/2.6.29目录下。

    (七)制作init ramdisk

    使用cd跳动linux-2.6.29/,目录的上层目录,使用命令:mkinitrdinitrd-$version $version(mkinitrd initrd-2.6.29 2.6.29)将上一步中产生的模块目录/lib/modules/2.6.29制作成initrd-2.6.29。

    提示:initrd是“initial ramdisk”的缩写,initrd是在实际根文件系统可用之前挂载到系统中的一个初始根文件系统。在桌面或服务器Linux系统中,initrd是一个临时的文件系统。其生命周期很短,只会用作真实文件系统的一个桥梁。在没有存储设备的嵌入式系统中,initrd可以是永久的根文件系统。

    Linux的众多发行版之所以使用initrd主要是为了在内核启动之后能够判断哪些硬件驱动需要加载,哪些不需要,文件系统有没有问题等,最终使得根分区能顺利加载。在scsi和sata设备上启动,usb启动盘,无盘服务器等都需要initrd来做判断,这样可以提高Linux内核的通用性。

    (八)安装内核

    由于Linux系统启动时,会从/boot目录下寻找内核文件与init ramdisk,所以需要将内核和initrd拷贝至/boot目录。使用命令:

    cp initrd-2.6.29  /boot 
    cp linux-2.6.29/arch/x86/boot/bzImage /boot/vmlinuz-2.6.29 

    (九)修改/etc/grub.conf或者/etc/lilo.conf

    为了让grub在启动时能提供一项我们自己制作的linux内核的选项,需要修改grub的配置文件/etc/grub.conf。(添加的代码为title My Linux(2.6.29)以下的)

    注意:/etc/grub.conf实际上是/boot/grub/grub.conf的一个链接,因此真正的配置文件存在与/boot/grub目录下。

    (十):重启系统

    使用命令reboot,重新启动系统,按住空格键不放,直到进入grub界面,选择My Linux(2.6.29)启动。

  • 相关阅读:
    PAT:1075. PAT Judge (25) AC
    PAT:1010. 一元多项式求导 (25) AC
    PAT:1076. Forwards on Weibo (30) AC
    PAT:1086. Tree Traversals Again (25) AC
    PAT:1020. Tree Traversals (25) AC
    PAT:1051. Pop Sequence (25) AC
    PAT:1063. Set Similarity (25) AC
    PAT:1017. A除以B (20) AC
    C语言指针
    iOS block
  • 原文地址:https://www.cnblogs.com/yechuang/p/4498713.html
Copyright © 2011-2022 走看看