码迷,mamicode.com
首页 > 其他好文 > 详细

系统启动流程

时间:2015-09-06 18:25:01      阅读:220      评论:0      收藏:0      [点我收藏+]

标签:init.d   initrd

1.post加电自检,将BIOS映射进CPU可以查找的线性地址空间

2.BIOS中设置了启动次序,去找对应设备的MBR

3.bootloader根据MBR的分区表,查找操作系统所在的分区,并加载操作系统的内核;此时将内核装载入内存,在内存   中解压缩

4.kernel 装载驱动,识别硬件

5.kernel 访问initrd

6.启动init  /sbin/init

####################################

ldd /path/to/somefile 查看二进制文件所依赖的库

####################################

initrd 红5 小根 (内核跳小根,小根跳大根) 因为kernel不能直接访问init

initramfs 红6 小根

####################################

/etc/inittab控制运行级别 0-6

   0:halt

   1:single user mode 直接以管理员身份切入

   3:正常模式,文本文字界面。

   5:图形终端模式

   6:重启

###################################3

详解启动过程

bootloader 位于MBR当中

     linux中常用的bootloder 

            LILO:不能识别8G以上的文件系统

            GRUB: 装载MNR当中,引导操作系统

                  stage1:grub第一阶段存在MBR中,用于引导stage2

                  stage1_5:识别常见的不同的文件系统的

                  stage2:/boot/gtub/  它的配置文件是grub.conf

############################################################

咱们看一看/etc/grub.conf 里面的内容

default=0                               设定默认启动的title编号,从0开始

timeout=5                               等待用户选择的超时时长 (就是开机时进bios 点点点)

splashimage=(hd0,0)/grub/splash.xpm.gz   grub的背景图

hiddenmenu                               隐藏菜单

title ......                             内核标题,或操作系统名称,字符串可自由修改

root (hd0,0)                  内核文件所在的设备:对grub而言多有类型硬盘一律为hd,0代表第几个磁盘;后面那个0代表对应磁盘的分区

kernel ...                            内核文件路径,及传递给内核的参数

       /proc/ 下有很多进程,进程号下面有cmdline 启动进程时所执行的命令

       而位于/proc  目录下的cmdline 代表内核的路径  

initrd :小根   ramdisk文件路径                

####################################################################

如何用管理员身份1级别,不输入密码登录linux

启动linux时 按e 出现选择条条儿之后  再按e  ;选择第二项 kernel....按e 输入空格 single

再按回车,返回上一层,再按b  就可以启动,启动之后 passwd修改密码即可  

###################################################################

如何设置1级别密码:

vim/etc/grub.conf   在title上一行password 密码

###############################################

如何设置加密密码

grub-md5-crypt 然后输入人看密码 输出鬼看密码

vim/etc/grub.conf 再title上一行password --md5 (上面一行密码)

启动时敲p输入密码,其他没有变化

###############################################

runlevel /  who -r  显示当前运行级别

uname -r 查看内核版本号 release号

###############################################

Bootloader坏了如何用grub重新引导

   dd if=/dev/zero of=/dev/sda count=1 bs=400

   sync

  没有关机直接修复:安装grub stage1

           1、执行grub 

           2、grub>键入 root (hd#,0) 内核在哪个分区就是hd#

           3、grub>键入 setup (hd#)

           4、quit

           5、vim /etc/grub.conf 发现没有变化

      第二种方式:

           1、确保某磁盘有分区,并举例挂载在/mnt路径下的boot目录

           2、键入grub-install --root-director=/mnt /dev/hda(指定硬盘)

           3、为grub提供配置文件 vim /mnt/boot/grub/grub.cof

           4、default=0

           5、timeout=5

           6、title Fake Linux

                     root (hd0,0)

                     kernel /vmlinuz

                     initrd /initrd.img

##########################################################3

grub的配置文件坏了怎么办

    1、重启操作系统

       2、grub> find (hd0,0)/   敲TAB

       3、grub> root (hd0,0) 指定root

       4、kernel /vmlinuz- 敲TAB补全

       5、initrd /initrd-2.6 敲TAB补全

       6、boot  回车启动     

##############################################################

知识点:kernel如果挂载模块的

        init相关内容

##############################################################

下面就该kernel初始化的过程

      1、设备探测

      2、驱动初始化(可能会从initrd(红6 initramfs)文件中装载驱动模块)       

     3、以只读方式挂载根文件系统

      4、装载第一个进程init (PID:1)

#############################################

/sbin/init: (配置文件/etc/inittab) [红6.0之后变为upstart]

红6上有/etc/init 它是将/etc/inittab这个文件切割成了N片  而红5没有    

/etc/init.d是脚本存放的目录

#############################################

inittab中都有什么:

     id:标示符; runlevels:在哪个级别运行此行; action:在什么情况下执行此行; process:要运行的进程

     例:id:3:initdefault                  

       si:(不写就是在任何级别):sysinit:/etc/rc.d/rc.sysinit

/etc/inittab他都干了什么:

    1、设定默认运行级别

    2、运行系统初始化脚本

    3、运行指定运行级别对应的目录下的脚本

    4、设定Ctrl +alt +delete

    5、定义UPS电源

    6、启动虚拟终端

    7、启动图形终端

****************************************************

action大全: 

     initdefault:设定默认运行级别

     sysinit:系统初始化

     wait:只要切换到某个级别就执行一次

     respawn:一旦程序终止,会重新启动 类似你输入错密码之后  还要你输入

##########################################################

/etc/rc.d/rc.sysinit   这是一个要执行的程序;启动前的大量工作都是它要完成的

一个非常好的脚本,这里咱们详细说一下,它所实现的功能

1、激活udev 和selinux

2、根据/etc/sysctl.conf文件,来设定内核参数

3、设定时钟

4、装载键盘映射

5、启用交换分区

6、设置主机名

7、根据文件系统检测,并以读写方式重新挂载

8、激活RAID和LVM设备

9、启用磁盘配额(限定一个用户最多用多少空间)

10、根据etc/fstab,检查并挂载其他文件系统

11、清理过期的锁和PID文件

########################################################

/etc/rc.d/rc0/1/2/3/4/5/6.d  这也是一个脚本

这个脚本就是实现一个启动、停止服务的功能;自己写的脚本支持启动和停止,也可以连接到这里  

这些脚本都连接到他们的父目录/etc/init.d这个目录上 ,因为服务脚本都在这个目录里面。

######################################################

/etc/init.d 下的每一个文件里面都有,这些脚本都是靠这两行成为系统服务

(标识: 这两个前面是有#号的  )

          # chkconfig:runlevels定义在哪些级别下默认启动;SS启动的优先次序; KK关闭的优先次序

                  (当chkconfig命令来为此脚本在rc#.d目录创建连接时,runlevels表示默认创建s*开头的连接,除此之外创建为K*开头的

                   (并且S后面的启动优先级为SS后面所表示的数字;K后面的关闭优先次序为KK所表示的数字)

          # description

                   用于说明此脚本的简单功能 ;用反斜线续行

  chkconfig --list:查看所有独立守护服务的启动设定

#################################################################

咱们现在添加一个服务:

     1、首先写脚本

       

#!/bin/bash

#

#  chkconfig:2345 77 22

#  description:Test Service

#

LOCKFILE=/var/lock/subsys/myservice

status() {

  if [ -e $LOCKFILE ]; then

     echo "Running..."

  else

     echo "Stoped"

  fi

}

usage() {

  echo "`basename $0` {start|stop|restart|status}"

}

case $1 in

start)

   echo "Staring..."

   touch $LOCKFILE

   ;;

stop)

   echo "Stoping..."

   rm -f $LOCKFILE

   ;;

restart)

   echo "Restarting"

   ;;

status)

   status

   ;;

*)

   usage ;;

esac

   2、将将本复制到/etc/rc.d/init.d下叫做myservice

   3、 chkconfig --add myservice 创建连接

   4、服务就被加进来了

   5、想删除服务  chkconfig --del myservice

   6、想修改在2级别为off    chkconfig --level 24 myservice off

#################################################################################

   如果你不会写脚本,又想开机自动执行一些命令可以在

    /etc/rc.d/rc.local 系统最后启动的一个服务

###############################################

 xinetd  超级守护进程;它是用来管理瞬时守护进程的,相当于大商场和里面的专卖店

  yum install xinetd -y

####################################################################################################################


     




系统启动流程

标签:init.d   initrd

原文地址:http://10183596.blog.51cto.com/10173596/1691982

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!