- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
培训讲义-内部-v2精选
TurboLinux10.5培训提纲
(内部讲义)
一.Turbolinux操作系统原理
Turbolinux 10.5介绍
1.1 kernel版本(i586,x86_64等)
1.2 Glibc版本
1.3 gcc版本
系统启动原理
2.1 BIOS加载GRUB
2.2 GRUB加载kernel
grub将kernel映像加载到内存
GRUB内置了几种文件系统模块,可以读取FAT,EXT3文件系统下的文件。将/boot/下kernel映像加载到内存中。
2.3 kernel启动过程介绍
kernel执行arch/x86/boot/header.S(加载过程)
1.检查kernel加载是否正确
2.检测系统内存大小
3.初始化显卡
4.将kernel映像移动到内存中的某个指定位置,等待解压。
5.切换cpu到保护模式
启动startup_32函数(arch/x86/boot/compressed/head_32.S)
1.建立一个临时kernel堆栈
2.初始化kernel数据结构
3.调用arch/x86/boot/compressedmisc_32.c中的decompress_kernel()进行解压。将解压后的数据写到内存中的指定地址,0x100000。屏幕显示”Uncompressing Linux ...OK”。
执行arch/x86/kernel/head_32.S中的startup_32()。
1.激活”分页模式”,设置kernel堆栈。
2.初始化kenrel数据结构
3.初始化”中断信息表”
4.检测cpu类型.
执行start_kernel(),显示Linux提示”Linux version 2.6.24-default”
1.显示版本号.
2.setup_arch(),设置.
分析kernel参数.
设置内存,检测物理内存页数.
3.初始化核心数据结构
4.执行/sbin/init,读取/etc/inittab,根据内容进入相应的运行级别.
Turbolinux内核模块加载原理
模块介绍
模块为.ko文件,位置/lib/modules/kernel版本号/
modprobe 模块名
rmmod 模块名
modinfo 模块名(各项信息说明)
模块结构
# cat hello-1.c
/*
* hello-1.c - The simplest kernel module.
*/
#include linux/module.h /* Needed by all modules */
#include linux/kernel.h /* Needed for KERN_INFO */
int init_module(void)
{
printk(KERN_INFO Hello world 1.\n);
/*
* A non 0 return means init_module failed; module cant be loaded.
*/
return 0;
}
void cleanup_module(void)
{
printk(KERN_INFO Goodbye world 1.\n);
}
hello 14:27:02 # make
# insmod hello-1.ko
# dmesg -c
[17492.029885] hello_1: module license unspecified taints kernel.
[17492.029888] Disabling lock debugging due to kernel taint
[17492.030065] Hello world 1.
# cat Makefile
######
obj-m += hello-1.o
obj-m += hello-2.o
obj-m += hello-3.o
obj-m += hello-4.o
all:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) modules
clean:
make -C /lib/modules/$(shell uname -r)/build M=$(PWD) clean
rm Module* module* -f
# lsmod | grep hello
hello_1 1312 0
# rmmod hello_1
# dmes
您可能关注的文档
最近下载
- 《货代销售管理培训》课件.pptx VIP
- 大班科学《藏在身体上的尺子》微课件.pptx
- _恶性潜能未定的子宫平滑肌瘤诊治的中国专家共识(2024年版).pdf
- 双碱法软化除硬加药量及污泥量的计算.docx
- 卫生专业技术资格考试疾病控制(中级361)专业实践能力试题及答案指导.docx VIP
- 2025年卫生专业技术资格考试疾病控制(中级361)专业实践能力试卷及答案指导.docx VIP
- 卫生专业技术资格考试疾病控制(中级361)基础知识试卷及答案指导(2025年).docx VIP
- 《CACA甲状腺癌诊治指南(2025版)》更新要点解读PPT课件.pptx VIP
- 公考协议班合同模板下载.docx
- 人教版道德与法治一年级下册《第四单元 争做中国好儿童》大单元整体教学设计.docx
文档评论(0)