kernel:最小子系统+ramdisk+initrd 在深入

ramdisk是一种基于内存的虚拟文件系统,通常用于放置内核的中间数据。
而initrd全称为"boot loader initialized RAM disk",也就是由启动加载器所初始化的RamDisk设备,它的作用是完善内核的模块机制,让内核的初始化流程更具弹性;内核以及initrd,都由bootloader在机子启动后被加载至内存的指定位置,主要功能为按需加载模块以及按需改变根文件系统。
initrd 的英文含义是 bootloader initialized RAM disk,就是由 boot loader 初始化的内存盘。
initrd 大体上就是指 包含根文件系统的ramdisk。initrd即initial ramdisk,它是在系统引导过程中挂载的一个临时根文件系统.激活系统所须加载的文件系统.

http://blog.chinaunix.net/uid-23069658-id-3142047.html  Linux系统启动全过程http://blog.sina.com.cn/s/blog_c70e10380102w9b5.html     Linux系统启动全过程,详细,方便理解

总结:

================================================
BIOS(Basic Input Output System) 
包括


    自检及初始化
POST上电自检(如果内存没有插好,开机会滴滴的响,这就是上电自检查处了问题)


初始化
系统设置程序(开机按f2或者f12跳出来的配置界面就是配置这个参数):::准确的


说法应是通过BIOS设置程序对CMOS参数进行设置


引导程序
将系统控制权给引导记录


    程序服务处理
    硬件中断处理




http://baike.baidu.com/link?url=_tfzs1c0Le4haxojK1eUqipL33Wwv2HTYQBnCypCO2FtIiHOI8p6m9fwQUi51vsH4P_m0zlGydj4WNLdkCsfA_
===================================================


===================================================
系统引导
最终 boot loader 的功能就是加载 kernel(内核)文件。
===================================================


===================================================
启动内核
虚拟文件系统 (Initial RAM Disk) 一般使用的文件名为 /boot/initrd ,
这个文件的特色是,它也能够通过boot loader 来加载到内存中, 然后这个文件会被


解压缩并且在内存当中仿真成一个根目录,
且此仿真在内存当中的文件系统能够提供一个可执行的程序,通过该程序来加载启动


过程中所最需要的内核模块,通常这些模块就是 U盘, RAID, LVM, SCSI 等文件系统


与磁盘接口的驱动程序。
等载入完成后,会帮助内核重新调用 /sbin/init 来开始后续的正常启动流程


http://blog.sina.com.cn/s/blog_c70e10380102w9b5.html
====================================================


http://photo.blog.sina.com.cn/showpic.html#blogid=c70e10380102w9b5&url=


http://album.sina.com.cn/pic/003E0ziMty71l8BWmO5b9 一张图片关于bios以后


的bootloader 这张图片 讲解的非常详细
http://blog.csdn.net/miss_acha/article/details/50004717 讲述的不错关于


grub
http://www.2cto.com/os/201603/494064.html后半段讲的很清楚


http://www.ibm.com/developerworks/cn/views/linux/libraryview.jsp?sort_by=&show_abstract=true&show_all=&search_flag=&contentarea_by=Linux&search_by=initrd&topic_by=-1&type_by=%E6%89%80%E6%9C%89%E7%B1%BB%E5%88%AB&ibm-search=%E6%90%9C%E7%B4%A2
IBM提供的文档库里面比较全


先后出现两种机制来作为“boot loader装载kernel”到“真正的/sbin/init执行”
这个启动过程的桥梁: initrd和initramfs  
ramdisk==ramtodisk
initrd==init ramdisk
内核在启动的时候,需要加载一些驱动,需要一些内核模块,没有文件系统,就没有


文件
文件系统在哪里?在硬盘上实现的,没有硬盘~所以使用ramdisk技术,把内存的一块区域模拟成硬盘使用,initrd将这块“硬盘”初始化,加载必要的文件系统,这个initrd是一个压缩文件系统,里面有一些必要的应用程序以及模块等等,辅助内核完成内核的初始化initrd基本解压以后就暂时的挂载在根目录下面,然后内核就把他当作根目录来执行一些必要的任务,加载模块等等,后期再将他挂载到一个其他的目录,从而挂载真正的根目录




我的虚拟机里面有解压好的initrd压缩文件;经过观察,基本就是一个空的文件系统+


一个init的脚本,这个脚本的内容:1创建相应的目录,并且挂载相应的文件系统。创


建一些设备节点,随后指定一些变量的值,如 init,root等等
Q:一般什么是.ko
A:
.so 文件是动态链接库文件,相当于 win下的 .dll 文件。
.a  文件是静态库文件。
.ko 是内核模块文件,是内核加载的某个模块,一般是驱动程序。

 

你可能感兴趣的:(kernel)