• linux启动过程


    环境:debian 7.0

    加载BIOS
     
    1.从点击电源键开始,首先加载BIOS进行硬件检测,然后根据配置读取启动设备,然后读取Boot Loader ,linux中主流的boot Loader是grub。Boot Loader 安装在启动装置的第一个磁区内,也就是MBR(Master Boot Record 主要启动记录区)。
     
    读取内核文件并启动服务
     
    2.首先读取/boot下的内核文件,在核心加载完后,就会启动初始化进程,首先读取/etc/inittab 看到第一行是这样子的
    1
    id:2:initdefault:
    initdefault的值是2,表明系统启动的时候运行级别是2。(linux允许为不同的场合,配合不同的启动程序,这个就叫运行级别。)
     
    debian 中各个运行等级如下:
    1
    2
    3
    4
    0 (halt the system)
    1 (single-user / minimal mode),
    2 through 5 (multiuser modes),
    6 (reboot the system)
    0,6分别表示关机和重启,这两个都是系统保留的,所以我们不能把启动等级设为这两个。run level 1 表示的是单人维护模式,用在系统出问题时的维护。run level 2~5 表示多用户模式。debian 默认的运行等级为2。
    另外可以使用runlevel命令来查看当前运行等级。
    1
    runlevel
    上面第一个3表示之前的runlevel ,2表示当前的runlevel
    使用init命令可以用来切换当前runlevel
    1
    init 3 
    还可以使用init 0 和init 6来执行关机或重启机器。
    另外/etc/inittab 中设置了系统一系列的启动和配置流程。
    3.然后执行初始化程序
    每个运行级别在/etc目录下面,都有一个对应的子目录,指定要加载的程序,这里看下run level 2下都启动哪些初始化程序。
    1
    ls /etc/rc2.d
    可以看到级别2都初始化运行了那些服务。
    01
    02
    03
    04
    05
    06
    07
    08
    09
    10
    11
    12
    13
    14
    15
    S01motd -> ../init.d/motd
    S13rpcbind -> ../init.d/rpcbind
    S14nfs-common -> ../init.d/nfs-common
    S16rsyslog -> ../init.d/rsyslog
    S17apache2 -> ../init.d/apache2
    S18acpid -> ../init.d/acpid
    S18atd -> ../init.d/atd
    S18cron -> ../init.d/cron
    S18mysql -> ../init.d/mysql
    S18pptpd -> ../init.d/pptpd
    S18ssh -> ../init.d/ssh
    S19exim4 -> ../init.d/exim4
    S20bootlogs -> ../init.d/bootlogs
    S21rc.local -> ../init.d/rc.local
    S21rmnologin -> ../init.d/rmnologin
        上面中S表示启动参数为(start)这个S还可以是K表示启动参数为(stop)。数字表示的就是启动顺序。这些文件启动文件实际都是在/etc/init.d/下。/etc/rc2.d目录下只是放置连接文件。
        也就是说如果我们想开机启动某个服务或者关闭某个服务的话,修改这个目录下的文件就可以了,但是不建议直接修改这个目录下的文件,可以同过sysv-rc-conf这个软件来修改。
    在debian 下,首先安装sysv-rc-conf
    1
    apt-get install sysv-rc-conf
    安装后输入sysv-rc-conf 可以看到这个界面
     
          X表示开机启动项,点击空格可以取消或者添加。如果想增加一项新的启动项,只需要在/etc/init.d/目录增加启动脚本,然后再执行sysv-rc-conf 进行设置即可。需要注意的增加的启动脚本必须要要有执行权限。
        另外还有一点,注意到这个服务,/etc/rc.d/rc.local,如果需要自定义开机执行一些命令可以在这个本件里面添加。
    用户登录
    4.系统验证完用户的账号密码后,就登录成功了。登录成功之后就会去读入/etc/profile。如果是命令行登录和ssh登录的话,就会读取顺序读取下面三个文件
    1
    ~/.bash_profile ~/.bash_login ~/.profile
        上面的三个文件,如果其中一个存在就不会读取下面的问价了。如果是图形界面登录,就只加载/etc/profile。和~/.profile。
  • 相关阅读:
    map()和filter()函数讲解与示例
    通过假设巧妙的判断出参数的最大值和最小值
    通过函数定义数据结构list中的每个元素是一个元组,扑克牌示例
    FileCloud 的原理简述&自己搭建文件云
    opengl学习笔记
    Pascal的sin^-1函数实现
    OpenGL键盘交互响应事件
    OpenGL 鼠标交互响应事件
    重踏比尔盖茨走过的路——模拟操作系统
    Pascal代码自动格式化
  • 原文地址:https://www.cnblogs.com/niurougan/p/4196095.html
Copyright © 2020-2023  润新知