首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Linux操作系统启动流程

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去修复

返回列表