- make menuconfig:修改、添加内核配置选项,最后生成.config配置文件。
- make all:首先编译.config得到没有压缩的内核核心vmlinux,然后将其压缩生成引导过程使用的内核镜像bzImage,最后编译内核选项中相关的module。 压缩过程:首先对vmlinux瘦身(即用objcopy命令删除注释得到vmlinux.bin)并压缩(即用gzip命令压缩vmlinux.bin得到vmlinux.bin.gz),再用ld连接器根据连接脚本arch/i386/boot/compressed/vmlinux.scr将vmlinux.bin.gz转换为piggy.o(该文件包含压缩的系统核心)。 接下来ld连接器会将piggy.o、head.o、misc.o链接生成新的文件vmlinux。(其中misc.o包含zlib算法的解压缩代码C语言的实现,head.o包含的汇编代码用于设置解压程序用到的参数及堆、栈) 然后再调用objcopy命令对vmliux瘦身得到vmlinux.bin(此处的vmlinux.bin是经过压缩的内核核心与前面的vmlinux不一样)。 最后利用内核镜像构建工具arch/i386/boot/tools/build 将bootsect、setup、vmlinux.bin三个文件依次存放到新建的bzImage文件中去。 然后就是编译一些相关的module。
- make module_install:安装内核模块。
- make install :安装内核 该命令调用了内核目录中的install.sh的shell脚本。该脚本首先将bzImage、System.map复制到/boot目录,并将这两个文件依次改名为vmlinuz-<version>,System.map-<version>。接着调用脚本/sbin/installkernel根据在内核配置、编译阶段生成的内核模块以及模块依赖关系/lib/modules/<version>/modules.dep生成引导过程使用的临时根文件系统initrd。最后修改/boot/grub/grub.conf文件、添加新的引导菜单。
Linux2.6内核镜像的构建过程
最新推荐文章于 2024-09-14 19:00:09 发布