Linux的核心编译,kernel
Linux的核心(kernel)
1 Linux就是指kernel
2 kernel负责整个硬件的驱动,和提供各种核心功能
3 kernel是一个文件,一般放置在/boot/vmlinuz-$(uname -r)
此文件包含各项硬件侦测程序和驱动模块
4 核心模块(kernel module),有些功能没有集成在核心中,编译成模块以便核心随时加载
放置路径/lib/modules/$(uname -r)/kernel/
5 核心的版本,主版本.次版本.发布版本-修改版本
6 最新稳定版核心源代码下载地址,http://www.kernel.org/
7 建议将核心源代码放置在/usr/src/kernels/下
核心源代码编译步骤
1 清除环境,第一次编译用make mrproper,以后可以用make clean
2 选择核心功能,make XXconfig,生成.config文件,此步最复杂且重要
3 编译核心,make bzImage
4 编译模块,make modules
5 安装模块,make modules_install
6 安装核心,将核心文件bzImage和核心功能列表文件.config,移动并改名到/boot/路径下
7 新建相应的initrd文件,mkinitrd
8 编辑开机菜单,设置grub
核心源代码编译命令
make mrproper | 删除以前的目标文件,也删除以前的核心功能选择文档 只有第一此执行编译前使用此命令 |
make clean | 删除以前编译生成的目标文件 |
make XXconfig | 挑选核心功能,生成.config文件,核心功能列表文件 /boot/config-$(uname -r)就是已经设置完成的文件 |
make vmlinux | 生成未经压缩的核心 |
make modules | 生成仅核心模块 |
make bzImage | 生成经过压缩的核心(预设) |
make all | 进行make mlinux,make modules,make bzImage |
make modules_install | 将模块放置到/lib/modules/$(uname r)路径下 |
mkinitrd | 新建initrd文件 |
make XXconfig挑选核心功能多种方法
make menuconfig | 文本模式下显示类似图形接口,来选择列表 |
make oldconfig | 通过已存在的./.config,使用该文件内的设定值为默认值 只将新版本核心内的新功能选项让用户选择 |
make xconfig | 通过Qt图形接口的图形化显示,需要X window支持 |
make gconfig | 通过Gtk图形接口的图形化显示,需要X window支持 |
make config | 每个项目一条一条的列出供用户选择 如果设定错误,只能再次从头选择,不常用 |
make XXconfig具体选项
General setup | 一般性设置,可以设置核心的新版本 |
Enable loadable module | 支持动态模块 |
Enable the block layer | 支持block设备的功能 |
Processor type and features | cpu类型与功能选择 |
Power management and ACPI options | 电源管理功能 |
Bus options(PCI etc.) | 总线相关选项,支持PCI和PCI-E |
Executable file formats/Emulations | 编译后执行文件格式 |
Networking support | 核心网络功能,包括防火墙 |
Device Drivers | 硬件设备驱动 |
Firmware Drivers | 固件驱动 |
File system | 文件系统支持 |
Kernel hacking | 核心黑客,与核心开发者相关 |
Security options | 信息安全方面设定 |
Cryptographic API | 加密API的设定 |
Virtualization | 虚拟化设置 |
Library routines | 函数库设置 |
核心源代码目录
arch | 与硬件平台相关,主要指cpu类别 |
block | 与存储媒介相关,主要指磁盘分区等 |
crypto | 核心支持的加密技术 |
Documentation | 核心说明文档 |
drivers | 硬件驱动 |
firmware | 固件数据 |
fs | 核心所支持的文件系统 |
include | 头文件 |
init | 核心初始化的定义功能 |
ipc | 定义系统内各程序的沟通 |
kernel | 定义核心的程序,核心状态,线程,程序排程,程序信号等 |
lib | 函数库 |
mm | 与内存单元相关的各项数据,包括swap与虚拟内存 |
net | 与网络相关的各项协议数据,防火墙模块等 |
security | 与安全方面相关的设定 |
sound | 与音效相关的各项模块 |
virt | 与虚拟化相关的信息 |