Linux系统启动流程(1)

1.开机启动顺序:POST-->BIOS-->MBR-->Kernel-->/sbin/init

POST:开机上电自检

BIOS:主要选择以哪种介质启动

MBR:找到硬盘MBR主引导记录,加载前446个字节bootloader

Kernel:启动内核,并加载调用initrd(此文件在系统安装时,存有硬盘等硬件驱动程序)

init:打开主进程init,启动/etc/inittab,/etc/rc.d/rc.sysinit等文件

2.bootloader主引导器解释

bootloader(MBR)分为LILO: LInux LOader 和 GRUB: GRand Unified Bootloader

而GRUB:分为2个阶段Stage1: 存在MBR当中

Stage1_5: 识别文件系统

Stage2: /boot/grub/*  硬盘基础访问分区

2.1./boot/grub/grub.conf文件启动设定解释

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

timeout=5   #等待用户选择的超时时长,单位是秒

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

hiddenmenu   #隐藏菜单

password redhat  #编辑grub时明文设定grub密码

password --md5 $1$Omcgl$JY881OgTYbHRD/HHGLHzK/.  #编辑grub时的加密密码

title Red Hat Enterprise Linux Server (2.6.18-308.el5)  #操作系统名称,可自由修改

root (hd0,0)       #内核文件所在的设备;所有类型硬盘一律hd开头

kernel /vmlinuz-2.6.18-308.el5 ro root=LABEL=/ rhgb quiet #内核文件路径及内核参数

initrd /initrd-2.6.18-308.el5.img # ramdisk文件路径

password --md5 $1$Omcgl$JY881OgTYbHRD/HHGLHzK/  #启动内核时的加密密码

2.2.如果grub stage1第一阶段损坏,修复过程

方法1.当知道grub stage1损坏,但未重启系统时

grub     输入grub命令

grub> root (hd0,0) 指定硬盘上第一个分区为grub分区即boot分区

grub> setup (hd0)  指定硬盘上安装grub

方法2.: grub-install --root-directory=/或boot目录分区的父目录  指定硬盘

如:grub-install --root-directory=/  /dev/sda

2.3.如果grub stage2第二阶段损坏,重启系统后:

grub> root (hd0,0) 指定boot分区

grub> find (hd0,0)/  按tab键看是否有kernet和initrd等文件即确认/boot分区状况

grub> kernel /vmlinuz-XXX-XXX 指定kernel文件路径

grub> initrd /initrd-XXX-XXX 指定initrd文件路径

grub> boot  重启

2.4.chroot:切换根目录

格式: chroot 根路径 [命令]

chroot /tmp/root  [/bin/bash]

ldd命令:显示二进制文件所依赖的共享库

格式:ldd 二进制文件路径

chroot /bin/bash

实例:利用chroot切换根目录,至少能运行ls与cd命令

mkdir /tmp/root

mkdir /tmp/root/bin

mkdir /tmp/root/lib

cp /bin/bash /bin/ls /tmp/root/bin/

ldd /bin/bash 显示bash所依赖的库文件

ldd /bin/ls  显示ls所依赖的库文件

cp  /lib/* /tmp/root/lib/  将上面指定的库文件复制到/tmp/root/lib/下面

chroot /tmp/root/   切换根目录

pwd           查看当前目录

ls            检查ls命令是否能执行

cd /lib         切换到lib目录

总结:切换成功,ls,cd命令都OK,由于touch没有像ls等一样把文件复制过来,所有不能执行成功

3./etc/inittab系统运行级别解释

3.1. 运行级别:0-6

0:halt  关机

1: single user mode, 相当于windows安全模式 表示有1,s,S,single

2:multi user mode, 没有 NFS 功能

3: multi user mode, 文本模式&正常模式

4:reserved 保留自定义

5: multi user mode, 图形化界面

6: reboot 重启

格式:id:runlevels:action:process

id:3:initdefault:

id: 标识符

runlevels: 运行哪个级别

action: 哪种情况下运行

process: 要运行程序

si::sysinit:/etc/rc.d/rc.sysinit

initdefault: 设定默认运行级别

sysinit: 系统初始化

wait: 等待级别切换至此级别时执行

respawn: 一旦程序终止,会重新启动

3.2.查看运行级别命令:

runlevel:

who -r

3.3查看内核release号命令:

uname -r

3.4./etc/inittab的任务:

1、设定默认运行级别;

2、运行系统初始化脚本;

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

4、设定Ctrl+Alt+Del组合键的操作;

5、定义UPS电源在电源故障/恢复时执行的操作;

6、启动虚拟终端(2345级别);

7、启动图形终端(5级别);

4./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文件;

5./etc/rc.d/init.d/*服务脚本文件 及 /etc/rc.d/rc{0-6}.d/*下以S或K开头的文件解释

5.1.查看/etc/rc.d/init.d/*的文件

# chkconfig: runlevels SS KK

当chkconfig命令来为此脚本在rc{0-6}.d目录创建链接时,

runlevels表示默认创建为S*开头的链接,

-表示没有级别默认为S*开头的链接;

除此之外的级别默认创建为K*开头的链接;

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

# description: 用于说明此脚本的简单功能; \, 续行

chkconfig命令:如果省略级别指定,默认为2345级别;

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

chkconfig --list 服务名称 查看指定独立守护服务的启动设定;

chkconfig --add 服务名称  添加指定的守护进程

chkconfig --del 服务名称  删除指定的守护进程

chkconfig [--level 运行级别] 服务名称 {on|off}

5.2./etc/rc.d/rc.local:系统最后启动的一个服务或脚本

一般来说简单服务或命令脚本可追加至rc.local文件

5.3.守护进程的类型:

独立守护进程:独立运行

超级守护进程,包含一个或多个瞬时守护进程:不需要关联至运行级别

典型代表为xinetd:

6.实例:创建一个独立守护进程服务脚本mylinux,系统启动之后,mylinux运行级别仅为3和5

6.1: cd /etc/rc.d/init.d/  切换至系统脚本守护进程目录

6.2: vim mylinux 增加如下自定义脚本

#!/bin/bash

#以下红色两段必须要写,否则当添加至守护进程时,提示此脚本进程不支持chkconfig

# chconfig: 345 66 33

# description: mylinux is text service.

STATUS() {

if [ -e /var/lock/subsys/mylinux ]; then

echo "Running"

else

echo "Stop..."

fi

}

case $1 in

start)

echo "Starting"

touch /var/lock/subsys/mylinux

;;

stop)

echo "Stopping"

rm -rf /var/lock/subsys/mylinux &> /dev/null

;;

restart)

echo "Restarting"

;;

status)

STATUS

;;

*)

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

;;

esac

6.3: chkconfig --add mylinux 添加mylinu守护进程

chkconfig mylinux off  关闭mylinux守护进程所有运行级别

chkconfig --level 35 mylinux on 仅开启mylinux守护进程运行在级别3和5

chkconfig --list mylinux 查看mylinu守护进程运行级别开关情况

时间: 2024-10-14 20:17:56

Linux系统启动流程(1)的相关文章

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如:

Linux系统管理(二):Linux系统启动流程

Linux系统启动流程 从11月底报名马哥的Linux培训班,12月初真正开始学习,已经过去一个多月的时间了,从学习Linux的发展史开始.跟着学习命令行.文件系统挂载与管理.目录.Bash Shell的基本特性等等,Linux真的是博大精深,今天以CentOS 5,CentOS 6的启动过程进行一下简单的总结.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. 系统启动过程主要经过以下几个流程: POST>BootSequence(BIOS)>Bootloader(MBR)&

linux系统启动流程一览

加载BIOS的硬件信息并进行自检,然后根据设置取得第一个可启动的设备: 读取并执行第一个启动设备内MBR(master boot record,主引导分区)的boot loader: 依据bootloader的设置加载kernel,kernel开始检测硬件和加载驱动程序: 在硬件驱动成功后,kernel会调用init进程,init进程会取得run-level信息: init执行/etc/rc.d/sysinit文件来准备软件执行的操作环境: init执行run-level的各个服务: init执

【转载】Linux系统启动流程

原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbin/init) -->init(/etc/inittab:设定默认级别.系统初始化脚本.启动及关闭对应级别的服务.启动终端) 第1步 计算机电源接通后,CPU默认执行 0ffffh:0000h 处的指令(8086是这样,386应该类似),而此内存地址应该存放的就是 BIOS ROM .系统将有一个对内部

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调

linux基础-附件1 linux系统启动流程

附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BIOS允许你从软盘.光盘或者硬盘中选择一个来启动计算机.下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话).这512 bytes叫做主引导记录MBR (mast

Linux系统启动流程及grub重建(1)

日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab) 启动的服务不同:    运行级别:0-6        0:halt        1: single user mode, 直接以管理员身份切入, s,S,single        2:multi user m

Linux系统启动流程(4)制作自定义linux之一

Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一些小问题下可能无需如此庞大的linux.于是根据前几篇所讲的linux中的Centos6版本的系统启动流程,可以对其仿制一个微型的linux系统,里面只添加以下需要的工具即可. 以CentOS6为模板为例: 1.准备环境:VM的操作 这里以VM虚拟机模拟,所有直接对安装了CentOS的虚拟机添加一个

Linux系统启动流程

一直以来对于电脑的开机过程概念还停留在按下开机键,然后等待自动开启.但是对于开启的这一过程几乎一无所知,包括它如何能够通电后自己启动包括内部的一系列的过程. 目前也只是对Linux系统的启动流程有了一个浅显的认识,但它启动的过程也想以自己的理解来分享一下. 一般Linux系统的开机过程有这么几个步骤: 按下电源键 BIOS自检 系统引导 Linux内核启动 初始化系统 登录系统 其中每个过程中又可细分为很多的子过程.按下电源键这一步自不必多说,我们从BIOS自检说起. BIOS自检 BIOS自检