linux内核配置与编译

时间:2022-06-06 12:28:17

一:清除临时文件,中间文件和配置文件。
make clean:
remove most generated files but keep the config
make mrproper:
remove all generated files + config files
make distclean:
mrproper + remove editor backup and patch files

二:确定目标系统的软硬件配置情况,比如CPU的类型,网卡的型号,所需支持的网络协议等。

三:配置内核
make config:基于文本模式的交互式配置
make menuconfig:基于文本模式的菜单型配置(推荐使用)
y将这个项目编译进内核中,生产内核映像zImage文件
m编译为模块(编译不链接)
n为不选择
make oldconfig 使用已有的配置文件(.config),但是会询问新增的配置选项。
make xconfig 图形化的配置

配置之后,主目录下会出现配置文件'.config'

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

四:编译内核
make zImage
make bzImage     #只编译并链接内核core和内置(答Y的)模块
区别:在X86平台,zImage只能用于小于512K的内核

如需获取详细编译信息,可使用:
make bImage V=1
make bzImage V=1
编译好的内核位于arch/<cup>/boot/目录下

五:编译内核模块
make modules        #将M的模块编译为.o,然后再将多个目标链接为.ko,这些文件分散在各个模块源码目录中

六:安装内核模块
make modules_install
将编译好的内核模块从内核源代码目录copy至/lib/modules下

七:制作init ramdisk
mkinitrd initrd-$version $version
例:mkinitrd initrd-2.6.29 2.6.29
$version 可以通过查询/lib/modules下的目录得到

八:内核安装(X86)
1: cp arch/x86/boot/bzImage /boot/vmlinuz-$version
2: cp $initrd /boot
3: 修改/etc/grub.conf或者/etc/lilio.conf
$version 为所编译的内核版本号
修改/etc/grub.conf 在后面添加:
/************************************************************************/
title Mylinux
root (hd0,0)
kernel /vmlinuz-2.6.29 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
initrd /initrd-2.6.29
/************************************************************************/

九:启动多系统中的Mylinux
  享受下自己的成果吧!......................... .

 

/*************************/

Author: Daniel.G

QQ: 448146607

邮件: guodaijing.hhr@gmail.com

/*************************/