`
xuelianbobo
  • 浏览: 171777 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

linux亦步亦趋(20)linux引导流程一

阅读更多

从按下开机键到出现输入用户名的界面的整个过程。要经历哪些步骤呢。

步骤如下:

  1. firmware:加载固件,固件在硬件层面进行设备检查,称为加电自检。【硬件时钟】
  2. 加电自检后就加载mbr即自举程序mbr保存了三个东西(自举程序,磁盘分区表,结束标记字)
  3. BootLoader:自举程序,linux里面常用的自举程序是grub,自举程序用来载入内核
  4. kernel:载入内核,从软件层面驱动硬件启动init进程
  5. init进程读取inittab文件。并按照inittab启动相应的运行级别所对应的程序及服务。
  6. 出现输入用户名和密码的框子。

 

硬件时钟和软件时钟的同步:

    注:加载固件环节会涉及到一个硬件时钟的东东。

  • hwclock:命令是hardwareclock的简称,即硬件时钟的意思。直接敲该命令将显示硬件时钟。
  • date: 命令可以显示操作系统的时间,直接敲date即可。
  • hwclock:命令有两个选项, --hctosys 以硬件为准同步date和hwclock, --systohc 以软件为准同步date和 hwclock。
  • 直接设置硬件时钟、方法是:hwclock --set --date="9/22/96 16:45:05"
  • 直接设置date、方法是date 073113202014.02 ##月日时分年.秒

    所有的例子如下:

##显示软件时间
[root@localhost ~]# date
2014年 07月 30日 星期三 13:09:18 CST
##显示硬件时钟
[root@localhost ~]# hwclock
2014年07月30日 星期三 13时09分22秒  -0.017273 seconds
[root@localhost ~]# 
[root@localhost ~]# hwclock --systohc
[root@localhost ~]# hwclock --systohc
[root@localhost ~]# 
##如果两个时间都不准的话,需要进行设置命令如下:
[root@localhost ~]# date 073113202014.02  ##月日时分年.秒
2014年 07月 31日 星期四 13:20:02 CST
[root@localhost ~]#
[root@localhost ~]# hwclock --set --date="9/22/96 16:45:05"
[root@localhost ~]#
##然后再用同步命令同步即可

 

 自举程序及配置:

  • linux系统中的自举程序一般为grub,其配置所在目录:../boot/grub/grub.conf
  • 里面的主要配置是加载内核的相关信息。
[root@localhost etc]# pwd
/etc
[root@localhost etc]# ls -l grub.conf
lrwxrwxrwx 1 root root 22 07-31 07:02 grub.conf -> ../boot/grub/grub.conf
[root@localhost etc]# 
  •  grub.conf的内容解析

 

[root@localhost etc]# cat grub.conf
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/VolGroup00/LogVol00
#          initrd /initrd-version.img
#boot=/dev/sda
####default用来配置默认引导的系统,单系统没有用,多系统的时候才有用
default=0
####等待选择的时间
timeout=5
####背景图片
splashimage=(hd0,0)/grub/splash.xpm.gz
####隐藏按钮
hiddenmenu
#######定义系统及内核的位置。
title CentOS (2.6.18-194.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-194.el5 ro root=/dev/VolGroup00/LogVol00 rhgb quiet
        initrd /initrd-2.6.18-194.el5.img
[root@localhost etc]# 

 注:vmlinuz-2.6.18-194.el5  是内核文件 2.6.18 是内核的版本号 祝版本号.次版本号.末版本号 次版本号是奇数表示测试版

 

关于内核:

内核只做两个事情:

  • 驱动硬件,也就是让linux能认识这个硬件。启动过程中有识别硬件的过程。
  • 启动进程init进程。系统启动的第一个进程,进程号恒为1,init进程读取inittab。其父进程为pid为0的 内核调度器进程。
###内核文件的位置
[root@localhost boot]# ls -l /boot/vm*
-rw-r--r-- 1 root root 1852596 2009-08-19 /boot/vmlinuz-2.6.18-164.el5PAE  ##是一个文件,在启动的时候需要解压
[root@localhost boot]#

 inittab:

  • init进程启动的时候需要读取inittab这个配置文件
  • 文件所在目录:/etc/inittab
[root@localhost etc]# ls -l /etc/inittab
-rw-r--r-- 1 root root 1666 07-31 07:02 /etc/inittab
[root@localhost etc]# 
  • 查看一下inittab的内容,
[root@localhost etc]# grep -v "^#" inittab
###默认启动的运行级别是5 如果要改成3则将下面的5改成3即可
id:5:initdefault:
###运行级别出啥都不写,表示任何级别都要运行,rc.sysinit这个脚本里面定义的都是系统启动必须的初始化操作。
si::sysinit:/etc/rc.d/rc.sysinit
###定义了7个级别,我们后面会有这几个的详细解释。
l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
####按下ctrlaltdel时的操作是 shutdown
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
###跟电源有关。
pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"
###跟电源有关。
pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"
####6个本地终端的配置,tty就表示终端,按ctrl+F1-F6即可 ctrl+F7返回桌面环境
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
###运行级别5的时候启动xwindow。
x:5:respawn:/etc/X11/prefdm -nodaemon
[root@localhost etc]# 

不难发现里面的格式:xx:xx:xx:xx

     inittab的格式:id:runlevels:action:process  

  • id  唯一标识,标识符
  • runlevels 运行级别
  • action 运行状态,常用的有:wait、once:不等待,一般不用、ctraltdel:关机。
  • 要运行的进程,脚本

运行级别解释

  1. #   0 - halt (Do NOT set initdefault to this)
  2. #   1 - Single user mode  没有图形,只有root可以登录 且不需要密码即可登录,
  3. #   2 - Multiuser, without NFS (The same as 3, if you do not have networking)  NFS一般不用了,有安全问题,建议不用。
  4. #   3 - Full multiuser mode
  5. #   4 - unused
  6. #   5 - X11 图形界面 11是xwindow的版本号 跟三的区别就是有图形。
  7. #   6 - reboot (Do NOT set initdefault to this)

切换运行级别:

  • runlevel:查看当前的运行级别
[root@localhost etc]# runlevel
N 5
[root@localhost etc]#
  • init 运行级别 telinit 运行级别; 用来更改运行级别
[root@localhost etc]# init 1
[root@localhost etc]#

 rc相关的东东:

在我们的inittab中我们可以看到所有的运行级别的process都指向了一个rc的脚本如下所示:

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

我们去看看这个文件:

  • 文件目录:/etc/rc.d/rc
  • 它会再调用同目录rcN.d
[root@localhost rc.d]# ls -l /etc/rc.d/rc
-rwxr-xr-x 1 root root 2255 2009-07-04 /etc/rc.d/rc
[root@localhost rc.d]# 
##该文件中根据入参决定调用同目录哪个文件:即rcN.d  N=0-6
[root@localhost rc.d]# ls -l
总计 112
drwxr-xr-x 2 root root  4096 07-31 07:10 init.d
-rwxr-xr-x 1 root root  2255 2009-07-04 rc
drwxr-xr-x 2 root root  4096 07-31 07:12 rc0.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc1.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc2.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc3.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc4.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc5.d
drwxr-xr-x 2 root root  4096 07-31 07:12 rc6.d
-rwxr-xr-x 1 root root   220 2009-07-04 rc.local
-rwxr-xr-x 1 root root 27476 2009-09-29 rc.sysinit ###该文件应该也不陌生

  我们随便找一个rcN.d看看其里面的内容,以5为例:

  • 不难发现都是一些软连接文件,都指向了../init.d/中文件。
[root@localhost rc.d]# ls -l /etc/rc.d/rc5.d
总计 288
lrwxrwxrwx 1 root root 17 07-31 06:52 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 07-31 06:54 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 18 07-31 06:50 S08iptables -> ../init.d/iptables
lrwxrwxrwx 1 root root 18 07-31 06:52 S08mcstrans -> ../init.d/mcstrans
  • K开头表示关闭S开头表示启动。严格区分大小写

  • 后面的数字表示启动顺序,越小启动的越早。
  • 后面是服务的名字。
  • 配置的原则:最小的权限,最少的服务。节省资源,防止攻击。比如不想启动:S60vsftpd 将S改成小写即可。

 

再次发现:

 

[root@localhost etc]# ls -l /etc/rc3.d
lrwxrwxrwx 1 root root 10 06-19 06:22 /etc/rc3.d -> rc.d/rc3.d
[root@localhost etc]# cd rc.d/rc3.d
[root@localhost rc3.d]# ls -l
总计 292
lrwxrwxrwx 1 root root 17 06-19 06:23 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 06-19 06:38 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 24 06-19 06:46 K02NetworkManager -> ../init.d/NetworkManager
lrwxrwxrwx 1 root root 16 06-19 06:28 K05conman -> ../init.d/conman

 

  • 从上面的脚本容易发现,/etc/rc3.d 实际是/etc/rc.d/rc3.d 且rc3.d中的文件都是指向/etc/rc.d/init.d中的文件。
  • init.d中定义了系统中的全部服务,我们可以进行这些服务重启,关闭等,如下:
[root@localhost init.d]# pwd
/etc/rc.d/init.d
[root@localhost init.d]# ./syslog
用法:./syslog {start|stop|status|restart|condrestart}
[root@localhost init.d]# ./syslog stop
关闭内核日志记录器:                                       [确定]
关闭系统日志记录器:                                       [确定]
[root@localhost init.d]# ./syslog start
启动系统日志记录器:                                       [确定]
启动内核日志记录器:                                       [确定]
[root@localhost init.d]#

设置程序是否自启动:

  • 将要运行的程序或者脚本创建软连接,并将软连接文件放到对应的rcN.d中,起一个S开头的名字。
  • 将rcN.d中的文件直接改名,将服务是否启动进行改变。
  • chkconfig,可以对系统中的服务进行查看,设置。如下
  • ntsysv工具进行设置
###查看全部的服务及其启动级别,0:关闭 表示级别1的时候关闭,以此类推
[root@localhost init.d]# chkconfig --list
acpid           0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
anacron         0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
apmd            0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
atd             0:关闭  1:关闭  2:关闭  3:启用  4:启用  5:启用  6:关闭
[root@localhost init.d]# chkconfig --list sshd  指定名字 只显示一个服务的
sshd            0:关闭  1:启用  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@localhost init.d]# chkconfig --level 01 sshd on 指定01 级别时为on
[root@localhost init.d]# chkconfig --list sshd ##查看一下设置结果。
sshd            0:启用  1:启用  2:启用  3:启用  4:启用  5:启用  6:关闭
[root@localhost init.d]#
##看一下chkconfig的用法:
[root@localhost init.d]# chkconfig --help
chkconfig 版本 1.3.30.1 - 版权 (C) 1997-2000 Red Hat, Inc.
在 GNU 公共许可的条款下,本软件可以被自由发行。
用法:    chkconfig --list [name]
         chkconfig --add <name>
         chkconfig --del <name>
         chkconfig [--level <levels>] <name> <on|off|reset|resetpriorities>
[root@localhost init.d]#

ntsysv的使用如下:

ntsysv - simple interface for configuring runlevels

 

 

 引导过程中信息查询:

dmesg的使用:

查看引导期间的信息。比如查看网卡:

[root@localhost init.d]# dmesg | grep eth0
eth0: no IPv6 routers present
eth0: no IPv6 routers present
[root@localhost init.d]#

 

 var/log目录里面的日志文件:

  • messages  启动信息日志
  • boot.log 启动的错误日志一般为空
[root@localhost log]# cat boot.log
[root@localhost log]#
[root@localhost log]# grep syslog messages
Jul 30 14:04:52 localhost syslogd 1.4.1: restart.
Jul 30 14:17:24 localhost syslogd 1.4.1: restart.
Jul 30 22:22:18 localhost syslogd 1.4.1: restart.
[root@localhost log]#

 

 

  • 大小: 285.3 KB
分享到:
评论

相关推荐

    亦步亦趋的代码移植——从Linux到Windows的代码移植.pdf

    亦步亦趋的代码移植——从Linux到Windows的代码移植.pdf

    亦步亦趋也是个问题.doc

    亦步亦趋也是个问题.doc

    主板芯片组与CPU的亦步亦趋.pdf

    主板芯片组与CPU的亦步亦趋.pdf

    大道至简——软件工程思想方法学

    在缺乏独立思维、对国外工程理论亦步亦趋的国内工程界、开发业界,该书无疑是一份激荡新思的佳作。 本书是第一本讨论软件工程思想本源的书籍,也是第一本从工程实践出发溯源而论的佳作。也是老师经常推荐的一本好书...

    精品开拓市场 创新驱动 探讨中国烟草行业的数字化转型之路(PDF报告).rar

    在面对全球经济的快速变化和数字化浪潮的冲击下,中国烟草行业亦步亦趋地探索着自身的数字化转型之路。这份名为【精品】开拓市场 创新驱动 探讨中国烟草行业的数字化转型之路(PDF报告).rar的报告,便是一份深入...

    关于编码常见的20个陷阱 你中枪了没?

     不管你现在的编程技能有多么的高超,曾经你也是个亦步亦趋,不断的学习的初学者。在编程这条曲折的道路上,我想你肯定犯过一些低级的错误、遇见过一些普通的编码陷阱。本文作者跨越多个语言,为大家总结了20条...

    23种GoF设计模式Java版.pdf

    如果技术人员有发展的轨迹,那么他要么“看透工具的本质,把关注点转移到‘团队’的圈子里去”,要么“顺着代码铺就的道路,亦步亦趋地成为良匠大师”。仅以技术方向而言,你大概可以做到架构师、总架构师甚至首席...

    C语言调用mysql快速教程(精华篇).doc

    最快速的c语言调用mysql的教程,亦步亦趋,可以在最短时间链接mysql与c语言的关系,其中内容包括怎么样用c语言插入,更新,删除mysql的数据表,并且在范例中有select出mysql的数据并且打印显示出来!!非常简明易懂...

    Access入门教程

    简单的Access入门教程,适合零基础人员学习,浅显易懂,亦步亦趋,不错的教程

    j2ee订票系统

    明确要实现何种功能,清楚设计的方法有哪几种,是否满足用户要求等多个方面进行预设计,其次对于自己是否已经掌握某方面技术要有一个全面的认识,不懂的就需要进一步学习,做得到亦步亦趋,最后,在对产品有一个全新...

    geekwalk:用Java写个简易版Nginx

    这是一个我用业余时间,慢慢打磨的项目,几乎所有的编程工作都会以B站 / 的形式共享出来,所以你会看到一个程序员亦步亦趋编写代码的全过程,故而命名为Geekwalk 反向代理服务器,在实际项目中主要扮演网关——...

    复变函数札记

    尽管两书所涉及领域完全不同,但却有着完全一致的目标,即希望在数学和工程之间架设一座可以自如跨越的桥梁。对于数学重点在于领会思想,理解概念;而对于工程则在于建好模型,善于应用。复数理论从跟着实数亦步亦趋...

    主流敏捷开发方法:Scrum基础知识解释

    用球赛来类比确实是一个形象又合适的比喻,在赛场上尽管队员们努力按照既定计划推进,但是场上瞬息万变,不可能实时按照教练或者队长的指令亦步亦趋的去行事,只能靠平时训练中形成的素养见机行事,达成目标。...

    液晶面板行业战略转型

    2011 年8 月31 日,索尼、东芝和日立三家公司宣布...本面板企业此次整合对于一直尾随在外资其后,亦步亦趋的中国面板商而言,无疑带来很 大冲击。要提高在面板市场的实力,大陆面板企业应通过战略联盟,确保技术能力

Global site tag (gtag.js) - Google Analytics