a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 125|回复: 1

[红旗认证] 红旗认证辅导:引导器,内核,根文件系统的关系。

[复制链接]
发表于 2012-8-4 12:16:06 | 显示全部楼层 |阅读模式
按下电源,咔一下,电脑启动啦,接着BIOS的画面出来啦,不一会,GRUB的界面出来,然后就是一行接一行的字符在黑屏上闪动,不时地有OK的字样出现.呵呵,不要走神哈,该输入用户名和密码啦,….成功地进入了系统,这算是系统启动完成啦。那么这个过程到底有什么事情发生啦,哪些值得我们学习呢?本文就以linux 开机为线索,讲述引导器,内核,根文件系统的关系。
! s) p2 A7 h1 O# i7 d: T% U% V( |1)引导器
7 X, R& L" a& k: H这个是大家所熟知的吧,linux下常用的就有:grub,这是当今主流啦;lilo,这啊,曾经风光过,现在让grub接了重任;syslinux这是个轻量级的引导器,一般在光盘,USB上做引导器,做个liveUSB的应该很清楚哦,无盘启动的应用中也能找到它的身影.
/ H3 O/ X9 Y0 Y  e引导器的主要功能就是找到内核(vmlinuz),然后把它载入内存,当然还有initrd啦,以GRUB为例,在我的系统(centos5.2)里是这么写的7 c: q, X  @9 M  k& U
. K, y& z- t8 D4 P6 ?# [8 p, M$ J: u
#/boot/grub/menu.lst 5 l. B  D5 F) ]. x, r/ T9 n8 b6 }
title Centos 5.2 kernel-2.6.18-92.1.17.el5
% }$ O3 U) {2 t( c( r- ^; _root (hd0,7)  H* Y. A. b, V$ Z
kernel /vmlinuz-2.6.18-92.1.17.el5 root=/dev/VolGroup00/LogVol004 R" |3 P$ z: k3 |8 n
initrd /initrd-2.6.18-92.1.17.el5.img; @4 w% o, Y; B
boot
8 y: ^+ y2 t( _9 s1 ]$ l  j
" g1 i' q2 M, u1 w( Y在这明确了内核的位置,并向内核传递了一些参数。initrd扮了一个很重要的角色 ,负责在内核访问根文件系统前加载驱动。3 O% r3 }) ]$ i& y8 f) Q6 }! s
2)内核" E$ n: Q- i( O2 {# E7 m- B1 {
一个完整的内核就是由内核源码产生的,在这kernel.org 能找到源码,压缩后有50M左右,解开后有好几百M呢,我们可以重新编译源码来更新我们已有的内核,以提高性能和兼容能力。那么这个源码经编译后产出了哪些东东呢,出以我的机子为例:* D& k  C4 d0 b! J# R2 z7 j& c
A)内核部分,在/boot分区下9 @2 f" A( A/ s3 H

; t  f! t4 ]- X8 L3 U  f$ b/boot/initrd-2.6.18-92.1.17.el5.img, r& c' b# O# n+ B% S  ~
/boot/System.map-2.6.18-92.1.17.el5…………….这是符号表,函数与地址的映射关系. C; G( a7 a6 ?
/boot/vmlinuz-2.6.18-92.1.17.el5
* P6 @+ o2 c: Z( {* y, u/boot/config-2.6.18-92.1.17.el5………………………..内核的配置文件,由make xconfig命令产生的' X' u$ }0 @) P
5 `2 h0 l( A# v" _2 J5 J

* }9 _. x& Z! M. A+ g- ]& X" LB) 内核模块部分,在/lib/modules/2.6.18-92.1.17.el5目录下 ,2.6.18-92.1.17.el5这是版本号,每一个人的机子上可能会不同。所有模块都在这,还有它们之间的依赖关系
回复

使用道具 举报

 楼主| 发表于 2012-8-4 12:16:07 | 显示全部楼层

红旗认证辅导:引导器,内核,根文件系统的关系。

</p>
; g' f, Q9 V' o) N; |; M[root@xx 2.6.18-92.1.17.el5]# pwd
5 [+ K+ m/ G- u" A3 U$ W/lib/modules/2.6.18-92.1.17.el5/ e, d3 O6 @8 l7 J- ]; M* r' ^' A/ S
[root@xx 2.6.18-92.1.17.el5]# ls -l4 M) k; P- ?* q* X: h
总计 1128% c6 C  U) b- }8 s: a
lrwxrwxrwx 1 root root 48 11-11 20:14 build -> ../../../usr/src/kernels/2.6.18-92.1.17.el5-i686
1 W& D% o% l" f, Hdrwxr-xr-x 2 root root 4096 11-05 03:09 extra
5 S$ y, }6 Z( edrwxr-xr-x 10 root root 4096 11-11 20:28 kernel ……………………………内核模块就中此目录
" _; g+ e" E; \7 ^9 F& Gdrwxr-xr-x 2 root root 4096 11-13 14:50 misc/ Y# r' X$ @/ A" k# ?- L3 m
-rw-r–r– 1 root root 252332 11-13 14:50 modules.alias' c0 Z, s- ?$ H
-rw-r–r– 1 root root 69 11-13 14:50 modules.ccwmap
4 x( z# o. k! u1 V-rw-r–r– 1 root root 209702 11-13 14:50 modules.dep………………….模块间的依赖关系! I6 i( }4 h4 {% [% ]3 Z
-rw-r–r– 1 root root 147 11-13 14:50 modules.ieee1394map
; M; ^8 X" y3 q1 \% u-rw-r–r– 1 root root 375 11-13 14:50 modules.inputmap
7 _- |( ?% U8 d! X! B7 c6 ?-rw-r–r– 1 root root 2314 11-13 14:50 modules.isapnpmap
. N" Y% M% t) c/ M, Q9 b) N-rw-r–r– 1 root root 74 11-13 14:50 modules.ofmap$ J; a& s1 l# P0 y0 M  \& u0 O
-rw-r–r– 1 root root 191108 11-13 14:50 modules.pcimap……………….物理设备与内核模块的对应关系
: j2 h4 m3 S1 J* q' J! E, o-rw-r–r– 1 root root 589 11-13 14:50 modules.seriomap# n3 @. Z/ e% l& X8 N$ t5 x
-rw-r–r– 1 root root 105259 11-13 14:50 modules.symbols& b' ]% S$ M3 K1 L3 w
-rw-r–r– 1 root root 322731 11-13 14:50 modules.usbmap
0 H; H- ?$ r/ k' c4 @/ plrwxrwxrwx 1 root root 5 11-11 20:14 source -> build
1 u  v' \: ?4 _, Z& }  ?: [0 ~drwxr-xr-x 2 root root 4096 11-05 03:09 updates
0 X0 c3 w; }$ U7 x7 Mdrwxr-xr-x 4 root root 4096 11-11 20:14 weak-updates
. j1 o/ ^& ]- P0 Y: N# _  \. i
4 x/ T3 J: d) C1 E4 [8 _注意source,build这两个目录,在装显卡驱动时就认识它们俩了吧,
# B  Z; z( m7 G) }$ s8 }6 kC)头文件及相关的内核配置文件: O+ L$ o& Z& n
/usr/src/kernels/2.6.18-92.1.17.el5-i686,在构造或者是编译相关内核模块就要用到这个地方的文件,在安装显卡驱动的时候就是这个目录下的东东,有没有什么映象啊,为什么呢?当然是想看看3D桌面啦,是不是啊。。。。
) P; i/ d9 L$ N( }( n+ F
. d! }8 X3 e+ O) |- }+ t# J3 m[root@xx 2.6.18-92.1.17.el5-i686]# pwd
) \  w. I( e1 n' V+ X" \/usr/src/kernels/2.6.18-92.1.17.el5-i686
: o. u; n3 m  {; d- q! |2 D- M[root@xx 2.6.18-92.1.17.el5-i686]# ls
! {% N+ |6 r$ A# ?9 M% a. D# parch drivers init kernel mm net sound  r6 c  }2 j0 ]" W7 }1 ~( F5 C- t8 S
block fs ipc lib Module.kabi scripts symsets-2.6.18-92.1.17.el5.tar.gz
% {# f. L& ~+ ycrypto include kabi_whitelist Makefile Module.symvers security usr3 H& H  R$ F" b
; d2 A; {8 H  i* |
头文件在include目录下$ C) ^8 ~0 J* p3 s1 p4 V
3)根文件系统
, O& M* h) V+ R5 D% a根文件系统很熟悉撒,开机后进入的系统就在根文件系统里,有/boot,/usr,/bin,/var等等
- ^/ ^6 p3 B! H7 D8 [2 k+ G8 K+ u0 D9 |引导器,内核,根文件系统 ,有了一个大概的映象了,现在就说说它们之事有一些事儿。" H! e" v+ X1 {: Q- V/ ~
引导器找内核,如GRUB它自代了一点驱动可以读内核所处的文件系统,如syslinux它是通过扇区地址找到的内核,initrd内有个名叫linuxrc或init的可执行文件(shell脚本也可以),提供一个虚根环境,加载硬盘驱动,读取根文件系统,为内核换根(从虚根环境到根文件系统)做个物质准备。内核换到根文件系统后,以前的虚根环境被umount掉啦,至此内核就可加载它所需要的内核模块啦,然后系统就启动啦
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-6 08:53 , Processed in 0.354968 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表