Linux操作系统启动流程

发布时间:2014-4-2 14:53    发布者:edu11814
关键词: Linux
启动流程
        上电开机-- BOIS实现硬件自检初始化-- 找到启动设备的编号 -- 找到MBR(主引导记录,在硬盘的0磁道的0扇区) -- 启动grub程序 -- 通过grub设置找到vmlinuz并加裁到内存里运行 -- 启动内核会加载initrd(随机内存盘,小型文件系统,作用:能够让内核认出系统所在的哪个设备上,临时驱动) -- 运行产生第一个进程init -- init进程会读取/etc/inittab根据配置文件,判断系统进去运行在哪个级别并进入相对应级别启动相应服务 -- /etc/rc.sysinit 系统环境初始化,获取主机网络环境,测试或者载入设备,设置时间... -- /etc/rc.local开机后要运行的脚本

        /etc/inittab

            0               关机
            1               单用户模式
            2               没有网络的文本模式
            3               有网络的文本模式
            4               保留
            5               图形模式
            6               重启

            id:5:initdefault:           默认开机后进入的系统级别

            l0:0:wait:/etc/rc.d/rc 0
            .......
            l6:6:wait:/etc/rc.d/rc 6    定义六个级别启动的服务脚本

            ca::ctrlaltdel:/sbin/shutdown -t3 -r now    定义ctrl+alt+del三键重启功能,在tty模式有效,在图形模式下无效,这个还会受到内核参数的影响

            1:2345:respawn:/sbin/mingetty tty1
            .....
            6:2345:respawn:/sbin/mingetty tty6      定义了6个虚拟终端

            x:5:respawn:/etc/X11/prefdm -nodaemon   启动图形


            x:5nce:/bin/su root -l -c "/bin/bash --login -c startx >& /dev/null"  自动用root登录图形

            respawn     代表什么时候终止都重新启动命令
            once        代表运行这个命令一次


        /etc/rc.local   linux启动最后阶段,系统会执行/etc/rc.local脚本

        /etc/X11/xinit/xinitrc.d/   此目录里可以放置图形界面开启自动运行的脚本

===============================================================================
三、GRUB启动加载器

    cd /boot/grub

        stage1              MBR中的bootloader备份文件

        stage2              grub的核心文件

        device.map          grub与linux的硬盘符号映射表

        splash.xmp.gz       grub的背景图片

        grub.conf           grub的配置

-------------------------------------------------------------------------------

    vim /boot/grub/grub.conf        配置文件

        default=0               默认启动的操作系统(0代表第一个title....)

        timeout=5               5秒后自动启动default操作系统

        splashimage=            指定背景图片的路径

        hiddenmenu              隐藏开机选项

        password --md5          设置启动参数密码,grub-md5-crypt产生

        title                   操作系统名称

            password --md5      设置启动操作系统密码

            root                指定kernel和initrd所在的分区,(hd0,0),表示第一块硬盘,第一个分区

            kernel              指定kernel路径,内核启动参数

            initrd              指定initrd路径

            rootnoverify        指定其它操作系统(windows)

            chainloader +1      链接加载到第一扇区(windows)



--------------------------------------------------------------------------------

     grub背景图片制作

            convert 源图片 -resize 640x480! -colors 14 test.xpm     修改颜色数和分辩率

            convert没有此命令:

                imagemagick 找此关键字安装


-------------------------------------------------------------------------------

    grub命令

        help                    列出命令

        quit                    退出

        root(hd0,1)             指定第一个硬盘第二个分区为grub文件所在的分区

        setup(hd0)              安装grub到第一个硬盘上

            把grub安装到硬盘第一扇区: grub-install /dev/sda

        boot                    启动系统

        grub.conf中title下的命令都一样

-------------------------------------------------------------------------------

    kernel 启动参数

        ro                      以只读的方式加载内核,默认rw

        root=LABEL=/            指定卷标是/的分区为根分区,也可以直接指定设备文件

        rhgb                    图形启动时以图形方式显示启动信息

        quiet                   启动时不显示检查硬件的信息

        [0-6]                   1启动单用户模式....

        vga=792                 指定终端的分辩率为1024x768

        panic=n                 内核崩溃n秒后重新启动

        iso-scan/filename=/0.91.iso 指定根分区为iso镜像

        boot=casper             启动iso默认访问的文件夹

-------------------------------------------------------------------------------

    initrd作用

        Kernel网启动没有任何文件系统的目录,这时会先以initrd提供的目录当作kernel的暂时目录,该文件系统主要提供内核启动时需要的驱动,ext3文件系统驱动,如果没有该驱动就不能挂载根分区,没有挂载根分区就不能读取根分区中的ext3驱动,所以要有一个临时的initrd提供驱动

-------------------------------------------------------------------------------

    打开initrd

        file initrd-*           检查到该文件为gzip文件,不要相信扩展名

        mv initrd initrd.gz     改变扩展名

        gzip -d initrd.gz       解压gz文件

        file initrd             检查到该文件为cpio文件

        cpio -im < initrd       解压cpio文件


    打包initrd

        find | cpio -co | gzip -9 > initrd-new.img


-------------------------------------------------------------------------------

grub   排错引导例子

如果grub丢失,或者grub写的有错误等情况,进系统时有可能会直接到一个grub>的界面(也就是黑屏幕上就一个grub >的提示符)

grub> root (hd0,0) --进入到/boot分区

grub> kernel /vmlinuz-xxxxxx     ro   root=LABEL=/  --根分区可以用label,也可以用/dev/sdax来代替

grub> initrd /initrd-xxxxxx

grub> boot  --boot代表启动


如果能启动,就修改好你的grub

如果启动出现kernel panic 的错误,表示是上面写错了,再试试,不行就用linux rescue去修复
本文地址:https://www.eechina.com/thread-128377-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表