大家好,这是鄙人第一次写blog,如有不当之处,还请斧正,万分感谢!
最近正在学习Linux,对于其相关内容做了一部分整理、归纳,特此进行分享。
Linux系统启动过程
Linux系统的启动过程大致可分为五个部分:内核加载、运行init、初始化系统、用户登入、进入login shell。
一、内核加载
Linux系统开机时,BIOS(Basic Input Output System)首先会进行开机自检,待到操作系统接管硬件之后,会读入/boot目录下的内核文件。
二、运行init
init进程是Linux内核启动的第一个用户级进程,它的进程编号(pid)为1,是Linux系统最基本的程序之一,init程序首先需要读取配置文件/etc/inittab。
Linux系统的七个运行级别(runlevel)
在linux开机过程中,许多程序需要启动,称为“守护进程”(daemon)。Linux有7个运行级别(0:关机、停机;1:单用户模式;2:多用户模式;3:完整的多用户模式;4:系统未使用、保留;5:图形化模式;6:重启模式)。
具体内容如下:
- 运行级别0:系统停机状态,系统默认运行级别不能为0,否则不能正常启动。
- 运行级别1:单用户工作状态,root权限,用于系统的维护、阻止远程登录等,如同Windows的安全模式登录。
- 运行级别2:多用户状态(没有NFS)。
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式。
- 运行级别4:系统未使用,保留一般不使用。
- 运行级别5:X11控制台,登录后进入图形GUI模式或者GNOME、KDE图形化界面。
- 运行级别6:系统正常关闭并重启,系统默认运行级别不能为6,否则不能正常启动。
三、系统初始化
在Linux系统中,/etc/rc.d/rc(0~6).d/目录下的文件都是一些连接文件,真正的启动脚本存放在/etc/rc.d/init.d/目录下,rc启动脚本以K和S打头,字母S表示Start,以start为运行参数,即启动脚本;字母K表示Kill,以stop为运行参数,指明需要停止的程序。
#ls /
#cd /etc/rc.d
#ls rc(0~6).d
#ls init.d
示例如下(以rc2.d为例):
之后,init会打开6个终端,以便用户登录,其中用户输入的信息作为参数传给login来验证。
四、用户登入
一般的,用户登录方式有三种:
(1)命令行登录:init进程将调用getty程序,核对用户信息。
(2)ssh登录:系统调用sshd程序,取代getty和login。
(3)图形界面登录:init进程调用gdm显示管理器,核对用户信息。
五、进入login shell
Linux预设提供了六个命令窗口终端机让我们来进行登录:tty1~6;
shell即命令行界面,取得bash时要完整的登录流程,称为login shell。
Linux系统启动示意图如下:
Linux关机、重启指令
halt //关机,用于root用户,只关闭系统,而电源还在运行
halt -p //关闭系统和电源
poweroff //关机,用于root用户,向acpi发送关闭电源的信号
reboot //重启,用于root用户
init //init 0为关机,init 6为重启,用于root用户
systemctl //systemctl (halt/poweroff/reboot) (-i),效果同上,普通用户需要加-i,root用户不用
sync //将内存中的数据保存到硬盘中
shutdown指令是最常用到的关机重启指令,因此单独拿出来讲。
//基本格式:shutdown [类型] [时间] [警告信息]
shutdown //关机指令,默认一分钟后关机
shutdown -h now //立即关机
shutdown -h 20:20 //最近的20:20关机
shutdown -h +10 //十分钟后关机
shutdown -r now //立即重启
shutdown -r 20:20 //最近的20:20重启
shutdown -r +10 //十分钟后重启
shutdown -k +10 "This system will shutdown after 10 minutes" //系统在十分钟后不关机,但会发送警告信息给用户
shutdown -c //取消上述的关机重启操作
为防止在关机或重启时,部分内存数据未保存同步到硬盘当中,从而导致数据的丢失,在关机或重启系统前,应当先执行sync指令,将数据保存到硬盘中。
今日分享到此结束!谢谢大家!