全球彩票平台_全球彩票注册平台|官网下载地址

热门关键词: 全球彩票平台,全球彩票注册平台,全球彩官网下载地址

【全球彩票平台】Linux开机管理流程,初次接触

CentOS 系统启动流程

CentOS 系统启动流程
POST:加电自检;
ROM:CMOS
BIOS:Basic Input and Output System

ROM RAM

BOOT Sequence:
按次序查找各引导设备,第一个有引导程序的设备即为本次启动用到设备;

bootloader: 引导加载器,程序
windows: ntloader
Linux:
LILO:LInux LOader
GRUB: GRand Uniform Bootloader
GRUB 0.X: GRUB Legacy
GRUB 1.x: GRUB2

功能:提供一个菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把系统控制权移交给内核;

MBR:
446: bootloader
64: fat
2: 55AA

GRUB:
bootloader: 1st stage
disk: 2nd stage

kernel:
自身初始化:
探测可识别到的所有硬件设备;
加载硬件驱动程序;(有可能会借助于ramdisk加载驱动)
以只读方式挂载根文件系统;
运行用户空间的第一个应用程序:/sbin/init

init程序的类型:
SysV: init, CentOS 5
配置文件:/etc/inittab

Upstart: init, CentOS 6
配置文件:/etc/inittab, /etc/init/*.conf

Systemd:systemd, CentOS 7
配置文件:/usr/lib/systemd/system, /etc/systemd/system

ramdisk:

内核中的特性之一:使用缓冲和缓存来回事对磁盘上的文件访问;

ramdisk --> ramfs

CentOS 5: initrd, 工具程序:mkinitrd
CentOS 6: initramfs, 工具程序:mkinitrd, dracut

系统初始化:
POST --> BootSequence (BIOS) --> Bootloader(MBR) --> kernel(ramdisk) --> rootfs(只读) --> init

/sbin/init

CentOS 5:

运行级别:为了系统的运行或维护等应用目的而设定;

0-6:7个级别
0:关机
1:单用户模式(root, 无须登录), single, 维护模式;
2: 多用户模式,会启动网络功能,但不会启动NFS;维护模式;
3:多用户模式,正常模式;文本界面;
4:预留级别;可同3级别;
5:多用户模式,正常模式;图形界面;
6:重启

默认级别:
3, 5

切换级别:
init #

查看级别:
runlevel
who -r

配置文件:/etc/inittab

每一行定义一种action以及与之对应的process
id:runlevel:action:process
action:
wait: 切换至此级别运行一次;
respawn:此process终止,就重新启动之;
initdefault:设定默认运行级别;process省略;
sysinit:设定系统初始化方式,此处一般为指定/etc/rc.d/rc.sysinit;
...
[[email protected] ~]# ll /etc/rc.d/
total 60
drwxr-xr-x. 2 root root 4096 Jan 29 2015 init.d
-rwxr-xr-x. 1 root root 2617 Oct 16 2014 rc
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc0.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc1.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc2.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc3.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc4.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc5.d
drwxr-xr-x. 2 root root 4096 Jan 31 2015 rc6.d
-rwxr-xr-x. 1 root root 259 Jul 31 00:53 rc.local
-rwxr-xr-x. 1 root root 19914 Oct 16 2014 rc.sysinit

id:3:initdefault:
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
...
l6:6:wait:/etc/rc.d/rc 6

说明:rc 0 --> 意味着读取/etc/rc.d/rc0.d/
K*: K##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务;
S*: S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务;

for srv in /etc/rc.d/rc0.d/K*; do
$srv stop
done

for srv in /etc/rc.d/rc0.d/S*; do
$srv start
done
[[email protected] ~]# ll /etc/rc.d/init.d/
total 356
-rwxr-xr-x. 1 root root 1288 Oct 16 2014 abrt-ccpp
-rwxr-xr-x. 1 root root 1628 Oct 16 2014 abrtd
-rwxr-xr-x. 1 root root 1642 Oct 16 2014 abrt-oops
-rwxr-xr-x. 1 root root 1725 Aug 18 2010 acpid
-rwxr-xr-x. 1 root root 2062 Jan 30 2012 atd
-rwxr-xr-x. 1 root root 3580 Oct 15 2014 auditd
-r-xr-xr-x. 1 root root 1340 Oct 15 2014 blk-availability
-rwxr-xr-x. 1 root root 710 Nov 10 2010 bluetooth
-rwxr-xr-x. 1 root root 11355 Aug 13 2013 cpuspeed
-rwxr-xr-x. 1 root root 2826 Nov 23 2013 crond
-rwxr-xr-x. 1 root root 3034 Oct 15 2014 cups
-rwxr-xr-x. 1 root root 1734 Jun 16 2014 dnsmasq
-rwxr-xr-x. 1 root root 3245 Jul 9 2013 firstboot
-rw-r--r--. 1 root root 19295 Jul 22 2014 functions
-rwxr-xr-x. 1 root root 1801 Oct 15 2014 haldaemon
-rwxr-xr-x. 1 root root 5866 Jul 22 2014 halt
-rwxr-xr-x. 1 root root 2001 Oct 16 2014 htcacheclean
-rwxr-xr-x. 1 root root 3371 Oct 16 2014 httpd
-rwxr-xr-x. 1 root root 10804 Oct 15 2014 ip6tables
-rwxr-xr-x. 1 root root 10688 Oct 15 2014 iptables
-rwxr-xr-x. 1 root root 1938 Jun 2 2014 irqbalance
-rwxr-xr-x 1 root root 9980 Dec 18 2014 jexec
-rwxr-xr-x. 1 root root 19476 Oct 15 2014 kdump
-rwxr-xr-x. 1 root root 652 Jul 22 2014 killall
-r-xr-xr-x. 1 root root 2134 Oct 15 2014 lvm2-lvmetad
-r-xr-xr-x. 1 root root 2757 Oct 15 2014 lvm2-monitor
-rwxr-xr-x. 1 root root 2571 Sep 4 2014 mdmonitor
-rwxr-xr-x. 1 root root 2200 Sep 13 2012 messagebus
-rwxr-xr-x. 1 root root 2989 Jul 22 2014 netconsole
-rwxr-xr-x. 1 root root 6064 Jul 22 2014 netfs
-rwxr-xr-x. 1 root root 6334 Jul 22 2014 network
-rwxr-xr-x. 1 root root 2205 Oct 15 2014 NetworkManager
-rwxr-xr-x. 1 root root 1923 Jul 15 2013 ntpd
-rwxr-xr-x. 1 root root 2043 Jul 15 2013 ntpdate
-rwxr-xr-x. 1 root root 2023 Apr 3 2012 portreserve
-rwxr-xr-x. 1 root root 3912 Feb 20 2014 postfix
-rwxr-xr-x. 1 root root 1556 Jul 17 2012 psacct
-rwxr-xr-x. 1 root root 2034 Mar 5 2014 quota_nld
-rwxr-xr-x. 1 root root 1513 Sep 17 2013 rdisc
-rwxr-xr-x. 1 root root 1822 Oct 15 2014 restorecond
-rwxr-xr-x. 1 root root 1808 Dec 17 2011 rngd
-rwxr-xr-x. 1 root root 2011 Aug 15 2013 rsyslog
-rwxr-xr-x. 1 root root 1698 Oct 15 2014 sandbox
-rwxr-xr-x. 1 root root 2056 Jun 23 2014 saslauthd
-rwxr-xr-x. 1 root root 647 Jul 22 2014 single
-rwxr-xr-x. 1 root root 3002 Feb 21 2013 smartd
-rwxr-xr-x. 1 root root 2162 Sep 14 2014 snmpd
-rwxr-xr-x. 1 root root 1738 Sep 14 2014 snmptrapd
-rwxr-xr-x. 1 root root 2472 Oct 15 2014 spice-vdagentd
-rwxr-xr-x. 1 root root 4621 Oct 15 2014 sshd
-rwxr-xr-x. 1 root root 1144 Oct 16 2014 sysstat
-rwxr-xr-x. 1 root root 2294 Oct 15 2014 udev-post
-rwxr-xr-x. 1 root root 39800 Jan 27 2015 vmware-tools
-rwxr-xr-x. 1 root root 15208 Jan 27 2015 vmware-tools-thinprint
-rwxr-xr-x. 1 root root 1674 Feb 21 2013 wdaemon
-rwxr-xr-x. 1 root root 1608 Oct 15 2014 winbind
-rwxr-xr-x. 1 root root 1866 Feb 4 2013 wpa_supplicant
chkconfig命令
查看服务在所有级别的启动或关闭设定情形:
chkconfig [--list] [name]
[[email protected] ~]# chkconfig --level 3 NetworkManager on
[[email protected] ~]# chkconfig --list
[[email protected] ~]# chkconfig --level 3 NetworkManager off
添加:
SysV的服务脚本放置于/etc/rc.d/init.d (/etc/init.d)

chkconfig --add name

#!/bin/bash
#
# chkconfig: LLLL nn nn
chkconfig: 2345 10 90
删除:
chkconfig --del name

修改指定的链接类型
chkconfig [--level levels] name <on|off|reset>
--level LLLL: 指定要设置的级别;省略时表示2345;

注意:正常级别下,最后启动一个服务S99local没有链接至/etc/rc.d/init.d一个服务脚本,而是指向了/etc/rc.d/rc.local脚本;因此,不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中;
[[email protected] ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jan 27 2015 /etc/rc.local -> rc.d/rc.local

tty1:2345:respawn:/usr/sbin/mingetty tty1
tty2:2345:respawn:/usr/sbin/mingetty tty2
...
tty6:2345:respawn:/usr/sbin/mingetty tty6

mingetty会调用login程序

/etc/rc.d/rc.sysinit: 系统初始化脚本
(1) 设置主机名;
(2) 设置欢迎信息;
(3) 激活udev和selinux;
(4) 挂载/etc/fstab文件中定义的文件系统;
(5) 检测根文件系统,并以读写方式重新挂载根文件系统;
(6) 设置系统时钟;
(7) 激活swap设备;
(8) 根据/etc/sysctl.conf文件设置内核参数;
(9) 激活lvm及software raid设备;
(10) 加载额外设备的驱动程序;
(11) 清理操作;

总结:/sbin/init --> (/etc/inittab) --> 设置默认运行级别 --> 运行系统初始脚本、完成系统初始化 --> 关闭对应下需要关闭的服务,启动需要启动服务 --> 设置登录终端

系统启动流程 CentOS 系统启动流程 POST:加电自检; ROM:CMOS BIOS:Basic Input and Output System ROM RAM BOOT Sequence: 按次序查找各引导设备,第...

一:linux的引导流程(首先我们先了解一下linux的开机引导流程)
 
开机自检
MBR引导(master boot record主引导记录)
GRUB菜单(如果多系统的话、用来选择用哪个系统的作用)
加载linux内核
INIT进程初始化
init进程
————是所有进程的父进程、对应的PID是1、/sbin/init是内核第一个加载的程序、不允许轻易终止、配置文件是/etc/inittab!
 
inittab配置文件
————inittab文件位于/etc目录中,init进程运行后将按照该文件中的配置依次启动系统中需要运行的脚本和程序
 
例:查看/etc/inittab文件中的有效配置行(去除注释行和空行)
 
[[email protected] ~ ]# grep -v "^#" /etc/inittab | grep -v "^$"(-v反向查)
id:3:initdefault:(得出这样的结果、3指的就是从字符界面启动)
 
得出的结果结构如下:
标记:运行级别:动作类型:程序或脚本
 
id——标记字段
runlevels——运行级别字段
action——动作类型字段
process——程序或脚本字段
 
运行级别包括七种:
 
0:关机状态
1:单用户模式,不用密码可登陆、多用于维护系统
2:字符界面的多用户模式(不支持网络)
3:字符界面的完整多用户模式
4:未分配使用
5:图形界面多用户模式
6:重启
注:使用不同运行级别代码组合、如2345表示该配置在进入级别2、3、4、5时均有效
 
例:查看当前系统的默认运行级别,并将默认级别修改为3、以便下次开机后自动进入文本模式
[[email protected] ~ ] # grep ":initdefault" /etc/inittab
id:5:initdefault:    (此刻默认级别是5将会从图形界面启动)
……
[[email protected] ~ ] # vi /etc/inittab
id:3:initdefault:  (将5改为3即可)
……
 
例:查看inittab文件中设置的按Ctrl Alt Delete所对应的操作(3秒后重启),若在该行记录前添加“#”号就可以关闭该功能
[[email protected] ~ ] # grep ":ctrlaltdel" /etc/inittab
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
 
例:确认inittab文件中使用“respawn”操作的各行配置
[[email protected] ~ ] # grep ":respawn" /etc/inittab
1:2345:respawn:/sbin/mingetty tty1
2:2345:respaws:/sbin/mingetty tty2
……
6:2345:respaws:/sbin/mingetty tty6
x:5:respawn:/etc/Xll/prefdm -nodaemon
 
rc.sysinit脚本文件
——是init进程所调用的系统初始化脚本,在/etc/rc.d/rc.sysinit、脚本主要完成包括设置网络、主机名、加载文件系统、设置时钟等
 
例:确认当前linux系统中使用的初始化脚本文件,并确认文件类型,查看开头10行的内容
[[email protected] ~ ] # grep ":sysinit" /etc/inittab
si::sysinit:/etc/rc.d/rc.sysinit
[[email protected] ~ ] # file /etc/rc.d/rc.sysinit
/etc/rc.d/rc.sysinit : Bourne-Again shell script text executable
[[email protected] ~ ] # head -10 /etc/rc.d/rc.sysinit
#!/bin/bash
#
#/etc/rc.d/rc.sysinit - run once at boot time
#
……
HOSTNAME='/bin/hostname'
HOSTTYPE='uname -m'
unamer='uname -r'
 
rc脚本文件
——同样是由init进程进行调用,位于/etc/rc.d/rc、通过制定不同级别的参数分别加载及终止不同的系统服务!
 
例:关闭cups打印服务
[[email protected] ~ ] # service cups stop  或执行/etc/rc.d/init.d/cups stop
例:重启network网络服务
[[email protected] ~ ] # service network restart  或执行/etc/rc.d/init.d/network restart
 
rc.local脚本文件
——一个额外的启动控制文件,位于/etc/rc.d/rc.local、通常最后执行、作用:管理员设定自行启动命令提供途径、需要开机自启的文件都可以放在里面
 
例:确认rc.local脚本文件的位置及各运行级别中都加载了rc.local脚本文件
[[email protected] ~ ] # ls -l /etc/rc.d/rc?.d/*local  /etc/rc.d/rc.local
 
例:在rc.local脚本中添加一条命令,以便每次启动后根据BIOS中的时钟自动校对系统时间
[[email protected] ~ ] # vi /etc/rc.d/rc.local
/sbin/hwclock --hctosys
 
运行级别控制
 
查看系统运行级别——[[email protected] ~ ] # runlevel
切换系统运行级别——init 3(切到字符界面)init 0(关机)
 
设置系统服务在不同运行级别中的状态
 
1.使用ntsysv配置工具(*号表示自动启动、没有反之)
直接用ntsysv仅用于当前运行级别、可以--level指定运行级别
 
2.chkconfig配置工具
[[email protected] ~ ] # chkconfig --list network(查看network服务在当前运行级别中的状态、如果不指定具体服务、显示所有)
[[email protected] ~ ] # chkconfig --level 35 network on或off(指定network服务在3、5运行级别中的状态on或者off)
 
进程管理
 
一:查看进程
 
1.ps——查看静态进程统计信息
 
    a:显示当前终端下的所有进程信息,包括其他用户
    u:使用以用户为主的格式输出进程信息
    x:显示当前用户在所有终端下的进程信息
    -e:显示系统内的所有进程信息
    -l:使用长格式显示进程信息
    -f:使用完整的格式显示进程信息
用法习惯:ps aux或ps -elf
 
2.top——查看进程的动态信息
   按P根据cpu排序、M内存排序、N启动时间排序、q退出
 
3.pgrep——查询进程信息
   用于查询指定进程
例:查询进程名中包含“log”的进程ID号、列出进程名
[[email protected] ~ ] # pgrep -l "log"
例:查询由用户teacher(用-U)在tty1终端上(-t)运行的进程的PID号,列出对应的进程名
[[email protected] ~ ] # pgrep -l -U teacher -t tty1
 
4.pstree——查看进程树
以树型结构显示、结合-p显示PID号、-u列出用户名、-a列出完整的命令
[[email protected] ~ ] # pstree [-aup]
例:列出由用户teacher打开的进程及子进程的树结构信息
[[email protected] ~ ] # pstree -ap teacher
 
二:控制进程
 
1.启动进程(手工启动、预定计划调度启动)
 
手工启动包括前台启动和后台启动、大多数的命令都是在前台运行的、可以使用Ctrl Z将前台进程挂起到后台、但是调入到后台之后就暂停了!
 
[[email protected] ~ ] # jobs -l(当前终端中后台进程任务)
[[email protected] ~ ] # fg 1(将PID为1的进程重新调入到前台)
 
2.终止进程(kill、killall、pkill)
 
⑴kill——需要制定进程的PID号作为参数!结合-9选项可以强制杀死进程!
⑵killall——通过指定进程名作为参数、也可结合-9强制结束进程
⑶pkill——可以根据进程名、运行该进程的用户、进程所在的终端等多种属性(-U指定用户、-t指定终端)
 

 
本文出自 “天道酬勤-常双阳” 博客

自检与引导
由于操作系统的文件系统格式不相同,所以要一个开机管理程序来处理加载
核心,这个核心称为 BOOT Loader ,它存在于第一个扇区内,也就是MBR(主
引导记录)。BIOS通过硬盘的中断INT13来读取MBR。
每种操作系统都有自己的Boot loader ,每个文件系统或分区都会保留一块启动扇区
提供操作系统安装boot loader。
多重操作系统中的boot loader功能:提供选单,载入核心档案,转交其他loader。
加载核心侦测硬件与initrd的功能
由boot loader 读取核心文件后,linux将核心解压缩到主存储器当中,利用核心的
功能测试与驱动设备。
核心文件存放在: /boot 里面 文件名为:/boot/vmlinuz-2.6.18-164.el5
linux为了方便开发商,可以透过动态加载核心模块(/lib/modules)。
为了开机时不影响文件系统,开机过程中根目录是以只读方式挂载。
当核心无法识别磁盘时,而磁盘驱动在/lib/modules内,无法挂载根目录就不能读取驱动
。这时可以利用虚拟文件系统来解决。
虚拟文件系统,文件名:/boot/initrd-2.6.18-164.el5.img ,它能通过boot loader加载到内存中
,然后被解压并在内存中仿真一个根目录,这个仿真根目录能够提供可执行的程序,通
过这个程序来加载开机过程中所要的核心模块。核心模块通过是USB,RAID,LVM,SCSI等文
件系统的驱动,完成后,重新呼叫/sbin/init继续。。。
init及/etc/inittab与runlevel
核心呼叫的第一个程序,/sbin/init(PID=1)最主要的功能准备软件执行的环境,包括系统的主机名、网络
设定、语系处理、文件系统格式及其他服务。所有的动作的都通过init的配置即/etc/inittab来规划。
runlevel规定使用不同的服务,使用不同的环境。有七个等级,分别是:
0-halt        1-single user mode        2- Multi-user,without NFS
3-Full multi-user mode        4-unused        5-X11
6-reboot
init设定处理流程:
1.取得runlevel等级如5        2.使用/etc/rc.d/rc.sysinit进行系统初化
3.根据取得5的runlevel,进行l5:5:wait:/etc/rc.d/rc 5         4.设定 ctrl alt del 组合键功能
5.设定UPS的pf,pr机制        6.启动mingetty的六个终端机
7.最终以/etc/x11/perfdm -nodaemon启动图形接口
init处理系统初始化流程/etc/rc.d/rc.sysinit
在/etc/inittab 中si::sysinit:/etc/rc.d/rc.sysinit 利用/etc/rc.d/rc.sysinit来设定好系统环境。
启动系统服务与相关启动配置文件
经过以上流程,系统顺利工作,但还要启动相关的服务。依据/etc/inittab里的runlevel设定值来
决定启动的服务项目。如用 runlevel 3
id:3:initdefault:       #runlevel 设定
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
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/rc3.d文件夹里的服务
[[email protected] grub]# cd /etc/rc3.d/
[[email protected] rc3.d]# ll
总计 4
lrwxrwxrwx 1 root root 17 12-16 21:04 K01dnsmasq -> ../init.d/dnsmasq
lrwxrwxrwx 1 root root 24 12-16 21:04 K02avahi-dnsconfd -> ../init.d/avahi-dnsconfd
lrwxrwxrwx 1 root root 24 12-16 21:04 K02NetworkManager -> ../init.d/NetworkManager
——————————以下略——————————————————————————
特点:
文件全部以Sxx或Kxx,其中xx为数字,数字在档案之间是有相关性的
全部是连续档,连结到stand alone 服务启动目录/etc/init.d去
用户自定义开机启动程序
/etc/rc.d/rc.local这个文件可以执行自己想要执行的系统指令。
根据/etc/inittab设定加载终端机或x-window接口
# Run gettys in standard runlevels
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
以上代表在runlevel 2345 时会执行六个/sbin/mingetty,所以我们有六个文字终端。
如果想在开机时只提供三个,可以修改以上内容,把tty3-5用#注释
至于如果runlevel5除了提供六个文字终端外还执行/etc/X11/prefdm -nodaemon那个指令
run level 的切换
以run level 5系统的,切换到 run level 3。系统会:
先对比/etc/rc3.d及/etc/rc5.d内的K与S开头的档案;
在新的runlevel 即/etc/rc3.d内有多的K开头档案关闭;
在新的runlevel 即/etc/rc3.d内有多的S开头档案启动。

linux启动时我们会看到许多启动信息。

当用户打开PC的电源,BIOS开机自检,按BIOS中设置的启动设备(通常是硬盘)启动,接着启动设备上安装的引导程序 lilo 或grub开始引导Linux,Linux首先进行内核的引导,接下来执行init程序,init程序调用了rc.sysinit和rc等程序,rc.sysinit和rc当完成系统初始化和运行服务的任务后,返回init;init启动了mingetty后,打开了终端供用户登录系统,用户登录成功后进入了Shell,这样就完成了从开机到登录的整个启动过程。

开机自检 MBR引导(master boot record主引导记录) GRUB菜单(如果多系统的话、...

作者“Liyy学习笔记”

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:

 全球彩票平台 1

由于操作系统的文件系统格式不相同,所以要一个开机管理程序来处理加载 核心,这个核心称为 BOOT Loader ,它存在于第一个扇...

  • 内核的引导。
  • 运行 init。
  • 系统初始化。
  • 建立终端 。
  • 用户登录系统。

下面就将逐一介绍其中几个关键的部分:

init程序的类型:

  第一部分:内核的引导(核内引导)

  • SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
  • Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
  • Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

  Red Hat9.0可以使用lilo或grub等引导程序 开始引导Linux系统,当引导程序成功完成引导任务后,Linux从它们手中接管了CPU的控制权,然后CPU就开始执行Linux的核心映象代码,开始了Linux启动过程。这里使用了几个汇编程序来引导Linux,这一步泛及到Linux源代码树中的“arch/i386/boot”下的这几个文件:bootsect.S、setup.S、video.S等。


  其中bootsect.S是生成引导扇区的汇编源码,它完成加载动作后直接跳转到setup.S的程序入口。setup.S的主要功能就是将系统参数(包括内存、磁盘等,由BIOS返回)拷贝到特别内存中,以便以后这些参数被保护模式下的代码来读取。此外,setup.S还将video.S中的代码包含进来,检测和设置显示器和显示模式。最后,setup.S将系统转换到保护模式,并跳转到 0x100000。

内核引导

  那么0x100000这个内存地址中存放的是什么代码?而这些代码又是从何而来的呢?

当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

  0x100000这个内存地址存放的是解压后的内核,因为Red Hat提供的内核包含了众多驱动 和功能而显得比较大,所以在内核编译中使用了“makebzImage”方式,从而生成压缩过的内核,在RedHat中内核常常被命名为vmlinuz,在 Linux的最初引导过程中,是通过"arch/i386/boot/compressed/"中的head.S利用misc.c中定义的 decompress_kernel()函数,将内核vmlinuz解压到0x100000的。

操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。

  当CPU跳到0x100000时,将执行"arch/i386/kernel/head.S"中的startup_32,它也是vmlinux 的入口,然后就跳转到start_kernel()中去了。start_kernel()是"init/main.c"中的定义的函数,start_kernel()中调用了一系列初始化函数,以完成kernel本身的设置。start_kernel()函数中,做了大量的工作来建立基本的Linux核心环境。如果顺利执行完start_kernel(),则基本的Linux核心环境已经建立起来了。

 全球彩票平台 2

  在start_kernel()的最后,通过调用init()函数,系统创建第一个核心线程,启动了init过程。而核心线程init()主要是来进行一些外设初始化的工作的,包括调用do_basic_setup()完成外设及其驱动程序的加载和初始化。并完成文件系统初始化和root文件系统的安装。


  当do_basic_setup()函数返回init(),init()又打开了/dev/console设备,重定向三个标准的输入输出文件 stdin、stdout和stderr到控制台,最后,搜索文件系统中的init程序(或者由init=命令行参数指定的程序),并使用 execve()系统调用加载执行init程序。到此init()函数结束,内核的引导部分也到此结束了,

运行init

 

init 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

第二部分:运行init

init 程序首先是需要读取配置文件 /etc/inittab。

  init的进程号是1,从这一点就能看出,init进程是系统所有进程的起点,Linux在完成核内引导以后,就开始运行init程序 ,。init程序需要读取配置文件/etc/inittab。inittab是一个不可执行的文本文件,它有若干行指令所组成。在Redhat系统中,inittab的内容如下所示(以“###"开始的中注释为笔者增加的):

 全球彩票平台 3

  #
  # inittab       This file describes how the INIT process should set up
  #               the system in a certain run-level.
  #
  # Author:       Miquel van Smoorenburg, <[email protected] >
  #               Modified for RHS Linux by Marc Ewing and Donnie Barnes
  #

运行级别

  # Default runlevel. The runlevels used by RHS are:
  #   0 - halt (Do NOT set initdefault to this)
  #   1 - Single user mode
  #   2 - Multiuser, without NFS (The same as 3, if you do not havenetworking)
  #   3 - Full multiuser mode
  #   4 - unused
  #   5 - X11
  #   6 - reboot (Do NOT set initdefault to this)
  #
  ###表示当前缺省运行级别为5(initdefault);
  id:5:initdefault:

许多程序需要开机启动。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

  ###启动时自动执行/etc/rc.d/rc.sysinit脚本(sysinit)
  # System initialization.
  si::sysinit:/etc/rc.d/rc.sysinit

init进程的一大任务,就是去运行这些开机启动的程序。

  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
  ###当运行级别为5时,以5为参数运行/etc/rc.d/rc脚本,init将等待其返回(wait)
  l5:5:wait:/etc/rc.d/rc 5
  l6:6:wait:/etc/rc.d/rc 6

本文由全球彩票平台发布于全球彩票平台操作系统,转载请注明出处:【全球彩票平台】Linux开机管理流程,初次接触

TAG标签: 全球彩票平台
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。