下载此文档

linux内核启动流程总结(共6页).docx


文档分类:IT计算机 | 页数:约6页 举报非法文档有奖
1/6
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/6 下载此文档
文档列表 文档介绍
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
X86体系结构内核启动分析
一、硬件检测挂载真正的根文件系统。
装载Linux内核的第一步应该是加载实模式代码(boot sector和setup代码),grub就会把实模式代码setup加载到0x07C00之上的某个地址上,其中setup的前512个字节是boot sector(引导扇区),现在这个引导扇区的作用并不是用来引导系统,而是为了兼容及传递一些参数。之后grub跳转到setup的入口点,入口点为_start例程(根据arch/x86/boot/)。然后setup最后跳到arch/x86/boot/,跳到start_kernel()函数,这是Linux内核的启动函数。。每种体系结构都会执行一些底层设置函数,然后执行名为start_kernel的函数(在init/)。“粘合剂(glue)”,之前执行的代码都是各种体系结构相关的代码,一旦到达start_kernel(),就与体系结构无关了。start_kernel()会调用一系列初始化函数来设置中断,执行进一步的内存配置,解析内核命令行参数。然后调用fs/:vfs_caches_init()---
精选优质文档-----倾情为你奉上
精选优质文档-----倾情为你奉上
专心---专注---专业
专心---专注---专业
精选优质文档-----倾情为你奉上
专心---专注---专业
->fs/:mnt_init()创建基于内存的rootfs文件系统(是一个虚拟的内存文件系统,称为VFS),这是系统初始化时的根结点,即"/"结点,后面VFS会指向真实的文件系统。fs/:mnt_init()会调用fs/ramfs/:init_rootfs()会调用fs/:register_filesystem()注册rootfs。然后fs/:init_mount_tree()调用fs/:do_kern_mount()在内核中挂载rootfs,调用fs/:set_fs_root()将当前的rootfs文件系统配置为根文件系统。此时rootfs里只有根目录。
为什么不直接把真实的文件系统配置为根文件系统?答案很简单,内核中没有真实根文件系统设备(如硬盘,USB)的驱动,而且即便你将根文件系统的设备驱动编译到内核中,此时它们还尚未加载,实际上所有内核中的驱动是由后面的kernel_init线程进行加载。另外,我们的root设备都是以设备文件的方式指定的,如果没有根文件系统,设备文件怎么可能存在呢?
start_kernel()在最后会调用rest_init(),这个函数会启动一个内核线程来运行kernel_init(),自己则调用cpu_idle()进入空闲循环,让调度器接管控制权。抢占式的调度器

linux内核启动流程总结(共6页) 来自淘豆网m.daumloan.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数6
  • 收藏数0 收藏
  • 顶次数0
  • 上传人wwlgqnh
  • 文件大小115 KB
  • 时间2022-03-24