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 内核(可能版本不同),区别在于预装了什么软件、用什么包管理器、面向什么场景。

发行版家族特点典型场景
CentOSRed Hat 系稳定、免费(RHEL 的社区版)、yum 包管理服务器(企业首选)
UbuntuDebian 系用户友好、社区活跃、apt 包管理个人学习、开发、桌面
DebianDebian 系极致稳定、软件版本偏保守对稳定性要求极高的服务器
Rocky LinuxRed 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 等多样性计算架构

更多推荐