Linux Part1 -- 从Linux的前世今生到启动流程


今天聊一聊Linux。Linux这个系统大家一定都听说过,在我们这一行不可避免的和Linux打交道,保守估计Linux操作系统在服务器市场占了8成以上的份额,甚至微软也在大规模用Linux「手动狗头」。

Linux的优势

Linux受欢迎的原因众说纷纭,在我的观念里,Linux受欢迎的原因和MySQL受欢迎的原因基本一致:免费、稳定、开源、安全。

首先是免费,毕竟没有人能拒绝白嫖的快乐。

其次是稳定,作为服务器的操作系统,稳定是特别重要的,因为服务器很多时候几年甚至几十年都都不关机,这也是为什么没人用windows10这种用久了就会慢慢变卡的PC操作系统做服务器的操作系统的原因。

其次是开源,开源意味着代码公开,这就可以在一些特殊场景对Linux进行定制化开发以求获得更好的性能,比如centos和ubuntu 就是两种不同的发行版。

最后是安全:得益于数以万计的开发者,每次Linux发现漏洞都可以得到快速的响应,漏洞很快就会被修补。

Linux的前世

接下来聊个轻松的话题,Linux是怎么来的。

众所周知Linux的爸爸是Unix,而Unix的来历就比较奇幻,当时有一个巨佬叫Thompson,我们暂时称之为T哥,T哥有一个太空旅行的小游戏,但是没法在当时的操作系统上运行,他需要一个更高性能的操作系统,于是他在老婆孩子回娘家的一个月内在家撸出了一个操作系统,这个操作系统就是Unix的原型。从这里我们可以很明显的看出游戏和没有老婆孩子才是第一生产力「狗头保命」。

T哥当时在宇宙第一实验室贝尔实验室工作,因为他这个操作系统写得太好了,所以在贝尔实验室中广泛流传,但是因为当初T哥是用汇编写的,可移植性太差了,每次换个电脑都要重新编写。于是他和他的同事Ritchie想用一个高级语言来重写,可是当初没有合适的语言,所以R哥创造了C语言,然后两个人快快乐乐把T哥的操作系统重写了,然后命名为Unix。

再后来AT&T(贝尔实验室母公司)把Unix闭源了,这下子大家都看不到源码了,于是有一个芬兰小伙Linus在网上发帖寻找小伙伴一起写个开源系统,他用了2个多月写了一个操作系统并发布了,这个操作系统就叫Linux。后来越来越多的人参加他的项目一起开发Linux,Linux也就越来越火了,一直发展到今天仍然欣欣向荣。

一台计算机的启动流程

在说启动流程之前,我们不得不聊一下一台计算机都是由哪些硬件构成的。

首先第一个硬件叫〔主板〕,负责承载其他所有的硬件。

第二个硬件叫〔CPU〕,相当于计算机的大脑,负责处理和调度。

第三个是〔内存〕,这个不必多说。

第四个是〔外存〕,也就是硬盘,主要用于存储数据。

最后就是显卡、声卡、网卡、IO口等其他硬件,这里我们简单了解即可,不多赘述。

说回启动流程,首先从我们摁下电源的时候,电流会通到主板上,这个过程我们称之为〔上电〕。上电后主板会运行制造商为其定做的系统〔BIOS(Basic Input Output System)〕,BIOS会对主板上的所有进行基本的检测,如果所有的硬件检测都通过了,那么BIOS会读取硬盘的第0柱面、第0磁道、第一个扇区,也就是硬盘的最起始位置,这里存储着一个叫〔MBR(Master Boot Record)-主引导记录的东西〕,一个扇区的大小是512字节,所以MBR也是512字节,接下来我们就来介绍一下MBR。

MBR一共由两部份组成:第一部份有446字节,存放的是引导程序,引导程序就像一个导游一样,告诉计算机操作系统的“Main”函数在哪里。第二部分占据64字节,是系统的〔DPT(Disk Partition Table)-硬盘分区表〕,这里主要记录了硬盘的分区信息,比如C盘、D盘的信息。最后一部份是两个字节,是MBR的结束标志。

硬盘第一扇面结构

上文我们说了MBR会运行主引导程序来启动操作系统,不过在现实中操作系统的引导程序远远大于446字节,所以一般MBR存储的是真正的引导程序的地址。

现在我们开机的步骤已经来到了操作系统的引导程序,引导程序一般会根据配置文件来加载内核镜像。在我使用的CentOS7(Linux的一个发行版)中,当内核镜像被加载后会读取/etc/systemd/system/default.target这个配置文件中的内容,并根据这个文件的内容加载一些服务。

不过其实这里并不是最开始启动的位置,我们打开/lib/systemd/system这个文件夹,然后查看所有以.target结尾的文件,如下:

启动级别截图

我们可以看到runlevel开头的文件,我们再查看这些文件:

启动级别对应链接截图

我们可以看出不同的启动级别(runlevel是启动级别的意思,不同的启动级别对应不同的启动方式,后面会讲)其实是不同文件的软链接(软链接可以理解为Windows的快捷方式)。我们以当前的启动级别3为例,查看runlevel3.target的内容如下:

启动级别3文件内容

我们发现他需要basic.target作为前置启动条件,所以我们理所当然的再查看basic.target的内容,如下图:

basic.target文件内容

我们再来到sysinit.target这个文件可以发现,这个文件没有表明需要前置启动的服务,而且我们可以从他的名字看出,这是操作系统初始化的第一个文件。如图:

sysinit.target文件内容

不过从这个文件中我们可以看到他可以local-fs.target(加载文件系统)swap.target(初始化交换区)emergency.target(紧急模式,这里需要注意的是sysinit.target与紧急模式是冲突的)之后启动,不过这三种操作其实只能算作操作系统启动的准备工作。

至此我们操作系统的启动流程就有一个大概的框架了。

操作系统的运行级别

上面我们提到了操作系统的运行级别,其实运行级别很好理解,就是操作系统的不同模式,比如Windows的安全模式和普通模式等等。下面就简单列一下CentOS7的运行级别

运行级别target中文含义
runlevel0poweroff.target关机
runlevel1rescue.target救援模式
runlevel2multi-user.target多用户模式
runlevel3multi-user.target多用户模式
runlevel4multi-user.target多用户模式
runlevel5graphical.target图形化模式
runlevel6reboot.target重启

结语

Linux作为现如今最流行的服务器系统,无论是开发亦或运维都应该要好好掌握,不止于使用,更要学习其设计思想。在程序员这个行业中,设计思想才是核心竞争力!

热爱技术、热爱生活。

以上就是本篇文章的全部内容,如果你觉得文章写得不错,求点赞,求转发。欢迎关注公众号(高压锅码农777)点击右下角联系作者,一起交流学习。

我是乐于分享的锅哥,祝你幸福,我们下期见。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高压锅码农777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值