linux启动流程详解、破解root密码、添加服务脚本

1.Linux的组成

kernel+rootfs

kernel:进程管理、内存管理、网络管理、安全管理、文件系统管理、驱动程序

rootfs:程序和glibc

库:函数集合,function,调用接口(头文件负责描述)

过程调用:procedure  ,无返回值

结果调用:function

程序:二进制文件

2.内核设计流派

单内核(monolithic kernel):Linux

把所有功能集成于同一个程序

微内核(micro kernel):Windows, Solaris

每种功能使用一个单独子系统实现

3.内核特点及组成

支持模块化:.ko(内核对象)

支持内核模块的装载和卸载

4.内核的组成

核心部件:  /boot/vmlinuz-VERSION-release

伪文件系统:ramdisk

centos5:/boot/initrd-VERSION-release.img

centos6,7:/boot/initramfs-VERSION-release.img

模块文件:/lib/modules/VERSION-release

5.centos6启动流程

(1)主动读取BIOS,通过CMOS加载硬件信息 ,并进行POST,指定第一个可启动的设备

ROM:BIOS,Basic Input and Output System,保存着计算机系统最重要的基本输入输出程序,系统信息设置,开机加电自检程序

RAM:保存各项参数的设定

(2)读取第一个可启动设备MBR的引导加载程序(grub)的启动信息

<1>MBR:  446 boot loader  64:分区表  2 :55aa

BIOS通过硬件的INT13中断功能来读取MBR的

<2>Windows:ntloader  仅是启动OS

Linux:   提供菜单;  转交系统控制权;  直接指向内核文件

LILO:LInuxLOader

GRUB: GRandUnified Bootloader

primary boot loader:1st stage,1.5stage

secondary boot loader:2 stage,分区文件

bootloader的1stage是在MBR内进行的,1.5stage是再0面0磁道0扇区的后续扇区,2stage是在/boot分区上边

1stage是 寻找/boot分区的文件系统驱动

1.5stage内就是/boot分区文件系统驱动,识别/boot分区

2stage是/boot分区相关操作

/boot/grub下的stage类文件(除了stage2)都是备份

<3>ramdisk:使用缓存或缓冲来加速对磁盘上文件的访问

centos5:initrd  工具程序:mkinitrd

centos6:initramfs   工具程序:mkinitrd,dracut\

自己创建initramfs文件

mkinitrd [-v] [-with=模块名称] initrd文件名 内核版本

-v 显示mkinitrd的过程

--with=[模块名称]:模块名称指的是模块的名字,不需填写文件名

如果在救援模式下,需要切根,因为救援模式下好多库文件不存在

<4>解压缩内核到内存中,

加载可识别的所有硬件设备(以自己的功能重新检查一次硬件,不一定适用BIOS的检测结果)

加载硬件驱动

以只读方式挂载根系统

运行用户空间的第一个程序:/sbin/init

<5>内核内容

(3)内核执行init程序,获取默认运行信息

<1>init程序类型:

SysV: init, CentOS 5之前

配置文件:/etc/inittab

Upstart: init,CentOS6

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

Systemd:systemd, CentOS 7

配置文件:/usr/lib/systemd/system

/etc/systemd/system

<2>运行级别

0  halt(系统直接关机)

1 单用户模式下,用在系统出问题时的维护

2 类似下面的runlevel 3,但无NFS服务

3 纯文本模式

4  系统保留功能

5 字符界面

6 重新启动

切换等级:init #

查看等级: runlevel who -r

<3>/etc/inittab文件相关知识

每一行定义一种action以及与之对应的process

id : runlevel : action : process

id:代表init的主要工作选项,只是简单代表说明

runlevel:在那些等级下运行

action:  initdefault:代表默认的runlevel设置值

sysinit:代表系统初始化的操作选项

ctrlaltdel:代表ctrl+alt+del三个按键是否可以重新启动

wait:代表后面设置的命令项目必须要执行完毕才能继续下面的其他操作

respawn:代表后边字段的命令可以无限制的重新启动

process:可以进行的命令

例如:

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

id:3:initdefault:

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

l0:0:wait:/etc/rc.d/rc0

l1:1:wait:/etc/rc.d/rc1

1:2345:respawn:/sbin/mingetty tty

x:5:resawn:/etc/prefdm -nodaemon  x window 则是这行决定的

<4>/etc/init/*.conf

(4)init程序执行/etc/rc.d/rc.sysinit文件

取得网络环境与主机类型:/etc/sysconfig/network

设置显示与启动过程中的欢迎界面(textbanner)

检查根文件系统,并以读写方式重新挂载根文件系统

挂载/etc/fstab文件中定义的文件系统

设置系统时间:读入/etc/sysconfig/clock设置值  修改时区的话,把/user/share/zoneinfo/Asia  /Shanghai复制到/etc/local下

激活udev和selinux

激活swap设备

初始化软件磁盘阵列、初始化lvm文件系统、、磁盘配额

加载内核相关设置:/etc/sysctl.conf

用户自定义模块加载:/etc/sysconfig/modules.conf设置

清除启动过程中产生的临时文件

将启动相关信息加载到/var/log/dmesg中

(5)启动核心的外挂模块/etc/modeprobe.conf文件

(6)init执行各个批处理文件

<1>各个运行级别脚本所在目录:

/etc/rc.d/rc 0.d

/etc/rc.d/rc 1.d

/etc/rc.d/rc 2.d

/etc/rc.d/rc 3.d

/etc/rc.d/rc 4.d

/etc/rc.d/rc 5.d

/etc/rc.d/rc 6.d

<2>脚本文件运行规则:

进入到某个运行级别的脚本目录/etc/rc.d/rc?.d

k*:  k##*: ##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务

s*:  S##*:##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

s开头的文件,运行

k开头的文件,关闭

<3>chkconfig命令详解

查看服务所在级别的启动或关闭情形

chkconfig [--list] name

添加服务给chkconfig管理

SysV的的服务脚本放置于/etc/init.d

chkconfig --add name

服务脚本格式信息

#!/bin/bash

#LLLL 表示初始在哪个级别下运行  “-”表示都不启动

# LLLL mm nn  mm表示启动次序  nn表示古币次序

删除

chkconfig --del name

修改制定的链接类型

chkconfig [--level levels] name <off|on|reset>

--level LLLL:省略是表示2345

图形化界面ntsysv

(7)init执行/etc/rc.d/rc.local

正常情况下,最后启动一个服务S99local没有链接至/etc/init.d下的脚本,而是指向了/etc/rc.d/rc.local脚本

不便或不需写为服务脚本放置于/etc/rc.d/init.d/目录,且又想开机时自动运行的命令,可直接放置于/etc/rc.d/rc.local文件中

(8)执行/bin/login程序,等待用户登录

1:2345:respawn:/usr/sbin/mingettytty1

2:2345:respawn:/usr/sbin/mingettytty2

...

6:2345:respawn:/usr/sbin/mingettytty6

mingetty会自动调用login程序

x:5:respawn:/etc/X11/prefdm -nodaemon

(9)登录后以shell控制主机

BIOS加载硬件信息--》post加电自检--》加载MBR里grub信息--》stage1.5--》stage2--》initramfs--》    rootfs-->init-->/etc/inittab-->设置默认运行级别-->初始化/etc/rc.d/rc.sysinit-->/etc/rc.d/rc#.d-->/etc/rc.local

7.使用gzip -d 解压缩gz格式文件,此文件必须是.gz后缀,要不无法解压缩

8.破解centos5的root口令

(1)进入centos5 的grub界面,按a修改内核选项

(2)在命令行尾部追加1 或 S 或single,然后按enter键保存修改

(3)进入如下命令行模式,用passwd root  修改密码

(4)重新启动,用刚才修改的密码登录系统

9.编写centos5服务脚本

(1)在/root/bin写编写脚本testsrv,内容如下

(2)在/root/bin和/etc/init.d目录下分别执行chkconfig --add testsrv发现无法成功加载testsrv服务

把脚本复制到/etc/init.d下,执行上述命令,发现可以实现

(3)

在/etc/rc.d/rc3.d下查看testsrv文件时什么字母开头的

发现此命令在level 3启动等级下,是需要开启的服务,与设定一致

时间: 2024-10-08 09:29:53

linux启动流程详解、破解root密码、添加服务脚本的相关文章

Linux启动流程详解【转载】

在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件. 我们查看一下,/boot 目录下面大概是这样一些文件: 第二步.启动初始化进程 内核文件加载以后,就开始运行第一个程序 /sbin/init,它的作用是初始化系统环境. 由于init是第一个运行的程序,它的进程编号(pid)就是1.其他所有进程都

linux启动流程详解

一.为什么要研究linux系统启动: 或 许有人会说,等它开机就好了,为什么还要研究它开机流程呢,其实如果服务器运行很好又没有人为的误操作等,或许不用研究,但是为了能在系统出问题后第一时 间的修复它,又或者你忘记了root密码等情况时就非常有必要研究一下linux的开机流程了,因为只有知道了它是如何运作的,才能让它更好的服务与人 类,废话不多说,正文开始 二.系统启动流程: 不同的版本的linux系统开机可能不同,但是总的来说,大同小异,下面就以centos6.8的系统为例,介绍linux的开机

linux系统启动过程详解及root密码找回

系统启动流程 BIOS---->MBR:Boot Code---->执行引导程序GRUB(操作系统引导程序)---->加载内核---->执行init--->runlevel 其实不同的系统启动时,启动程序是大同小异的 1.BIOS Basic input output system我们称之为基本输入输出系统,一般保存在主板上的BIOS芯片中. 计算机启动的时候第一个运行的就是BIOS,BIOS负责检查硬件并查找可启动设备 可启动设备在BIOS设置中进行定义,如USB.CDRO

linux中断流程详解

异常体系比较复杂,但是linux已经准备了很多的函数和框架,但是因为中断是和具体的开发板相关,所以中断需要我们自己来处理一些方面,但是这也是很少的一部分,很多公用的处理函数内核已经实现,linux内核搭建了一个非常容易扩充的中断处理体系. 中 断系统结构涉及的方面很多,而且分布在很多的函数中,这里我主要理清一些结构和流程顺序已经在哪些函数中实现,我不知道其他人怎么样?但是我自己一开始怎 是找不到linux内核是怎么把GPIO设置成中断的,我找了很久都找不到,还有我们很多的设置,初始化等等东西好像

linux开机流程详解

Linux操作系统的开机流程详解 开机需要十步 第一步:开机自检(BIOS)就是开始工作之前先对自己的工具进行检查是否正常,如果正常那就可以进行接下来的步骤假如步正常就得检测哪里的问题进行处理.BIOS其实就是主板上的一给自检程序,开机先对主板上自带的和外接的一些开机必备的设备进行检测,像CPU,显卡,内存,硬盘等设备的自检过程就是自检 第二步:MBR引导,也就是根据装有linux系统的硬盘上的主引导区的记录进行引导,主引导记录处在硬盘上的第一给物理分区上,硬盘能够读取到数据也就是靠的这个最主要

redhat 5开机启动流程详解

(1)POST(Power On Self Test) 加电自检 电脑主机打开电源的时候随后会听到滴的一声响系统启动开始了开机自检POST. 自检开始这个过程中主要是检测计算机硬件设备比如CPU内存主板显卡等设备是否有故障存在.如果有硬件故障的话将按两种情况理对于严重故障(致命性故障)则停机此时由于各种初始化操作还没完成不能给出任何提示或信号对于非严重故障则给出提示或声音报警信号等待用户处理如果没有故障POST完成自己的接力任务将尾部工作交接给BIOS处理. (2)BIOS(bootloader

转-Linux启动过程详解(inittab、rc.sysinit、rcX.d、rc.local)

http://blog.chinaunix.net/space.php?uid=10167808&do=blog&id=26042 1)BIOS自检2)启动Grub/Lilo3)加载内核4)执行init进程5)通过/etc/inittab文件进行初始化6)登陆Linux 1)BIOS自检   a)POST(Power On Self Test),对硬件进行检测   计算机在通电后首先由BIOS进行自检,即所谓的POST(Power On Self Test),对硬件进行检测   依据BIO

Linux 开机流程详解

对于任何系统, 开机不仅仅是接通电源这么简单的事情, 在这短短的几秒或几十秒内将会发生许多事情, 了解这个完整的流程将是解决任何开机问题或提高开机速度的前提. 接下来, 我们就详细了解一下Linux的开机流程: 1. 加载 BIOS 的硬件信息并进行自我测试,并依据取得第一个可开机的装置; 2. 读取并执行第一个开机装置内 MBR 的 Boot Loader (如 grub, spfdisk 等程序); 3. 依据 Boot Loader 的设定加载 kernel, kernel 会开始侦测硬件

CentOS系列启动流程详解

一.Linux启动内核文件 1.Linux系统组成 动态视角:内核+根文件系统 静态视角:磁盘分区+相关文件 2.Kernel特点 (1)支持某块化:.ko (kernel object)文件 (2)支持模块运行时动态装载或卸载: 总结:Linux kernel在但内核设计模型上,吸取了多内核设计的优点,使用了模块化设计 单内核设计:把所有功能集成于同一个程序:如Linux 微内核设计:每种功能使用一个单独的子系统实现:如Windows, Solaris 2.kernel组成 (1)核心文件 1