Linux 开篇:从操作系统本质到虚拟机环境搭建

本文是 Linux 系列的第一篇。我们从"操作系统是什么"讲起,梳理 Linux 的来龙去脉,然后一步步搭建 CentOS 7 虚拟机环境。重点是把网络原理说透,每一步配置都有原因。


一、为什么先聊操作系统?

1.1 计算机世界的三层结构

把一台电脑拆开来看,可以分为三层:

┌──────────────────────────────────┐
│       应用软件(微信、QQ、浏览器)   │  ← 你每天直接用的
├──────────────────────────────────┤
│       操作系统(Windows / Linux)  │  ← 中间人,管上管下
├──────────────────────────────────┤
│   硬件(CPU、内存、磁盘、网卡)      │  ← 看得见摸得着的物理设备
└──────────────────────────────────┘
  • 硬件是物理设备,但它们自己不会"协作",CPU 不知道什么时候该读磁盘,磁盘不知道数据该送到哪里。
  • 应用软件需要用到硬件资源(比如微信要调用摄像头),但如果让每个 App 都自己去操控硬件,一台电脑上跑几十个 App,抢资源、打架、崩溃是必然的。
  • 操作系统就是中间那个管理者:它把硬件资源抽象成统一的接口,应用程序通过操作系统来使用硬件。

所以操作系统本质上是一个资源管理器 + 服务提供者

1.2 操作系统的正式定义

**操作系统(Operating System,简称 OS)**是管理和控制计算机硬件与软件资源的系统软件,是直接运行在"裸机"上的最基础软件即系统软件,任何其他软件都必须在操作系统的支持下才能运行。

两个关键词:

  • 系统软件:它本身是软件,但不是"应用",而是为应用提供运行环境的底层软件。
  • 直接运行在裸机上:OS 之下没有别的软件了,它直接面对硬件。

1.3 常见操作系统分类

类别 代表 特点
桌面/移动端 Windows、macOS、Android、iOS 图形化,面向普通用户
服务器端 Linux(CentOS、Ubuntu)、Windows Server 稳定、高并发,通常命令行操作
嵌入式 嵌入式 Linux、FreeRTOS 裁剪过的,跑在路由器、车载设备、智能网关里

这里我们关注的 Linux,正是服务器端和嵌入式领域的事实标准


二、Linux 从哪来?

2.1 先有 Unix

20 世纪 60 年代末,贝尔实验室的 Ken ThompsonDennis Ritchie 开发了 Unix 操作系统。Unix 设计精巧,很快就流行起来,尤其是在高校和科研机构。

最初 Unix 的源码是开放的,学术界可以自由使用和研究。但后来 AT&T 收紧了版权,Unix 变成商业授权软件,不再开源免费。

2.2 Linus 和 Linux 的诞生

1991 年,芬兰赫尔辛基大学的学生 Linus Torvalds 因为 Unix 的封闭和高昂授权费,决定自己写一个类 Unix 的操作系统内核。他在 comp.os.minix 新闻组发了这样一段后来载入史册的帖子:

“I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu)…”

他把这个项目命名为 Linux,并采用 GPL(通用公共许可证) 开源(任何人都可以自由使用、修改和分发)

Linux 不是抄袭 Unix:Linus 模仿了 Unix 的设计理念和接口规范(POSIX 标准),但没有复制一行 Unix 的源码。所以 Linux 被称为 类 Unix(Unix-like) 系统,它在功能和交互体验上与 Unix 高度相似,但代码是全新的。

💡 冷知识:Linus Torvalds 也是 Git(分布式版本控制系统)的创始人。没错,就是那个程序员每天用的 Git,他为了管理 Linux 内核的协作开发,顺手写了 Git。GitHub 则是后来基于 Git 搭建的代码托管平台,是另一拨人做的。

Linux 的官方标志是一只憨态可掬的企鹅,名叫 Tux。选择企鹅作为 Logo 的寓意是:开源软件就像企鹅一样,属于全人类共同所有

2.3 Linux 内核 vs Linux 发行版

概念 是什么 比喻
Linux 内核(Kernel) 操作系统的核心,管理 CPU、内存、进程、驱动等 汽车的发动机
Linux 发行版(Distribution) 内核 + 各种常用软件(Shell、图形界面、包管理器等)打包在一起 整车

如今全球有数百种 Linux 发行版,它们用的都是同一颗 Linux 内核(可能版本不同),区别在于预装了什么软件、用什么包管理器、面向什么场景。

发行版 家族 特点 典型场景
CentOS Red Hat 系 稳定、免费(RHEL 的社区版)、yum 包管理 服务器(企业首选)
Ubuntu Debian 系 用户友好、社区活跃、apt 包管理 个人学习、开发、桌面
Debian Debian 系 极致稳定、软件版本偏保守 对稳定性要求极高的服务器
Rocky Linux Red Hat 系 CentOS 停更后的继任者 服务器替代 CentOS

本文以及后续教程基于 CentOS 7,它是国内服务器市场使用最广泛的 Linux 发行版之一。


三、为什么需要虚拟机?

学到这里,你可能会想:CentOS 听起来不错,但我电脑上是 Windows,怎么装?
这就是虚拟机登场的地方。你需要在 Windows 上跑 Linux,有三种选择:

  1. 双系统:把硬盘分区,装一个 Windows + 一个 CentOS,切换要重启——麻烦,而且搞不好 Windows 引导就坏了。
  2. 云服务器:花钱买,而且摸不到"系统安装和配置"这个学习环节。
  3. 虚拟机:在你的 Windows 上用软件"模拟"出一台假电脑,CentOS 就装在这台假电脑里。对 CentOS 来说它以为自己跑在真实硬件上,其实是被虚拟机"骗"了。

VMware 这样的虚拟机软件,可以用软件模拟出一整套硬件(CPU、内存、网卡、磁盘),然后在这套虚拟硬件上安装操作系统 CentOS。

这样一来,你的 Windows 还正常用,CentOS 在另一个窗口里跑,互不影响。而且虚拟机可以随时快照、回滚、克隆。


四、虚拟机网络原理

前面讲的是"为什么用虚拟机",接下来要讲的是搭建环境时最容易卡住的问题:网络到底怎么配

先记住一个核心思路:主机(Windows)和虚拟机(CentOS)是两台独立的"机器",它们之间要通信,就必须有网卡、有网线、有交换机——只不过这些都是软件虚拟出来的。

4.1 虚拟网卡

VMware 安装完成后,你的 Windows 上会多出两块虚拟网卡(在控制面板 → 网络和共享中心 → 更改适配器设置 中可以看到):

  • VMware Virtual Ethernet Adapter for VMnet1
  • VMware Virtual Ethernet Adapter for VMnet8

如果装完 VMware 发现没有这两张网卡,说明安装出了问题,需要重装修复。
这两块虚拟网卡就是 Windows 主机通往虚拟机的"门"。 主机通过 VMnet8 这张卡,才能和连接在 VMnet8 交换机上的虚拟机通信。没有门,数据包就进不去也出不来。

在这里插入图片描述

对应操作:安装 VMware 后,去 Windows 网络适配器里看一眼,确认有 VMnet1 和 VMnet8 两张虚拟网卡。

4.2 虚拟交换机

VMware 内部自带虚拟交换机。它的工作原理和真实的物理交换机一模一样:连接同一网段的设备,让它们互通。

VMware 提供了三种虚拟网络模式,对应不同的使用场景:

模式 虚拟网卡 特点 适用场景
桥接模式(Bridged) VMnet0 虚拟机直接连物理路由器,和主机平级,占用真实局域网 IP 需要局域网内其他设备访问虚拟机时
NAT 模式 VMnet8 虚拟机通过主机"代理上网",主机是虚拟机的网关 学习首选,最灵活
仅主机模式 VMnet1 虚拟机和主机组成一个彻底隔离的小局域网,虚拟机无法访问外网 内部实验、安全测试

对于学习来说,NAT 模式是最佳选择:虚拟机可以通过主机访问外网(下载软件、更新系统),主机也能访问虚拟机(SSH 连接),而且虚拟机的 IP 不占用真实局域网的地址。

4.3 NAT 模式详解

NAT 模式的通信链路如下:

┌─────────────────────────────────────────────────────────┐
│                    Windows 主机                          │
│                                                         │
│  ┌──────────┐     ┌──────────────┐     ┌─────────────┐ │
│  │ 物理网卡  │ ←→  │   VMnet8    │ ←→  │ VMnet8      │ │
│  │(连外网)   │     │  虚拟网卡    │     │ 虚拟交换机   │ │
│  └──────────┘     └──────────────┘     └──────┬──────┘ │
│                                               │        │
└───────────────────────────────────────────────┼────────┘
                                                │
                              ┌─────────────────┼─────────┐
                              │     虚拟机内部    │         │
                              │  ┌──────────┐    │         │
                              │  │  ens33   │ ←──┘         │
                              │  │ 虚拟网卡  │              │
                              │  └──────────┘              │
                              │    CentOS 虚拟机            │
                              └────────────────────────────┘

在这里插入图片描述

数据怎么走的? 以上网为例,虚拟机里的 CentOS 访问百度:

第 1 步:CentOS 上的浏览器发起请求 baidu.com。数据包从虚拟机的 ens33 网卡发出,目标地址是百度的服务器 IP。

第 2 步:CentOS 查自己的路由表:“目标地址不在我这个局域网里,交给网关”。网关就是 VMnet8 虚拟网卡的 IP(例如 192.168.88.2)。数据包发往 VMnet8 虚拟交换机。

第 3 步:VMnet8 虚拟交换机把数据包转发给连接在同一个交换机上的 VMnet8 虚拟网卡(也就是主机的"门")。主机的 NAT 模块拿到这个包,做一个关键动作,地址转换:把数据包的"源 IP 地址"从 虚拟机内网 IP替换成主机物理网卡的公网/局域网 IP。

第 4 步:替换后的数据包经由主机的物理网卡发出,经过你家路由器,最终到达百度服务器。百度看到的请求来源是你主机的 IP,它完全不知道有台虚拟机在背后。

第 5 步:百度返回数据 → 主机物理网卡收到 → NAT 模块反向转换(目标 IP 从主机 IP 变回虚拟机 IP )→ 通过 VMnet8 网卡 → VMnet8 交换机 → 虚拟机 ens33

关键理解:在 NAT 模式下,虚拟机的 IP 是主机"代理"出去的。对外网来说,所有请求看起来像是主机自己发的。这也是为什么叫 NAT(Network Address Translation,网络地址转换)。

4.4 虚拟机的 IP 谁来分配?DHCP vs 手动静态 IP

理解了 NAT 数据通路之后,自然有一个问题:虚拟机的 IP 地址哪来的?

NAT 模式下,VMnet8 虚拟交换机上内置了一个 DHCP 服务。DHCP(动态主机配置协议)的作用很简单:局域网里有新设备接进来,DHCP 自动给它发一个 IP 地址,同时告诉它网关是多少、DNS 是多少。设备关机或离开后,这个 IP 回收,下次可以分给别人。DHCP 的好处是零配置:你什么都不用管,插上网线就能上网。家里 Wi-Fi 就是典型的 DHCP。

但学习场景下,DHCP 有一个致命缺点:每次重启虚拟机,IP 可能不一样。今天是 192.168.88.128,明天变成 192.168.88.129:那 FinalShell 存的连接信息就废了,每次都得去查新 IP。

所以我们要手动配静态 IP:给虚拟机固定一个地址,比如 192.168.88.100,永远不变。这条原则不仅适用于虚拟机,以后学习工作中,任何"需要被别的设备通过 IP 找到"的服务器(Web 服务器、数据库服务器、打印机等),都应该配静态 IP。

一句话总结:DHCP 适合"会动的、数量多的"设备(手机、笔记本);静态 IP 适合"不能变的、需要被找到的"设备(服务器、虚拟机)。


五、CentOS 7 安装与网络配置实操

前面原理讲完了,现在我们来做具体配置。每一步后面都标注了对应的原理

5.1 准备工作

  • 从 VMware 官网下载 Workstation Pro 或 Player 版本(Player 免费),一路"下一步"即可安装。

安装完成后,检查 Windows 网络适配器中是否出现了 VMnet1VMnet8 两张虚拟网卡。没有的话需要重装 VMware。

  • 从 CentOS 官网或国内镜像站(阿里云镜像、清华镜像)下载 CentOS 7 的 ISO 文件。

5.2 新建虚拟机

打开 VMware → 新建虚拟机 → 选择"典型" → 按照向导完成创建。创建后根据需要调整内存和CPU 配置等。需要选择和配置刚下载的 CentOS 7 ISO 。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

5.3 第一步:虚拟机内部设置静态 IP

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
改为静态 IP(不再是 dhcp),和 VMnet8 同网段。DNS1=8.8.8.8 为 DNS 服务器(谷歌);DNS2=114.114.114.114 为 DNS 备用(国内)

手动配 IP 是为了让虚拟机地址固定。网关填 VMnet8 的网关 IP,所有出网流量都经由主机的 NAT 模块转发。

5.4 第二步:配置 VMware 虚拟网络编辑器

打开 VMware → 编辑 → 虚拟网络编辑器 → 选择 VMnet8
在这里插入图片描述

需要注意的是点击 NAT 设置 可以看到网关 IP(通常是子网 IP 的 .2 地址)。这个网关 IP 和之前配置虚拟机静态 IP 时网关一致。
DHCP 设置看需求,如果手动配静态 IP,可以在这里关闭 DHCP,或者记下它的地址池范围,设置静态 IP 时避开这些地址,否则可能 IP 冲突。

5.5 第三步:配置 Windows 上的 VMnet8 虚拟网卡

打开 Windows 控制面板 → 网络和共享中心 → 更改适配器设置 → 找到 VMware Virtual Ethernet Adapter for VMnet8→ 右键 → 属性 → Internet 协议版本 4(TCP/IPv4)→ 设置为:
在这里插入图片描述

IP 地址和和 VMnet8 子网同一网段即可。VMnet8 虚拟网卡就是主机进入虚拟机所在局域网的"门牌号"。配置好了主机才能和 VMnet8 交换机上的虚拟机通信。


六、远程连接:SSH 协议和 FinalShell

6.1 为什么不用虚拟机自带的终端?

可以,但体验很差:

  • 鼠标在虚拟机和主机之间切来切去
  • 不能复制粘贴(或者很不方便)
  • 字体小、不能多窗口、不能传文件

所以实际工作中都是虚拟机在后台跑着,用 SSH 客户端从主机连上去操作。

6.2 SSH 是什么?

SSH(Secure Shell)是一种加密的网络协议,用于在不安全的网络中安全地远程登录和操作另一台计算机。它把你在本地终端敲的每一条命令加密后传输到远程服务器,远程服务器执行完把结果加密后传回来。

Linux 上跑的 SSH 服务通常叫 sshd(SSH Daemon),默认监听 22 端口。

SSH 协议底层采用 RSA 非对称加密:有一对密钥(公钥和私钥),公钥加密的数据只有私钥能解开,反之亦然。也就是说公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
在这里插入图片描述

6.3 FinalShell:连接虚拟机的利器

FinalShell 是一款国产的 SSH 客户端,比传统的 Xshell/Putty 更好上手,功能也齐全:多标签页、文件传输、系统监控、命令历史、一键保存连接信息等。

连接步骤很简单:

  1. 打开 FinalShell → 新建 SSH 连接
  2. 主机填虚拟机的 IP
  3. 端口默认 22
  4. 用户名填 root(或你创建的其他用户)
  5. 密码填 CentOS 安装时设置的那个
  6. 点连接

连上之后,操作的就是虚拟机里的 CentOS 系统了,和直接在虚拟机终端里操作完全一样,但体验好太多。


以上为个人学习总结,旨在梳理个人理解。如有疏漏或不当之处,欢迎指正与交流。如果文章对你有帮助,别忘了点个赞、留个言,让更多的小伙伴看到~ 我们下篇再见!

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐