1.1 Linux的起源与发展
1.1.1 UNIX的发展历史
Unix起源于Multics系统 1965年,麻省理工学院(MIT)、通用电气公司( GE)及AT &T的见尔实验室联合开发Multics天程计划Multiplexed Information andComputing System,多合信意证算系统),其目标是开发一种交互式的具有多道程序处理能力的分时操作系统,但因Multics系统不但开发周期长,成本高,而且庞大、缓慢,最终宣告失败。 1969年,贝尔实验室的肯.汤普森(Ken Thompson)在DEC公司的PDP-7机器上开发出了一套用于文件存取的小型操作系统Uniplexed Informationand Computing SystemNICS).1969年,贝尔实验室的肯.汤普森(Ken Thompson)在DEC公司的PDP-7机器上开发出了一套用于文件存取的小型操作系统Uniplexed Informationand Computing SystemNICS). 1971年,丹尼斯.利奇(Dennis Ritchie )发明了水语言! 1973年,贝尔实验室的肯.汤普森、丹尼斯.利奇(Dennis Ritchie )为了提升LUNICS系统的性能与兼容性,采用高级语言(语言)对其进行重构,并确定该操作系统名称为UNIX ,这就算是最早的UNIX操作系统。 1974年,肯.汤普森、丹尼斯.利奇发表了著名论文“The UNIX Time Sharing System”,让世人了解UNIX。并向外发行免费拷贝,开放源代码。 1977年到1982年,AT&T促使UNIX走上商业化道路(收回版权,并且不公开源代码)1983年,美国计算机协会将图灵奖持予肯·汤普森和与丹尼斯·里奇。 80年代UNIX版本的剧增以及各种UNIX版本之间的差别不断扩大导致了以美国政府为代表的许多用户要求对其标准化,以增强各种应用程序在这些UNIX操作系统之间的可移植性 重要的UNIX标准包括:ANSI C、IEEE POSIX等,UNIX标准只是对应用程序接口进行统一(内部实现机制则留给操作系统开发者自行实现) ANSI C是美国国家标准协会(ANSI )于1983年发布的C语言标准1989年,此标准被采纳为国际标准ISO/IEC 9899:1990 ISOC标准现旨在提供应里程序的可移植性,使其能舌应千不同的操作系统,而不仅仅是UNIX操作系统 1986年,IEEE制定了IEEE P1003标准,这套标准被称为POSIX ( Potable Operating System Interface),可移植操作玄体接口。
1.1.2 GNU计划和自由软件
UNIX的商业化让许多UNIX爱好者感到痛心和忧虑﹒包括了大名鼎鼎的理查德·斯托曼先生( Richard M. Stallman )。 Stallman在1983年发起了-GNU计划,GNU是“GNU ‘s Not Unix”的递归缩写,其目标是创建一个完全自由的类Unix操作系统,GNU计划也开发了大批其他的自由软件,例如Emacs编辑系统、Glibc c运行库、GCC编译器、BASH( 许多Linux发行版的默认Shell)等。 1985年Stallman又创立了自由软件基金会(Free Software Foundation ,FSE)来为GNU计划提供技术、法律以及财政支持。 GNU通用公共许可协议(GNUlSP’),是由自由软件基金会(FSF)发行的用于计算机软件的协议证书,是一个广泛被使用的自由软件许可协议条款,最初由Stallman为GNU计划而撰写,保证任何人有共享和修改自由软件的自由: GPL授予程序接受人以下权利,或称“自由”∶以任何目的运行此程序的自由; 再发行复制件的自由﹔ 改进此程序,并公开发布改进的自由 使用GPI的软件被称为自由软件。自由软件并不是指“免费”的,而是指具有“自由度”的软件。什么是自由度呢﹖也就是使用者运行、复制、发布、研究、修改和口改讲该软件的自由。 可自由下载,供任何用户使用﹔ 源代码公开和可自由修改。 所谓可自由修改是指用户可以对公开的源代码进行修改以使自由软件更加完善,还可在对自由软件进行修改的基础上开发上层软件。
1.1.3 Linux的发展历史
1984年,因为UNIX版权的限制,规定“不能对学生提供源码”,荷兰的安德鲁.斯图尔特.塔能鲍姆( Andre Tanenbaum)教授决定写一个不包含任何AT &T源代码的UINIX系统,名为MINIX(即小型的UNIX ),并开放全部源代码给大学教学和研究工作。 Linux系统诞生于1991年,由芬兰郝尔辛基大学研究生林纳斯.托瓦兹(Linus Torvalds )和后来陆续加入的众多爱好者共同开发完成。 Linux是一套免费的、开放源代码的,并可以自由传播的类UNIX操作系统软件,它主要用于基于Intel X86系列的CPU上。 1991年Linux的第一个版本公开发行时,GN计划已经完成除了操作系统内核之外的大部分软件(其中包括了thell程序,C语言程序库以及C语言编译器)。Linus Torvalds及其他早期Linux开发人员加入了这些王具,而完成了Linux操作系统。 Linux是在GNU通用公共许可证(GP)下发行,它却不是GNU计划的一部分。
1.2 Linux操作系统的主要特点
1。多用户、多任务: 多用户是指系统资源可以同时被不同的用户使用,每个用户对自己的资源有特定的权限,互不影响。多任务是现代化计算机的主要特点,指的是计算机能同时运行多个程序,且程序之间彼此独立,Linux内核负责调度每个进程,使之平等地访问处理器。由于CPU处理速度极快,从用户的角度来看所有的进程好像在并行运行。 2.良好的兼容性: 可以兼容现在主流的Unix系统,在Unix系统下可以运行的程序也几乎完全可以在Linux下运行。 3.强大的可移植性:Linux中95%以上的代码都是用C语言编写的,由于C语言是一种机器无关的高级语言,是可移植的,植的。能够在从微型计算机到大型计算机的任何环境中和任何平台上运行。 4.高度的稳定性: 可以连续运行数月数年而无需重新启动 **5.良好的用户界面:**Linux向用户提供了两种界面:里户界面和系统调用。Linux还为用户提供了图形用户界面。它利用鼠标、菜单、窗口、滚励条等设施,给用户呈现一个直观、易操作、交互性强的友好的图形化界面。 6.提供了丰富的网络功能∶完善的内置网络是Linux一大特点。支持Internet文件传输和远程访问等。 7.支持多种文件系统: 可以支持如ext、ext2、ext3
1.3 Linux的应用
应用领域: 个人桌面领域 该领域是传统Linux应用最薄弱的环节,传统Linux由于界面简单、操作复杂、应用软件少的缺点,一直被windows所压制,但近些年来随着ubuntu、fedora等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,linux在个人桌面领域的占有率在逐渐的提高。
服务器领域 Linux在服务器领域的应用是最强的。 Linux免费、稳定、高效等特点在这里得到了很好的体现,近些年来Linux服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛。 谷歌、亚马逊和Facebook等互联网巨头都使用Linux,来运行不同的网络和云服务。
*歆入式领域 Linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百KB等特点,使其近些年来在嵌入式领域的应用得到非常大的提高 主要应用︰ (⑴1))手机、PDA ((⑵))智能家电︰机顶盒、数字电视、智能家居等,以后在物联网中应用会更加广泛。(⑶))航空系统 ((4))银行系统
集群计算机等*
1.4 Linux的版本
Linux内核官网: www.kernel.orgLinux 内核版本由3个数字组成: r.x.y 2.6之前版本号含义∶ r:主版本号,目前发布的Kernel主版本。 x∶次版本号,偶数是稳定版本,奇数是开发中的版本。 y∶修正号,错误修补次数。
3.0之后的版本号含义∶ r: 目前发布的Kernel主版本。 x: 随着新版本的发布而增加 y: 错误修补次数。 注意:不再使用奇偶数代表稳定版和开发版。
Linux内核版本由4个数字组成:r.x.y .z 2.6~3.0之间的版本号含义∶ 近7年内r.x为2.6保持不变y︰随着新版本的发布而增加 z∶代表一些BUG修复、安全更新、添加新特性和驱动的次数。
1.5 Linux系统结构

狭义∶独立维护和发布的Linux内核 广义∶各种Linux的发行版本,广义的Linux可分为内核、Shell、X Window和应用程序四大组成部分
1.5.1内核
内核是Linux系统的核心和基础,它直接附着在硬件平台之上,控制和管理系统内各种资源(硬件资源和软件资源)。 Linux的内核采用模块化的结构,主要包含∶CPU和进程管理 内存管理 文件管理 磁盘管理等 内核的源代码是用C语言编写,通常安装在/usr/src/linux目录,可供用户查看和修改。
1.5.2 Shell
Shell层是系统的用户界面,提供了用户与内核进行交互操作的接口。它接收用户输入的命今,并且把它送入内核执行。 Shell是一种交互式命令解释程序,它解释由用户输入的命令,并且送到内核。 B Shell (Bourne Shell) C Shell K Shell (Korn Shell) Bash : Linux默认采用的Shell ShelI还是一种程序设计语言,Shell编程语言具有普通编程语言的很多特点,如它也有循环结构和分支控制结构等,用这种编程语言编写的Shell程序与其他应用程序具有同样的效果。
1.5.3 XWindow x Window : 又称X视窗,是UNIX和Linux等的图形化用户界面标准。 负责提供x Window桌面环境的软件有两个:GNOME和KDE。 GNOME源自美国,是GNU计划的重要组成部分,而KDE源自德国,RHEL以GNOME作为默认的桌面环境。
1.5.4应用程序
办公软件:OpenOffice 等 文本编辑器:vi、 gedit等 编程语言: Java、Python等 网页浏览器:Firefox等
2.1 Linux系统的安装准备 下载CentOs 1)选择相应版本的iso镜像文件进行下载。 1.首先进入Linux官网: https://linux.org。 单击Download Linux,选择要下载的Linux版本CentOS,也可以直接进入https://www.centos.org/download/下载。      2)安装虚拟机VMware workstation 1.首先进入VM官网: https://www.vmware.com/cn.html 
2点击如图所示的资源->产品下载  3.找到VMware workstation Pro,点击下载产品。  4.当前最新版本默认16.0,选择适合自己的操作系统之后点击转至下载。我们这里是给windows下装linux子系统。所以选择的是windows版本。  5.点击立即下载完成WMware的下载。如果你有VMware的账户直接登录下载,没有的话需要先注册。  配置要求: 1 CPU:现在的CPU都可以满足要求 2.硬盘空间:Centos 7建议磁盘大小20GB,最小10GB 3.内存: Centos 7建议内存大小1GB,内存不能超物理内存的一半。 2.2 Vmware虚拟机的安装与创建   
系统安装 1.因为Linux需要运行在windows的虚拟机上,所以首先打开刚才安装好的VMware。因为之前没有创建过虚拟机,所以这里选择创建新的虚拟机.      桥接∶选择桥接模式的话虚拟机和宿主机在网络上就是平级的关系,相当于连接在同一交换机上 NAT : NAT模式就是虚拟机要联网得先通过宿主机才能和外面进行通信。交换机上。    
2.3 Linux磁盘分区与目录结构简介
2.3.1磁盘分区 磁盘分区: 是使用分区编辑器(partition editor )在磁盘上划分几个逻辑部分。碟片一旦划分成数个分区,不同类型的目录和文件可以存储进不同的的分区。 分区类型: 硬盘分区包括主分区、扩展分区、逻辑分区三种类型。 主分区∶最多只能有4个。因为在硬盘的主引导期区(IMiDK)中用来存放分区信息的空间只有64个字节,而每一个分区的信息都要占用16字节空间,因而理论上一块磁盘最多只能拥有4个分区。 扩展分区∶ 最多只能有1个 主分区加扩展分区最多有4个 不能写入数据,只能包含逻辑分区 逻辑分区: 可以写入数据,数量就不再受主引导扇区空间大小的限制。
MBR主引导扇区位于磁盘的第一个扇区,即O号扇区(硬盘的O柱面、0磁头、1扇区),主要由引导代码(446B)、分区表(64B)、结束标志(2B)三部分构成,总共占512字节。 计算机主板的BIOS程序在自检通过后,会将MBR扇区整个读取到内存中,然后将执行权交给内存中MBR扇区的引导程序。引导程序首先会将自己整个搬到一个较为安全的地址中,目的是防止自己被随后读入的其它程序覆盖,因为引导程序一旦被破坏,就会引起计算机死机,从而无法正常引导系统。系统下一步就会判断读入内存的MBR扇区的最后两个字节是否为“55AA”,如果不是则报错,在屏幕上会列出错误信息。如果是“55AA”,接下来引导程序会到分区表中查找是否有活动分区,如果有则判断活动分区的引导扇区在磁盘中的地址,并将该引导扇区读入内存及判断其合法性,如果是一个合法的引导扇区,随后的引导权就交给这个引导扇区去引导系统了,MRB引导程序的使命也就完成的。 
2.3.2格式化 格式化∶又称逻辑格式化,它是指根据用户选定的文件系统(如FAT16、FAT32、NTFS、EXT2、EXT3、EXT4、xfs等),在磁盘的特定区域写入特定数据,在分区中划出一片用于存放文件分配表、目录表等用于文件管理的磁盘空间。 作用∶把硬盘按照文件系统的规则分割成相等大小的数据块(4KB )。 **
2.3.3设备文件名 ·在Linux中,一切皆文件,包括硬件设备也是文件,用户也是文件。既然硬件也是文件,那它就有文件名,也就是“设备文件名”,所有的设备文件名都统一保存在/dev/目录下。不同类型的硬盘的设备文件命名都有统一的规则。  例如,将系统中的第1个IDE接口设备表示为“/dev/hda”,将第2个SATA接口设备表示为“/dev/sdb”。
·分区设备文件名︰ /dev/hda1(IDE硬盘接口) /dev/sda1(SCSI硬盘接口,SATA硬盘接口) ·由于主分区的数目最多只有4个,因此主分区和扩展分区的序号也就限制在1~4之间而逻辑区的序号将始终从5开始。 ·例如,即便第1个IDE硬盘中只划分了一个主分区、一个扩展分区,则新建的第1个逻辑分区的序号仍然是从5开始,应表示为“sda5”,第2个逻辑分区表示为“sda6”。 
2.3.4挂载(分配盘符) 在Linux系统中,将所有的目录和文件数据组织为一个树型的目录结构,整个系统中只存在一个根目录,所有的分区、目录、文件都在同一个根目录下面。 在Linux系统中定位文件或目录位置时,使用“I”进行分隔。在整个树型目录结构中,使用独立的一个“”表示根目录,根目录是Linux文件系统的起点。在根目录下面按用途不同划分有很多子目录。  Linux的目录结构 . /boot:存放Linux系统启动所必需的文件,出于系统安全考虑,/boot目录通常被划分为独立的分区。 **. /etc:**存放Linux系统和各种程序的配置文件。 **/dev:**存放Linux系统中的硬盘、光驱等硬件设备文件。 **. /bin:**存放Linux系统中最常用的基本命令。. /sbin:存放Linux系统基本的管理命令。. lusr:安装软件的默认存放位置,类似于Windows中的Program Files目录。 **/home:**用户主目录(也称为家目录),类似于windows中的用户配置文件夹。 **/mnt:**一般是空的,用来临时挂载别的文件系统。
2.3.4挂载(分配盘符) 分区经过划分及格式化后还不能使用,必须将之挂载到某个目录上,通过对该目录的访问来使用该分区 所谓挂载就是利用一个目录当成进入点,将磁盘分区的数据放置在该目录下,也就是说进入该目录就可以读取该分区的意思。这个操作我们称为挂载。 一个硬盘分区只有挂载到某个目录中才能被访问,这个指定的目录就被称为挂载点。 例如将分区"/dev/hda2”挂载到根目录“/”那么通过访问根目录“”就可以访问到"/dev/hda2”分区,这个分区也就称为根分区  安装Linux是必须至少有两个分区∶交换分区(又称swap分区)和根分区(又称/分)。 。必须分区∶ /(根分区) swap分区(交换分区,类似于Windows系统中的虚拟内存,能够在一定程度上缓解物理内存不足的问题,通常设置为主机物理内存的2倍,不超过2GB) ·推荐分区∶ /boot(启动分区,存放Linux系统启动所必需的文件,出于系统安全考虑,/boot目录通常被划分为独立的分区,建议200MB ) 2.4 Linux的安装             
2.5 Linux系统登录
Linux系统登录
使用用户名和密码进行登录 **两种类型的登录屏幕:**基于文本的登录屏幕和图形登录屏幕 基于文本的登录会为您提供shell提示符 图形登录在桌面环境中启动 每个用户都有一个用于存储个人文件的主目录,特定于用户的配置数据通常也存储在这里
Linux系统运行级别 Linux系统任何时候都运行在一个指定的运行级上,并且不同的运行级的程序和服务都不同,所要完成的工作和所要达到的目的都不同。Centos设置了有7个运行级别(runlevel),并且系统可以在这些运行级别之间进行切换,以完成不同的工作。 运行级别0∶系统停机状态,系统默认运行级别不能设为0,否则不能正常启动 运行级别1∶单用户模式,用于系统维护,只有少数进程运行,同时所有服务停止,禁止远程登陆 运行级别2∶多用户模式(没有网络文件系统NFS) 运行级别3:多用户模式(有NFS),登陆后进入控制台命令行模式 运行级别4∶系统未使用,保留给用户自定义的运行级别 运行级别5∶多用户模式,并且在系统启动后运行X-Window,给出一个图形化的登录窗口 运行级别6∶系统正常关闭并重启**,默认运行级别不能设为6,否则不能正常启动**
**runlevel 😗*查看当前系统的运行级别 **init [0123456]😗*运行级别之间进行切换
关机和重启命令
关机∶ 1.init 0 :立即关机 2. shutdown -h now或shutdown -h 20:30 3. poweroff 4. Halt 重启: 1.init 6 :立即重启 5. reboot 6. shutdown -r now 注销命令︰ 1.exit 7. [ctrl+D]组合键
Linux系统虚拟控制台和图形界面之间切换 现在的Linux系统在启动时会自动创建几个虚拟控制台(Virtual Console),其中一个供图形桌面程序使用,其他的保留原生控制台的样子。虚拟控制台其实就是Linux系统内存中运行的虚拟终端(Virtual Terminal)。 从图形界面模式进入控制台模式也很简单,往往按下Ctrl + Alt + Fn(n=1,2,3,4,5.….)快捷键就能够来回切换。 例如,CentOS在启动时会创建6个虚拟控制台, 1)按下快捷键Ctrl + Alt + Fn(n=2,3,4,5,6)可以从图形界面模式切换到控制台模式, 2)按下Ctrl + Alt + F1可以从控制台模式再切换回图形界面模式(也可以使用命令startx启动)。也就是说,1号控制台被图形桌面程序占用了。
|