北京SEO

从GRUB到内核 从内核到根文件系统

2019/10/10/17:47:47  阅读:1687  来源:谷歌SEO算法  标签: Google

按下电源,咔一下,电脑启动啦,接着BIOS的画面出来啦,不一会,GRUB的界面出来,然后就是一行接一行的字符在黑屏上闪动,不时地有OK的字样出现.呵呵,不要走神哈,该输入用户名和密码啦,….成功地进入了系统,这算是系统启动完成啦。那么这个过程到底有什么事情发生啦,哪些值得我们学习呢?本文就以linux 开机为线索,讲述引导器,内核,根文件系统的关系。

1)引导器

这个是大家所熟知的吧,linux下常用的就有:grub,这是当今主流啦;lilo,这啊,曾经风光过,现在让grub接了重任;syslinux这是个轻量级的引导器,一般在光盘,USB上做引导器,做个liveUSB的应该很清楚哦,无盘启动的应用中也能找到它的身影.

引导器的主要功能就是找到内核(vmlinuz),然后把它载入内存,当然还有initrd啦,以GRUB为例,在我的系统(centos5.2)里是这么写的:

  1. #/boot/grub/menu.lst
  2. titleCentos5.2kernel-2.6.18-92.1.17.el5
  3. root(hd0,7)
  4. kernel/vmlinuz-2.6.18-92.1.17.el5root=/dev/VolGroup00/LogVol00
  5. initrd/initrd-2.6.18-92.1.17.el5.img
  6. boot

在这明确了内核的位置,并向内核传递了一些参数,initrd扮了一个很重要的角色,负责在内核访问根文件系统前加载驱动。

2)内核

一个完整的内核就是由内核源码产生的,在这kernel.org 能找到源码,压缩后有50M左右,解开后有好几百M呢,我们可以重新编译源码来更新我们已有的内核,以提高性能和兼容能力。那么这个源码经编译后产出了哪些东东呢,出以我的机子为例:

A)内核部分,在/boot分区下

  1. /boot/initrd-2.6.18-92.1.17.el5.img
  2. /boot/System.map-2.6.18-92.1.17.el5…………….这是符号表,函数与地址的映射关系
  3. /boot/vmlinuz-2.6.18-92.1.17.el5
  4. /boot/config-2.6.18-92.1.17.el5………………………..内核的配置文件,由makexconfig命令产生的

B)内核模块部分,在/lib/modules/2.6.18-92.1.17.el5目录下,2.6.18-92.1.17.el5这是版本号,每一个人的机子上可能会不同,所有模块都在这,还有它们之间的依赖关系

  1. [root@xx2.6.18-92.1.17.el5]#pwd
  2. /lib/modules/2.6.18-92.1.17.el5
  3. [root@xx2.6.18-92.1.17.el5]#ls-l
  4. 总计1128
  5. lrwxrwxrwx1rootroot4811-1120:14build->../../../usr/src/kernels/2.6.18-92.1.17.el5-i686
  6. drwxr-xr-x2rootroot409611-0503:09extra
  7. drwxr-xr-x10rootroot409611-1120:28kernel ……………………………内核模块就中此目录
  8. drwxr-xr-x2rootroot409611-1314:50misc
  9. -rw-r–r–1rootroot25233211-1314:50modules.alias
  10. -rw-r–r–1rootroot6911-1314:50modules.ccwmap
  11. -rw-r–r–1rootroot20970211-1314:50modules.dep………………….模块间的依赖关系
  12. -rw-r–r–1rootroot14711-1314:50modules.ieee1394map
  13. -rw-r–r–1rootroot37511-1314:50modules.inputmap
  14. -rw-r–r–1rootroot231411-1314:50modules.isapnpmap
  15. -rw-r–r–1rootroot7411-1314:50modules.ofmap
  16. -rw-r–r–1rootroot19110811-1314:50modules.pcimap……………….物理设备与内核模块的对应关系
  17. -rw-r–r–1rootroot58911-1314:50modules.seriomap
  18. -rw-r–r–1rootroot10525911-1314:50modules.symbols
  19. -rw-r–r–1rootroot32273111-1314:50modules.usbmap
  20. lrwxrwxrwx1rootroot511-1120:14source->build
  21. drwxr-xr-x2rootroot409611-0503:09updates
  22. drwxr-xr-x4rootroot409611-1120:14weak-updates

注意source,build这两个目录,在装显卡驱动时就认识它们俩了吧.

C)头文件及相关的内核配置文件

/usr/src/kernels/2.6.18-92.1.17.el5-i686,在构造或者是编译相关内核模块就要用到这个地方的文件,在安装显卡驱动的时候就是这个目录下的东东,有没有什么映象啊,为什么呢?当然是想看看3D桌面啦,是不是啊。。。。

  1. [root@xx2.6.18-92.1.17.el5-i686]#pwd
  2. /usr/src/kernels/2.6.18-92.1.17.el5-i686
  3. [root@xx2.6.18-92.1.17.el5-i686]#ls
  4. archdriversinitkernelmmnetsound
  5. blockfsipclibModule.kabiscriptssymsets-2.6.18-92.1.17.el5.tar.gz
  6. cryptoincludekabi_whitelistMakefileModule.symverssecurityusr

头文件在include目录下

3)根文件系统

根文件系统很熟悉撒,开机后进入的系统就在根文件系统里,有/boot,/usr,/bin,/var等等,引导器,内核,根文件系统,有了一个大概的映象了,现在就说说它们之事有一些事儿.

引导器找内核,如GRUB它自代了一点驱动可以读内核所处的文件系统,如syslinux它是通过扇区地址找到的内核,initrd内有个名叫linuxrc或init的可执行文件(shell脚本也可以),提供一个虚根环境,加载硬盘驱动,读取根文件系统,为内核换根(从虚根环境到根文件系统)做个物质准备,内核换到根文件系统后,以前的虚根环境被umount掉啦,至此内核就可加载它所需要的内核模块啦,然后系统就启动啦.

广告内容

从GRUB到内核 从内核到根文件系统 从GRUB到内核 从内核到根文件系统 从GRUB到内核 从内核到根文件系统

相关阅读

热门评论

互联网十八般武艺 互联网十八般武艺

互联网十八般武艺

总篇数179

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法