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/systemd/system﹜ /etc/systemd/system﹝

内核引导

当计算机打开电源后ㄛ首先是BIOS开机自检ㄛ按照BIOS中设置的启动设备ㄗ通常是硬盘ㄘ来启动﹝

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

bg2013081702

运行init

init 进程是系统所有进程的起点ㄛ你可以把它比拟成系统所有进程的?#29486;?#23447;ㄛ没有这个进程ㄛ系统中任何进程都不会启动﹝

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

bg2013081703

运行级别

许多程序需要开机启动﹝它们在Windows叫做"服务"ㄗserviceㄘㄛ在Linux就叫做"守护进程"ㄗdaemonㄘ﹝

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

但是ㄛ不同的场合需要启动不同的程序ㄛ比如用作服务器时ㄛ需要启动Apacheㄛ用作桌面就不需要﹝

Linux允许为不同的场合ㄛ分配不同的开机启动程序ㄛ这就叫做"运行级别"ㄗrunlevelㄘ﹝也就是说ㄛ启动时根据"运行级别"ㄛ确定要运行哪些程序﹝

bg2013081704

Linux系统有7个运行级别(runlevel)ㄩ

  • 运行级别0ㄩ系统停机状态ㄛ系统默认运行级别不能设为0ㄛ否则不能正常启动
  • 运行级别1ㄩ单用户工作状态ㄛroot权限ㄛ用于系统维护ㄛ禁止远程登陆
  • 运行级别2ㄩ多用户状态(没有NFS)
  • 运行级别3ㄩ完全的多用户状态(有NFS)ㄛ登陆后进入控制台命令行模式
  • 运行级别4ㄩ系统未使用ㄛ保留
  • 运行级别5ㄩX11控制台ㄛ登陆后进入图形GUI模式
  • 运行级别6ㄩ系统正常关闭并重启ㄛ默认运行级别不能设为6ㄛ否则不能正常启动

系统初始化

在init的配置文件中有这么一行ㄩ si::sysinit:/etc/rc.d/rc.sysinit﹛它调用执行了/etc/rc.d/rc.sysinitㄛ而rc.sysinit是一个bash shell的脚本ㄛ它主要是完成一些系统初始化的工作ㄛrc.sysinit是每一个运行级别?#23478;?#39318;先运行的重要脚本﹝

它主要完成的工作有ㄩ激活交换分区ㄛ检查磁盘ㄛ加载硬件模块以及其它一些需要优先执行任务﹝

l5:5:wait:/etc/rc.d/rc 5

这一行表示以5为?#38382;?#36816;行/etc/rc.d/rcㄛ/etc/rc.d/rc是一个Shell脚本ㄛ它接受5作为?#38382;?#21435;执行/etc/rc.d/rc5.d/目录下的所有的rc启动脚本ㄛ/etc/rc.d/rc5.d/目录中的这些启动脚本?#23548;?#19978;都是一些连接文件ㄛ而不是真正的rc启动脚本ㄛ真正的rc启动脚本?#23548;?#19978;都是放在/etc/rc.d/init.d/目录下﹝

而这些rc启动脚本有着类似的用法ㄛ它们?#35805;?#33021;接受start﹜stop﹜restart﹜status等?#38382;?/p>

/etc/rc.d/rc5.d/中的rc启动脚本通常是K或S开头的连接文件ㄛ?#26434;?#20197; S 开头的启动脚本ㄛ将以start?#38382;?#26469;运行﹝

而如果发?#25191;?#22312;相应的脚本也存在K打头的连接ㄛ而且已经处于运行态了(以/var/lock/subsys/下的文件作为标志)ㄛ则将首先以stop为?#38382;?#20572;止这些已经启动了的守护进程ㄛ然后再重新运行﹝

这样做是为了保证是当init改变运行级别时ㄛ所有相关的守护进程都将重启﹝

至于在每个运行级中将运行哪些守护进程ㄛ用户可以通过chkconfig或setup中的"System Services"来自行设定﹝

bg2013081705

建立终端

rc执行完毕后ㄛ返回init﹝这时基本系统环境已经设置好了ㄛ各种守护进程也已经启动了﹝

init接下来会打开6个终端ㄛ以便用户登录系统﹝在inittab中的以下6行就是定义了6个终端ㄩ

1:2345:respawn:/sbin/mingetty tty12:2345:respawn:/sbin/mingetty tty23:2345:respawn:/sbin/mingetty tty34:2345:respawn:/sbin/mingetty tty45:2345:respawn:/sbin/mingetty tty56:2345:respawn:/sbin/mingetty tty6

从上面可以看出在2﹜3﹜4﹜5的运行级别中都将以respawn方式运行mingetty程序ㄛmingetty程序能打开终端﹜设置模式﹝

同时它会?#20801;?#19968;个文本登录界面ㄛ这个界面就是我们经常看到的登录界面ㄛ在这个登录界面中会提示用户输入用户名ㄛ而用户输入的用户将作为?#38382;?#20256;给login程序来验证用户的身份﹝


用户登录系统

?#35805;?#26469;说ㄛ用户的登录方式有三种ㄩ

  • ㄗ1ㄘ命令行登录
  • ㄗ2ㄘssh登录
  • ㄗ3ㄘ图形界面登录
bg2013081706

?#26434;?#36816;行级别为5的图形方式用户来说ㄛ他们的登录是通过一个图形化的登录界面﹝登录成功后可以直接进入 KDE﹜Gnome 等窗口管理器﹝

而本文主要讲的还是文本方式登录的情况ㄩ当我们看到mingetty的登录界面时ㄛ我们就可以输入用户名和密码来登录系统了﹝

Linux 的账号验证程序是 loginㄛlogin 会接收 mingetty 传来的用户名作为用户名?#38382;?/p>

然后 login 会?#26434;?#25143;名进行分析ㄩ如果用户名不是 rootㄛ且存在 /etc/nologin 文件ㄛlogin 将输出 nologin 文件的内容ㄛ然后退出﹝

这通常用来系统维护时防止非root用户登录﹝只有/etc/securetty中登记了的终端才允许 root 用户登录ㄛ如果不存在这个文件ㄛ则 root 用户可以在任何终端?#31995;?#24405;﹝

/etc/usertty文件用于?#26434;?#25143;作出附加访问限制ㄛ如果不存在这个文件ㄛ则没有其他限制﹝


图?#25991;接?#25991;字模式的切换方式

Linux预设提供了六个命令窗口终端机让我们来登录﹝

默认我们登录的就是第一个窗口ㄛ也就是tty1ㄛ这个六个窗口分别为tty1,tty2 # tty6ㄛ你可以按下Ctrl + Alt + F1 ~ F6 来切换它们﹝

如果你安装了图形界面ㄛ默认情况下是进入图形界面的ㄛ此时你就可以按Ctrl + Alt + F1 ~ F6来进入其中一个命令窗口界面﹝

当你进入命令窗口界面后再返回图形界面只要按下Ctrl + Alt + F7 就回来了﹝

如果你用的vmware 虚拟机ㄛ命令窗口切换的快捷键为 Alt + Space + F1~F6. 如果你在图形界面下请按Alt + Shift + Ctrl + F1~F6 切换至命令窗口﹝

bg2013081707

Linux 关机

在linux领域内大多用在服务器上ㄛ很少遇到关机的操作﹝毕竟服务器上跑一个服务是永无止境的ㄛ除非特殊情况下ㄛ不得已才会关机﹝

正确的关机流程为ㄩsync > shutdown > reboot > halt

关机指令为ㄩshutdown ㄛ你可以man shutdown 来看一下帮助文档﹝

例如你可以运行如下命令关机ㄩ

sync 将数据由内存同步到硬盘中﹝shutdown 关机指令ㄛ你可以man shutdown 来看一下帮助文档﹝例如你可以运行如下命令关机ㄩshutdown h 10 This server will shutdown after 10 mins 这个命令告诉大家ㄛ计算机将在10分钟后关机ㄛ并且会?#20801;?#22312;登陆用户的当前屏幕中﹝Shutdown h now 立马关机Shutdown h 20:25 系统会在今天20:25关机Shutdown h +10 十分钟后关机Shutdown r now 系统立马重启Shutdown r +10 系统十分钟后重启reboot 就是重启ㄛ等同于 shutdown r nowhalt 关闭系统ㄛ等同于shutdown h now  poweroff

最后总结一下ㄛ不管是重启系统还是关闭系统ㄛ首先要运行 sync 命令ㄛ把内存中的数据写到磁盘中﹝

关机的命令有 shutdown 每h now halt poweroff 和 init 0 , 重启系统的命令有 shutdown 每r now reboot init 6


一个人需要隐藏多少秘密才能巧妙地度过一生. --仓央?#26410;?/p>

3A微商
扫描二维码ㄛ关注3A微商



鲜花

?#24080;?/a>

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

相关阅读

本文作者2018-8-26 17:41
小程
粉丝2 阅读219 回复0
上一篇ㄩ
Linux 安装发布时间ㄩ2018-08-26
下一篇ㄩ
Linux 忘记密码解决方法发布时间ㄩ2018-08-26

精彩阅读

推荐视频

排行榜

专访

 
 
在线客服
3A微商ㄩ
3A微商
源码交流ㄩ
源码交流
工作时间ㄩ
8:00-18:00
客服微信扫一扫
用心服务创业者
183-173-71987
周一至周五 9:00-18:00
意见反馈ㄩ[email protected]

扫一扫关注我们

Powered by 3A微商 © 2017-2028 Comsenz Inc.( 豫ICP备16026490号-2 )

4笱さ籤⑩楷⑩撮扲芞賤