# 第一阶段：Linux 基础认知与实验环境

## 概念索引（后续章节也会涉及）

Posix

GNU

Makefile

Cmake

Bash

Shell

Powershell

BSD

Linux包括内核、系统调用、应用程序

GNU GPL V2V3

开源软件

Tty 终端设备

Pty 虚拟设备

Pts ptm

Linux 接口

终端用户 GUI/TUICLI

程序员 system call

## Linux——操作系统介绍

![](0a519fcf88d6f52f0584df04cc94bdd1a7e1488dd602bd171a23f240a56d0d59.jpg)

## 历史背景

贝尔实验室开发 Multics （multiplexed information and compuing service）系统，但失败

Ken Thompson（C 语言之父）利用汇编语言开发了 File Server System（Unics，即 UNIX 的原型）；

发明了 C 语言，而后写出了 UNIX 的内核；

Dennis Rirchie和Ken Thompson发明了C语言，而后贝尔实验室开发了他们自己的一个操作系统UNIX 。

Bill Joy 修改了 UNIX 源码称为，BSD

UNIX 最初免费发布并因此在大学里受到欢迎。后来，UNIX 实现了 TCP/IP 协议栈。

UNIX 开始变得商业化，它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX，这是一个功能有限的类似 UNIX 的操作系统。

计划开发一个比 MINIX 性能更好的操作系统，即LInux。于是开发出了Linux。

Linux 是类 Unix 系统（POSIX）

包含：

用户级接口 各种管理器

程序员级接口 系统调用

适用于多种硬件平台、分布式系统和嵌入式系统的应用

Linux的内核结构是模块结构，可以动态加载，适于嵌入式系统

Kernel.org

内核版本 双树系统（稳定树、开发树）

x.y.z y-偶数-稳定树 y-奇数-开发树

Linux不是一个完整的操作系统

负责控制硬件设备、文件系统、进程调度等

不包括应用程序如编辑器/多媒体/网络

Linux的发行版是完整的操作系统

DistroWatch.com: Put the fun back into computing. Use Linux, BSD.

如 Ubuntu

GNU（GNU’S NOT UNIX）项目：

产品：GCC、Emacs、Bash Shell、GLIBC；

倡导 自由软件 ；“ ” GNU 的软件缺乏一个开放的平台运行，只能在 UNIX 上运行；

自由软件指用户可以对软件做任何修改，甚至再发行，但是始终要挂着 GPL (GENERAL PUBLIC

LINCENSE)的版权；自由软件是可以卖的，但是不能只卖软件，而是卖服务、手册等；

GNU开发一个完全的类Unix操作系统

GNU 的内核是 Linux，GNU/Linux

自由软件 Free Sofrware

基金会FSF

自由和免费

自由软件关乎权利，≠免费软件

自由软件可以是商业化软件

为了避免 GNU 开发的自由软件被其它人用作专利软件，因此创建 GPL（general public lincense）版权声明

开源软件 Open Source Software

是一种软件开发方法

完全开放源代码、接受各种测试

Linux也是开源软件

MIT 开发了 GUI,成立了研发 Xfree86

Linux 本身只是操作系统的内核。内核是使其它程序能够运行的基础。它实现了多任务和硬件管理，用户或者系统管理员交互运行的所有程序实际上都运行在内核之上。

![](4ba8e4415c6e24e415d18508714a7954f70ddb5016e33c13e4acc25ace803787.jpg)

Unix 哲学强调构建简单、紧凑、清晰、模块化且可扩展的代码，便于开发者（非原始创建者）维护和复用。该哲学推崇可组合性，而非整体式设计。

## 虚拟机软件

虚拟机软件

Virtual Machine

通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。virtual box：是开源的轻量级虚拟机平台。完整安装包很小，功能相对也很精简。不能通过文件拖拽的方式文件共享，而是通过“映射网络驱动器”的方式与主机通过共享文件夹共享文件。

virtual PC适合做Windows虚拟机。作为微软自已的产品，在Windows平台下使用非常方便，占用内存小，启动快，联网方面。无需桥接、NAT等，直接作为同一子网的一台普通计算机使用，无需任何网络设置即可上网。

VMWare软件兼容性好，快照功能很快捷方便，适合调试极易产生蓝屏的软件和工具。可以 虚 拟 两 块 甚 至 更 多 网 卡 ， 使 用 桥 接 Bridge 或 者 NAT 方 式 访 问 网 络 。

![](f73e58b67db2b3b16663459f8f1330b3de9638cd30fe88f57765ea265078db41.jpg)

![](c4cc693edd1733f45c9c7957013d135b333ada1b5e084a985479b579076f4ff2.jpg)

![](ea4990f4ce5ddbc5bcc3e3f8b30815683e141672e48a936e6cf71d0e078cd762.jpg)

·虚拟机名称自己输入。  
·虚拟机位置一般选择在空间比较大的数据磁盘分区中，如D盘、E盘。

·安装Cent0S7的磁盘建议不小于10GB，用于学习RAID的数据盘可以设置为5GB。·虚拟磁盘拆分成多个文件适合在不支持单个文件大于4GB的文件系统中需要使用。

### 创建一台新虚拟机

新建虚拟机向导

已准备好创建虚拟机

单击完成创建虚拟机，然后开始安装CentOS764位。

将使用下列设置创建虚拟机：

名称： CentOs764bit

位置： C:\VM\CentOS71

版本 Workstation14.x

操作系统： CentOS764位

硬盘： 20GB，拆分

内存： 1024MB

网络适配器： NAT

其他设备： CD/DVD，USB控制器，打印机，声卡

自定义硬件（C）..

创建后开启此虚拟机（P）

完成

取消

·虚拟机的主要配置  
·通过自定义硬件修改配置

·内存：调整大小   
·处理器：调整数量  
·网络：调整连接模式  
·其他：不需要的可以移除

### 自定义硬件—－内存

![](8069ea3ae0b512643d7f2276a2f0d0f8ceca2e70f4006177ae96ecc8742a1945.jpg)

·虚拟机配置的内存就是实际用的内存容量  
·根据原始硬件系统配置调整   
·建议不少于2GB，1GB也可

### 自定义硬件一一处理器

![](2b779ef161074c865f8e2ed7398957de48ce9094eaf3f719362bbf9656dac5c8.jpg)

·根据硬件配置设置   
·1CPU/2内核

### 自定义硬件--网络适配器

![](11d7bede9b31bc91bcc38142f288822937f97c645c7420d08968c4674ca9235c.jpg)

·勾选启动时连接   
·网络连接选择桥接模式或者NAT模式

### 安装目标和分区设置

![](7f9b484fb10b23e2e20dad376e7d31bdad2f2073307c4b0f1575b8d731bd9739.jpg)

·有黄色和红色提示的是需要进一步设置的  
·图中所示是安装目标和分区的设置

![](5785f2c2b607682942e966e6aca69c2db4ce66d157148815f7a5f102b704472c.jpg)

·有自动分区和用户自定义分区两种   
·选择lwillconfigurepartitioning

### 设置分区模式和挂载点

![](3b717c769939e6009352a104a9d7bf7867b6e1d7dda5f54a1b99df9a7a1398d2.jpg)

·默认选择LVM分区模式  
·我们先选择使用标准分区模式（standard）

![](f4bd8a76f3cfd2f92e8effc08d10f06220963094dd3727d0c4981cd127436091.jpg)

·点击“+”按钮新建挂载点（mountpoint）  
·这就是在进行分区设置了

### 设置分区和文件系统

![](8f3893e7a5be3ef3617b0bec0b424b7e6ac96d616fa2ed03a555a35ff968e38a.jpg)

·设置挂载点mountpoint   
·设置分区大小capacity   
·容量空着不填写就是分配剩余所有容量

![](236e87da7b7e73df5e7a6020b65b66f74f3b4c19f911ab59296cf457b1031d13.jpg)

·至少设置两个分区：swap（交换）和/（根）  
·Swap大小与内存容量相近   
·根分区选择ext4文件系统

### 分区设置方案确认

![](df6ee3b9d3442f4acc21317bbaa6053dfc77f16e34d74a23afd258d948c91905.jpg)

·如果有多块磁盘，可以考虑把用户/home挂载点划分到单独磁盘上  
·还可以把启动/boot单独划分分区  
·左图所示是两个分区：/和swap

### 选择服务器软件包

![](67d9e31c0e75f77def79da7570d39c90036ed63b441c8d303ddfa3d771d66aed.jpg)

·生产用服务器可以考虑Minimal Install  
·学习建议选用带有桌面管理器的环境  
·ServerwithGUI或者GNOMEDesktop

![](a3ee5eed4e61893192dfa00f0e8723cb49591a62d6147d5298c530788d80d12d.jpg)

·进行软件包依赖检查

checking software dependencies

29

### 配置网络和主机名

![](101094ec5cc8493113345e2da45eddba4ee1ace1d7f2ffa4a1a0a599661b56a1.jpg)

### 三种网络模式

#### ·桥接模式（Bridged）

桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信。在桥接的作用下，类似于把物理主机虚拟为一个交换机，所有桥接设置的虚拟机连接到这个交换机的一个接口上，物理主机也同样插在这个交换机当中。  
桥接模式使用vMneto。虚拟机和主机就如同插在同一台交换机上的两台主机。如果路由器开启了DHCP服务，主机和虚拟机能够自动获得IP地址。否则，需要仿照主机网卡手动配置，设置一个同网段的不同的IP地址即可。

在桥接模式，虚拟机ip地址需要与主机在同一个网段，如果需要联网，则网关与DNS需要与主机网卡一致。

![](de9ec9cd1e50b12c0a553fa434bf4e1ee55c7bee6c31e88e4b3abc1c9ba8a3ea.jpg)

![](1f2c577c5aa91380b64876a271b2c053b5ea35ae85b1c2c3e90beb8c06b21a76.jpg)

![](e337bbb71dfd19e3dc71aa3e7d76e8f6b5c2806922c8b6df2a4fde7c058bc53a.jpg)

![](55ec8f2eca97a65c1771438437ed4fc3361d14f90f6db50c383a95ca1fee9be6.jpg)

网络地址转换模式（NAT）

桥接模式配置简单，但如果网络环境是ip资源很缺少或对ip管理比较严格的话，那桥接模式就不适用了。要使用vmware的NAT模式。

![](2bccc9986ca379d3208f97794ae09243b20745bfbedd3fad74155a86656b5b7f.jpg)

在NAT模式中，主机网卡直接与虚拟 NAT设备相连，然后虚拟 NAT设备与虚拟DHCP服务器一起连接在虚拟交换机VMnet8上，这样就实现了虚拟机联网。

VMware Network Adapter VMnet8 虚拟网卡主要是为了实现主机与虚拟机之间的通信。

设置虚拟机中NAT模式的选项

打开 vmware，点击“编辑”下的“虚拟网络编辑器”

设置NAT参数及DHCP参数。

![](2b9a00a77deed2856f72a54693e08d84ec9127d250fc43d94cbe4f0fa258673d.jpg)

![](1094e136a3f1b7d356e21e396b3a9bd9369e0aeec7e3b7d7996c2e856fcf6819.jpg)

![](a6e05baaae21f007356b392d8cd5002e26b342bae4266c45f3979b615f171865.jpg)

![](ad0b83e95b6f4d0489dd7e3cd05e80a3101300f2f738c48865a255ec2f3271c1.jpg)
