Linux 背景知识

1、Linux的发行版
GNU/Linux=Linux内核+遵守GNU协定的Application。
GNU是众多开源协定的一个发起者,GPL是GNU的开源协定,BSD和Apache也是开源协定,但是比GPL要宽松的多。
GNU/Linux通常以源码方式提供,通常比较自由和灵活。
(1)Debian
衍生版:Ubuntu,Knopix;
(2)Slackware
衍生版:S.u.S.E->OpenSUSE;
(3)RedHat
衍生版:Fedora,CentOS;
(4)Gentoo
(5)ArchLinux
(6)Kali:内置了各种渗透工具的Linux发行版;
(7)Raspbian:可以运行在树莓派上的Linux发行版;
LFS:Linux From Scratch,从零构建Linux(一本书)。
2、CPU架构
(1)Intel:x86,x64 PC兼容机,复杂指令集;
(2)Motorola:m68000,也叫做m68k;
(3)手持移动设备:ARM;
(4)SUN:斯坦福大学的sparc,高通代生产的ultrasparc,在Ultrasparc上跑的操作系统是solaris;
(5)IBM:power,是全球第一款2核、4核、64核的CPU,是全球第一款主频超过4GHz的CPU,精简指令集,power CPU上跑的操作系统是aix;
(6)IBM+Apple+Motorola:powerpc,也叫做ppc,简装版的power,可以装在pc上;
(7)MIPS;
(8)HP:alpha,alpha CPU上跑的操作系统是hp-ux。
3、POSIX 可移植操作系统
API:Application Program Interface,应用程序编程接口;
ABI:Application Binary Interface,应用程序二进制接口(应用程序执行接口)。
Unix类的系统:Linux、BSD、AIX等为Unix-like系统,它们的API和ABI都是兼容的。
4、GNU
(1)Stallman最初发起了GNU运动。
闭源软件:比如Windows系统,使用大教堂式开发方式;
开源软件:提供源代码,使用集市式开发方式。
(2)开源协定:
GPL:General Public License,通用公共许可证。
遵循GPL协定的软件版权为GPL,任何程序只要借用了遵循GPL协定的软件的代码,该程序也必须遵循GPL协定开放。
LGPL:Lesser GPL,更宽松的GPL,调用了GPL库的程序不必开源。
现在GPL已经发展到GPLv2,GPLv3版本。
FSF:Free Software Foundation,GNU基金会。
BSD协定的内容:
<1>如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定;
<2>如果二次发布产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定;
<3>不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广。
BSD协定和Apache协定比较宽松,修改源代码后不声明是原作者的代码即可。
ASF:Apache Software Foundation,Apache基金会。
(3)很多开源软件使用双线授权方式:
Community:社区版,遵循开源协定;
Enterprise:企业版,不开源,又卖钱,又卖服务。
5、程序管理
(1)程序的组成部分:二进制程序,配置文件,库文件,帮助文件。
二进制文件、库文件:都为二进制可执行文件,而库文件不能独立执行,只能被调用时执行;
配置文件、帮助文件:可被查看其内容的文件,都为文本文件。
(2)程序包管理器:将程序的组成文件打包成一个或有限几个文件,完成程序的安装、卸载、查询等等。
(3)不同Linux发行版本的程序包管理器:
Debian:程序包管理器为dpkg,前端管理工具为apt-get,包格式为deb;
RedHat:程序包管理器为rpm,前端管理工具为yum->dnf;
S.u.S.E:程序包管理器为rpm,前端管理工具为zypper;
ArchLinux:程序包管理器为packman。
6、虚拟化
(1)计算机的部件包括:CPU、内存、IO。
CPU通过时序复用,内存通过空间复用,IO通过捕获焦点复用,在虚拟机内部模拟出虚拟的IO。
(2)虚拟化软件程序:
vmware workstation
virtualbox(Oracle公司产品)
7、CentOS的镜像站点
http://mirrors.aliyun.com
http://mirrors.163.com
http://mirrors.sohu.com
8、操作系统与硬件
无论是 Linux、OS X、Windows 操作系统,他们都是由以下部分组成(分层结构):
最底层:硬件;
底层之上:将硬件的接口抽象成为系统调用(kernel);
再之上:库;
在此之上为:应用程序。
程序的运行可以有两种方式:
(1)开机自动启动运行;
(2)用户通过交互式接口登陆或者连接系统上去,来手动运行程序。
用户可以通过交互式接口对系统及其程序进行操作、配置管理。
系统的运行独立于用户的交互式接口,接口有无,都不影响系统及其程序的运行,所以交互式接口不是必须的,但是有些程序是建立在交互式接口之上的。
我们平时如果对系统进行控制,可以有这么几种方法:
(1)远程主机有电源线、网线(但没有键盘、显示器、鼠标等),我们可以通过远程连接进入;
(2)远程连入时,主机系统就必须提供一个可以远程接入进来的一个交互式接口,这个交互式接口的输出可以是本地的 vga 输入,也可以是显示到远程终端上去。
9、终端
终端,用户与主机交互,是必然用到的设备。
早期的大型主机,想使用的用户有很多,但主机只有一个,也不可能做到人手一台,但是可以做到在主机上接上一个分屏器,分屏器的每一个端子上可以接上一套键盘鼠标显示器,就可以直接在主机上面进行一些操作了,这就相当于每个人在独立的操作一台计算机一样,像这样我们把一个端子上面所接入的鼠标、键盘、显示器所组成的一个组合,我们就称之为终端。
所谓操作系统的多用户概念,就是基于此种模式而诞生的。终端可以说是一个程序,但严格意义上来讲是一个设备,因为终端所表现的是一些物理设备,如键盘、鼠标、显示器等。
我们可以通过终端来与操作系统或者主机进行交互,终端的类型也比较多,如
(1)物理终端:我们可以将显示器、键盘鼠标直接接在主机的接口之上,这样的终端称之为物理终端,即本机自带的,直接连入的,我们也称之为:物理控制台 console,表示为 /dev/console;
(2)虚拟终端:除了物理终端,系统会提供给我们 6 个虚拟终端,这些虚拟终端是附加在物理终端之上的,用软件方式虚拟实现的终端,CentOS 默认启用 6 个虚拟终端,可以通过使用快捷键来切换进来,切换方式:Ctrl-Alt-F[1-6],表示为 /dev/tty#;
在实际的操作中,系统启动之后我们都是通过虚拟终端1来登录,即便是在物理设备上,(那么什么时候用物理终端呢?是在系统开机启动的时候,服务还没有全部起来,这个时候映射的是物理终端,在服务完全启动之后映射的是虚拟终端1,当然还有图形终端)。
(3)图形终端:也是附加在物理终端之上,用软件方式虚拟实现的终端,但额外会提供桌面环境。也是虚拟终端的一种切换方式:Ctrl-Alt-F7。
(4)伪终端(模拟终端):图形界面下打开的命令行接口,还有基于 ssh 协议或 telnet 协议等远程打开的命令行界面。表示为:/dev/pts/#,查看当前的终端设备命令:tty。
终端实际上是一个设备,一个设备要想与系统进行交互,必须有交互接口,当我们开启一个终端时,系统会自动的在终端上运行(附加)一个交互式程序。
交互式程序有两类:GUI 和 CLI。
GUI:图形化界面,是基于 X 协议实现的窗口管理器(桌面、按钮的作用等)。
Linux桌面系统有:
(1)GNOME:C 程序开发,gtk 开发库;
(2)KDE:C++ 程序开发,qt 开发库;
(3)XFCE:轻量级桌面;
CLI:命令行界面,对应的叫 shell 程序,用户要想与系统交互,必须通过 shell,不同的程序员开发的程序不一样,但是都可以实现同样的功能(就是交互式功能),而且 shell 程序也有很多种,如:sh,csh,ksh,Bash,zsh。
如何获取当前环境使用的 shell 是哪种 shell:# echo $SHELL,显示当前系统使用的所有 shell:# cat /etc/shells

你可能感兴趣的:(Linux,深入Linux系统架构)