title | author | output |
---|---|---|
Linux系统与网络管理 |
黄玮 |
revealjs::revealjs_presentation |
GNU is a recursive acronym for "GNU's Not Unix!", chosen because GNU's design is Unix-like, but differs from Unix by being free software and containing no Unix code.
- 1969 年,Ken Thompson(K&T) 和 Dennis Ritchie(D&R) 在贝尔实验室开发了 Unix 操作系统,它是一个多任务、多用户的分时系统,具有高度的可移植性和灵活性。
- 1971-1972年,D&R 发明了 C 语言,并用它重写了 Unix 的大部分源代码,使得 Unix 可以在不同的硬件平台上运行。
- 1973年,Unix 的第四版发布,这是第一个广泛传播的版本,它被许多学术和研究机构使用和修改,产生了许多不同的 Unix 变体,如 BSD、Solaris、HP-UX、AIX 等。
- 1983年,Richard Stallman 发起了 GNU 项目,旨在创建一个完全自由和开源的类 Unix 操作系统,他开发了许多 Unix 的实用程序和工具,如 GCC、Emacs、Bash 等,并制定了 GNU 通用公共许可证(GPL)。
- 1991年,Linus Torvalds 在芬兰赫尔辛基大学学习时,为了个人兴趣,编写了一个与 Unix 兼容的操作系统内核,他称之为 Linux,并公开了源代码,邀请其他人一起完善。
- 1992年,Linux 内核与 GNU 的软件结合,形成了一个完整的自由和开源的操作系统,这就是我们今天所说的 Linux 系统。
- 1994年,Linux 内核 1.0 正式版发布,标志着 Linux 系统的成熟,从此 Linux 系统开始在各个领域广泛应用,如服务器、桌面、嵌入式、移动等。
英文 | 中文 |
---|---|
Linux Development Community | Linux 开发社区 |
Linux Distribution | Linux 发行版 |
Carrier | 电信运营商 |
Network Equipment Provider | 网络设备提供商 |
OSS(Open-source Software) Community | 开源软件社区 |
ISV(Independent Software Vendor) | 独立软件开发商 |
Hardware Manufacturer | 硬件制造商 |
- 早期的 Linux 内核开使用发商业化的版本控制软件 BitKeeper 进行代码管理,但开源社区对这个选择充满了质疑
- Linus 本人最初是希望避免重复造轮子,但他本人又对现有的版本控制系统均不满意,于是在 2005 年花了 10 天时间开发完成了第一个 Git 版本
- 不同于 CVS、SVN 等集中式版本控制工具,Git 采用 分布式 版本管理,不需要服务器端软件
- Git 是一款免费、开源的分布式版本控制系统
- GitHub 是用 Git 做版本控制为全球开源软件作者提供集中的代码托管平台
- 针对私有闭源软件项目提供收费的代码托管服务
- 目前主流的开源项目普遍将代码托管在 GitHub 上,软件开发过程可以被全世界所有人透明的查看和监管
- GitHub在知乎上的主题索引
- Google: github awesome xxxx
- github awesome android
- github awesome security
- github awesome javascript
Linux生态圈 - 发行版 {id="linux-distros-1"}
- 基于 Linux 内核构建完整操作系统
- Debian: 非营利性组织运营的开源软件构建发布版本
- Ubuntu:商业公司Canonical基于Debian构建和维护
- Linux Mint:开源社区维护
- Ubuntu:商业公司Canonical基于Debian构建和维护
- Fedora
- RHEL: Red Hat Enterprise Linux
- CentOS is dead, CentOS Stream
is not a replacement
- CentOS Stream, founded in 2019, is “a rolling preview of what's next in RHEL.”
- Oracle Linux
- CentOS is dead, CentOS Stream
- RHEL: Red Hat Enterprise Linux
- Debian: 非营利性组织运营的开源软件构建发布版本
Linux生态圈 - 发行版 {id="linux-distros-2"}
- 基于 Linux 内核构建完整操作系统
Linux生态圈 - 发行版 {id="linux-distros-3"}
- Linux Standard Base, LSB
- 愿景和使命
- 当Linux成为一个平台之后,应用软件开发者希望实现 write once (on one Linux distribution will) run everywhere (on other Linux distributions)
- 不仅如此,应用软件开发者希望平台的升级更新不要影响到他们已完成代码的可用性和兼容性
- Carrier Grade Linux, CGL :电信运营商级Linux
- 愿景和使命
- 调研网络设备提供商和电信运营商的需求并为Linux发行版厂商制定实现规范
- 帮助上游厂商在技术上整合实现以满足上述需求标准
Linux生态圈 - CGL
需求类别
- 可用性
- 集群
- 可服务
- 性能
- 标准化
- 硬件
- 安全
- Linux基金会
- OpenStack基金会
- Apache
- Canonical
- 孵化了大量知名开源项目
- 例如:KVM、Xen、nodejs、Open vSwitch等
- Linux基金会采用的是会员制,分为:准会员、银级、金级、白金级四个等级,白金级是最高等级。
- 白金会员(年费50万美元):思科、富士通、惠普企业、华为、IBM、英特尔、NEC、甲骨文、高通、三星和微软
- 黄金会员(年费10万美元)
- 银级会员,按员工数量规模浮动5千美元/年 ~ 2万美元/年
- 准会员:非盈利组织和政府实体才可加入,无投票权,费用采取审核批准制(免费与否不固定)
OpenStack基金会 {id="openinfra-1"}
- OpenStack由NASA(美国国家航空航天局)和Rackspace合作研发并发起,旨在为公共及私有云的建设与管理提供软件的开源项目
- 2020年10月正式升级为:开源基础设施基金会 - OIF (Open Infrastructure Foundation)
- 截止2017年2月,共有来自全球180个国家超过6万名独立会员。截止2021年2月,会员数已超过10万人
OpenStack基金会 {id="openinfra-2"}
- 白金会员:50万美元/年起步,2名全职工程师贡献
- 黄金会员:5万 ~20万美元/年,按照企业净收入的0.025%为参考
- 企业赞助:创业公司1万美元/年起,其他公司2.5万美元/年起
- 其他主要收入方式:认证、培训、商业化服务支持(安装、部署、架构、集成、定制开发等)
- Apache软件基金会,简称为ASF,它支持的Apache项目与子项目中,所发行的软件产品都需要遵循Apache许可证(Apache License)。
- 目前其已经监管了数百个开源项目,其中的知名项目包括:Apache HTTP Server、Hadoop、Spark、Kafka、Groovy、Struts等。
- 会员赞助制,这里是赞助商名单致谢清单
- 白金:12.5万美元/年
- 黄金:5万美元/年
- 白银:2.5万美元/年
- 青铜:6千美元/年
- 任性打赏捐赠
- 科能软件有限公司(Canonical Ltd.) 是一家私人公司,由南非的企业家马克·沙特尔沃思创建,主要为了促进开源软件项目。
- Canonical在曼岛登记注册,其雇员分布在世界各地,其主要办事处在伦敦,在波士顿、圣保罗、蒙特利尔、上海、台北和马恩岛也有分公司。
- 订阅制增值服务:Ubuntu Pro
- 主要产品:Ubuntu家族的Linux发行版
本课程主要以 Ubuntu 系统为基础实验环境,兼顾 CentOS 等其他常用服务器发行版。
- 物理主机安装
- 虚拟机安装
- 优先选择当前可用最新的长期支持版本(LTS),下载iso文件
- 刻盘 / U盘
- 新手避免直接在物理主机上安装Linux,推荐在虚拟机里安装(直接挂载使用iso文件)
- 磁盘容量准备
- 优先选择64位系统
- 推荐在安装时软件包选择界面勾选(使用空格键确认勾选,使用方向键移动菜单光标)安装OpenSSH server
建议断网安装,避免安装时由于网速慢、联网更新会导致整个安装过程时间较长
- 及时备份纯净系统
对于使用虚拟机软件安装的虚拟机系统,建议使用虚拟机自带的虚拟机导出功能或直接备份虚拟硬盘文件。
关键词:介质管理
- 虚拟硬盘
- 多重加载
- Preseed by Debian
- 基于 subiquity - Ubuntu 18.04+ only
- Kickstart by RedHat
- CLI: Command Line Interface
- 使用键盘输入命令,屏幕文字输出结果
- GUI: Graphics User Interface
- 使用键鼠(也包括红外、体感等新型交互传感器技术)输入命令,图文音输出结果
- CUI: Conversational User Interface
- 使用语音输入命令,五感反馈
- AI驱动重新发明CLI
图形用户界面让简单的任务更容易完成,而命令行界面使完成复杂的任务成为可能
- 全键盘输入:专业工作效率高
- 面向自动化:管道、文件、脚本
man man
...
The table below shows the section numbers of the manual followed by the types of pages they contain.
1 Executable programs or shell commands
2 System calls (functions provided by the kernel)
3 Library calls (functions within program libraries)
4 Special files (usually found in /dev)
5 File formats and conventions eg /etc/passwd
6 Games
7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8 System administration commands (usually only for root)
9 Kernel routines [Non standard]
...
- 使用h获取man帮助系统中的内置帮助(快捷键映射定义),学习如何使用man
- 使用q退出man帮助系统或子页面
- 使用上下键滚动页面,使用空格键向下翻页
- 使用**/键查找关键词(不区分大小写),使用n**查看下一个匹配结果
man的常用命令行参数
# 安装开发相关的manual
sudo apt-get install manpages-dev
# 在所有section中查找主题为printf的手册页
man -a printf
# 在所有manual的正文中查找printf关键词
man -k printf
# 直接查看系统调用类帮助文档中主题名为printf的手册页
man 3 printf
- 大多数命令行程序都支持
-h
或--help
参数来获取内置的简洁使用帮助
- shell 就是一个执行命令的「宏」处理器:输入的文本和符号被扩展为更「宏大」的表达式
- Unix shell 即是一个「命令解释器」,也是一种「编程语言」
- shell 的运行模式:交互模式、非交互模式
- 交互模式:从键盘输入指令解释执行
- 非交互模式:从文件读取指令解释执行
- shell 同时支持同步或异步执行指令
- 自动补全
- TAB
- 重复输入命令
- 上下键
- Ctrl-R
- echo
- cat
- less
- vim / vimtutor
- sort
- uniq
- wc
问:如何生成一个随机的字符串?
答:让新手退出Vim。
- 免密登录 目的
- ssh-copy-id 手段
- $HOME/.ssh/authorized_keys 手段
- SSH 跳板与堡垒主机
# ProxyCommand
man ssh_config
SSH服务器安全加固
- Linux / Mac
- ssh
- Windows
- 使用双网卡:Host-only + NAT
- History of Linux from WikiPedia
- Arch compared to other distributions
- GitHub在知乎上的主题索引
- Ubuntu Installation Guide(官方文档)
- How to install Ubuntu - The Ubuntu Installation Guide
- How do I create an EFI-bootable ISO of a customized version of Ubuntu?
- How do I create a completely unattended install of Ubuntu Desktop 16.04.1 LTS?
- 快乐的Linux命令行 | The Linux Command Line