• 浅谈Linux系统的启动流程


            Linux系统的启动时通过读取不同的配置文件,执行相应的Shell脚本完成的。当然本文只是简单的从文件的角度分析,更深层次的本文没涉及。

          

            主要读取了以下文件:

          

            /boot/grub/grub.conf

            /etc/inittab

            /etc/rc5.d(rc.d) 0-99 Seq

            /etc/passwd (Login,input username and password)

            /etc/shadow

            /etc/profile:init the env var of user

            /etc/profile.d/*.sh

            ~/.bash_profile

            ~/.bash_history

            ~/.bashrc

            /etc/bashrc


            我们首先来看grub.conf文件

    [root@larrywen grub]# ll menu.lst 
    lrwxrwxrwx. 1 root root 11  7o?=o?= 19 10:52 menu.lst -> ./grub.conf
    [root@larrywen grub]# pwd
    /boot/grub
    grub.conf文件内容:
    default=0
    timeout=5
    splashimage=(hd0,0)/boot/grub/splash.xpm.gz
    hiddenmenu
    title Red Hat Enterprise Linux (2.6.32-220.el6.i686)
             root (hd0,0)
             kernel /boot/vmlinuz-2.6.32-220.el6.i686 ro
    root=UUID=ed98469d-857b-4ae5-91e4-118e0167ead7 rd_NO_LUKS rd_NO_LVM
    LANG=en_US.UTF-8 rd_NO_MD quiet SYSFONT=lat    arcyrheb-sun16 rhgb
    crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM
             initrd /boot/initramfs-2.6.32-220.el6.i686.img

                  执行runlevel命令可以看到启动级别是5

    [root@larrywen grub]# runlevel
    N 5

            我们进入etc目录,可以看到很多rcX.d目录

    [root@larrywen grub]# cd /etc/init.d
    
    [root@larrywen init.d]# cd /etc
    [root@larrywen etc]# cd rc
    rc          rc0.d/      rc1.d/      rc2.d/      rc3.d/      rc4.d/      rc5.d/
    rc6.d/      rc.d/       rc.local    rc.sysinit  

            我们进入/etc/profile.d目录,可以看到很多可执行脚本

    [root@localhost test]# ll /etc/profile.d/*.sh
    -rw-r--r--. 1 root root 1143 Apr 28  2010 /etc/profile.d/colorls.sh
    -rw-r--r--. 1 root root   78 Apr 21  2010 /etc/profile.d/cvs.sh
    -rw-r--r--. 1 root root  192 Dec 12  2005 /etc/profile.d/glib2.sh
    -rw-r--r--. 1 root root   70 Aug 12  2010 /etc/profile.d/gnome-ssh-askpass.sh
    -rwxr-xr-x. 1 root root  288 Sep 24  2009 /etc/profile.d/kde.sh
    -rw-r--r--. 1 root root 2706 Sep  2  2010 /etc/profile.d/lang.sh
    -rw-r--r--. 1 root root  108 Feb  7  2007 /etc/profile.d/less.sh
    -rw-r--r--. 1 root root  933 Jun 30  2010 /etc/profile.d/qt.sh
    -rw-r--r--. 1 root root 2142 Sep  8  2010 /etc/profile.d/udisks-bash-completion.sh
    -rw-r--r--. 1 root root  269 May 19  2010 /etc/profile.d/vim.sh
    -rw-r--r--. 1 root root  169 May 20  2009 /etc/profile.d/which2.sh

            因为启动级别是5,所以我们进入rc5.d,可以看到很多文件,S表示当系统启动时执行,K表示当系统关闭时执行。

    [root@localhost grub]# ll /etc/rc5.d/
    K01certmonger       K50netconsole       K75ntpdate          K89rdisc            S11auditd           S24avahi-daemon     S26pcscd            S82abrtd
    K01smartd           K50snmpd            K76ipsec            K95cgconfig         S11portreserve      S24nfslock          S26udev-post        S85qpidd
    K02oddjobd          K50snmptrapd        K80kdump            K95firstboot        S12rsyslog          S24openct           S28autofs           S90crond
    K10psacct           K50vsftpd           K80sblim-sfcb       S00microcode_ctl    S13cpuspeed         S24rpcgssd          S30vboxadd          S95atd
    K10saslauthd        K60nfs              K80sssd             S01sysstat          S13irqbalance       S24rpcidmapd        S30vboxadd-x11      S97rhnsd
    K15httpd            K69rpcsvcgssd       K84wpa_supplicant   S02lvm2-monitor     S13rpcbind          S25cups             S35vboxadd-service  S98tog-pegasus
    K20tomcat6          K73ypbind           K86cgred            S08ip6tables        S15mdmonitor        S25netfs            S50bluetooth        S99local
    K36mysqld           K74nscd             K87restorecond      S08iptables         S22messagebus       S26acpid            S55sshd             
    K50dnsmasq          K74ntpd             K88nslcd            S10network          S23NetworkManager   S26haldaemon        S80postfix    

            我们再来看看用户主目录下的.bashrc文件内容

    [root@localhost grub]# cat ~/.bashrc 
    # .bashrc
    
    # User specific aliases and functions
    
    alias rm='rm -i'
    alias cp='cp -i'
    alias mv='mv -i'
    
    # Source global definitions
    if [ -f /etc/bashrc ]; then
    	. /etc/bashrc
    fi

             我们再来看看用户主目录下的.bash_profile文件内容

    [root@localhost grub]# cat ~/.bash_profile 
    # .bash_profile
    
    # Get the aliases and functions
    if [ -f ~/.bashrc ]; then
    	. ~/.bashrc
    fi
    
    # User specific environment and startup programs
    
    PATH=$PATH:$HOME/bin
    
    export PATH


            完整的流程图如下图:



    我的邮箱wgbno27@163.com  新浪微博@Wentasy27
      微信公众平台:JustOracle(微信号:justoracle)
      数据库技术交流群:336882565(加群时验证 From CSDN XXX)
      Oracle交流讨论组https://groups.google.com/d/forum/justoracle
      By Larry Wen
    


    katoon Sina CSDN
    @Wentasy 博文仅供参考,欢迎大家来访。如有错误之处,希望批评指正。原创博文如需转载请注明出处,谢谢 :) [CSDN博客]
  • 相关阅读:
    使用火炬之光资源(转)
    (转)Visual Leak Detector (VLD)使用
    (转)ofusion 导出注意事项
    OgreMax 导出(转)
    (转)C++ 内存池 C++ Memory Pool 翻译版
    Maven教程初级篇01: 简介
    浅谈JSON 数据源格式
    面向连接的Socket Server的简单实现
    oracle杀死死锁进程
    重构——让程序员快乐的工作
  • 原文地址:https://www.cnblogs.com/aukle/p/3225853.html
Copyright © 2020-2023  润新知