这篇文章上次修改于 288 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
Linux 简介
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
我感觉挺厉害,上大学写内核,我自己做不到这些,不过我们有机会好好学习Linux系统
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
我觉得Linux系统和Windows系统区别,就是免费使用,还有高可用,比Windows系统占用比较少,性能上发挥肯定Linux比较强,通常服务器使用 LAMP(Linux + Apache + MySQL + PHP)或 LNMP(Linux + Nginx+ MySQL + PHP)组合,我自己使用就是LNMP
Linux 的发行版
Linux的发行版就是将Linux内核与应用软件做一个打包
目前市面上较知名的发行版有:Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等
我大学教的Linux系统是CentOS发行版,虽然说现在CentOS已经停止更新,推出了CentOS Stream项目,我还是更喜欢CentOS系统,当然我以后可能会用Ubuntu或者Debian系统。
大家可以看到Linux发行版本有好多,不过大体上可以分两类:
- 企业Linux发行版,你也可以理解为商用版本,需要用户付费订阅官方的服务支持,官方给你更新,付费多了技术支持服务
- 社区Linux发行版,你也可以理解为开放源代码的社区版本,有开源社区来维护
这里Fedora是Centos的上游,也是红帽企业 Linux 的上游社区发行版,Fedora => RedHat => CentOS,红帽是该项目的主要赞助商,这个Fedora是一个许多新技术的测试平台,Fedora是上游,很多新功能和新特性会加入到Fedora中,等稳定后再加入RHEL,然后基于RHEL再构建出CentOS,关于Centos Stream讨论,我推荐大家去看看如何看待滚动发行版 CentOS Stream?
Linux 系统启动
Linux系统的启动,我一开始不知道,主要是老师只说怎么安装,从来没有说过这个启动原理,我想先从最简单的开始,对于这个知识点,自己以前一直不了解,以CentOS 7为例,我们启动时我们会看到许多启动信息, 但是搞不懂是什么意思,只能看着安装进度条过去,其实Linux系统的启动过程分5个阶段:
- 内核的引导(Linux内核,也是Linux系统的底层)
- 运行init(init就是一个进程,内核会通过启动一个用户级程序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。
在以前Centos5、Centos6中,Linux系统的启动,采用init进程来进行管理,但是从centos7开始,放弃了采用init进程,从而使用systemd来代替init进程,主要是启动时间长,init进程是串行启动,只有前一个进程启动完成,才会启动下一个进程;init进程只执行启动脚本,不管其它事情,脚本需要处理各种情况,从而使得脚本变得很长。
这样看init,确实效率太低,而Centos7采用systmed 是一个用户空间的程序,属于应用程序,不属于 Linux 内核范畴。Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是克服System V init固有的缺点,提高系统的启动速度,关于systmed的介绍,大家可以看这个人写Systemd 简介。
内核引导
当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动,操作系统接管硬件以后,首先读入 /boot 目录下的内核文件。
运行init
init 进程是系统所有进程的开关,如果没有这个进程,系统中任何进程都不会启动,所以init 程序首先是需要读取配置文件 /etc/inittab。
运行级别
许多程序需要开机启动,在Windows系统叫做"服务"(service),在Linux就叫做"守护进程"(daemon)
Windows系统可以通过任务管理器查看服务
Linux系统可以通过执行指令# pstree 查看各种服务
init进程的主要任务,就是去运行这些开机启动的程序。
Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。也就是说,启动时根据"运行级别",确定要运行哪些程序。
Linux系统有7个运行级别(runlevel):
- 运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
- 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
- 运行级别2:多用户状态(没有NFS)
- 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
- 运行级别4:系统未使用,保留
- 运行级别5:X11控制台,登录后进入图形GUI模式
- 运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
(1)单用户工作状态:
- 这个和Windows系统里面安全模式比较像,都是只启动基本的服务程序,其他多余的服务都不启动,主要是用来进行系统修复。
- Linux真正的安全模式是以光盘启动的方式,这个只是启动最基本的程序,服务程序还是从系统的硬盘当中启动,有一些功能它还是做不到,还是修复不了。但是你用光盘启动安全模式的话,是从光盘盘启动系统,然后跟硬盘里面那个系统是没有任何关系,理论上任何错误都可以修复。
(2)多用户状态:
- 这个缺少NFS服务,NFS是用于实现Unix(Linux)主机之间的文件系统共享服务
- NFS网络文件系统比较像windows系统的网络共享,主要功能是通过网络使不同的主机系统间可以共享文件或目录
(3)完全的多用户状态
- 这个就是我们平时使用Liunx系统的命令模式,纯字符界面
- 这个也是我们上课会经常用到命令模式,这个是有NFS,方便我们文件系统共享服务
系统初始化
我没有写完了,今天复习到这里,最近心情不太好,所以去散散心,人终会被其年少不可得之物困扰一生
没有评论