[读书笔记]《Linux基础及应用》_01
Linux概况
1969年,在美国的贝尔实验室K.Thompson和D.M.Richie开发了名为UNIX的多用户多任务操作系统。UNIX的商业版本包括SUN公司的Solaris、IBM公司的AIX、惠普公司的HP-UX等。
1984年,麻省理工学院(MIT)的研究员Richard Stallman提出:“计算机产业不应以技术垄断为基础赚取高额利润,而应以服务为中心。在计算机软件源代码开放的基础上,为用户提供综合的服务,与此同时取得相应的报酬。”Richard Stallman在此思想基础上提出了*软件(Free Software)的概念,并成立*软件基金会(Free Software Foundation, FSF)实施GNU计划。*软件基金会还提出了通用公共许可证(General Public License, GPL)原则,它与软件保密协议截然不同。通用公共许可证允许用户*下载、分发、修改和再分发源代码公开的*软件,并可在分发软件的过程中收取适当的成本和服务费用。但不允许任何人将该软件据为己有。目前GNU计划包括操作系统和开发工具两大类产品。
Linux是一种类似UNIX的操作系统,由Linus Torvalds为首的一批Internet志愿者创建开发。Linux操作系统与其他商业性操作系统最大的区别在于它的源代码完全公开。
Linux的主要特点
真正的多用户多任务
良好的兼容性
强大的可移植性
高度的稳定性
狭义的Linux是指Linux的内核(kernel),它完成内存调度、进程管理、设备驱动等操作系统的基本功能,但是不包括应用程序。广义的Linux是指以Linux内核为基础,包含应用程序和相关的系统设置与管理工具v的完整的操作系统。因此,Linux的版本可分为两种:内核版本和发行版本。
Linux的内核版本号由三个数字组成,一般表示为X.Y.Z的形式。
其中:
X:表示主版本号,通常在一段时间内比较稳定。
Y:表示次版本号,如果是偶数,代表这个内核版本是正式版本,可以公开发行;如果是奇数,则代表这个内核版本是测试版本,还不太稳定仅供测试。
Z:表示修改号,这个数字越大,表明修改的次数越多,版本相对更完善。
Linux的应用范围主要包括桌面、服务器、嵌入式系统、集群计算机等方面。
概括而言,凡是带有微处理器的非计算机系统都可称为嵌入式系统(Embedded System)。
对于嵌入式系统而言,Linux有许多不可忽略的优点:
Linux具有很强的可移植性,支持各种不同的电子产品的硬件平台。
Linux内核可免费获得,并可根据实际需要*修改,这符合嵌入式产品根据需要定制的要求。
Linux功能强大并且内核很小。一个功能完备的Linux内核只要求大约1MB内存,而最核心的微内核只需要100KB的内存。
Linux支持多种开发语言,如C、C++、Java,为嵌入式系统上的多种应用提供了可能。
集群计算机(Cluster Computer)就是利用高速的计算机网络,将许多台计算机连接起来,并加入相应的集群软件所形成的具有超强可靠性和计算能力的计算机。
广义的Linux可分为:内核、Shell、X Window和应用程序四大组成部分。
内核(Kernel)是整个操作系统的核心,管理着整个计算机系统的软硬件资源。内核控制整个计算机的运行,提供相应的硬件驱动程序、网络接口程序,并管理所有应用程序的执行。
Linux内核的源代码主要用C语言编写,只有与驱动相关的部分用汇编语言Assembly编写。Linux内核采用模块化的结构,其主要模块包括:存储管理、CPU和进程管理、文件系统管理、设备管理和驱动、网络通信以及系统的引导、系统调用等。Linux内核的源代码通常安装在/usr/src/linux目录,可供用户查看和修改。
Linux的内核并不能直接接受来自终端的用户命令。Shell负责将用户的命令解释为内核能够接受的低级语言,并将操作系统响应的信息以用户能够理解的方式显示出来。
Linux的各发行版本皆能同时提供两种以上的Shell供用户自行选择使用。比较常见的Shell有:
Bourne Shell (又称B Shell)是最流行的标准Shell之一,几乎所有的UNIX/Linux都支持。不过B Shell功能较少,用户界面也不太友好。
C Shell,因其语法类似C语言而得名。C Shell易于使用并且交互性强。
Korn Shell (又称K Shell)。
Bourne-Again Shell (又称Bash),是专为Linux开发的Shell。它是在B Shell的基础上增加了许多功能,同时还具有C Shell和K Shell的部分优点。Bash是Linux默认采用的Shell。
Shell不仅是一种交互式命令解释程序,而且还是一种程序设计语言。
Linux操作系统把所有外部设备按其数据交换的特性分成三大类:
1. 字符设备 字符设备是以字符为单位进行输入输出的设备,如打印机、显示终端等。字符设备大多连接在计算机的串行接口上。CPU可以直接对字符设备进行读写,而不需经过缓冲区。
2. 块设备 块设备是以数据块为单位进行输入输出的设备,如磁盘、磁带、光盘等。数据块可以是硬盘或软盘上的一个扇区,也可以是磁带上的一个数据段。
3. 网络设备 网络设备是以数据包为单位进行数据交换的设备,如以太网卡。
Linux是一种分时操作系统。采用虚拟存储技术来扩充内存空间。Linux一般采用ext3或ext2文件系统,并在虚拟文件系统技术的支持下支持多种文件系统,可实现Linux与其他操作系统之间的数据共享。
安装与删除Linux
安装Windows时磁盘中可以只有一个分区(C盘),而安装Linux时必须至少有两个分区:交换分区(又称swap分区)和/分区(又称根分区)。
Linux中以太网卡以“eth*”的形式表示,eth0表示计算机上的第一块以太网卡,eth1表示计算机上的第二块以太网卡,并依次类推。
如果安装Linux操作系统时不输入任何名称, 则该计算机会被称为localhost.localdomain。
根口令就是系统的最高管理者超级用户的口令。Linux规定口令至少应该包括6个字符(无论是字母、数字还是符号都可以),并且大小写敏感。
SELinux
SELinux全称是Security Enhanced Linux,是由美国国家安全部领导开发的GPL项目,是一个灵活而强制性的访问控制结构,旨在提高Linux系统的安全性,提供强健的安全保证,可防御未知攻击。
普通Linux安全和传统UNIX系统一样,基于自主存取控制方法,即DAC,只要符合规定的权限,如规定的所有者和文件属性等即可存取资源。在传统的安全机制下,一些程序通过改变用户ID可能产生严重安全隐患。
而SELinux则基于强制存取控制方法,即MAC,通过强制性的安全策略,应用程序或用户必须同时符合DAC及对应SELinux的MAC才能进行正常操作,否则都将遭到拒绝或失败,而这些问题将不会影响其他正常运作的程序和应用,并保持它们的安全系统结构。
Kdump是非常重要的Linux内核的奔溃转储工具。当系统奔溃时,Kdump将捕获相关信息以供分析系统奔溃的原因。
Linux中将用户账号分为三大类型:超级用户、系统用户和普通用户。
超级用户,又称root用户,每个Linux系统都必须有,并且只有一个。
系统用户是与系统运行和系统提供的服务密切相关的用户,通常在安装相关软件包时自动创建,通常保持其默认状态。
普通用户的用户名可以是任意字符串。
对于仅安装Linux的计算机而言,只要重新安装其他操作系统就能将已安装的Linux完全删除。而对于Windows与Linux并存的计算机而言,安全删除Linux而不影响Windows的所有数据,需要进行以下两个步骤的操作:(1)删除Linux的引导装载程序;(2)删除Linux所用的磁盘分区。在顺序上,无论先删除哪个都可以。
X Window图形化用户界面
X Window是UNIX/Linux操作系统图形化用户界面的标准。X Window本身不是操作系统,而是一种可运行于多种操作系统,采用客户机/服务器模式的应用程序。X Window主要由三部分组成:X服务器(X Server),X客户机(X Client)与X协议(X Protocol)。
目前Linux操作系统上最常用的桌面环境有两个:GNOME(GNU Network Object Model Environment,GNU网络对象模型环境)和KDE(K Desktop Environment,K桌面环境)。
GNOME源自美国,是GNU计划的重要组成部分。它基于Gtk+图形库,采用C语言开发完成。而KDE源自德国,基于Qt3图形库,采用C++语言开发完成。
KDE桌面环境由系统面板、主菜单和桌面三个部分组成。
Konqueror不仅是KDE的文件管理器,而且还是KDE桌面的网页浏览器。