网站大量收购独家精品文档,联系QQ:2885784924

培训讲义-内部-v2精选.doc

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

tazhiq2 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档