CentOS 的启动过程和内核管理
linux组成:
kernel:实现进程管理,内存管理,网络管理,驱动程序,文件系统,安全功能等功能
rootfs:包括程序和glibc库
程序:二进制执行文件
库:函数集合,function,调用接口(头文件负责描述)
centos的启动流程:
1开机加电自检,加载BIOS的硬件信息,并进行硬件检测,获取第一个启动设备
BIOS硬件检测:负责对CPU,主板,内存,硬盘,显示子系统,串并行接口,键盘等硬件情况检测
2 读取MBR主引导扇区
3 启动GRUB引导装载程序
引导装载程序:功能丰富,提供菜单,允许用户启动不同的操作系统和内核版本,把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核
4 GRUB开始引导加载init 0 系统的第一个初始化进程,并获取默认的运行信息
5 init 0 程序执行/etc/rc.d/rc.sysinit文件,重新挂载根文件系统
6 启动核心的外挂模块
7 执行各个批处理文件
8执行/etc/rc.d/rc.local
9执行/bin/login程序,等待用户登入
10登录之后以shell开始控制主机
内核模块管理和编译
kernel内核,通常在/boot目录下,名称为 vmlinuz-VERSION-RELEASE,
kernel object内核对象,一般放置于/lib/modules/VERSION-RELEASE/
运行中的内核版本:
uname [OPTION]…
-n: 显示节点名称
-r: 显示VERSION-RELEASE
-a:显示所有信息
内核模块:
lsmod命令:
- 显示由核心已经装载的内核模块
- 显示的内容来自于: /proc/modules文件
modinfo:显示模块详细信息
装载和卸载内核模块:
depmod命令:内核模块依赖关系文件及系统信息映射文件的生成工具
insmod命令:指定模块文件,不自动解决依赖模块
rmmod:卸载模块,例如:rmmod xfs rmmodexportfs
编译内核
编译安装内核准备:
(1) 准备好开发环境
(2) 获取目标主机上硬件设备的相关信息
(3) 获取目标主机系统功能的相关信息,例如:需要启用相应的文件系统
(4) 获取内核源代码包, www.kernel.org
编译准备
目标主机硬件设备相关信息
CPU:cat /proc/cpuinfo
PCI设备:lspci -v ,-vv
USB设备:lsusb -v,-vv
dnf install usbutils -y
lsusb
lsblk 块设备
全部硬件设备信息:hal-device:CentOS 6
开发环境相关包
gcc make ncurses-devel flex bison openssl-devel elfutils-libelf-devel
内核编译安装实现:
下载源码文件
准备文本配置文件/boot/.config
make menuconfig:配置内核选项
make -j # bzImage
make -j # modules
安装模块:make modules_install
安装内核相关文件:make install
安装bzImage为 /boot/vmlinuz-VERSION-RELEASE
生成initramfs文件
编辑grub的配置文件