本书围绕操作系统基础、UNIX设计思想和openEuler实践3个方面展开,并将理论知识、设计思想和应用实践紧密结合。本书内容涵盖绪论、操作系统初识、openEuler使用入门、操作系统原理与实践、openEuler开发环境、嵌入式操作系统开发、网络基础与管理、服务器操作系统管理,以及openEuler开源创新等。本书合理安排理论知识、精心设计操作实例,注重有机结合、循序深入,以帮助读者深入理解Linux优秀设计思想,灵活运用其高效系统功能,并从开源社区中更好地学习和成长。
本书适合作为高等院校计算机、自动化、电子测量等专业方向本科生和研究生学习操作系统的教材或参考书,也适合 Linux 系统开发和运维人员阅读,对从事计算机相关工作的专业人员具有参考价值。
(1)本书面向云边端、物联网和人工智能应用等ICT时代的创新应用新需求,讲解了openEuler操作系统的基本原理、应用开发、服务器维护和嵌入式开发等基本内容,亦覆盖了面向数字基础设施的操作系统前沿新特性,理解操作系统的创新思路。
(2)本书是华为与高校作者合作完成,作者均具有长达25年的Linux系统科研实践经验和多年的产教融合教学经验,包括华为智能基座优秀教师等。华为方引入openEuler相关产品线的核心技术专家提供技术支持和技术评审。
(3)在操作系统应用中深度融入优秀的软件设计思维,结合openEuler的基础知识和实践内容,深入浅出的讲解简单即是美、一个工具只做一件事和一切皆文件等UNIX-like操作系统的优秀设计哲学。
第 1章 绪论 1
1.1 操作系统与ICT时代 1
1.2 操作系统起源 2
1.2.1 Multics项目 2
1.2.2 UNIX诞生 2
1.3 操作系统发展 4
1.3.1 UNIX的繁荣与版权困境 4
1.3.2 桌面操作系统的崛起 5
1.3.3 GNU/Linux的开源创新 7
1.3.4 ICT时代操作系统的兴起 8
1.4 openEuler新生态 11
1.4.1 openEuler概览 11
1.4.2 openEuler社区 12
1.4.3 openEuler软件生态 13
1.5 本章小结 13
第 2章 操作系统初识 14
2.1 操作系统的基本组成 14
2.1.1 典型体系结构 14
2.1.2 系统内核和系统调用接口 15
2.1.3 应用程序 16
2.1.4 用户界面 21
2.2 主流操作系统简介 24
2.2.1 桌面操作系统 24
2.2.2 服务器操作系统 24
2.2.3 嵌入式操作系统 25
2.3 GNU/Linux的优秀特性 25
2.3.1 秉承UNIX设计哲学 26
2.3.2 自由与开放 27
2.3.3 可移植性 29
2.4 openEuler简介 29
2.4.1 系统架构 29
2.4.2 创新特色 30
2.4.3 开源贡献 31
2.5 体验openEuler 32
2.5.1 华为云ECS主机 32
2.5.2 VMware安装 32
2.5.3 Docker容器运行 32
2.6 本章小结 33
思考与实践 33
第3章 openEuler使用入门 34
3.1 交互界面 34
3.1.1 GUI 35
3.1.2 CLI 37
3.2 使用命令行 38
3.2.1 控制台和终端 38
3.2.2 登录系统 39
3.2.3 远程登录 40
3.2.4 使用命令 41
3.2.5 获取帮助 43
3.3 命令行基本操作 45
3.3.1 使用目录 46
3.3.2 查看文件 51
3.3.3 管理文件 56
3.3.4 查找文件 59
3.3.5 查看系统信息 62
3.3.6 管理系统 64
3.4 Shell:让命令行更强大 65
3.4.1 Bash简介 65
3.4.2 环境变量 66
3.4.3 通配符与自动补全 68
3.4.4 组合命令 69
3.4.5 重定向 70
3.4.6 管道 72
3.4.7 扩展命令 74
3.4.8 命令行编辑 76
3.5 用户与权限 76
3.5.1 用户模型 77
3.5.2 切换用户身份 77
3.5.3 权限模型 78
3.5.4 修改权限 79
3.5.5 修改属主 80
3.6 安装DDE桌面环境 80
3.7 本章小结 81
思考与实践 81
第4章 操作系统原理与实践 83
4.1 操作系统设计理念 83
4.2 文件管理 85
4.2.1 文件树 85
4.2.2 VFS 89
4.2.3 EulerFS简介 91
4.2.4 实例4-1:文件系统操作 91
4.3 内存管理 93
4.3.1 内存保护 93
4.3.2 虚拟内存管理 96
4.3.3 openEuler内存技术 97
4.3.4 实例4-2:内存信息分析 98
4.4 进程管理 99
4.4.1 并行化模型 100
4.4.2 进程创建 100
4.4.3 进程调度 102
4.4.4 进程间通信 103
4.4.5 线程抽象 104
4.4.6 openEuler进程技术 106
4.4.7 实例4-3:进程监控与进程管理 108
4.5 本章小结 110
思考与实践 111
第5章 openEuler开发
环境 112
5.1 文本处理 112
5.1.1 Vim编辑器 113
5.1.2 nano编辑器 118
5.1.3 文本搜索 119
5.1.4 文本替换与自动编辑 121
5.1.5 文本分析 123
5.1.6 文本格式化 124
5.1.7 使用Git管理版本 126
5.2 Shell脚本编程 127
5.2.1 猜数字小游戏 128
5.2.2 变量 129
5.2.3 表达式 131
5.2.4 分支结构 132
5.2.5 循环结构 133
5.2.6 函数 135
5.2.7 项目5-1:install-help命令 135
5.3 C/C 应用开发 136
5.3.1 my-nl小工具 136
5.3.2 编译与调试 137
5.3.3 Makefile构建 140
5.3.4 CMake构建 142
5.3.5 自动化测试 145
5.3.6 性能优化 146
5.3.7 项目5-2:my-utils工具箱 148
5.4 可移植性开发与Docker容器部署 148
5.4.1 POSIX可移植性 148
5.4.2 C/C 可移植性 150
5.4.3 Docker容器可移植性 151
5.4.4 openEuler多场景可移植性 154
5.4.5 项目5-3:my-utils跨平台构建 155
5.5 在开源社区中学习 155
5.5.1 Linux与开放源码 155
5.5.2 openEuler社区 156
5.6 本章小结 156
思考与实践 157
第6章 嵌入式操作系统开发 158
6.1 嵌入式操作系统简介 158
6.1.1 嵌入式系统软件体系 159
6.1.2 主要特点 160
6.1.3 常见嵌入式操作系统 160
6.2 嵌入式Linux 161
6.2.1 嵌入式Linux开发流程 162
6.2.2 实例6-1:嵌入式开发环境构建 163
6.3 Linux内核裁剪与开发 165
6.3.1 Linux内核简介 166
6.3.2 内核构建机制 168
6.3.3 实例6-2:内核编译与QEMU仿真 169
6.4 根文件系统开发 171
6.4.1 BusyBox简介 171
6.4.2 实例6-3:根文件系统编译与QEMU仿真 172
6.5 openEuler嵌入式操作系统 174
6.5.1 技术架构与主要特性 175
6.5.2 oebuild构建方法 176
6.5.3 实例6-4:openEuler嵌入式
操作系统QEMU构建与仿真 177
6.5.4 嵌入式ROS运行时 177
6.5.5 软实时特性 178
6.6 本章小结 179
思考与实践 180
第7章 网络基础与管理 181
7.1 TCP/IP网络模型 181
7.1.1 IP地址 183
7.1.2 端口 186
7.1.3 socket 186
7.1.4 socket编程接口 187
7.2 网络管理基础 189
7.2.1 基本概念 189
7.2.2 主机名 191
7.2.3 网络接口名 192
7.3 管理网络 193
7.3.1 网络管理工具 193
7.3.2 配置连接 197
7.3.3 ifcfg文件 198
7.3.4 配置路由 199
7.3.5 诊断网络 199
7.3.6 实例7-1:创建VLAN 201
7.4 网络防火墙 202
7.4.1 iptables 203
7.4.2 firewalld 205
7.4.3 实例7-2:配置firewalld 208
7.5 经典网络工具 209
7.5.1 SSH安全连接 209
7.5.2 wget文件下载 211
7.5.3 curl网络交互 211
7.5.4 tcpdump抓包 212
7.5.5 Netcat网络助手 213
7.5.6 Nmap探测器 214
7.6 本章小结 215
思考与实践 215
第8章 服务器操作系统
管理 216
8.1 典型服务器操作系统 216
8.1.1 Windows Server 217
8.1.2 主流Linux Server 217
8.1.3 兴起中的openEuler 218
8.2 用户和用户组 219
8.2.1 用户管理 220
8.2.2 用户组管理 221
8.2.3 实例8-1:批量添加用户 222
8.3 硬盘与逻辑卷 222
8.3.1 硬盘分区 223
8.3.2 MBR和GPT 223
8.3.3 实例8-2:分区创建与挂载 224
8.3.4 逻辑卷 226
8.3.5 实例8-3:逻辑卷创建与挂载 227
8.4 软件包 229
8.4.1 RPM包管理 231
8.4.2 DNF包管理 232
8.4.3 源码包管理 233
8.5 系统服务 234
8.5.1 systemd 235
8.5.2 systemctl 236
8.5.3 .service文件 236
8.5.4 SSH服务 237
8.5.5 实例8-4:安装LAMP组合 238
8.6 计划任务 239
8.6.1 单次任务 239
8.6.2 周期任务 240
8.7 系统安全 241
8.7.1 root权限 241
8.7.2 文件特殊权限机制 242
8.7.3 SELinux 244
8.7.4 日志系统 245
8.7.5 安全审计 250
8.8 系统管理与维护实例 251
8.8.1 实例8-5:使用Cockpit管理系统 251
8.8.2 实例8-6:WordPress博客建站 252
8.9 本章小结 255
思考与实践 256
第9章 openEuler开源创新 257
9.1 内核创新 257
9.1.1 SMT驱离优先级反转特性 258
9.1.2 CPU QoS优先级负载均衡特性 259
9.1.3 潮汐affinity特性 259
9.2 基础能力创新 260
9.2.1 iSulad轻量级容器引擎 260
9.2.2 StratoVirt虚拟化 262
9.2.3 Kmesh高性能服务管理工具 263
9.2.4 内核热升级 264
9.2.5 安全和可靠性 265
9.3 全场景使能创新 269
9.3.1 服务器 269
9.3.2 云计算 273
9.3.3 嵌入式 276
9.3.4 边缘计算 278
9.4 工具链创新 280
9.4.1 GCC for openEuler 280
9.4.2 Compass-CI测试平台 281
9.4.3 EulerLauncher 282
9.4.4 A-Ops智能运维 283
9.4.5 A-Tune智能调优引擎 285
9.5 行业应用案例 286
9.5.1 金融应用案例 286
9.5.2 能源应用案例 288
9.5.3 云计算应用案例 288
9.5.4 科研应用案例 289
9.6 本章小结 290
思考与实践 290