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的配置文件
CentOS 的启动过程和内核管理的更多相关文章
- Openfire的启动过程与session管理
说明 本文源码基于Openfire4.0.2. Openfire的启动 Openfire的启动过程非常的简单,通过一个入口初始化lib目录下的openfire.jar包,并启动一个 ...
- Linux系统在启动过程中内核文件丢失的解决方法
在/boot目录下有两个重要的文件,分别是: vmlinuz-3.10.0-123.el7.x86_64 内核文件 initamfs-3.10.0-123.el7.x86_64.img ...
- cocos2dx 解释二具体的启动过程:内存管理和回调
在上一篇的第二部分中.我们有一句代码待解释的: // Draw the Scene void CCDirector::drawScene(void) { -... //tick before ...
- Linux启动过程的内核代码分析
参考上文: http://www.cnblogs.com/long123king/p/3543872.html http://www.cnblogs.com/long123king/p/3545688 ...
- 作业三:LINUX内核的启动过程
作业三:LINUX内核的启动过程 一.使用GDB跟踪内核从start_kernel到init进程启动(附实验截图) (一)使用自己的Linux系统环境搭建MenuOS的过程 下载内核源代码编译内核 c ...
- Linux的启动过程
Linux的启动过程,也就是Linux的引导流程,这部分主要是理论知识. Linux的开机启动过程 1.1第一步--加载BIOS 当你打开计算机电源,计算机会首先加载BIOS信息,BIOS信息是如此的 ...
- 深入理解Linux启动过程
深入理解Linux启动过程 本文详细分析了Linux桌面操作系统的启动过程,涉及到BIOS系统.LILO 和GRUB引导装载程序,以及bootsect.setup.vmlinux等映像文件 ...
- Linux第三周——跟踪分析内核的启动过程
跟踪分析内核的启动过程实验 张潇月<Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 这周主要学习的是对内核 ...
- Linux内核分析——跟踪分析Linux内核的启动过程
万子惠 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程 实验部分 menu程序: cd LinuxKernel/ qemu -kernel linux-3.18.6/a ...
- 启动期间的内存管理之初始化过程概述----Linux内存管理(九)
在内存管理的上下文中, 初始化(initialization)可以有多种含义. 在许多CPU上, 必须显式设置适用于Linux内核的内存模型. 例如在x86_32上需要切换到保护模式, 然后内核才能检 ...
随机推荐
- C#之System.Text.Json的用法
System.Text.Json 是 C# 中的一个 JSON 序列化和反序列化库,它在 .NET Core 3.0 及更高版本中提供了内置支持.以下是 System.Text.Json 的用法详解: ...
- C#之可访问性约束(可访问性不一致)
C# 语言中的有些构造要求某个类型至少与某个成员或其他类型具有同样的可访问性 (at least as accessible as).如果 T 的可访问域是 M 可访问域的超集,我们就说类型 T 至少 ...
- java从小白到老白②
PS:①小陌笔记中蓝色字体用来引入知识点(废话流),可忽略不计 . ②黑字正文小陌竭力向言简意赅靠近再靠近. ③红色字体小陌觉得重要的地方. 数据类型 (知识温习:整型默认int 浮点型默认doubl ...
- 利用DeepSeek与Python自动生成测试用例!
在当今快节奏的软件开发领域,自动化测试已然成为保障软件质量的中流砥柱.传统手动编写测试用例的方式,非但耗时费力,还极易遗漏关键场景. 所幸,AI 技术的飞速发展为我们带来了全新的解决方案.今天,就让我 ...
- JAVAFx将后台报错信息导出到前台,方便用户联系技术人员
Alert alert = new Alert(Alert.AlertType.ERROR);alert.setTitle("错误");alert.setHeaderText(&q ...
- python里的简洁操作
1.lambda匿名函数好处 精简代码,lambda省去了定义函数,map省去了写for循环过程:res=list(map(lambda x:'test' if x=='' else x,a))
- 使用批处理脚本在win10系统启动Redis 5.0.10
在<Spring Boot 整合Jedis连接Redis和简单使用>中,小编已经介绍了如何安装和启动Redis,但是,每次启动Redis 5.0.10 都是需要两个命令行窗口,执行启动 ...
- linux安全基线自查手册
1.Redhat/CentOS 7.x配置模板 1.1 帐号管理 1.1.1 检查是否设置除root之外UID为0的用户 严重级别:中危 理论依据:任何UID为0的帐户都具有系统上的超级用户特权,只有 ...
- java list<对象>根据某个字段分组
前言 仅供学习参考,不保证性能问题 其中的实体类改成你自己的实体类 代码 /** * 根据某个字段进行分组,分组后遍历方法 * <p> * Map<String, List<M ...
- Linux软件安装目录分类讲解
参考:https://blog.csdn.net/qq_22771739/article/details/83933473 /usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理 ...