<i id='289jn'><div id='289jn'><ins id='289jn'></ins></div></i>

<acronym id='289jn'><em id='289jn'></em><td id='289jn'><div id='289jn'></div></td></acronym><address id='289jn'><big id='289jn'><big id='289jn'></big><legend id='289jn'></legend></big></address>

      1. <fieldset id='289jn'></fieldset>
      2. <tr id='289jn'><strong id='289jn'></strong><small id='289jn'></small><button id='289jn'></button><li id='289jn'><noscript id='289jn'><big id='289jn'></big><dt id='289jn'></dt></noscript></li></tr><ol id='289jn'><table id='289jn'><blockquote id='289jn'><tbody id='289jn'></tbody></blockquote></table></ol><u id='289jn'></u><kbd id='289jn'><kbd id='289jn'></kbd></kbd>
      3. <span id='289jn'></span>

        <code id='289jn'><strong id='289jn'></strong></code>

        <ins id='289jn'></ins>

        <dl id='289jn'></dl>

        <i id='289jn'></i>
        1. 从GRUB到内核 从内核到根文件系统

          • 时间:
          • 浏览:7
          • 来源:124软件资讯网

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

            1)指导器

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

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

            #/boot/grub/menu.lst

            title Centos 5.2 kernel-2.6.18-92.1.17.el5
            root (hd0,7)
            kernel /vmlinuz-2.6.18-92.1.17.el5 root=/dev/VolGroup00/LogVol00
            initrd /initrd-2.6.18-92.1.17.el5.img
            boot


            在这明确了内核的位置  ,并向内核通报了一些参数  。initrd扮了一个很主要的角色  ,卖力在内核会见根文件系统前加载驱动  。

            2)内核

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

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

            /boot/initrd-2.6.18-92.1.17.el5.img

            /boot/System.map-2.6.18-92.1.17.el5…………….这是符号表  ,函数与地址的映射关系

            /boot/vmlinuz-2.6.18-92.1.17.el5

            /boot/config-2.6.18-92.1.17.el5………………………..内核的设置文件  ,由make xconfig下令发生的


            B) 内核模块部门 ,在/lib/modules/2.6.18-92.1.17.el5目录下  ,2.6.18-92.1.17.el5这是版本号 ,每一小我私家的机子上可能会差别  。所有模块都在这  ,另有它们之间的依赖关系

            [root@xx 2.6.18-92.1.17.el5]# pwd
            /lib/modules/2.6.18-92.1.17.el5
            [root@xx 2.6.18-92.1.17.el5]# ls -l
            总计 1128
            lrwxrwxrwx 1 root root 48 11-11 20:14 build -> ../../../usr/src/kernels/2.6.18-92.1.17.el5-i686
            drwxr-xr-x 2 root root 4096 11-05 03:09 extra
            drwxr-xr-x 10 root root 4096 11-11 20:28 kernel ……………………………内核模块就中此目录
            drwxr-xr-x 2 root root 4096 11-13 14:50 misc
            -rw-r–r– 1 root root 252332 11-13 14:50 modules.alias
            -rw-r–r– 1 root root 69 11-13 14:50 modules.ccwmap
            -rw-r–r– 1 root root 209702 11-13 14:50 modules.dep………………….模块间的依赖关系
            -rw-r–r– 1 root root 147 11-13 14:50 modules.ieee1394map
            -rw-r–r– 1 root root 375 11-13 14:50 modules.inputmap
            -rw-r–r– 1 root root 2314 11-13 14:50 modules.isapnpmap
            -rw-r–r– 1 root root 74 11-13 14:50 modules.ofmap
            -rw-r–r– 1 root root 191108 11-13 14:50 modules.pcimap……………….物理装备与内核模块的对应关系
            -rw-r–r– 1 root root 589 11-13 14:50 modules.seriomap
            -rw-r–r– 1 root root 105259 11-13 14:50 modules.symbols
            -rw-r–r– 1 root root 322731 11-13 14:50 modules.usbmap
            lrwxrwxrwx 1 root root 5 11-11 20:14 source -> build
            drwxr-xr-x 2 root root 4096 11-05 03:09 updates
            drwxr-xr-x 4 root root 4096 11-11 20:14 weak-updates


            注重source,build这两个目录  ,在装显卡驱动时就熟悉它们俩了吧  ,

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

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

            [root@xx 2.6.18-92.1.17.el5-i686]# pwd
            /usr/src/kernels/2.6.18-92.1.17.el5-i686
            [root@xx 2.6.18-92.1.17.el5-i686]# ls
            arch drivers init kernel mm net sound
            block fs ipc lib Module.kabi scripts symsets-2.6.18-92.1.17.el5.tar.gz
            crypto include kabi_whitelist Makefile Module.symvers security usr


            头文件在include目录下

            3)根文件系统

            根文件系统很熟悉撒  ,开机后进入的系统就在根文件系统里 ,有/boot,/usr,/bin,/var等等

            指导器  ,内核 ,根文件系统  ,有了一个或许的映象了  ,现在就说说它们之事有一些事儿  。

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