Linux启动层之深入解析 (linux 启动层)

Linux操作系统的启动从BIOS开始,经过一系列的过程,最终完成了内核的启动,进入用户态。Linux的启动过程涉及到多个层次,涉及到不同的部件、设备以及软件系统。本文将深入探讨Linux启动层之间的联系及其作用。

1. BIOS(基本输入输出系统)

BIOS作为一种固件,是计算机启动的之一个阶段。当电脑或服务器上电后,BIOS首先被启动。BIOS的作用是初始化计算机硬件,设置基本输入输出系统等重要参数。同时,BIOS还负责检查计算机的硬件,确保其正常工作。具体而言,BIOS的初始化过程包括检测计算机硬件,检查内存、扫描插入的硬件设备,设置硬盘和光驱启动顺序以及其他一些响应用户操作的设置等。因此,BIOS在整个计算机启动过程中起着至关重要的作用。

2. MBR(主引导记录)

MBR是存储在计算机硬盘的之一个扇区512字节的特殊数据结构。MBR通常包含两个部分:分区表以及主引导程序。分区表记录的是当前硬盘的分区信息。而主引导程序则是硬盘启动操作的一部分。当BIOS完成初始化程序的过程后,它将查找启动程序的主引导记录,读取MBR中的主引导程序,将控制权转移到引导程序。因此,MBR的主引导程序是启动Linux操作系统的关键。

3. GRUB(GRand Unified Bootloader)

GRUB是一个多操作系统引导程序。它可以启动各种不同的操作系统,包括Windows和Linux。Grub具有较高的可扩展性,可实现多层次的菜单式引导、支持多种文件系统和硬件配置等。在Linux中,Grub的作用是负责启动Linux内核,现代Linux发行版使用的是GRUB2版本。GRUB2支持多层级菜单式引导机制,它在内部使用文件系统来管理内核镜像和配置文件。GRUB松耦合的架构使得它可以更好的适应代码的更新和维护,同时还支持加密引导过程以增强系统安全性。

4. Linux内核

Linux内核是Linux操作系统的核心部分,负责管理计算机的硬件和软件资源,包括进程调度、内存管理、设备驱动程序等。Linux内核在运行时会读取系统配置文件,根据配置信息初始化不同的软件系统。Linux内核在系统整体启动的过程中扮演了极其重要的角色。其工作原理是尝试找到之一个文件系统,将文件系统挂载到root(/)目录并启动init进程。

5. init进程

Linux系统的init进程是启动整个Linux系统中的之一个进程,它负责进行系统初始化,并启动其他的进程。init进程会检查一些系统文件和数据,然后执行规定的操作。init进程会自动读取/etc/inittab配置文件,并根据配置文件的规则启动一组进程。如果这些进程在某种程度上停止工作,init进程将会自动重启它们。在现代Linux系统中,init进程已经被系统管理器系统(systemd)所取代。systemd不仅继承了init的功能,还提供了系统启动时的并行化、进程管理、服务管理等插件式的功能。

总体而言,Linux作为一个开源的操作系统,它的启动过程是比较开放和透明的。通过深入学习这些启动层之间的联系,可以了解Linux启动过程的构成和内部机制。对于学习Linux开发或系统管理员的用户而言,对于掌握Linux操作系统的启动流程以及各个层次发挥的作用都具有非常重要的意义。

相关问题拓展阅读:

linux开机启动引导项怎么设置

运行级就是操作系统当前正在运行的功能级别。这个级别从1到6 ,具有不同的功能。

不同的运行级定义如下

# 0 – 停机(千万不能把initdefault 设置为0 )

# 1 – 单用户模式# s init s = init 1

# 2 – 多用户,没有 NFS

# 3 – 完全多用户模式(标准的运行级)

# 4 – 没有用到

# 5 – X11 多用户图形模式(xwindow)

# 6 – 重新启动 (千万不要把initdefault 设置为6 )

这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件,更先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中,启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。(这里的n 就是运行级0-6)

chkconfig 命令有五项功能:添加服务,删除服务,列表服务,改变启动信息以及检查特定服务的启动状态。

语法为:

chkconfig –list

chkconfig –add name

chkconfig –del name

chkconfig name

chkconfig name  

chkconfig 没有参数运行时,显示用法。如果加上服务名,那么就检查这个服务是否在当前运行级启动。如果是,返回 true,否则返回false。 –level 选项可以指定要查看的运行级而不一定是当前运行级。

如果在服务名后面指定了on,off 或者 reset,那么 chkconfig 会改变指定服务的启动信息。on 和 off 分别指服务在改变运行级时的启动和停止。reset 指初始化服务信息,无论有问题的初始化脚本指定了什么。

对于 on 和 off 开关,系统默认只对运行级 3,4, 5有效,但是 reset 可以对所有运行级有效。指定 –level 选项时,可以选择特定的运行级。

需要说明的是,对于每个运行级,只能有一个启动脚本或者停止脚本。当切换运行级时,init 不会重新启动已经启动的服务,也不会再次去停止已经停止的服务。

选项介绍:

–level levels

指定运行级,由数字 0 到 7 构成的字符串,如:

–level 35 表示指定运行级3 和5。

要在运行级别3、4、5中停运 nfs 服务,使用下面的命令:chkconfig –level 345 nfs off

–add name

这个选项增加一项灶键新的服务,chkconfig 确保每个运行级有一项 启动(S) 或者 杀死(K) 入口。如有缺少,则会从缺省的init 脚本自动建立。

–del name

用来删除服务,并把相关符号连接从 /etc/rc.d 删除。

–list name

列表,如果指定了name 那么只是显示指定的服务名,否则,列出全部服务在不同运行级的状态。

运行级文件

每个被chkconfig 管理的服务需要在对应的init.d 下的脚本加上两行或者更多行的注释。

之一行告诉 chkconfig 缺省启动的运行级以及启动和停止的优先级。如果某服务缺省不在任何运行级启动,那么使用 – 代替运行级。

第二行对服务进行描述,可以橘亩用 跨行注释。

例如,random.init 包含三行:

# chkconfig:

# description: Saves and restores system entropy pool for

# higher quality random number generation.

表明 random 脚本应该在运行级 2, 3, 4, 5 启动,启动隐伍巧优先权为20,停止优先权为 80。

好了,介绍就到这里了,去看看自己目录下的/etc/rc.d/init.d 下的脚本吧。

设置自启动服务:chkconfig –level 345 nfs on

配置启动项方法

命令行模式

#service servicename status是当前状态

#chkconfig –list servicename是查看启动状态,也就是是否开机自动启动

#chkconfig –list 列出所有开机启动项#chkconfig –level 345 xx off 把不想启动的项345级别设置为off(关闭)(服务名xx)

界面模式终端中直接输入#ntsysv

Linux启动项说明

apmd--apmd用来监视系统用电状态,并将相关信息通过syslogd写入日志。也可以用来在电源不足时关机

arpwatch--用来维护以太网物理地址和ip地址的对应关系

atd--运行用户用at命令调度的任务。也在系统负荷比较低时运行批处理任务

autofs--当您需要时自动转载文件系统,而当您不需要时自动卸载

chargen--tcp版本的chargen server

chargen-udp--udp版本的chargen server

crond--周期地运行用户调度的任务。比起传统的unix版本添加了不少属性,而且更安全,配置更简单

daytime--tcp版本的daytime server

daytime-udp--udp版本的daytime server

echo--tcp版本的echo server

echo-udp--udp版本的echo server

eklogin--接受rlogin会话鉴证和用kerberos5加密的一种服务

finger--用于应答finger请求的服务

gpm--为文本模式下的linux程序提供了鼠标的支持。它也支持控制台鼠标的拷贝,粘帖操作以及弹出式菜单 (必须)

gssftp--接受可被kerberos5验证的ftp连接

httpd--http是著名的www服务器,可用来提供html文件以及cgi动态内容服务

identd--提供验证身份的方法

ipchains--ipchains包过滤防火墙

iptables--iptables包过滤防火墙

ipvsadm--调用ipvsadm来建立和维护ipvs路由选择表

isdn--启用isdn(综合服务数字网)服务

kadmin--更改在主控kdc中使用本机的kadmin工具,或透过kadmin服务来完成

kdcrotate--设置配置文件/etc/krb5.con中的kdcs表项

keytable--该程序的功能是转载您在/etc/sysconfig/keyboards里说明的键盘映射表

klogin--接受bsd方式的rlogin会话,但需要使用kerbeos5验证

kprop--是否允许kdc接收来的master kdc的升级

krb5-telnet--允许普通的telnet登陆,但也可使用kerberos5验证

krb524--是以改变kerberos5到kerberosIV的赁证

krb5kdc--开启kerberosIV和5所需的连接以获得赁证

kshell--接受rshell命令鉴证和用kerberos加密的服务

kudzu--运行硬件检测,并可选择性地设置硬件变化

lpd--lpd是系统打印守护程序,负责将lpr等程序提交给打印作业

netfs--负责装载/卸载nfs、samba、ncp文件系统

network--激活/关闭启动时的各个网络接口 (必须)

nfs--nfs是一个流行的基于tcp/ip网络的文件共享协议.该服务提供了nfs文件共享服务

nfslock--提供nfs文件上锁功能

nscd--该服务负责密码和组的查询,并且缓冲查询结果

portmap--portmap用来支持rpc连接,rpc被用于nfs以及nis等服务

postgresql--postgresql关系数据库引擎

random--保存和恢复系统的高质量随机数生成器,这些随机数是系统一些随机行为提供的

rlogin--rlogin程序服务,提供来自远程信任主机的注册功能

routed--该守护程序支持rip协议的自动ip路由表维护.rip主要使用在小型网络上,大一点的网络就需要复杂一点的协议

rsh--提供rcmd程序或者rsh程序的服务

rstatd--rstat协议允许网络上的用户获得同一网络上各机器的性能参数

rsync--对ftp服务的一个很好的附加,允许循环码求和校验等

rusersd--该服务使网络用户可以定位同一网络上的其他用户

rwalld--rwall协议允许远程用户向在同一系统中活跃着的终端发送消息,类似wall的本地行为

rwhod--允许远程用户获得运行rwho精灵的机器上所有已登录用户的列表,与finger类似

b--启动和关闭bd和nmbd精灵程序以提供b网络服务

snortd--一个轻量级的网络入侵检测工具

swat--samba网络配置工具,可以通过流览器的901端口连接使用swat

syslog--syslog是操作系统提供一种机制,守护程序通常使用这些机制将各种信息写到各个系统日志文件 (必须)

telnet--提供telnet服务,使用未加密的用户/密码组进行验证

time--tcp版本的rfc 868 time server

time-udp--udp版本的rfc 868 time server

webmin--webmin是基于web的集系统管理与网络管理于一身的强大管理工具

xfs--在引导和关闭时启动和停上x字体服务,并可能重新生成字体表 (必须)

xinetd--因特网操作服务程序。提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全,监控网络对各种它管理的服务的需求,并在要的时候启动相应的服务程序

ypbind--实现网络信息服务的服务器端

redhat 下常用服务介绍

anacron 不考虑系统downtime期间的cron服务

amd 自动安装NFS守候进程

apmd 高级电源管理

arpwatch 记录日志并构建一个在LAN接口上看到的以太网地址和IP地址对数据库

atd 用于at和batch的服务

autofs 自动安装管理进程automount,与NFS相关,依赖于NIS

crond 为Linux下自动安排的进程提供运行服务.

Gpm 提供字符模式下对鼠标的支持.

Keytable 用于装载键盘镜像

Kudzu 硬件探测器

Netfs 安装和卸载NFS、SAMBA和NETWARE网络文件系统

Network 激活已配置网络接口的脚本程序

Nfslock NFS锁定

Pcmcia 安装pcmcia卡(一般用于笔记本电脑)

Sshd OpenSSH服务器

Syslog 一个让系统引导时启动syslog和klogd系统日志守候里程的脚本

Xfs Xwindow字型服务器,为本地和远程X服务器提供字型集

Linux中常用的启动和关机方式有哪些

在Linux系统启与其它相同,打开系统电源即可可启。在Linux中关机命令有shutdown,halt,reboot,init

这几个命令的原理都不相同,详解如下:

shutdown

shutdown

命令安全地将系统关机。

有些用户会使用直接断掉电源的方式来关闭linux,这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能会导

致进程的数据丢失﹐使系统处于不稳定的状态﹐甚至在有的系统中会损坏硬件设备。

2.halt—-最简单的关机命令

  册咐毕 其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写操作完成后就会停止内核。

   参数说明:

   防止sync系统调用﹐它用在用fsck修补根分区之后﹐以阻止内核用老版本的超级块〔superblock〕覆盖修补过的超级块。

   并不是真正的重启或关机﹐只是写wtmp〔/var/log/wtmp〕纪录。

   不写wtmp纪录〔已包含在选项中〕。

   没有调用shutdown而强制关机或重启。

   关机〔或重启〕前﹐关掉所有的网络接口。

   该选项为缺省选项。就是关机时调用poweroff。

2.reboot

  reboot的工作过程差不多跟halt一样﹐不过它是引发州芹主机重启﹐而halt是关机。它的参数与halt相差不多。

3.init

 

 init是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程﹑守护进程等。shutdown

就是使用这种机制。init定义了8个运行级别(runlevel), init 0为关机﹐init

1为重启。关于简雀init可以长篇大论﹐这里就不再叙述。另外还有 telinit命令可以改变init的运行级别﹐比如﹐telinit

linux 启动层的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux 启动层,Linux启动层之深入解析,linux开机启动引导项怎么设置,Linux中常用的启动和关机方式有哪些的信息别忘了在本站进行查找喔。


数据运维技术 » Linux启动层之深入解析 (linux 启动层)