2. Linux 基础 | 青训营笔记

144 阅读9分钟

学习Linux 的价值

  • Linux是现代化应用程序交付的首选平台,无论是部署在裸机、虚拟化还是容器化环境
  • 公司内部服务(TCE、FaaS、SCM)统一使用Debian Linux系统
  • 熟悉Linux基础指令,熟练运维前端常用服务 (Nginx,Node.js)
  • 加深对操作系统概念和实现的理解,夯实基础知识

为什么选择企鹅为Logo呢?

  • 企鹅是南极洲的标志性动物,根据国际公约,南极洲为全人类共同所有不属于当今世界上的任何国家。Linux 选择企鹅图案作标志,其含意也表明:
  • 开源的 Linux,为全人类共同所有,任何公司无权将其私有。

01 计算机硬件

计算机五大基本单元

  • 控制器:协调和指挥计算机中其他部件进行工作
  • 运算器:进行算术和逻辑运算
  • 存储器单元:分为内存和外存(内盘、光驱)
  • 输入单元:键鼠
  • 输出单元:显示器、音箱

控制器和运算器共同组成CPU单元

五大基本单元关系图: image.png 用户可以通过输入设备向操作系统输入一些指令,操作系统通过调用运算器、控制器、存储器三者,进行相互配合,从输出设备呈现给用户。

02 计算机操作系统

操作系统 Operating System,OS :管理和控制计算机系统中的硬件和软件资源,用于在用户与系统硬件之间传递信息

  • 承上:在操作系统之上,运行一些应用程序
  • 启下:通过操作系统,直接与系统硬件进行交互

操作系统的两大功能

  1. 管理计算机资源--处理器管理;存储器管理;设备管理;文件管理
  2. 提供用户接口--命令接口;图形用户接口;程序接口

用户可以通过这些接口直接与操作系统进行通信,从而对其相关资源进行一些操作和管理

常用的操作系统

image.png

程序启动必须有操作系统来执行,那操作系统本身也是一个程序,那是如何在开机时被执行的呢?

image.png

  • 操作系统的启动流程分为两类,一类是基于BIOS引导操作系统启动,一类是使用UEFI引导启动过程(目前主流)。二者都是固化在主板上的一段程序,供计算机在开机时执行和解析。
  • 之后会进行一系列的初始化动作,找到操作系统的引导程序Bootloader并运行,它会加载并运行OS操作系统程序,并将控制权转移到操作系统内核中,启动操作系统的运行。

UEFI(Unified Extensible Firmware Interface,统一可扩展固件接口)是BIOS(Basic Input/Output System,基本输入输出系统)的优化和升级版本,是一种新型的计算机固件,提供比BIOS更多的功能和扩展性。

两者区别在于:

  • BIOS自检过程会导致开机速度变慢,而UEFI优化了这一过程,加载速度和系统启动速度都得到提升
  • BIOS默认与MB/MB2等磁盘分区进行配合,导致无法驱动2.2T容量以上的磁盘,而UEFI会配合GPT这种磁盘分区,引导其可以驱动2.2T容量以上的磁盘

UEFI的特点:

  1. 将不支持X86实模式,只支持64位操作系统
  2. 编码99%都是由C语言完成,一改之前的中断、硬件端口操作的方法,而采用了Driver/protocol的新方式 
  3. UEFI采用模块化设计:在逻辑上可分为硬件控制和OS软件管理两部分:操作系统—可扩展固件接口—固件—硬件。
  4. UEFI模式下的系统会有两个很小的分区,一个叫ESP(EFI系统分区),另一个MSR(微软保留分区,通常为128MB),MSR是窗口要求的分区。
  5. ESP对UEFI启动模式很重要,UEFI的引导程序是后缀名为.efi的文件存放在ESP分区中的,ESP分区采用fat32文件系统。
  6. 优点:纠错特性,兼容性,鼠标操作,可扩展性,图形界面

为什么UEFI兼容性好

  1. 与BIOS不同的是,UEFI体系的驱动并不是由直接运行在CPU上的代码组成的,而是用EFI Byte Code(EFI字节码) 编写而成的。
  2. Java是以“Byte Code”形式存在的,正是这种没有一步到位的中间性机制,使Java可以在多种平台上运行。UEFI也借鉴了类似的做法。EFI Byte Code是一组用于UEFI驱动的虚拟机器指令,必须在UEFI驱动运行环境下被解释运行,由此保证了充分的向下兼容性。

03 Linux系统概览

Linux发展简史-诞生和初期发展

  1. 1969年,Unix诞生于贝尔实验室
  2. 1984年,贝尔实验室将Unix商业化
  3. 1984年,Tanenbaum开发Minix操作系统用于教学并开放源码
  4. 1984年,Richard M.Stallman发起自由软件(FSF)与GNU项目,起草GPL(通用公共许可)协议
  5. 1991年,Linus Torvalds受Minix影响实现初版的Linux内核
  6. 1992年,Liux内核以GPL协议发行V1.0

扩展资料

  1. 1991年~1994年:诞生和初期发展

1991年,Linus Torvalds在芬兰大学创建了Linux项目,最初只是一个小型的自由软件内核项目。Linus的目标是开发一个类Unix的操作系统,能在普通的PC上运行。最初的Linux内核只有几千行代码,但随着时间的推移,越来越多的程序员加入了开发队伍,使得Linux内核逐渐变得庞大和复杂。

  1. 1995年~2005年:商业化和扩张期

在这个时期,Linux发展迅速,开始获得商业公司的广泛认可。1995年,Red Hat公司成立,开始提供基于Linux的商业服务和支持,从而打响了Linux商业化的先声。其他的公司如SUSE和Debian也相继成立,并开始提供商业化的Linux发行版。同时,Linux社区也迅速扩张,越来越多的开发者加入其中,贡献代码和支持。

  1. 2005年~至今:成熟期和广泛应用

随着时间的推移,Linux内核逐渐成熟,并被广泛应用于服务器、嵌入式系统、移动设备和个人电脑等领域。目前,Linux已经成为世界上最流行的操作系统之一,应用领域涉及云计算、人工智能、物联网、区块链等多个领域。此外,Linux社区也继续发展壮大,新的发行版、工具和技术层出不穷,使得Linux在未来的发展中仍然具有广泛的应用前景。

Linux版本

  • 内核版本:由linux作者本人维护,作为操作系统的核心,提供了包括进程管理、内存管理、文件系统管理、硬件资源管理等一系列底层能力
  • 发行版本:常规意义上经常使用的操作系统,如ubuntu、Gentoo、debian等 image.png 常见的系统

image.png

查看Linux系统内核版本

#方法1
uname -a
//显示系统的所有信息,包括内核版本号、操作系统发行版、主机名、处理器类型和架构等等
uname -r
//只显示当前Linux系统的内核版本号
​
#方法2
cat /proc/version
//用于显示当前 Linux 系统内核的版本号、编译者和编译日期。该命令读取 /proc/version 文件的内容并将其输出到终端上。
//该命令可以提供有关 Linux 内核的基本信息,包括内核版本、内核编译器和内核构建日期等。此外,它还提供了有关操作系统的其他信息,例如 GNU 工具链的版本和 CPU 架构信息。

cat /etc/os-release
//查看当前Linux系统的发行版本

image.png

Linux系统应用领域

  • IT服务器(操作系统、虚拟化和云计算)

  • 嵌入式和智能设备:手机

  • 个人办公桌面

  • 学术研究与软件研发

04 Linux系统结构

Linux四个主要部分

  • 内核:Linux操作系统的核心,它管理计算机硬件的资源,负责管理系统的进程、内存、设备驱动程序、文件系统和网络系统等,决定着系统的性能和稳定性。Linux内核主要由以下几部分组成:内存管理、进程管理、设备驱动程序、文件系统、网络管理等。

  • shell:用户与Linux内核之间的接口,是一个命令解释器,作为系统的用户界面,提供了用户与内核进行交互操作的接口。在Shell中,它接收用户输入的命令并将它送到内核去执行。shell编程语言具有普通编程语言的很多特点,用这种编程语言编写的shell程序与其它应用程序具有同样的效果。

  • 文件系统:Linux操作系统中用于管理文件和目录的机制,是用户与操作系统之间进行文件交互的接口。Linux支持多种文件系统,如ext4、NTFS、FAT32等。它们管理着磁盘上的文件和目录,并提供文件读写、权限控制等基本功能

    Linux文件类型

    • 普通文件:分为纯文本文件和二进制文件,如C语言代码、shell脚本、二进制可执行文件等;

    • 目录文件:目录是存储文件的唯一地方;

    • 链接文件:指向同一个文件或目录的文件;

    • 设备文件:与系统外设相关的,一般在目录/dev下面。设备分为块设备和字符设备;

    • 管道文件:提供进程间通信的一种方式;

    • 套接字文件:与网络通信相关的文件;

      可以通过命令ls -lfilestat等命令来查看文件的类型相关信息。

    Linux目录

image.png

  • 应用程序:运行在Linux操作系统上的各种软件,如文本编辑器、浏览器、视频播放器、编译器等。Linux操作系统拥有众多的应用程序,涵盖了各种领域,可以满足不同用户的需求

Linux体系结构

主要分为内核空间和用户空间

05 Linux系统软件包管理器

一个文件可以具有的权限有:可读、可写、可执行权限

  r  可读权限---read

    对文件:具有显示文件内容的权限

    对目录:具有浏览目录的权限,可以查看目录内容,但是无法进入目录

  w  可写权限---write

    对文件:具有编辑和删除文件的权限

    对目录:具有删除和移动目录的权限

  x  可执行权限---excute

    对文件:具有执行文件的权限

    对目录:具有进入目录的权限