1、内核
1.1内核分类
内核设计流派: 单内核(monolithic kernel):Linux 把所有功能集成于同一个程序 微内核(micro kernel): Windows, Solaris 每种功能使用一个单独子系统实现
1.2、内核组成
组成部分: 核心文件:/boot/vmlinuz-VERSION-release
1.3、centos6启动
1.加载BIOS的硬件信息,获取第一个启动设备 2.读取第一个启动设备MBR的引导加载程序(grub)的启动信息 3.加载核心操作系统的核心信息,核心开始解压缩,并尝试驱 动所有的硬件设备 4.核心执行init程序,并获取默认的运行信息 5.init程序执行/etc/rc.d/rc.sysinit文件 6.启动核心的外挂模块 7.init执行运行的各个批处理文件(scripts) 8.init执行/etc/rc.d/rc.local 9.执行/bin/login程序,等待用户登录 10.登录之后开始以Shell控制主机
1.4、系统运行级别
/sbin/init CentOS6 之前; 运行级别:为系统运行或维护等目的而设定;0-6:7个级别 0:关机 1:单用户模式(root自动登录), single, 维护模式 2: 多用户模式,启动网络功能,但不会启动NFS;维护模式 3:多用户模式,正常模式;文本界面 4:预留级别;可同3级别 5:多用户模式,正常模式;图形界面 6:重启 默认级别: 3, 5 切换级别:init # 查看级别:runlevel ; who -r
2、内核编译
2.1、内核组成
内核组成部分: kernel: 内核核心,一般为bzImage,通常在/boot目录 下,名称为vmlinuz-VERSION-RELEASE kernel object: 内核对象,一般放置于 /lib/modules/VERSION-RELEASE/ [ ]: N [M]: M [*]: Y 辅助文件:ramdisk initrd initramfs
2.2、准备
前提: (1) 准备好开发环境 (2) 获取目标主机上硬件设备的相关信息 (3) 获取目标主机系统功能的相关信息 例如:需要启用相应的文件系统 (4) 获取内核源代码包 www.kernel.org
目标主机硬件设备相关信息: CPU: cat /proc/cpuinfo x86info -a lscpu
2.3、步骤
tar xf linux-3.10.67.tar.xz -C /usr/src cd /usr/src ln -sv linux-3.10.67 linux cd /usr/src/linux cp /boot/config-$(uname -r) ./.config make help make menuconfig make -j 2 make modules_install make install reboot
2.4、如何编译
(1) 配置内核选项 支持“更新”模式进行配置:make help (a) make config:基于命令行以遍历的方式去配置内核 中可配置的每个选项 (b) make menuconfig:基于curses的文本窗口界面 (c) make gconfig:基于GTK (GNOME)环境窗口界面 (d) make xconfig:基于QT(KDE)环境的窗口界面 支持“全新配置”模式进行配置 (a) make defconfig:基于内核为目标平台提供的“默认 ”配置进行配置 (b) make allyesconfig: 所有选项均回答为“yes“ (c) make allnoconfig: 所有选项均回答为"no“
(2) 编译 全编译:make [-j #] 编译内核的一部分功能: (a) 只编译某子目录中的相关代码 cd /usr/src/linux make dir/ (b) 只编译一个特定的模块 cd /usr/src/linux make dir/file.ko 例如:只为e1000编译驱动: make drivers/net/ethernet/intel/e1000/e1000.ko
要获取特定目标平台的使用帮助 make ARCH=arch_name help make ARCH=arm help
在已经执行过编译操作的内核源码树做重新编译: 需要事先清理操作: make clean:清理大多数编译生成的文件,但会保留 config文件等; make mrproper: 清理所有编译生成的文件、 config及某 些备份文件; make distclean:mrproper、 patches以及编辑器备份文件;
2.5、卸载内核
删除/lib/modules/目录下不需要的内核库文件 删除/usr/src/linux/目录下不需要的内核源码 删除/boot目录下启动的内核和内核映像文件 更改grub的配置文件,删除不需要的内核启动列表
原文地址:http://blog.51cto.com/mjunetwslinux/2069315
时间: 2024-10-17 02:30:31